Auto layout on load script into NodeGraph

This PR causes NodeGraph to do an auto-layout when it loads a script where none of the children have UI positions. As soon as one node has a UI position, the auto-layout will not run.

As discussed in #1751

Cool - I can do that.
Are you okay with using __uiPosition in the test, or should we look at adding a GraphGadget::setNodePosition() too?

I got an email notification about a reply you made that I can't see here any more, but the answer is that we already have a method for setting the node position.

What, no, I didn't comment about that...? Of course I looked to check if there was a method that already existed before suggesting creating one. Why would I ever do differently and then hide the evidence of my mistake?

I think I've addressed all of your notes now.

I'm seeing a crash when I do the following :

In the ScriptEditor, run script.addChild( Gaffer.Node() ).
In the NodeGraph, select and drag that node.

It's crashing in GraphGadget::offsetNodes(), which was assuming the existence of the position plug. I think 2e17038 where you remove the automatic creation of the plug is still OK, but we should add a private convenience method for getting that plug (and optionally creating it if necessary), and then use that in both offsetNodes() and set/getNodePosition().
I'm also wondering if you had a special reason for not laying out all unpositioned nodes, rather than laying out all nodes, but only if they all don't have positions?

Good catch on that crash.
I can certainly add that in.
Would it be worth, when a node is added using something like script.addChild( Gaffer.Node() ) setting the position then, rather than only doing it when the node is moved?
If the position is only set to a default value when the node is moved, there's a danger that, if the script is saved and re-loaded, the node will have moved. In a case I just tried, I ran script.addChild( Gaffer.Node() ) three times in a row, creating three nodes right on top of each other. I then saved and re-loaded the script, and the nodes that I'd created had moved.
Is there a callback on GraphGadget or NodeGraph for when a node is added to the appropriate root?

Would it be worth, when a node is added using something like script.addChild( Gaffer.Node() ) setting the position then, rather than only doing it when the node is moved?

Well, that's kindof what the GraphGadget code we just removed was doing. Originally I had hoped that it would never be necessary to explicitly tell the GraphGadget to do some layout, and it would always lay things out just in time. But that got a bit tricky, so it never happened. One of the problems was knowing when the right time was - there's not really an explicit way of saying "I'm done modifying the graph" so the GraphGadget doesn't really know when all the connections that are going to be made have been made. I guess ScriptNode::undoAdded() might be the closest thing we have to that. Or I guess GraphGadget could maybe lay things out just before it redraws? But then I think there might be problems with the undo queue (or maybe just-in-time layout would just be non-undoable?).
Now I think of it, giving a position when it is first moved might be a bit tricky too. I'm not sure but I suspect the undo queue will end up with two actions in it - one to add the plug and one to set the value.

If the position is only set to a default value when the node is moved, there's a danger that, if the script is saved and re-loaded, the node will have moved. In a case I just tried, I ran script.addChild( Gaffer.Node() ) three times in a row, creating three nodes right on top of each other. I then saved and re-loaded the script, and the nodes that I'd created had moved.

I see. I guess another option for this one case is to have the ScriptEditor automatically layout the newly created nodes as a post step after each execution. But that's tricky too. When doing something like "Create A, Create B, Connect A to B", the layout is different depending on whether or not everything is done as one execution or if it's done as three separate ones. That's one of the things I was referring to when I was saying there's not good time for the GraphGadget to know for sure it has all the information it needs to do a good layout. It'd also be nice not to introduce a coupling between the ScriptEditor and the NodeGraph.

Is there a callback on GraphGadget or NodeGraph for when a node is added to the appropriate root?

Every node (and plug) has childAddedSignal() for this purpose. That's what the GraphGadget uses to keep itself in sync when new nodes are added.
Sorry this has got a bit complicated. Now I think about it, it is something that has come up in the past and has got punted on because it's not entirely straightforward. I don't think I could recommend a definite course of action without spending some time digging into the details and prototyping...

Yeah, I can see that it's a little more complex than I had anticipated!
I've had a bit of a thought that I'm going to try out, and see what you think...

I've put a couple of options in here.
Of the last 3 commits:
The first two of them do:

When the entire graph is updated, auto-layout all un-positioned nodes
When an individual node is added, set the default position.

The third of them changes setting the default position to calling layoutNodes() on each individual node. This does a slightly odd thing (is this an issue with the node layout code?) where nodes would sometimes add themselves away from existing nodes and would sometimes overlay themselves over existing nodes.

(Oh, and I know that the tests need updating to reflect the move into GraphGadgetTest.py)

Just adding a label so I don't accidentally merge this before its ready. Feel free to remove the label when you think its stabilized.

Any thoughts on the two options, @johnhaddon ?

Hi Hugh,
Sorry for the delay in getting back to you. This one is a bit involved and I didn't have time to do it justice until this morning. To illustrate what I meant earlier when I mentioned the importance of doing the layout at the right time, here's an example taken from the new scripting tutorial in the documentation. It gets the user to run the following in the script editor, in three distinct chunks which are executed separately :
# Chunk 1
import GafferScene
script.addChild( GafferScene.Sphere() )

# Chunk 2
meshToPoints = GafferScene.MeshToPoints()
meshToPoints["in"].setInput( script["Sphere"]["out"] )
meshToPoints["type"].setValue( "sphere" )
script.addChild( meshToPoints )

# Chunk 3
camera = GafferScene.Camera()
script.addChild( camera )
group = GafferScene.Group()
script.addChild( group )
group["in"][0].setInput( meshToPoints["out"] )
group["in"][1].setInput( camera["out"] )

With the current master, this results in this appalling "layout" :

With your PR, it results in this :

This has at least resolved the overlapping nodes, but it hasn't used the connection information, because it wasn't available at the time addNodeGadget() was called - the connection was made afterwards. What we really want is the following, which is what we'd get if we did a layout of all unpositioned nodes at the end of each chunk :

So, we know that GraphGadget::rootChildAdded() is not called at a suitable place/time for us to position a node well. The question then becomes "where is a suitable place/time"? I can think of a few possibilities :

Defer until GraphGadget::doRender(), on the assumption that the UI update will occur after all edits have taken place. But editing plugs from the drawing code seems a bit questionable.
Use ScriptNode::undoAdded() as a layout trigger, on the assumption that actions grouped into a single undo block make sense as a unit to be laid out together. But this doesn't let us operate in the case of undo not being enabled (although it is always enabled in practice).
Punt. Rely on other parts of the UI to do an explicit layout at places and times they know to be meaningful from the perspective of the user. This is the approach we have taken until now. For instance, the NodeMenu creates the node, adds it, attempts to connect it to the current selection, and only then triggers a manual layout.

The first two are tempting in a "make it all magically work without intervention" sense, but my concern is that they're fragile, and don't allow any external control for cases where some explicit layout operations could do a better job. Note also that until now, the GraphGadget has been responsible for making sure everything in the graph is represented appropriately and that positions can be set and queried, but it has taken no responsibility for performing layout. Although that's less magical, I think it does mean that it's potentially more useful as a reusable component for other apps. For instance, IE's asset manager uses the NodeGraph for visualisation, but takes more explicit control over the layout since it builds the graphs automatically from the asset relationships.
It's definitely with some reluctance that we've arrived at this manual layout approach, so if you feel like giving any of the above a go then feel free. Or if you have better ideas than mine I'd love to hear them. But if not, I suggest we return to your original NodeGraph approach of doing the layout of unpositioned nodes on the root change, but fixing the crash somehow, and I'll take a look at triggering a layout manually after each execution in the ScriptEditor.
Cheers...
John

The first two are tempting in a "make it all magically work without intervention" sense, but my concern is that they're fragile, and don't allow any external control for cases where some explicit layout operations could do a better job.

The second part of this comment is untrue isn't it? If the just-in-time auto-layout only positioned nodes that didn't already have positions, then manual control would still be available.

I really hope we can come up with something automatical.... it's really quite annoying diving inside SubGraph nodes and needing to ctrl+a, ctrl+l every time...

Yeah, after writing all that justification for the explicit layout stuff this morning it did feel like a giant cop out. Afterwards I wondered what would happen if we used ViewportGadget::preRenderSignal() from within the NodeGraph to trigger a layout…might be worth a try...
The "diving into a SubGraph" and "opening a generated script for the first time" problems aren't as hard as the "finding the right time to auto-layout interactive changes" problem, so I don't see why we won't be able to get that working to our satisfaction.

I'm going to close this in an utterly flagrant show of preference for my own version in #1771, which is now cleaned up and with unit tests etc. Thanks for getting the ball rolling on this one @HughMacdonald - I had just become resigned to the less-than-ideal state of affairs we originally had, and this certainly feels like a good improvement in terms of user experience.


Make a Yosys plugin that does the inout port split

Since BLIF file cannot handle inout ports, these are represented as a single net connected to both input and output port with the same name. This creates an issue when something drives that net as there are multiple drivers there.
Currently to solve this we use the following flow:

Synthesize the design using Yosys but write it to JSON instead of BLIF.
Process the JSON using a python script that splits inout ports to separate input and output ports.
Load the JSON to Yosys again and write the final BLIF (this is essentially a format conversion).

The "as it should be done" solution would be to have a plugin for Yosys that does the inout port split. That would allow to get rid of the need for writing JSONs and processing them.

We already have eBLIF -- could we just extend that?
On Mon, 25 Nov 2019 at 01:27, Maciej Kurc<EMAIL_ADDRESS>wrote:

Since BLIF file cannot handle inout ports, these are represented as a
single net connected to both input and output port with the same name. This
creates an issue when something drives that net as there are multiple
drivers there.
Currently to solve this we use the following flow:

Synthesize the design using Yosys but write it to JSON instead of
BLIF.
Process the JSON using a python script that splits inout ports to
separate input and output ports.
Load the JSON to Yosys again and write the final BLIF (this is
essentially a format conversion).

The "as it should be done" solution would be to have a plugin for Yosys
that does the inout port split. That would allow to get rid of the need for
writing JSONs and processing them.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/SymbiFlow/symbiflow-arch-defs/issues/1172?email_source=notifications&email_token=AAAFFXDXOOSULGAXXCHBVJLQVOLATA5CNFSM4JRF5O5KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H3X7D6Q,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAFFXHUM6ECBMUS4ECL4FLQVOLATANCNFSM4JRF5O5A
.

One possibility is to add let's say an .inout model to the BLIF file. But that's only one thing. We would then need to make VPR support inout ports which it does not right now. I can't tell how much work would that require.


kapp deletes ServiceAccount before PackageInstall

What steps did you take:
Deploy an ns, pkg, pkgi, SA and RBAC with kapp:
❯ ytt -f debug.yaml | kapp d -a debug -f- -y -c
Target cluster *****

@@ create namespace/debug (v1) cluster @@
...
@@ create package/my.example.com.1.0.0 (data.packaging.carvel.dev/v1alpha1) namespace: debug @@
...
@@ create clusterrole/debug-cluster-admin-role (rbac.authorization.k8s.io/v1) cluster @@
...
@@ create clusterrolebinding/debug-cluster-admin-role-binding (rbac.authorization.k8s.io/v1) cluster @@
...
@@ create serviceaccount/debug-sa (v1) namespace: debug @@
...
@@ create packageinstall/example-install (packaging.carvel.dev/v1alpha1) namespace: debug @@
...
@@ create secret/example-install-values (v1) namespace: debug @@
...

Changes

Namespace  Name                              Kind                Age  Op      Op st.  Wait to    Rs  Ri
(cluster)  debug                             Namespace           -    create  -       reconcile  -   -
^          debug-cluster-admin-role          ClusterRole         -    create  -       reconcile  -   -
^          debug-cluster-admin-role-binding  ClusterRoleBinding  -    create  -       reconcile  -   -
debug      debug-sa                          ServiceAccount      -    create  -       reconcile  -   -
^          example-install                   PackageInstall      -    create  -       reconcile  -   -
^          example-install-values            Secret              -    create  -       reconcile  -   -
^          my.example.com.1.0.0              Package             -    create  -       reconcile  -   -

Op:      7 create, 0 delete, 0 update, 0 noop, 0 exists
Wait to: 7 reconcile, 0 delete, 0 noop

3:13:42PM: ---- applying 2 changes [0/7 done] ----
3:13:42PM: create clusterrole/debug-cluster-admin-role (rbac.authorization.k8s.io/v1) cluster
3:13:42PM: create namespace/debug (v1) cluster
3:13:42PM: ---- waiting on 2 changes [0/7 done] ----
3:13:42PM: ok: reconcile clusterrole/debug-cluster-admin-role (rbac.authorization.k8s.io/v1) cluster
3:13:42PM: ok: reconcile namespace/debug (v1) cluster
3:13:42PM: ---- applying 3 changes [2/7 done] ----
3:13:42PM: create secret/example-install-values (v1) namespace: debug
3:13:42PM: create clusterrolebinding/debug-cluster-admin-role-binding (rbac.authorization.k8s.io/v1) cluster
3:13:43PM: create serviceaccount/debug-sa (v1) namespace: debug
3:13:43PM: ---- waiting on 3 changes [2/7 done] ----
3:13:44PM: ok: reconcile serviceaccount/debug-sa (v1) namespace: debug
3:13:44PM: ok: reconcile secret/example-install-values (v1) namespace: debug
3:13:44PM: ok: reconcile clusterrolebinding/debug-cluster-admin-role-binding (rbac.authorization.k8s.io/v1) cluster
3:13:44PM: ---- applying 2 changes [5/7 done] ----
3:13:44PM: create package/my.example.com.1.0.0 (data.packaging.carvel.dev/v1alpha1) namespace: debug
3:13:45PM: create packageinstall/example-install (packaging.carvel.dev/v1alpha1) namespace: debug
3:13:45PM: ---- waiting on 2 changes [5/7 done] ----
3:13:45PM: ok: reconcile packageinstall/example-install (packaging.carvel.dev/v1alpha1) namespace: debug
3:13:45PM: ok: reconcile package/my.example.com.1.0.0 (data.packaging.carvel.dev/v1alpha1) namespace: debug
3:13:45PM: ---- applying complete [7/7 done] ----
3:13:45PM: ---- waiting complete [7/7 done] ----

Succeeded

Uninstall the app:
❯ kapp delete -a debug -y
Target cluster 'https://applaud-revenue-56f55d6f.hcp.eastus.azmk8s.io:443' (nodes: aks-agentpool-17938520-vmss000001, 2+)

Changes

Namespace  Name                              Kind                Age  Op      Op st.  Wait to  Rs  Ri
(cluster)  debug                             Namespace           54s  delete  -       delete   ok  -
^          debug-cluster-admin-role          ClusterRole         54s  delete  -       delete   ok  -
^          debug-cluster-admin-role-binding  ClusterRoleBinding  54s  delete  -       delete   ok  -
debug      debug-sa                          ServiceAccount      54s  delete  -       delete   ok  -
^          example-install                   PackageInstall      52s  delete  -       delete   ok  -
^          example-install-values            Secret              54s  delete  -       delete   ok  -
^          my.example.com.1.0.0              Package             52s  delete  -       delete   ok  -

Op:      0 create, 7 delete, 0 update, 0 noop, 0 exists
Wait to: 0 reconcile, 7 delete, 0 noop

3:14:36PM: ---- applying 4 changes [0/7 done] ----
3:14:36PM: delete secret/example-install-values (v1) namespace: debug
3:14:36PM: delete packageinstall/example-install (packaging.carvel.dev/v1alpha1) namespace: debug
3:14:36PM: delete namespace/debug (v1) cluster
3:14:36PM: delete package/my.example.com.1.0.0 (data.packaging.carvel.dev/v1alpha1) namespace: debug
3:14:36PM: ---- waiting on 4 changes [0/7 done] ----
3:14:36PM: ongoing: delete packageinstall/example-install (packaging.carvel.dev/v1alpha1) namespace: debug
3:14:36PM:  ^ Waiting on finalizers: finalizers.packageinstall.packaging.carvel.dev/delete
3:14:36PM: ok: delete secret/example-install-values (v1) namespace: debug
3:14:36PM: ongoing: delete namespace/debug (v1) cluster
3:14:36PM:  ^ Deleting
3:14:36PM: ok: delete package/my.example.com.1.0.0 (data.packaging.carvel.dev/v1alpha1) namespace: debug
3:14:36PM: ---- waiting on 2 changes [2/7 done] ----

# debug.yaml

#@ load("@ytt:data", "data")

#@ namespace = getattr(data.values, "namespace", "debug")

---
apiVersion: v1
kind: Namespace
metadata:
  name: #@ namespace

---
apiVersion: data.packaging.carvel.dev/v1alpha1
kind: Package
metadata:
  name: my.example.com.1.0.0
  namespace: #@ namespace
spec:
  version: 1.0.0
  refName: my.example.com
  template:
    spec:
      fetch:
        - inline:
            paths:
              resources.yaml: |
                #@ load("@ytt:data", "data")
                ---
                apiVersion: v1
                kind: Namespace
                metadata:
                  name: #@ data.values.namespace
                ---
                apiVersion: v1
                kind: ConfigMap
                metadata:
                  name: config
                  namespace: #@ data.values.namespace
                data:
                  message: it's fun
      template:
        - ytt:
            paths: [.]
      deploy:
        - kapp: { }

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: debug-cluster-admin-role
rules:
  - apiGroups:
      - '*'
    resources:
      - '*'
    verbs:
      - '*'

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: debug-cluster-admin-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: debug-cluster-admin-role
subjects:
  - kind: ServiceAccount
    name: debug-sa
    namespace: #@ namespace

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: debug-sa
  namespace: #@ namespace

---
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
  name: example-install
  namespace: #@ namespace
spec:
  serviceAccountName: debug-sa
  packageRef:
    refName: my.example.com
    versionSelection:
      constraints: 1.0.0
  values:
    - secretRef:
        name: example-install-values

---
apiVersion: v1
kind: Secret
metadata:
  name: example-install-values
  namespace: #@ namespace
stringData:
  values.yaml: |
    namespace: example-test

What happened:
The deleteion of the kapp app is stuck on the PackageInstall, because its SA is already deleted:
❯ k get pkgi -n debug example-install -oyaml | yq .status
conditions:
  - message: Error (see .status.usefulErrorMessage for details)
    status: "True"
    type: DeleteFailed
friendlyDescription: 'Delete failed: Error (see .status.usefulErrorMessage for details)'
lastAttemptedVersion: 1.0.0
observedGeneration: 2
usefulErrorMessage: 'Preparing kapp: Getting service account: serviceaccounts "debug-sa" not found'
version: 1.0.0

What did you expect:
The kapp app smoothly deletes and cleans up.
Anything else you would like to add:
Environment:

kapp version (use kapp --version): 0.52.0
kapp-controller version: v0.38.4
OS (e.g. from /etc/os-release): macOS
Kubernetes version (use kubectl version)

Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.1", GitCommit:"86ec240af8cbd1b60bcc4c03c20da9b98005b92e", GitTreeState:"clean", BuildDate:"2021-12-16T11:33:37Z", GoVersion:"go1.17.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.11", GitCommit:"6b66c9a34569cd5a6e330eda21d1d8bd792e164e", GitTreeState:"clean", BuildDate:"2022-06-21T17:14:21Z", GoVersion:"go1.16.15", Compiler:"gc", Platform:"linux/amd64"}

Vote on this request
This is an invitation to the community to vote on issues, to help us prioritize our backlog. Use the "smiley face" up to the right of this comment to vote.
👍 "I would like to see this addressed as soon as possible"
👎 "There are other more important things to focus on right now"
We are also happy to receive and review Pull Requests if you want to help working on this issue.

Hi @mamachanko !
Can you try using the latest version of kapp-controller (v0.39.0 I think) as the version you have mentioned is using an old version of kapp which doesn't have the default ordering for these resources.

Hi @mamachanko ! Can you try using the latest version of kapp-controller (v0.39.0 I think) as the version you have mentioned is using an old version of kapp which doesn't have the default ordering for these resources.

I can, but we are locked into kapp-controller v0.38.4 via Tanzu Cluster Essentials. Furthermore, I want to manage these resources with kapp.

@mamachanko thanks for bringing up this issue. As we had discussion over slack, deleting namespace (which has serviceAccount and packagInstall) before serviceAccount and packageInstall seems causing issue.
Also as @praveenrewar  has mentioned about older version of kapp-controller might be causing issue as well. Will dig into it more and will try to resolve it ASAP.

As @kumaritanushree suggested, I can confirm that a custom set of change groups and rules successfully works around the issue:
diff --git a/debug.yaml b/debug.yaml
index 5a23fc01..9365ba0e 100644
--- a/debug.yaml
+++ b/debug.yaml
@@ -7,6 +7,8 @@ apiVersion: v1
 kind: Namespace
 metadata:
   name: #@ namespace
+  annotations:
+    kapp.k14s.io/change-group: ns

 ---
 apiVersion: data.packaging.carvel.dev/v1alpha1
@@ -76,6 +78,9 @@ kind: ServiceAccount
 metadata:
   name: debug-sa
   namespace: #@ namespace
+  annotations:
+    kapp.k14s.io/change-group: sa
+    kapp.k14s.io/change-rule: "delete before deleting ns"

 ---
 apiVersion: packaging.carvel.dev/v1alpha1
@@ -83,6 +88,8 @@ kind: PackageInstall
 metadata:
   name: example-install
   namespace: #@ namespace
+  annotations:
+    kapp.k14s.io/change-rule: "delete before deleting sa"
 spec:
   serviceAccountName: debug-sa
   packageRef:
@@ -99,6 +106,8 @@ kind: Secret
 metadata:
   name: example-install-values
   namespace: #@ namespace
+  annotations:
+    kapp.k14s.io/change-rule: "delete before deleting sa"
 stringData:
   values.yaml: |
     namespace: example-test

Ah, sorry, missed the namespace part.
@kumaritanushree I think we are missing a default change rule to delete resources belonging to a namespace before deleting the namespace itself.

Released as part of v0.53.0


Problems with permissions to sketch classes and forums

I'm trying to set permissions on sketch classes and forums so that two groups (staff and expedition planning) have read / write permissions only. After toggling on permissions for these two groups, then clicking away from the dialog box and subsequently returning, the toggles are sometime set to "off" and I get an error: duplicate value violates unique constraint "access_control_list_groups_acess_control_list_id_group_id_key

The same is tru when configuring permissions for a forum.

I only was able to trigger this once out of a dozen tries for some reason. Change to the database function for adding to an access control list should fix it.


Link this middleware on hono.dev

Hi. I just came across this middleware completely by accident. Github happened to suggest it in my feed. I love how easy service injection is with this middleware and how much boilerplate code it allows me to delete. Would you mind if we add a link for this tiny but amazing middleware on hono.dev? Or maybe even considered if it would find a wider audience in hono's third-party middleware repo? The documentation on dependency injection with Hono is currently still somewhat limited. If this middleware could be found more easily, it would certainly help many people to get up to speed with Hono and figure out how to achieve simple dependency injection with it's context api.
Thanks a lot for publishing it! ❤

Hi! I'm glad you like this package.
I'm publishing it in my repository rather than through hono middleware repo, because I use it extensively in my company's projects, and I need fast to develop and release updates. That said, I'm definitely open to feature requests and bug fixes.
As for why it’s not link to hono.dev, it’s because my English isn’t great, and I’m not confident enough to ensure the documentation would be clear and understandable for everyone. However, if you find this library helpful, it's welcome.

That makes perfect sense! 👍  For me, the documentation is perfectly clear and well written. I'm also happy to help work on it if any questions arise. If you don't mind, I'll add a simple link to the hono.dev page I mentioned. I think others will appreciate it.

I saw that it has already appeared on hono.dev.
Thank you for your appreciation of this package, and happy coding!


[FEATURE] POC for Tool development for Search Monitor Tool and Search Alerts Tool

Is your feature request related to a problem?
Agent framework (#1161 ) needs tools to extend functionality. This issue propose to add search monitor and alert tools to it.
Search Alerting Monitors By Index: use this tool to search alerting monitors by index name in the OpenSearch cluster. This tool takes the index name as input
Get alerts: read information on
1. most recently triggered alerts
2. other alerts related to that alert by time, service attributes, or infrastructure tags
3. historical trends on that alert and similar alerts
4. any unusual trends in the system behavior as reflected in anomalies or spikes/troughs
5. root cause of the system behavior that generated the alert
What solution would you like?
Agent framework (#1161 ) will provide a general tool framework. We can build search monitor/alerts tools with that framework.
What alternatives have you considered?
N/A
Do you have any additional context?
N/A

@amitgalitz

Closed via #1629


Added Google Fonts

Added google fonts for legal options

Google Fonts is great but probably better suited to a different awesome list 😉


analysis MVP

User does a search for his data from the last beamtime and gets back a humungous list
User augments the search to make the list shorter
User sub-samples the shorter list to make a collection
User integrates the collection with dark subtraction, masking, etc.
Software outputs collection to analysisStore
User loads the collection into XPDFsuite

Closing since this was related to the old workflow


add original death source to death messages

The changes in this PR wrap the original cause of death in the BleedOutDamage for use in the give up and timeout hurt calls.
Player Capability Changes

Added a DamageSource variable which can be set/got as applicable
originalSource getter and setter methods wrap any supplied DamageSource into a BleedOutDamage.
originalSource is not serialized on save, and if a player logs out while incapacitated, when they die after relog, a generic OUT_OF_WORLD source is supplied

EventHandler Changes

on death, provide the original damage source to the player cap
on failure to revive, when calling hurt use the damage source stored in the cap

Lang changes

added " and " to message to make more linguistic sense

Testing

Tested standard timeout death
Tested give up death
Tested logging out while incapacitated and relogging (both give up and time out cases)

Example messages

Looks solid at first glance. Will need to look closer and run my own batch of testing before fully confirming though.
Initial tests attached seem quite promising though. Thank you!

I realized I missed the armor bypass, and reimplemented that.

Looks good to me. Merging


Client Allocation Request for: 上海守易信息科技有限公司

Client Allocation Questions
Core Information

Name: 上海守易信息科技有限公司
Website / Social Media: https://www.soyitech.com/#/
DataCap Requested: 5TTiB
Addresses to be Notarized: f1hfihibpc23a5jvn2hhw4kjjziml3cengbxeyloi
Notary Requested: philippbanhardt

Hey @NBAPLUS - thanks for your request. Can you kindly add more information / context here on:

yourself , e.g. include links to social media / news mentions etc
your history working on IPFS / Filecoin, e.g. notable contributions to the community, type of engagement shown over time etc
type, size, source and your relationship with the data you (and by extension other Discover participants) are looking to store on Filecoin, e.g. public data vs private data etc
how you intend to store the data on Filecoin, e.g. redundancy, location / miner preferences, etc

Thanks


add some impl of NewSeriesReaderWithoutValueFilter

The process of processing read data is a very complicated one, and previous read interfaces were obscure and confusing.
I reimplemented a reader based on which all the data in the files could be queried in order
I have mainly done the following work:

Renamed iAggregateReader in TsFile project to IPageSkipRader

Added IChunkReader. Based on this interface, there are two implementations, DiskChunkReader and MemChunkReader

Added ChunkMetadata for ReadonlyMemChunk and PageHeader for MemChunkReader

Added IAggregateReader and IRawReader interface and AbstractDataReader abstract class to complete all functions of the new reader, respectively realizing RawDataReaderWithoutValueFilter, SeriesDataReaderWithoutValueFilter and SeriesDataReaderWithValueFilter

Refactoring group by, raw query and aggregate query ,and so on

In the previous group by implementation, the open and closed interval definition was wrong, [0-100] I changed it to [0-100)

please try to merge master to check whether the failed test can pass.

please try to merge master to check whether the failed test can pass.

please help me merge master to IoTDB  new_series_reader


Remove /etc/calico host path volume

Description
The host path volume is unused, and should be removed instead of configurable. Removal of this host path volume will allow the operator to be used with immutable Linux distributions, where /etc is read-only, like Talos.
As discussed in https://github.com/tigera/operator/pull/2518.
Fixes https://github.com/tigera/operator/issues/2444
For PR author

[ ] Tests for change.
[ ] If changing pkg/apis/, run make gen-files
[ ] If changing versions, run make gen-versions

For PR reviewers
A note for code reviewers - all pull requests must have the following:

[ ] Milestone set according to targeted release.
[ ] Appropriate labels:

kind/bug if this is a bugfix.
kind/enhancement if this is a a new feature.
enterprise if this PR applies to Calico Enterprise only.

/sem-approve

Thank you for your patience and contribution.


The extensions does not work with upgrade-assistant 0.4.346201

The extension does not work with update-assistant 0.4.346201 releases a few days ago.
I'm not sure if the problem is the extension or upgrade-assistant.
See this blog post for details:
https://www.gulla.net/en/blog/if-you-want-to-upgrade-do-not-upgrade/

I reproduced this even with an empty or nonexisting extension, and with an empty project. It seems to be the parsing of the --extension argument itself that causes the exception. I reported it here: https://github.com/dotnet/upgrade-assistant/issues/1297

The issue seem to be fixed by https://github.com/dotnet/upgrade-assistant/pull/1330
Any ETA of when the episerver extension will get this fix?

Thanks for reporting. We will look into soon.

There is no new release of upgrade-assistant with this fix yet. I do not think the episerver extensions needs any updating. In the meantime, upgrade-assistant 0.4.336902 should work.


400 Bad Request; challenge_required

Hey,
I have a function to post image on instagram with text.
I recently changed my instagram username and I've had ‘400 Bad Request; challenge_required’ ever since.
Yet all my connection info is good, I checked.
I also confirmed that I was the one who logged into Instagram when he asked if it was me, given a new connection.
My code
const IG_USERNAME = "****";
const IG_PASSWORD = "****";

[...]

const postToInsta = async (randomImageDoc, description) => {
    return retry(async () => {
        const ig = new IgApiClient();
        ig.state.generateDevice(IG_USERNAME);

        console.log('Attempting to login to Instagram with username:', IG_USERNAME);
        await ig.account.login(IG_USERNAME, IG_PASSWORD);
        console.log('Logged in to Instagram successfully');

        const { imageUrl, username, objects } = randomImageDoc;

        console.log('Fetching image from URL:', imageUrl);
        const imageBuffer = await axios.get(imageUrl, { responseType: 'arraybuffer' }).then(response => response.data);
        console.log('Image fetched successfully');

        const caption = `${description}\n\nCosmio's Image of the Day: shot by ${username}\n\nExplore space on Cosmio.io\n\n#astrophotography #astrophoto #astronomy #astro #cosmio #imageoftheday #space #nightsky #telescope #universe #stargaze #nightphotography #cosmos`;
        console.log('Caption:', caption);

        console.log('Attempting to publish photo to Instagram');
        await ig.publish.photo({ file: imageBuffer, caption: caption });

        console.log('Photo published successfully');

        console.log('Marking the image as posted in Firestore');
        await admin.firestore().collection('images').doc(randomImageDoc.id).update({ posted: true });
        console.log('Image marked as posted in Firestore');
    });
};

Error
In my console Firebase Functions
DEFAULT 2024-10-01T12:06:35.264569Z at Request.send (/workspace/node_modules/instagram-private-api/dist/core/request.js:54:28)

DEFAULT 2024-10-01T12:06:35.264564Z at Request.handleResponseError (/workspace/node_modules/instagram-private-api/dist/core/request.js:108:24)

DEFAULT 2024-10-01T12:06:35.264544Z Attempt 2 failed: IgCheckpointError: POST /api/v1/accounts/login/ - 400 Bad Request; challenge_required

There are many challenge types


Py_NoSiteFlag is not needed since Python 3.8

Python since 3.12 prints warning about Py_NoSiteFlag is deprecated. It seems that variable is not needed since Python 3.8, since it sets in such cases directly config.site_import variable few moments later. Move using deprecated variable to versions before that flag in config could be used only.
This should fix warning like:
pythonmod/pythonmod.c: In function 'pythonmod_init': pythonmod/pythonmod.c:359:7: warning: 'Py_NoSiteFlag' is deprecated [-Wdeprecated-declarations]
359 |       Py_NoSiteFlag = 1;
|       ^~~~~~~~~~~~~
In file included from /usr/include/python3.12/Python.h:48,
from pythonmod/pythonmod.c:54:
/usr/include/python3.12/cpython/pydebug.h:14:37: note: declared here
14 | Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_NoSiteFlag;
|                                     ^~~~~~~~~~~~~
https://docs.python.org/3/c-api/init.html#c.Py_NoSiteFlag

I have checked this compiles on:

Fedora 39 with python 3.12
Fedora 38 with python 3.11
CentOS Stream 9 with python 3.9
CentOS Stream 8 with python 3.6

But otherwise I have not done functional testing. It seems safe to me.


Minimal cli structure

Description
Minimal structure for the main package. This PR is created mostly to check if the Travis CI integration is properly working
Type of change

Refactor (refactoring code, removing useless files)

Testing steps
Check that CI is properly run

Mmm I don't know about it @tisnik but I will take a look before merging this PR

I just see the flag package. It is very simple, but at the end probably it will be easier for us keep using viper, WDYT?

Sorry for my prev comment, I just realized that flags can be used for parsing arguments and not only flags


[Packaging] Dockerfile base image from Alpine 3.14 to 3.15

Description

Keep the pace with Alpine and some tools are only available on Alpine 3.15, ie : postgresql14-client
Testing Guide

"docker build -t azure-cli ." to check the build
History Notes

Dockerfile is now based on python Alpine 3.15

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

[x] I adhere to the Error Handling Guidelines.

Packaging

Ops, the pipeline failed:
https://dev.azure.com/azure-sdk/public/_build/results?buildId=1319619&view=logs&j=a3141784-dfa9-5792-78cc-844daee2d774&t=b2b6de04-64e4-5812-4fff-06c02d19f4c2&l=35
Step 1/15 : ARG PYTHON_VERSION="3.9.6"
Step 2/15 : FROM python:${PYTHON_VERSION}-alpine3.15
manifest for python:3.9.6-alpine3.15 not found: manifest unknown: manifest unknown

We need to use a valid version from https://hub.docker.com/_/python.
I think we can use 3.10.2-alpine3.15 which will solve https://github.com/Azure/azure-cli/issues/19857#issuecomment-1016449222 by the way.

Ops, the pipeline failed:
https://dev.azure.com/azure-sdk/public/_build/results?buildId=1319619&view=logs&j=a3141784-dfa9-5792-78cc-844daee2d774&t=b2b6de04-64e4-5812-4fff-06c02d19f4c2&l=35
Step 1/15 : ARG PYTHON_VERSION="3.9.6"
Step 2/15 : FROM python:${PYTHON_VERSION}-alpine3.15
manifest for python:3.9.6-alpine3.15 not found: manifest unknown: manifest unknown

We need to use a valid tag from https://hub.docker.com/_/python.
I think we can use 3.10.2-alpine3.15 which will solve #19857 (comment) by the way.

You're right, my bad.


chore: Bump Rust version to 1.65

Should resolve https://github.com/R2NorthstarTools/FlightCore/pull/85#issuecomment-1336846037
Technically 1.64 would be enough to solve that issue but 1.65 adds let-else statements to stable which allow for more compact and readable code in some cases. ^^

@Alystrasz don't forget to rustup update in case you get local compile errors due to not satisfying minimum rustc version ^^


[C++][Parquet] Re-enable -static-libstdc++ in dev artifact builds

We still have the glibc dependency to deal with (I will look into doing builds with a centos6 docker image on CircleCI), but this will at least address libstdc++ ABI incompatibilities with the system libraries.
Reporter: Wes McKinney / @wesm
Assignee: Wes McKinney](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=wesm) / @wesm
Related issues:

[C++] Build conda artifacts in a build environment with better cross-linux ABI compatibility (relates to)
[C++] Revert static linking of libstdc++ in conda builds until symbol visibility addressed (relates to)
Add visibility macros to be used for public and internal APIs of libparquet (relates to)

Note: This issue was originally created as PARQUET-653. Please see the migration documentation for further details.

Wes McKinney / @wesm:
Issue resolved by pull request 133
https://github.com/apache/parquet-cpp/pull/133


Test resource overdraft

This change is

We're currently processing your upload.  This comment will be updated when the results are available.


Update README.md

Changes proposed ✍
Fixed Typos
Why
Updated README.md to make to more grammatically correct
Checklist ✅

[ ] Label appropriately with Feature, Improvement, or Bug.
[ ] Add screenshots to the PR description for relevant FE changes
[ ] New backend functionality has been unit-tested.
[ ] API documentation has been updated (if necessary) (see docs on API documentation).
[X] Quality standards are met.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Hey 👋
Thanks for your interest in contributing 😄
Another contributor already merged the changes you made. Will close this PR.
Feel free to look into our open issues as well


Playbooks using python commands will fail in target servers with a fresh install of RHEL8

Bug Report
What happened:
Ceph installation fails in fresh RHEL8 target servers
What you expected to happen:
Installation works
How to reproduce it (minimal and precise):
Try to install a Ceph monitor in a fresh RHEL8 server
Playbooks using python commands will fail in target servers with a fresh install of RHEL8. Basically because fresh installations of RHEL8 servers DO NOT HAVE python installed.
The following playbooks will fail (also others calling these):

./roles/ceph-mon/tasks/deploy_monitors.yml:14:    {{ discovered_interpreter_python }} -c "import os ; import struct ;
./roles/ceph-facts/tasks/facts.yml:117:    command: "{{ discovered_interpreter_python }} -c 'import uuid; print(str(uuid.uuid4()))'"

and others playbooks using:

./roles/ceph-handler/templates/restart_osd_daemon.sh.j2:7:  num_pgs=$($container_exec ceph $CEPH_CLI -s -f json | "{{ discovered_interpreter_python }}" -c 'import sys, json; print(json.load(sys.stdin)["pgmap"]["num_pgs"])')
./roles/ceph-handler/templates/restart_osd_daemon.sh.j2:12:    test "$($container_exec ceph $CEPH_CLI -s -f json | "{{ discovered_interpreter_python }}" -c 'import sys, json; print(json.load(sys.stdin)["pgmap"]["num_pgs"])')" -eq "$($container_exec ceph $CEPH_CLI -s -f json | "{{ discovered_interpreter_python }}" -c 'import sys, json; print(sum ( [ i["count"] for i in json.load(sys.stdin)["pgmap"]["pgs_by_state"] if "active+clean" in i["state_name"]]))')"
./roles/ceph-handler/templates/restart_mon_daemon.sh.j2:22:  $DOCKER_EXEC ceph --cluster {{ cluster }} -s --format json | "{{ discovered_interpreter_python }}" -c 'import sys, json; exit(0) if "{{ monitor_name }}" in json.load(sys.stdin)["quorum_names"] else exit(1)' && exit 0

An example of the error is:
{
  "playbook": "site-container.yml",
  "playbook_uuid": "ca4ba834-e2b8-4aab-8a21-2428b295bf63",
  "play": "mons,osds,mdss,rgws,nfss,rbdmirrors,clients,iscsigws,iscsi-gws,mgrs,grafana-server",
  "play_uuid": "0800275f-ba50-22d3-1792-00000000000a",
  "play_pattern": "mons,osds,mdss,rgws,nfss,rbdmirrors,clients,iscsigws,iscsi-gws,mgrs,grafana-server",
  "task": "generate cluster fsid",
  "task_uuid": "0800275f-ba50-22d3-1792-000000000e88",
  "task_action": "command",
  "task_args": "",
  "task_path": "/usr/share/ceph-ansible/roles/ceph-facts/tasks/facts.yml:108",
  "role": "ceph-facts",
  "host": "ceph1",
  "remote_addr": "ceph1",
  "res": {
    "msg": "non-zero return code",
    "cmd": "python -c 'import uuid; print(str(uuid.uuid4()))'",
    "stdout": "",
    "stderr": "/bin/sh: python: command not found",
    "rc": 127,
    "start": "2019-09-11 01:40:22.581446",
    "end": "2019-09-11 01:40:22.584118",
    "delta": "0:00:00.002672",
    "changed": true,
    "invocation": {
      "module_args": {
        "_raw_params": "python -c 'import uuid; print(str(uuid.uuid4()))'",
        "_uses_shell": true,
        "warn": true,
        "stdin_add_newline": true,
        "strip_empty_ends": true,
        "argv": null,
        "chdir": null,
        "executable": null,
        "creates": null,
        "removes": null,
        "stdin": null
      }
    },
    "stdout_lines": [],
    "stderr_lines": [
      "/bin/sh: python: command not found"
    ],
    "_ansible_no_log": false,
    "_ansible_delegated_vars": {
      "ansible_host": "ceph1"
    }
  },
  "ignore_errors": null,
  "event_loop": null,
  "pid": 69
}

Environment:

OS (e.g. from /etc/os-release):  Whatever ( the problem is in the target machines if they have a fresh rhel8 installed)
ceph-ansible version (e.g. git head or tag or stable branch): latest

How are you able to run the tasks before "generate cluster fsid" in ceph-facts role without python installed ? Ansible should be able to do anything if python isn't present.
Even if python3 isn't installed on RHEL 8 you should have the platform-python package present which provides /usr/libexec/platform-python (python 3 exe)
$ ansible -i hosts rhel8 -m setup -a 'filter=discovered_interpreter_python'
rhel8 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false
}

And I don't have the python36 package installed.
Could you provides the full ansible logs, inventory variables defined in group_vars/*.yml and the ansible version used ?

Hi @dsavineau ,
I have tried to reproduce the issue using a couple of rhel8 servers. It was not possible, so everything points that i have some kind of error/issue provisioning the OS.
Sorry for the  noise.


WIP: Binary encoding

It looks like this contains a copy of https://github.com/namecoin/electrum-nmc/pull/338 .    Is that because there would be merge conflicts otherwise?

I'd prefer not to commit compiled form files into Git; those files are already generated at build time, which is preferred by the Debian guys.

Alright! I'm not sure why it has a copy of #338. I will check this out

Fixed the two issues

It looks like you're using bytes.fromhex etc. for messing with the encoding. We already have encoding/decoding functions in names.py that you can use for this, which will ensure consistency with Namecoin Core behavior.

Switched to the encoding/decoding functions in names.py

This looks pretty good so far.
Initial feedback:

It might be useful to put the ASCII textbox and the hex textbox into tabs, so that the user only sees one at a time. You should be able to copy the tab GUI code from the Manage DNS dialog.
The initial value of the hex textbox in the Buy Names tab is empty; it should get automatically filled in when the page loads, based on the default ASCII value.
Some visual feedback if the user enters invalid hex strings (either non-hex characters or an odd number of hex characters) would be nice.

Keep it up! :)

I tried typing hex that was invalid ASCII (e.g. ffffff) and the preview didn't update; I suspect that the preview is incorrectly retrieving its data from the ASCII textbox instead of the Hex textbox.

A helper function might be helpful to handle the state of buttons and labels?
def update_buttons_and_label(self, button=None, label=None, condition, error_message=None):
    if button is not None:
        button.setEnabled(condition)
    if label is not None:
        if error_message:
            label.setText(error_message)
        else:
            label.clear()

Is the idea to reuse that helper function across the Buy Names page, the Configure Name page, etc.? If so, yeah I think that's reasonable.

Typing a string that doesn't end in .bit to the Domain textbox seems to cause the string to be copied verbatim to the ASCII textbox instead of producing an error.

As discussed, no further changes are needed, but can you squash the commits, and then remove WIP:  from the PR title?

ACK 32af8d858c5a350d859728385c2c816b2621084d


Created a new agnostic basic skin

tl;dr
Created a new agnostic basic skin.
Also updated several components and existing skins to put math into the skin file rather than the component file(s).
Intent
The purpose of this change is to find a balance between 1) not breaking existing skins when new features/variables are added and 2) not imposing one skin's values on another skin.
This establishes a base skin that will contain every variable used in any component that is available to a skin. Using and reassigning these variables in a skin is optional. The expectation here is that as new variables are added and assigned to CSS properties that were previously undefined, assigning the base variable value to inherit (preferred), 0 or transparent should impose the least impact on a skin that should not be affected by these changes or is currently unmaintained.
The intent here is to not impede future development while also not crippling or undermining past development.
Bonus
Actually, if you're curious to see what this even looks rendered out, simply add 'base' to the agate/Skinnable collection, and add 'base' to the AgateEnvironment component in Storybook or skin="base" to your app instead. It should look like completely plain unstyled content. Boring, but sort of neat I guess. However, remember, this is purely for the reader's enjoyment, not intended to ever be used or seen in a product.

Looks pretty good to me. There some calculations in Button.less, Divider.less, and Switch.less; should we have those in the skin files as well?

@teckliew, honestly, we probably should, for consistency and predictability. This does represent a change in how we write the LESS files, but it seems like a generally good approach and separation.

Regarding Divider, I'm tempted to just leave it alone, because I believe we should deprecate Divider and use Heading in its place. It should be a 1:1 conversion, and this would be done during our impending cleanup of Agate. Sound ok? I've corrected Button and Switch.


Remove version: VirtualMagnifyingGlass.VirtualMagnifyingGlass version 3.6

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

URL: https://sourceforge.net/projects/magnifier/files/magnifier for Windows/3.6/Vmg3.6_install.exe/download
Status Code: 200
(Automated message - build 897)

Close with reason: Duplicate of #183751;


Optionally disable deletion of .next directory

Feature request
Is your feature request related to a problem? Please describe.
Our team uses a docker-compose dev setup that mounts $PWD to a developer image and links all necessary resources. This allows for hot module reloading in docker containers by changing files from the local host file system. Good practice here is to create docker volumes for things like node_modules and dist to leave the host system's dependencies and outputs intact.
We are trying to achieve the same with .next, however NextJS's insistence on deleting this directory is preventing this setup from working, since you can't rm a mounted volume.
Describe the solution you'd like
An option that prevents NextJS from removing the NextJS directory. If the directory exists, it is re-used and instead, all the content is removed and replaced. Hoping this might be a fairly unobtrusive fix, since as I understand it, removing the .next directory itself is an optimization.
Describe alternatives you've considered
When we try this setup without mounting a separate .next docker volume, and letting NextJS write to the host system, NextJS doesn't function correctly, producing state errors when navigating between pages and forcing Webpack to reload completely.
I'm guessing, that this is probably because of potential differences between the host system's file system and docker and read/write semantics. This is what led us to try mounting a .next docker volume. For reference, the containers are running NODE_ENV=production and next build && next start.
Additional context
The $PWD docker compose setup is a really convenient and powerful way to work on a large code base with multiple resources and projects. E.g. if a monorepo contains two NextJS projects, docker-compose can route each to different ports without altering the underlying configuration. This 'delete .next' feature seems to be a blocker for effectively developing NextJS with the $PWD method.

@Martaver Maybe you can use the distDir option to write the .next folder in a subfolder and create a volume for that subfolder instead?

When providing distDir behavior doesn't really change though, but maybe it works.

@timneutkens Yes, but since it will be in a subfolder of the volume instead of being the volume itself, it shouldn't be blocked from being removed.

Next 7 doesn't remove the .next directory.

Do I need to disable it explicitly?
I still get:
{ Error: EBUSY: resource busy or locked, rmdir '/stack/packages/www/.next'
errno: -16,
code: 'EBUSY',
syscall: 'rmdir',
path: '/stack/packages/www/.next' }

@Martaver What did you end up doing here? I get this with Next 8 as well.


It's impossible to get recommendations

Hi,
first of all - THANK YOU very much for this gem and initiative to make easy-to-use recommentadtions engine!
On my test environment (3 users, 7 rankings, all user rated same two items, onw of them rated one more) geting recommendations fails to succeed:
  Coletivo::Models::PersonRating Load (5.1ms)  SELECT `person_ratings`.* FROM `person_ratings` WHERE `person_ratings`.`rateable_type` = 'Medium'
ArgumentError: wrong number of arguments (1 for 2)
	from /Users/maciej/.rvm/gems/ruby-1.9.2-p290@rails31/gems/coletivo-0.0.2/lib/coletivo/models/recommendable.rb:60:in `block in predict_highest_ratings'
	from /Users/maciej/.rvm/gems/ruby-1.9.2-p290@rails31/gems/coletivo-0.0.2/lib/coletivo/models/recommendable.rb:64:in `each'
	from /Users/maciej/.rvm/gems/ruby-1.9.2-p290@rails31/gems/coletivo-0.0.2/lib/coletivo/models/recommendable.rb:64:in `collect'
	from /Users/maciej/.rvm/gems/ruby-1.9.2-p290@rails31/gems/coletivo-0.0.2/lib/coletivo/models/recommendable.rb:64:in `predict_highest_ratings'
	from /Users/maciej/.rvm/gems/ruby-1.9.2-p290@rails31/gems/coletivo-0.0.2/lib/coletivo/models/recommendable.rb:13:in `find_recommendations_for'
	from (irb):7```

Any ideas what can go wrong?

(Sorry, I don't have time currently, but I could try to fix this bug in next few days).

Hey Maciej,
Thank you for your feedback, man!
It was an incompatibility with MRI 1.9 lambda feature.
Please, check the new 0.0.3 version.
Cheers,


How to run tests with the Panama Vector implementation

I previously used to do:
export CI=true; ./gradlew :lucene:core:test

but this is not enough, in the output we see:
WARNING: Vector bitsize and/or integer vectors enforcement; using default vectorization provider outside of testMode

because either or both of tests.vectorsize or tests.forceintegervectors is set.

/cc @uschindler

Could it be the ";" in your command line?

wah you're right. It's not the export.
The reason for that is; During testing we set arbitrary bit sizes, but this will slow you down immense so it disables the panama provider explicit. This was added by Robert at some point.
The current code is fine, but theres no way to run all tests with the default provider.....
Let me think about this. We have to find some way to execute tests "under real conditions".

Might be that we allow the default sizes/values to be set, so e.g. 128 bit on Mac, etc. without disabling the Panama provider.

I think there should be the option to run this with defaults.

I think we must do some magic to not set those: https://github.com/apache/lucene/blob/40cae087f71a875478309abfc4b1ab1e7b027cab/gradle/testing/randomization.gradle#L108-L113
This is all bad. The problem is that those settings are static and we can't have a per-instance seeting, so it affects both test mode and normal mode. As running all tests would be incredibly slow with wrong settings (non-default), we use default provider for all tests except those with use testMode.

see https://github.com/apache/lucene/pull/12681

Those settings are really only useful when running the test which compares that the Panama and default implementations emit the same results. If we could somehow just limit setting them to that test!!

That's exactly the problem. According to Robert's testing, the static final constants were better for performance.

No idea yet, still thinking about it!

I really wanna spawn a new JVM with those options for a small set of tests, rather than have them infect all other running tests.

There are two possibilities how to do this: Spawn the tests that use testMode in a child VM or we add a separate sourceset with tests that run with hardcoded bitsizes.
Maybe for the few tests we can use one of the "child spawner" test examples which do this already.

I wonder if we can just avoid some of this complexity.
For example, locally I can run all the tests with the Panama Vector implementation, by doing this:
$ export CI=true; ./gradlew :lucene:core:test -Ptests.vectorsize="" -Ptests.forceintegervectors=false

( setting an empty string for vectorsize results in the default vector size for the platform )
What we want to support is to allow for testing Panama Vector with different sizes during development of the code, so basically this:
for bits in 128 256 512; do ./gradlew -p lucene/core test --tests TestVectorUtilSupport -Dtests.vectorsize=$bits; done

If we just flip the defaults of these properties, vectorsize to <empty_string> and forceintegervectors to false, then all tests will use Panama Vector as appropriate - same as the "real world", while not hurting the development time usage.
So the concrete proposal is to just set the default value of vectorsize to <empty_string> and forceintegervectors to false

We can change the defaults, sure. I am just afraid that Robert will be annoyed. He wants to randomly test all bit sizes.
By the way the empty string is allowed because of this: https://github.com/apache/lucene/blob/30da7dabe09f81802a4ae9161c2c24ab03ff8d0f/lucene/core/src/java/org/apache/lucene/internal/vectorization/VectorizationProvider.java#L50
My quickest idea would be to create dynamically 3 test Gradle tasks with correct config (similar like we fo for beating). I can try it out. Those tasks would just run the testMode=true tests in a separate task like beasting also does.

By the way the empty string is allowed because of this:

Yes, exactly. I'm exploiting this, which is a fine way to say "default" :-)

My quickest idea would be to create dynamically 3 test Gradle tasks with correct config (similar like we fo for beating). I can try it out. Those tasks would just run the testMode=true tests in a separate task like beasting also does.

That would be awesome. So flip the properties back to defaults "real world" for the majority of tests, and add a few targeted gradle tasks that run TestVectorUtilSupport. Sounds good to me.
@uschindler I'll leave this to you since you seem to be more familiar with the infrastructure. But I'm happy to "have a go at it" if you want.

@uschindler your idea above is clearly preferable, but another alternative is to just add <empty_string> to the set of values in vectorsize, that will result in enabling Panama Vector randomly. Not great, but better than the current state of affairs if your idea does not work out. ( And it maintains the different set of developer workflows )

Hi, sorry for being late. I am busy at moment, but as quick fix I applied locally the following:
 gradle/testing/randomization.gradle | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/gradle/testing/randomization.gradle b/gradle/testing/randomization.gradle
index 44ae964cab0..f3d25d0c4e2 100644
--- a/gradle/testing/randomization.gradle
+++ b/gradle/testing/randomization.gradle
@@ -105,12 +105,8 @@ allprojects {
           [propName: 'tests.LUCENE_VERSION', value: baseVersion, description: "Base Lucene version."],
           [propName: 'tests.bwcdir', value: null, description: "Data for backward-compatibility indexes."],
           // vectorization related
-          [propName: 'tests.vectorsize',
-             value: { ->
-               RandomPicks.randomFrom(new Random(projectSeedLong), ["128", "256", "512"])
-             },
-             description: "Sets preferred vector size in bits."],
-          [propName: 'tests.forceintegervectors', value: "true", description: "Forces use of integer vectors even when slow."],
+          [propName: 'tests.vectorsize', value: null, description: "Sets preferred vector size in bits."],
+          [propName: 'tests.forceintegervectors', value: false, description: "Forces use of integer vectors even when slow."],
       ]
     }
   }

This restores the old defaults, but still hsows all parameters in documentation.

P.S.: I had the same idea to enable it randomly by adding another item to the random list.
Next to that, maybe the best would be to have another option to do two things:

disable the "tiered compilation stop at 1" (basically what "CI=true" is doing.
disable those 2 system properties

This would allow to run all tests under real conditions.

I opened the above PR #13351, which implements your suggestion @uschindler.   We can consider that independently, of the possibility of adding specific test tasks for different bit sizes of TestVectorUtilSupport - which I would love to have eventually.

Hi, thats a fine PR but it still has some problem, so I'd tend to move away from "devlopers" using CI=true and instead use another setting. Will explain in the PR.


Dot on casted matrixes cause floating point exception

On triton nightly(2.1.0+6e4932cda8), the following code would cause floating point exception(core dump). While earlier triton(2.1.0+e6216047b8) it works fine.
The following code produce a eye matrix(I) and dot(I, I). The eye matrix is produced by comparing cross comparing an arange with itself, which results in a boolean matrix with True in diagonal line and False elsewhere. The matrix is then casting to the desired dtype. (Casting to int32 and then desired dtype is to avoid error casting bool to bfloat16 directly)
import triton
import triton.language as tl
import torch

@triton.jit
def gen_eye_kernel(Out, N, BLOCK_N: tl.constexpr):
    offs_m = tl.program_id(0) * BLOCK_N + tl.arange(0, BLOCK_N)
    offs_n = tl.program_id(0) * BLOCK_N + tl.arange(0, BLOCK_N)
    mask = (offs_m < N)[:, None] & (offs_n < N)[None, :]

    dtype = Out.dtype.element_ty

    out_ptrs = Out + offs_m[:, None] * N + offs_n
    I = (offs_m[:, None] == offs_n[None, :]).to(tl.int32).to(dtype)
    I = tl.dot(I, I).to(dtype)
    tl.store(out_ptrs, I, mask=mask)

def genI(N, dtype=torch.float32):
    BLOCK_N = 32
    grid = triton.cdiv(N, BLOCK_N), triton.cdiv(N, BLOCK_N), 1
    out = torch.empty((N, N), device="cuda", dtype=dtype)
    gen_eye_kernel[grid](out, N, BLOCK_N)
    return out

if __name__ == "__main__":
    out = genI(32, torch.float32)
    print(out)

Testing in other dtype, float16, bfloat16 also cause the same error.

It seems to be related with boolean dtype.
@triton.jit
def gen_eye_kernel(Out, N, BLOCK_N: tl.constexpr):
    offs_m = tl.program_id(0) * BLOCK_N + tl.arange(0, BLOCK_N)
    offs_n = tl.program_id(0) * BLOCK_N + tl.arange(0, BLOCK_N)
    mask = (offs_m < N)[:, None] & (offs_n < N)[None, :]

    dtype = Out.dtype.element_ty

    out_ptrs = Out + offs_m[:, None] * N + offs_n
    # I = (offs_m[:, None] == offs_n[None, :]).to(tl.int32).to(dtype)
    I = (offs_m[:, None] + offs_n[None, :]).to(tl.int32).to(dtype)
    I = tl.dot(I, I).to(dtype)
    tl.store(out_ptrs, I, mask=mask)

would not cause this problem.

I have some explanation after initial investigation.
The direct cause for this error is at https://github.com/openai/triton/blob/a0025cfc44c841e0c37fa3f3709ea96c109601e8/lib/Dialect/TritonGPU/Transforms/AccelerateMatmul.cpp#L117
where the correct bit width size should be int finalBitWidth = std::max<int>(8, getElementTypeOrSelf(x).getIntOrFloatBitWidth()) and  origBitWidth = std::max<int>(8, argTy.getElementType().getIntOrFloatBitWidth());, since we don't support 4-bit or 1-bit matmul at least on Ampere.
However, this isn't the root cause of the problem. With bool = 8 bit, it is similar as a mixed-precision dot 8-bit x 32-bit = 32-bit, which is not well supported yet.
A temporary workaround for you might be using float16 as the accumulator type.

I have some explanation after initial investigation.
The direct cause for this error is at
https://github.com/openai/triton/blob/a0025cfc44c841e0c37fa3f3709ea96c109601e8/lib/Dialect/TritonGPU/Transforms/AccelerateMatmul.cpp#L117
where the correct bit width size should be int finalBitWidth = std::max<int>(8, getElementTypeOrSelf(x).getIntOrFloatBitWidth()) and  origBitWidth = std::max<int>(8, argTy.getElementType().getIntOrFloatBitWidth());, since we don't support 4-bit or 1-bit matmul at least on Ampere.
However, this isn't the root cause of the problem. With bool = 8 bit, it is similar as a mixed-precision dot 8-bit x 32-bit = 32-bit, which is not well supported yet.
A temporary workaround for you might be using float16 as the accumulator type.

Thank you~ I will try it.

I tried another way to generate an eye matrix to avoid this.
I = tl.where(offs_k[:, None] == offs_k,
            tl.full((BLOCK_DMODEL, BLOCK_DMODEL), 1.0, dtype=input_dtype),
            tl.full((BLOCK_DMODEL, BLOCK_DMODEL), 0.0, dtype=input_dtype))

Sure, I think this also avoid explicit data type conversion, nice!


RangeError: Maximum call stack size exceeded at extend.hasProp

This seems to be similar to #492 and #497, but it seems to be caused by a different code path, and is still occurring in the latest (git master) version of tern (v0.10.1 according to the package.json).
When getting completions, I get the following error output from Tern:
RangeError: Maximum call stack size exceeded at extend.hasProp
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:514:22) at extend.getProp
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:544:24) at Object.extend.computedPropType
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:144:42) at Object.extend.makeupType
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:150:27) at Object.extend.toString
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:135:56) at exports.toString
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:26:48) at extend.toString
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:677:20) at exports.toString
(~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:26:48) at ~/.atom/packages/atom-ternjs/node_modules/tern/lib/infer.js:139:51 at Array.map (native)

As you can see, I'm using tern via the atom-ternjs package, but I don't believe that's the cause of the error.
The code I'm able to reproduce this on is simple:
'use strict';

var util = require('util');
var _ = require('lodash');

function ClientError(message, friendlyMessage, socket, ack) {
    Error.call(this);

    _.   // <-- error comes after typing the '.' here

    this.message = message;
    this.socket
}
util.inherits(ClientError, Error);

I'm using the module library, and Node.js' built-in util module, but what you see is the entire file. On the line indicated within the ClientError function, when I type _., the error occurs (atom-ternjs does a completions query for that cursor position, which is the trigger.)
My tern config file is:
{
  "libs": [
    "ecma5"
  ],
  "loadEagerly": [

  ],
  "plugins": {
    "complete_strings": {},
    "doc_comment": {
     "fullDocs": true
    },
    "node": {}
  }
}

If it matters, my atom-ternjs config as follows (with everything else left at defaults):
"atom-ternjs":
    origins: false
    urls: false

I wasn't able to reproduce this -- if I set up a project like that, I can complete the properties of _ without problem. (Though I'm using Emacs, not Atom).

My steps to reproduce are:

Create a new folder
Create a package.json with content as below
npm install in this folder to install lodash
Create a .tern-project file as above
In Atom, create a new JavaScript file in your node package's directory
Insert the line var _ = require('lodash');
On the next line, type _., and you should get the RangeError exception on stderr from the tern server

package.json:
{
  "name": "tern-test",
  "version": "1.0.0",
  "description": "Test for tern+lodash incompatibility",
  "private": true,
  "dependencies": {
    "lodash": "latest"
  },
  "devDependencies": {}
}

I added logging of all the queries sent to to the tern server by atom-ternjs, and this was the full output from doing the above steps:
{"files":[{"type":"full","name":"~/Desktop/tern_test/lib/test.js","text":"'use strict';\n\nvar _ = require('lodash');\n\n_"}]}
atom-ternjs-client.coffee:119 {"query":{"type":"completions","file":"~/Desktop/tern_test/lib/test.js","end":{"line":4,"ch":1},"types":true,"includeKeywords":true,"sort":true,"guess":true,"docs":true,"urls":true,"origins":true,"lineCharPositions":true,"caseInsensitive":true}}
atom-ternjs-client.coffee:119 {"files":[{"type":"full","name":"~/Desktop/tern_test/lib/test.js","text":"'use strict';\n\nvar _ = require('lodash');\n\n_."}]}
atom-ternjs-client.coffee:119 {"query":{"type":"completions","file":"~/Desktop/tern_test/lib/test.js","end":{"line":4,"ch":2},"types":true,"includeKeywords":true,"sort":true,"guess":true,"docs":true,"urls":true,"origins":true,"lineCharPositions":true,"caseInsensitive":true}}

This is the code atom-ternjs uses to start the Tern server:
command = path.resolve __dirname, '../node_modules/.bin/tern'
args = ['--persistent', '--no-port-file', '--verbose']
options =
  cwd: atom.project.getDirectories()[0].path
stdout = (output) ->
  output = output.split(' ')
  port = parseInt(output[output.length - 1])
  return if isNaN(port)
  callback port

(I'm not associated with the atom-ternjs package author(s) at all, just a user of it.)

I should also add that I can't seem to get the condense utility to spit out a legal JSON type definition for lodash. I've tried running it on lodash's index.js file directly, on the modularized files within lodash (lodash/*.js, but remove index.js), on all the subfiles within lodash (lodash/*/*.js), appending + to some/most/all of those files, enabling/disabling the node and/or doc_comment plugins for tern, using --name _, etc.
The result is either that the JSON type definition has nothing included, or that the resulting type definition crashes tern when used in the libs project config option and/or the modules option of the node plugin options in the project config.
If you can generate the type definition JSON and upload it as a gist or similar, I'd be happy to try it out!

I get a similar issue when i open the node-mysql package (using atom-ternjs).

Attached patch should help. I'm still not sure why this could be reproduced in Atom but not other editors, but installing Atom did indeed yield that error.
(The type for lodash still gets inferred as some weird recursive thing, so don't expect useful completions there, but at least it stopped crashing.)

Still not working (using atom-ternjs, updated ternjs manually.
Error:
Maximum call stack size exceeded at C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js
at Obj.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1327:11)
at Object.AVal.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1309:14)
at Obj.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1329:10)
at Object.AVal.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1309:14)
at Obj.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1329:10)
at Object.AVal.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1309:14)
at Obj.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1329:10)
at Object.AVal.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1309:14)
at Obj.purge (C:\Users\Me\atom\packages\atom-ternjs\node_modules\tern\lib\infer.js:1329:10)

That's a different infinite recursion. I wonder what it is about Atom that keeps exposing these bugs. Do you have instructions on how to reproduce this new one? (The steps outlined before no longer trigger an error for me.)

Somehow worked again for me when I started my computer today. Issue can be closed


Tidy README and reference GOV.UK Docker; remove startup.sh

Trello: https://trello.com/c/Psf7EzPB/204-move-away-from-startupsh
This updates this README to be more consistent with other GOV.UK apps and removes startup.sh as per https://github.com/alphagov/govuk-developer-docs/pull/2897. More details in the commits.

Nice! I agree the screenshots thing has dubious value for the space it takes up, although I've generally left them in other repos where I've modified the README.
One extra thing we could add here would be a reference to the docs/ directory, since this repo happens to have one already.

Thanks, I had a look in /docs and there's just one lone adr there so it doesn't really seem worth linking to bits in there.


[BUG] Stuck on "Ensuring login on Bing..."

It stops when it hits this message.

Fixed! Remove Line 86:
checkBingLogin(browser, isMobile)

Thanks!


make sure normal styling does not influence height calculations

@jpuri you once mentioned a colleague messed with the height calculations by setting a min-height for all textareas. This would help to even prevent a global style influence on the calculations.

Cool, let me check.

I checked it and it seems there is still issue, I was also searched and found this (check comment 3): http://stackoverflow.com/questions/27555700/textarea-resizes-width-but-not-height-why
If a style is specified which set textarea min-height inline height/min-height can not override it. I made this fiddle and this confirms my finding: https://jsfiddle.net/yctv9whe/

Hey Nik,
I tried out changes in my project and one more small change was needed. I have done that and merging.

@jpuri nice, thx :+1:


Keep getting read timeout

Web login fine.
Desktop App login fine.
Butt keep getting read timeout
my log id: abd20af3e18068ea7f23191c

Hi @thariman, thanks for the report.  What seems to be happening is that you're getting the timeouts due to something in Windows request the free disk space information from KBFS, and KBFS hitting a timeout trying to get the info.  I'm having trouble figuring out what could be causing the timeout though, as it seems the requests are indeed going through to our server.
Is it possible that your connection to our servers is so slow that it takes more than 19 seconds to send a simple RPC and get a response?
@thariman, have you tried looking at any Keybase file system data?  I don't see that in your logs.  I'm curious to know if that works or not.  (And when you try it, would you mind sending another set of logs?)  Thanks!


Make the ". " separator after the alias configurable

Would be nice to be able to say:
a > thing
b. thing
c - thing
etc.

That's a good point. I think I can add that. I was also thinking about having "sub-commands" where you can indent like:
a. task1
b. task2
  - subtask2
c. task3

I'll see if I can wrap all that together.


Log internal server errors

Feature Description
If any thing errors internal the logs should contain the error that you can debug/report the problem

@ruessej did you try with log_level error?

Thanks didn't saw that

@ruessej did you try with log_level error?
https://docs.authorizer.dev/core/cli

Is there a way to set it via the envs?

We don't have it,
I will add it soon


Sync with vcpkg changes to docs/ in 9074f833496ebd1b3e050f62568b9bba014f2d17

Learn Build status updates of commit 04c1f71:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

vcpkg/contributing/maintainer-guide.md
:white_check_mark:Succeeded
View

vcpkg/contributing/vcpkg_tool_release_process.md
:white_check_mark:Succeeded
View

vcpkg/examples/packaging-github-repos.md
:white_check_mark:Succeeded
View

vcpkg/users/binarycaching.md
:white_check_mark:Succeeded
View

vcpkg/users/buildsystems/cmake-integration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 24eafa8:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error: CannotMergeCommit] Cannot merge commit 24eafa8cf39fc22e310eebda9403d5106126cd48 in branch sync-2022-12-14 of repository https://github.com/ras0219-msft/vcpkg-docs into branch main (commit 887f04c3a552038a51b487211c1020675506352c). Please follow this documentation: https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/ to use git.exe to resolve you content conflicts locally and then push to remote.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Learn Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings or suggestions unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

Learn Build status updates of commit 562eff8:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

vcpkg/contributing/maintainer-guide.md
:white_check_mark:Succeeded
View

vcpkg/contributing/vcpkg_tool_release_process.md
:white_check_mark:Succeeded
View

vcpkg/users/binarycaching.md
:white_check_mark:Succeeded
View

vcpkg/users/buildsystems/cmake-integration.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel


Fix default value for USD preview surface roughness implementation

Fix to use correct value for roughness of USD preview surface.
Was set to clearcoat-roughness value incorrecly 0.01 vs 0.5 (correct valut according to usd spec.)

This looks like a valuable fix, thanks @bernardkwok!  Would we also need this change to be applied to the usd_preview_surface_default.mtlx example material?
https://github.com/materialx/MaterialX/blob/main/resources/Materials/Examples/UsdPreviewSurface/usd_preview_surface_default.mtlx

This looks like a valuable fix, thanks @bernardkwok! Would we also need this change to be applied to the usd_preview_surface_default.mtlx example material?
https://github.com/materialx/MaterialX/blob/main/resources/Materials/Examples/UsdPreviewSurface/usd_preview_surface_default.mtlx

Yes. I didn't see that we explicitly put the default value in here. I can put up another change. Thanks for catching this.


Ability to specify mp-slug

It would be nice if there was an option to specify mp-slug, instead of relying on the server to derive one.

Thanks for the suggestion. It's a good idea.


error/bug in arrival times

Dear @smousavi05
It seems there is something wrong in detected arrival times (or at least when writing them to a file) as you can see it here in a small portion of Y2000.phs file:
2018 811 65853.0028 31.92 51 17.40 5.000.00
AHRM BI  HHZ IP 02018 811 65846.20        0.00   0
ABTL BP  HHZ IP 02018 811 65852.00        0.00   0
DLRM BP  HHZ IP 12018 811 65852.00        0.00   0
ABAS BP  HHZ IP 12018 811 65853.00        0.00   0
                                                                  200043
2018 811 7 351.5228 31.92 51 17.40 5.000.00
ABTL BP  HHZ IP 12018 811 7 340.00        0.00   0
KHIA BP  HHZ IP 12018 811 7 340.00        0.00   0
NOKA BP  HHZ IP 12018 811 7 342.00        0.00   0
ABAS BP  HHZ IP 02018 811 7 351.00        0.00   0
SHIF BP  HHE     2018 811 7 3 0.00       51.05ES 0
                                                                  200044

1- Decimal seconds are zero for most of P phases (no S phase associated with).
2- Arrival times of some stations for some events, are the same! e.g, look at stations "ABTL" and "DLRM" in the first event or stations "ABTL" and "KHIA" in second one.

@saeedsltm HI Saeed. yes there is a minor issue in writing out the decimals, I think I know what causes this and hopefully soon gets some time to fix it.
I think the second issue is related to the first one as for stations with similar station-event distances, the arrival time differences could be as small as a fraction of a second and here loosing the decimal points make them look similar.

Hi @saeedsltm, I remember you had a dataset on which EqT did not perform well. Blocky Earthquake Transformer or BET(https://github.com/maihao14/BlocklyEQTransformer) might be helpful in that case. BET is a user-interface no-code-based platform that makes it easy to fine-tune EqT for specific data/regions. It also provides a user-friendly interface to create your own EqT model and train it without dealing with coding or knowing in-depth ML. Let me or Hao know if you had any questions.

Dear @smousavi05 Thanks for the suggestion, i will check it out.


Feature/558 transfer logging

Description

Fixes # (issue)
Type of change

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to not work as expected)
This change requires a documentation update

How Has This Been Tested?

[ ] Local Pre-commit Checks
[ ] CI/CD Build

Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] My changes generate no new warnings
[ ] If applicable - I have commented my code, particularly in hard-to-understand areas
[ ] If applicable - I have made corresponding changes to the documentation
[ ] If applicable - I have added tests that prove my fix is effective or that my feature works
[ ] If applicable - New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (feeff02) 98.49% compared to head (9400d59) 100.00%.

:exclamation: Current head 9400d59 differs from pull request most recent head 02088a0. Consider uploading reports for the commit 02088a0 to get more accurate results

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##           v1.1.0      #590      +/-   ##
===========================================
+ Coverage   98.49%   100.00%   +1.50%
===========================================
  Files          76        30      -46
  Lines        2729       907    -1822
  Branches      415         0     -415
===========================================
- Hits         2688       907    -1781
+ Misses         41         0      -41

Flag
Coverage Δ

backend
100.00% <100.00%> (ø)

frontend
?

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

The codecov/patch looks like a false-positive and the diff is out of whack, I wonder if against master not v1.1.0?  So maybe we can merge if the changes look ok @downiec ?


Remove Channel Islands from list of Counties that can be used for new place name.

Channel Islands is not a County. It is an area. The 'counties' used are the individual islands. The existence of this possible county entry is going to make the coding of searching more difficult (an deciding how to search more difficult for the researcher).
In the Chapman Code hierarchy this is not a code that can be used. I am not sure why it is there.
We already have places that hang off of this county. There are over 71000 search entries that point to CHI Guernsey alone. They will all need to be moved to GSY -. I have not checked the other islands.
Geoff

Anne to remove from Gazetteer
Geoff to clean up
Vino to move the links

'Channel Islands' removed from list of counties available when creating a new Gazetteer place.
The change will be Deployed to Production in conjunction with the deployment of story 1473 (Gazetteer bug fixes and enhancements).

Anne
Thankyou
Geoff
From: Anne Vandervord @.>
Sent: Wednesday, 8 March 2023 9:55 PM
To: FreeUKGen/FreeCENMigration @.>
Cc: Geoff J @.>; Author @.>
Subject: Re: [FreeUKGen/FreeCENMigration] Remove Channel Islands from list of Counties that can be used for new place name. (Issue #1495)
'Channel Islands' removed from list of counties available when creating a new Gazetteer place.
The change will be Deployed to Production in conjunction with the deployment of story 1473 (Gazetteer bug fixes and enhancements).
—
Reply to this email directly, view it on GitHub https://github.com/FreeUKGen/FreeCENMigration/issues/1495#issuecomment-1460045839 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AKCPIFKBXRELUW7C4PPVGZ3W3BXSNANCNFSM6AAAAAAVKUPPQU .
You are receiving this because you authored the thread.  https://github.com/notifications/beacon/AKCPIFJGYWHQWQ5NRB7HMQTW3BXSNA5CNFSM6AAAAAAVKUPPQWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTSXA2EA6.gif Message ID: @.*** @.***> >

Deployed: closing


The code/flows menu hiddes when the code window is resized

Expected Behavior
You should be able to change the size of the code tab without loosing the top menu access
Current Behavior
The menu moves to the right, hiding and preventing access to the menu
Steps to Reproduce
Steps to reproduce the behavior:

Login as admin
Go to a page.
Click on pencil button.
Click an element.
Select the flows view in right panel.
Select the code view in right panel.
Make the code window smaller

Context (Environment)

Default setup
OS: MacOS, Windows 11
Browser: Chrome
Environment: dev

Issue demo
https://github.com/Protofy-xyz/Protofy/assets/7711808/e8767900-fa16-4abc-9c08-f68beb938463

Solved on 107eaf3


Partial decoding

Is it possible to decode only a given region of the image? Let's say I take pictures at 640x480 resolution, but I only need the rectangle at coordinates from <0, 0> to <200, 200>. As far as I know, Jpeg works in 16x16 blocks, so would it be possible to only extract the portion of the image from <0, 0> to <208, 208> (208 being the nearest multiple of 16)?

Hi @eloquentarduino, the libs in this repository currently don't support decoding partially. But my colleagues are working on this function which may be released next month.

I'm working on this idea for my JPEGDEC library. There will be two paths - decode+crop and lossless crop of the jpeg compressed data. Both will be much faster than libjpeg or any current solution because I really optimized the "avoid unnecessary work" path. Also decode color->grayscale w/cropping will be ridiculously fast.


Detectors that have detected abnormal time periods should have a badge on them

To Add more info here- the work requires updating Sia model to include list of detectors that beeped not necessarily correlated with downtime.
In UI, when sia repsonse is fetched, use this list of detectors to add a badge of importance in front of detector names in side menu

tested it on prod
its good

Why did you close this ?
Thanks
Shekhar

From: aspaan<EMAIL_ADDRESS>Sent: Friday, October 14, 2016 9:33:55 AM
To: ShekharGupta1988/AppLensV2
Cc: Shekhar Gupta; Comment
Subject: Re: [ShekharGupta1988/AppLensV2] Detectors that have detected abnormal time periods should have a badge on them (#17)
tested it on prod
its good

You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FShekharGupta1988%2FAppLensV2%2Fissues%2F17%23issuecomment-253852867&data=01|01|shgup%40microsoft.com|6c3b159879704299526a08d3f44fe5f2|72f988bf86f141af91ab2d7cd011db47|1&sdata=r7rZ9o%2BIMBaM2O%2FAZGg67YbPQoUH3L%2BYQfe7oWTvABU%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKqm4c82r1pnj5_tFZ7tXqCcSmT5E5n_ks5qz67zgaJpZM4KRd4Q&data=01|01|shgup%40microsoft.com|6c3b159879704299526a08d3f44fe5f2|72f988bf86f141af91ab2d7cd011db47|1&sdata=INLDfOWADQWxD55oqFXC6nJjSqD2CgWT8M6v%2BKmQzGk%3D&reserved=0.

Oh capi thought that's the one I was supposed to close
From: Shekhar Gupta
Sent: Friday, October 14, 2016 9:36 AM
To: ShekharGupta1988/AppLensV2<EMAIL_ADDRESS>ShekharGupta1988/AppLensV2<EMAIL_ADDRESS>Aspaan Kamboj<EMAIL_ADDRESS>Cc: Comment<EMAIL_ADDRESS>Subject: Re: [ShekharGupta1988/AppLensV2] Detectors that have detected abnormal time periods should have a badge on them (#17)
Why did you close this ?
Thanks
Shekhar

From: aspaan <notifications<EMAIL_ADDRESS>Sent: Friday, October 14, 2016 9:33:55 AM
To: ShekharGupta1988/AppLensV2
Cc: Shekhar Gupta; Comment
Subject: Re: [ShekharGupta1988/AppLensV2] Detectors that have detected abnormal time periods should have a badge on them (#17)
tested it on prod
its good

You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FShekharGupta1988%2FAppLensV2%2Fissues%2F17%23issuecomment-253852867&data=01|01|shgup%40microsoft.com|6c3b159879704299526a08d3f44fe5f2|72f988bf86f141af91ab2d7cd011db47|1&sdata=r7rZ9o%2BIMBaM2O%2FAZGg67YbPQoUH3L%2BYQfe7oWTvABU%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAKqm4c82r1pnj5_tFZ7tXqCcSmT5E5n_ks5qz67zgaJpZM4KRd4Q&data=01|01|shgup%40microsoft.com|6c3b159879704299526a08d3f44fe5f2|72f988bf86f141af91ab2d7cd011db47|1&sdata=INLDfOWADQWxD55oqFXC6nJjSqD2CgWT8M6v%2BKmQzGk%3D&reserved=0.

ui on left asort by related ranked
then no related and ranked
and then no related and not fired ranked
IN API for SIA also include the un related but fired detectors


Usage of Java 8 features

For the time being, our minimal Java requirement is Java 7, but DebugMojo uses Java 8 features

Yeah its fine IMHO to be Java8+

@davsclaus remember when we had support Maven 3.0.5 which is barely Java 7 ? 99% of our code is Java 7 still for some reason: A tool which is used in thousand of different environments should be as conservative as possible w.r.t to JDK requirements (for d-m-p I had even a request to support Java 6)
So I don't want to give that up only for having this single Java 8 code snippet in the code base. The rest is still perfectly working in Java 7. If we would writing our own app I'm all for using Java 8 (and in fact I really looking forward to use finally lambdas ;-)
@davsclaus could I convince you to stick to Java 7 for such a developer tool ? :)

Crap button next to comment.
Its a balance. If the code uses too old Java then people stop contribute as they want to work with newer Java, especially Java 8.
@rhuss you are free to change the code in the debug so you can use java 7. You work the most on these plugins. I am going back to my beloved Camel instead.

Camel 'already' moved to Java 8, right ? Good animal ....
Yeah, you are right, getting talents is harder with rusty Java 7. But don't underestimate the happiness of people when they final find something running in their ivory enterprisy towers.
Lets keep Java 8 for the next major version of f-m-p, which for sure will come ;)

We already moved to Java 8


May need to add make.exe to environment variable path also

Fantastic and very helpful tutorial on how to use cmake with the IAR build system. One note you may want to add to the tutorial: the variable to make.exe needs to be included in the system environment variables on a Windows build machine. I believe by default make.exe may be included on Linux build system, but not by default Windows. Otherwise, this was a great and informative tutorial. Thank you.
Colin

Thanks, @ColinFlournoy. This is a good suggestion.