Only show candidates in range for best candidate facet

After reconciling you're presented with a numerical facet called "best candidate's score" which you can use to adjust the range of which rows to show.  But currently it only limits which rows to show and not which candidates to show.
Proposed solution

It would be nice if this facet limited both which rows and which candidates to show so that only rows which have some candidates within this range (the current behavior) but also only show those candidates in this range as well.
Alternatives considered

Additional context

This is mostly a "nice to have".  I think it reduces cognitive dissonance just a hair and also makes it a tiny bit easier to aim the mouse at the choice you want by removing clutter.
I'm guessing this is mostly a change on the client, though I'm not sure how accessible the range is when the rows are being rendered.

If I'm reading the code right, this should be accessible from anywhere with ui.browsingEngine.getJSON().
From the browser web console, it looks like it should have enough info in it as well.
>> ui.browsingEngine.getJSON()
{
facets: (3) […]
0: {…}
columnName: "countyLabel"
expression: "cell.recon.best.score"
from: 81
name: "countyLabel: best candidate's score"
selectBlank: true
selectError: true
selectNonNumeric: true
selectNumeric: true
to: 101
type: "range"
<prototype>: Object { … }
1: Object { type: "list", name: "matchStateID", columnName: "matchStateID", … }
2: Object { type: "text", name: "XcountyName", columnName: "XcountyName", … }
length: 3
<prototype>: Array []
mode: "row-based"
<prototype>: Object { … }
>>

Interesting! I am reluctant to this change, for various reasons.

first, as a user it's not really clear to me that I would want this most of the time: when I review high-scoring candidates it is useful to also see low-scoring ones for the same row. The correct match might have a low score, and it might be more obvious visually that the low-scoring one is correct than that the high-scoring one is incorrect.
second, this would go against the principle that facets only filter rows/records as a whole and do not tweak their contents when displaying them. I am not saying that this is written in stone anywhere but if we want to question that idea then we should probably step back a bit and design something that is more flexible (generic filtering capabilities for candidates? being able to reorder, rescore candidates? I think there are many exciting things to consider there!)
third, this would need to be properly integrated in the backend to avoid being confusing. Say I select only the high scoring candidates and then derive a new column based on the list of candidates: there will be a discrepancy between the frontend (where I only see the high-scoring candidates) and the backend (where my GREL expression sees all of them).

second, this would go against the principle that facets only filter rows/records as a whole and do not tweak their contents when displaying them. I am not saying that this is written in stone anywhere but if we want to question that idea then we should probably step back a bit and design something that is more flexible (generic filtering capabilities for candidates? being able to reorder, rescore candidates? I think there are many exciting things to consider there!)

I think this is key - making this change completely changes the behaviour of the facet/filter functionality in this one case. This seems like a bad idea.
Linking this view to the facet also means that it will only be available in this context. Given the issue as described, it would make more sense to me to consider a View option which displays only the best candidate - or possibly even (or additionally) "all candidates scoring above X" type option for more flexibility

I'm more than willing to discuss alternatives.  As a user though, it struck me as odd that the facet would limit the rows but still show me candidates outside of the restricted range.  As a programmer I can appreciate the trying to keep the functionality orthogonal but I don't think this is something users are thinking about.
Also I don't think the average user really thinks about whether the matching candidates are part of the row.  It comes across as more of a useful view of related data.
@ostephens - Can you think of any other examples where something like this might apply?  It is possible that this facet is unique in this regard.  I'm not exactly sure what you mean by a "View option".  Are there examples of other View options I can compare with or are you proposing a new interface similar to what @wetneb is alluding to above?
It sounds to me like the suggestion is to basically have a "facets" on the listed candidates in addition to the rows.  If these two different facets are treated as orthogonal, I can imagine the vast majority of people wanting to keep them in sync, though I admit this may be just my bias.  Would you really want to see rows which have some candidate with a score above X but then show candidates with a score above (or below) Y?
Again, it might be my bias, but I'm assuming that people using the current facet are explicitly only interested in the candidates fitting in the range of the facet.

It's probably worth being explicit that this is only a view issue, the candidates are not being changed at all.  Further the problem in @wetneb's third point above is pretty obviously addressable by using a filter() in your GREL expression and I don't have a strong feeling about this being a surprise for users.

I totally agree that it feels natural to somehow couple the filtering done on rows and the one done inside the candidates. I think it's really exciting to start thinking about this actually! I think we should be able to find something that fits your bill and can also accommodate more general filtering needs.

I'm happy to let this sit if we want to mull this over.  It's definitely a nice-to-have for me more than a killer feature.

Thinking about this a bit more, I see that the filter is for "best candidates score".  I.e. it only claims to be looking at the best score among the candidates and says nothing about the other candidates.  My reading was more like "candidates score" and using the fact that if the "best candidate" was in range then there is at least one candidate in range.  Though this does mean that if your range doesn't include the best score for the row, then the row won't appear even if it does have some candidate in range.
Maybe it's better to have have a "candidates score" facet?

That sounds much easier, as it should be doable to have a candidates score facet without changing anything to the architecture. A GREL expression that returns a list of numeric values should be treated by the facet accordingly.

@ostephens - Can you think of any other examples where something like this might apply? It is possible that this facet is unique in this regard

The most obvious possibility would be only showing the rows within a record that match the facet value/filter - although this is slightly different because in that case each value is in it's own cell (and so in this scenario you would be hiding/showing rows rather than values within cells). Equally I guess that any cell that contains (from the users perspective) multiple values could be something that the user would want to do - but it's a less obvious use case I think.
However - reflecting on it, obviously what we are doing here is filtering a list of possible matches, not filtering out content from the cells - and of course the reconciliation process has precedent for this (i.e. once you've selected a match, the other potential matches no longer display). So perhaps my original objection to this has being counter to existing behaviour is too strong.

I'm not exactly sure what you mean by a "View option"

In the dropdown menu at the top of each column there is a "View" option. This currently controls hiding/showing columns.
In the "View" option in the "All" column drop down there is an additional option to hide/show null values in cells.

Would you really want to see rows which have some candidate with a score above X but then show candidates with a score above (or below) Y?

In short - Yes! I want to look at the rows that have a match in a certain score/confidence range, but that doesn't necessarily mean that's the correct match. Where I want to just use the best match then there is the existing "Match each cell to its best candidate" option.
As long as I'm in the position of making decisions about matches (rather than just relying on the score) then I want to see the range of options that has been found.
I still feel at the moment like a "View best candidates only" should be kept separate to "Filter rows to those where the best candidates score falls into a range". However, I do understand the argument for these being closely coupled. Maybe a checkbox on the filter that controls the view?

In short - Yes! I want to look at the rows that have a match in a certain score/confidence range, but that doesn't necessarily mean that's the correct match. Where I want to just use the best match then there is the existing "Match each cell to its best candidate" option.

I must admit it still sounds strange to me to not want to see rows where all the candidates score low but to want to see low scoring candidates for rows which have some candidate which scores well.  If you're conceding that low scoring candidates might be the right match, wouldn't that apply to all rows?  And if that's not your immediate concern, shouldn't seeing candidates in range suffice?
That said, I agree that my proposal doesn't quite fit the "best candidate" facet for the reason described in my last post.  The new proposal is to have essentially a "some candidate" facet where you see rows which have some candidate in the facet range and to tie this facet with the view on the candidates to see only those candidates fitting in that range.

If you're conceding that low scoring candidates might be the right match, wouldn't that apply to all rows?

I often feel like I do not have enough time to review all rows - I am lazy and only want to spend time on rows for which there is a good chance of finding a match. But when I do decide to match a cell to a candidate I want to do it in confidence that I am not overseeing candidates for that row.
This is an attitude I have when I want high precision but do not care much about recall.

@wetneb I guess that makes sense but I'm still confused by the mix of being lazy and disciplined.  It feels like if you find a match outside of the range you've restricted it to, it's basically luck.  I would trust my eyes for spot checks but if they're the only things assuring accuracy I don't hold out a lot of hope.
So are the rows which don't have some candidate high enough left for dead though they're equally likely to have a match outside of the facet range?
I would generally do a first pass of "likely" candidates and then have some overall check for accuracy, assuming I had some heuristic.  Once you hit a certain size (and I might say that's the size at which you want to use filtering) you probably need a heuristic because eyeballing that many rows is difficult.

I think if we can find a way of offering this as an option which can be used if the user wants to (even happy for it to be the default behaviour as long as it can be overridden) then I think it's a good idea.
I guess ultimately people have different preferences for working through options and dividing up their work. For me, dealing with lines with high scoring candidates is a way of isolating the rows which are likely to be the fastest to work through - but once I've isolated them I want to work through them all.
Overall hiding candidates that don't meet a (user-selected) score threshold seems like a good idea. So I think really this is just about how we implement this with the flexibility to allow the user to show the hidden candidates when they want. I still think that this should be an option that can be used independently of any particular facet - because it could generally be useful no matter whether I've applied a facet or not, but I'd be very happy to see it integrated with specific facets to let the user keep the selections in sync.

For me, dealing with lines with high scoring candidates is a way of isolating the rows which are likely to be the fastest to work through - but once I've isolated them I want to work through them all.

That's a much better way to phrase my comment above, thanks!

@ostephens - I agree this should be a different facet and don’t mean to suggest that this replace the current one.  I was just trying to understand the suggest workflow for the current facet.


Missing details about Vnet

[Enter feedback here]
How do we pass in the vnet in which we want to deploy the vm ? i dont see any example for this

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 074568ee-1fc9-3d9a-1c10-96ada221c0aa
Version Independent ID: 9e5ebd88-534b-3d7e-f145-03797a56330f
Content: Tutorial - Create and manage Linux VMs with the Azure CLI - Azure Virtual Machines
Content Source: articles/virtual-machines/linux/tutorial-manage-vm.md
Service: virtual-machines
GitHub Login: @cynthn
Microsoft Alias: cynthn

@nagula-ritvika Thank you for your feedback!  We are reviewing the documentation and will get back to you shortly.

@nagula-ritvika This is covered more in detail in the CLI documentation for az vm create.  To specify the virtual network/vnet for a VM during creation, you would use the --vnet-name parameter:
Example: Create a Debian VM with SSH key authentication and a public DNS entry, located on an existing virtual network and availability set.
az vm create -n MyVm -g MyResourceGroup --image debian --vnet-name MyVnet --subnet subnet1 \
    --availability-set MyAvailabilitySet --public-ip-address-dns-name MyUniqueDnsName \
    --ssh-key-values @key-file

@nagula-ritvika We are going to close this thread as resolved but if there are any further questions regarding the documentation, please tag me in your reply and we will be happy to continue the conversation.


Bug report (mobile): Editing page with query causes scrolling

What happened?
When editing a note containing a query with a set of results off screen, edits to the page cause the page to scroll.
https://user-images.githubusercontent.com/10112/165816083-ffe67cd2-d996-405a-9aa2-d09a577624c1.mp4
DQL
No response
JS
No response
Dataview Version
0.4.26
Obsidian Version
1.2.1
Device
iPad Pro
OS
15.4.1

I'm having a very similar scrolling issue. My problem is only with notes created from templates that contain dataviews. The problem is particularly bad on mobile when the dataview is on screen.
DQL

template version
List
From "Fleeting Notes"
WHERE file.cdate = date(<%tp.date.now("YYYY-MM-DD")%>) AND id != "629609c1-26a2-4f22-9774-b49cb293d427"

The others are just slight variations of this.
JS
None
Dataview version
0.5.56
Obsidian Version
1.4.6
Device
iPhone 12 Pro Max
os
16.5


div blocking card highlight

The highlighted div blocks onhover for the card. Just wanted to let you know if this isn't intended.
Great job on the site, it looks really nice.

Thanks for pointing this out, I never noticed! Fixed


Tooltips not updated in Firefox while scrolling.

While working on a custom tooltip implementation for ChartJS I noticed the tooltip updating behavior while scrolling in Firefox is different compared to Chrome. In Firefox the tooltip is not updated or removed if a user scrolls down the page, while not moving the mouse. The problem is easy to reproduce with the pie-customTooltips.html sample:

Make the browser window slightly smaller than the chart.
Put the mouse cursor on a segment, a tooltip will appear.

Scroll down until the mouse pointer is no longer above the previously selected segment. Make sure NOT to move the mouse. Notice the old tooltip is still visible.

I did some debugging and found out Chrome triggers a 'fake' mousemove event after scrolling, while Firefox does not. This behaviour can be demonstrated with: https://jsfiddle.net/mkok7bx8/.
It seems to me that ChartJS shoud not rely on the 'fake' mouse event, but rather handle scrolling events itself.

This seems straightforward. @tannerlinsley any thoughts?

I think this might introduce overhead we don't want into the library.

Debouncing the scroll event
Check the location of the mouse against any chart's location
Manually firing the hover event on that chart.

Yeah, I mean, we could do it, but I think it would work better as a supplemental script.  Not something built into the core.

Agree that this doesn't seem to be the best thing to put in the core. Suggested way would be to listen to scroll events manually and update the tooltip accordingly.


IDR for HMMRATAC

https://github.com/LiuLabUB/HMMRATAC/issues/20

At least have IDR work properly for release

Feel free to reopen when wanted


KafkaChannel, Broker, and KafkaSink don't delete topic when finalized

Describe the bug
I have a ready channel:
pierdipi@pierdipi demo (main) $ k get kafkachannels.messaging.knative.dev
NAME               READY   REASON   URL                                                                                AGE
my-kafka-channel   True             http://kafka-channel-ingress.knative-eventing.svc.cluster.local/default/my-kafka-channel   10m

The channel topic knative-messaging-kafka.default.my-kafka-channel is created:
pierdipi@pierdipi demo (main) $ k get kafkatopics.kafka.strimzi.io -n kafka
NAME                                                                                CLUSTER      PARTITIONS   REPLICATION FACTOR   READY
consumer-offsets---84e7a678d08f4bd226872e5cdd4eb527fadc1c6a                                        my-cluster   50           3                    True
knative-demo-topic                                                                                my-cluster   3            1                    True
knative-messaging-kafka.default.my-kafka-channel                                                   my-cluster   10           3                    True
strimzi-store-topic---effb8e3e057afce1ecf67c3f5d8e4e3ff177fc55                                     my-cluster   1            3                    True
strimzi-topic-operator-kstreams-topic-store-changelog---b75e702040b99be8a9263134de3507fc0cc4017b   my-cluster   1            1                    True

If I delete the channel:
pierdipi@pierdipi demo (main) $ k delete kafkachannels.messaging.knative.dev my-kafka-channel
kafkachannel.messaging.knative.dev "my-kafka-channel" deleted

the channel is deleted but the topic knative-messaging-kafka.default.my-kafka-channel is still there:
pierdipi@pierdipi demo (main) $ k get kafkatopics.kafka.strimzi.io -n kafka
NAME                                                                                CLUSTER      PARTITIONS   REPLICATION FACTOR   READY
consumer-offsets---84e7a678d08f4bd226872e5cdd4eb527fadc1c6a                                        my-cluster   50           3                    True
knative-demo-topic                                                                                my-cluster   3            1                    True
knative-messaging-kafka.default.my-kafka-channel                                                   my-cluster   10           3                    True
strimzi-store-topic---effb8e3e057afce1ecf67c3f5d8e4e3ff177fc55                                     my-cluster   1            3                    True
strimzi-topic-operator-kstreams-topic-store-changelog---b75e702040b99be8a9263134de3507fc0cc4017b   my-cluster   1            1                    True

Expected behavior
KafkaChannel topic is deleted.
To Reproduce

Create channel
Delete channel

Knative release version
devel
Additional context
/area channel

/assign

(this is actually a problem in every resource reconciler)

For broker and channel, the topic is an internal thing and yes, it should be removed.
Source won't remove the topic anyway.
For sink though... I don't think we should delete the topic. The point for using the KafkaSink is externalizing the event flow out from Knative. I don't think the topic is owned by the sink.

For sink though... I don't think we should delete the topic. The point for using the KafkaSink is externalizing the event flow out from Knative. I don't think the topic is owned by the sink.

We have support for controller-owned and external topics in KafkaSink, so we delete the topic only when it's controller-owned.

https://github.com/knative-sandbox/eventing-kafka-broker/blob/db70212f7e886eb7be629b8b712b857a6be75a58/control-plane/pkg/reconciler/sink/kafka_sink.go#L119-L142


Several fixes, code and docs

Fixes #10

You are the best. Buying you a beer next time we're in the same city.


Respect XDG_CONFIG_DIR on linux

It would be nice if iamb used the XDG_CONFIG_DIR value (defaults to ~/.config) to determine where to look for the iamb/config.json.
This would allow users to use different configuration directories without requiring creating symbolic links.

iamb will respect the XDG_CONFIG_HOME variable if it's set. There is a XDG_CONFIG_DIRS variable, but that is a colon-separated list of paths to search for read-only config files, and defaults to /etc/xdg.

Classic case of me misremembering. You are correct.


CentOS: Unable to use the panel to start the server

Seems on CentOS 7, you cannot start the server with the panel.
When you attempt to start the server the page just loads and loads and loads and then it reports the servers starts successfully, but in fact they did not.
From the logs it appears that the SSH2 connection is made, and from some ps ax | grep server logs, the screen is created, but the server exec is just not started.
Of note: it worked on a Container on a debian server running CentOS 7, but it does not work on an actual physical or KVM machine.

NOTE: SeLinux is disabled and IPTables is set to accept all traffic.

Of note: I did not compile my copy of hercules, so this may be the issue with me, stand by.

Yes, this was my issue. My hercules was not compiled. The hercules servers must be completely error free it seems. Will work on fixing this. I will remove the bug label and assign a different.

Do some error checking to fully solve this.
The panel should check:

Does the log/ Hercules directory exist and is it writable by the user?
Does the executable file exist and is it +x (if not, may not compile or might be named differently)

Sometimes the server does not start but the panel reports it started successfully. Look into this.


Add support for networking opts

allows to customize public network name
according to the cloud provider
allows disabling ipv6 at config level

Fixes #89 #88
/assign @dims

/ok-to-test

/approve

hi @dims
thanks a lot for being so prompt
2 questions though: is there anywhere i should add some doc about these new params?
what is this "tide" / "lgtm" label thing in the PR's check?
thanks a lot
regards
yann

@yanndegat that's the usual workflow in all kubernetes repositories. right now i have approved the changes, waiting for some of the other reviewers to apply a lgtm (looks good to me) label. once that is done one of the bots merges the change

@yanndegat once https://github.com/kubernetes/cloud-provider-openstack/pull/99 merges, we can update that doc with the new options

/lgtm

@yanndegat I am sorry I arrived late to review. This patch is already merged but introduces a change in Behavior.
Now you really need in the config

Hello @yanndegat @dims
I apologize I arrived late to review this patch, and it is now already merge.
Please not that there is a change in the default behaviour after merging this patch.
The patch removes the default hardcoded referce to the public network. So it is mandatory now to have at least this bit of configuration:
[Networking]
public-network-name=public

The code does not use a default option when public-network-name is not specified in the config.
@yanndegat please fix this with a new patch, or write a Release note of users upgrading.
thanks !

@zioproto it does default to public. please look carefully :)

search for cfg.Networking.PublicNetworkName = "public" @zioproto

@yanndegat @dims you are right ! Better ! It is all OK then. Sorry for the noise, thanks for your contribution.


Config Test ("Git user is able to sudo to Redmine user?") not correcly displayed

Hi there,
I've just installed release 1.0.1 under Apache (under Debian jessie [stable soon!]), so my Redmine user is www-data
Everything is working correcly.
But - as far as I can tell - the Config Test regarding "Git user is able to sudo to Redmine user?" is displayed incorrectly ...

/etc/sudoers.d/redmine_git_hosting
is correct

www-data     ALL=(git)       NOPASSWD:ALL
git     ALL=(www-data)       NOPASSWD:ALL

as it should be.

Testing sudo manually is also perfect, if care is taken...:

### Test git -> sudo to -> www-data
###################################
USR@redminedebian:~$ sudo su - git

git@redminedebian:~$ sudo -u www-data -i whoami
             This account is currently not available.                ### OOPS!!!!
        ### This is because
        ### login-shell of www-data is now (new!): /usr/sbin/nologin
        ### So instead do this:

git@redminedebian:~$ sudo -u www-data whoami                      ### works perfectly
             www-data
git@redminedebian:~$ exit

### Test www-data -> sudo to -> git
###################################
USR@redminedebian:~$ sudo su - www-data
            This account is currently not available.                 ### OOPS!!!!
        ### This is because
        ### login-shell of www-data is now (new!): /usr/sbin/nologin
        ### So instead do this:

USR@redminedebian:~$ sudo -u www-data      sudo -u git whoami     ### works perfectly
             git

### Test both directions, in one step! ;)
###################################
USR@redminedebian:~$ sudo su - git
git@redminedebian:~$ sudo -u www-data     sudo -u git   sudo -u www-data  whoami  ### works perfectly
             www-data

So note this difference regarding login-shell of www-data, between Debian Wheezy and Debian Jessie
### Debian Wheezy (using Apache 2.2) ############
USR@my_wheezy:~$ cat /etc/passwd | grep www-data
          www-data:x:33:33:www-data:/var/www:/bin/sh

### Debian Jessie (using Apache 2.4) NEW!! ############
USR@my_jessie:~$ cat /etc/passwd | grep www-data
          www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

.
.
I suspect (??) the Config Test, may try to sudo from git to a shell-of-www-data. This will not work.
Oh hey, I've found the spot in the code:
redmine_git_hosting/lib/redmine_git_hosting/config/gitolite_config_tests.rb#L81
I would probably change it to:
 RedmineGitHosting::Commands.sudo_capture('sudo', '-n', '-u', redmine_user, 'whoami')

The -i flag opens a login-shell, but for new Apache on Debian (jessie and newer) ... the login-shell is disabled (so leave the -i flag away)
(Hmmm... Are there any other related code-spots that need to be fixed because of this? hmmm)

Oh... in the same way, I would also update
https://jbox-web.github.io/redmine_git_hosting/howtos/install/#step-2-create-ssh-keys-for-user-running-redmine
to the following:
root$ sudo -u redmine ssh-keygen -N '' -f REDMINE_ROOT/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa

(Good for those user's like me, who have www-data as redmine user)

(Hmmm... Are there any other related code-spots that need to be fixed because of this? hmmm)

https://github.com/jbox-web/redmine_git_hosting/blob/devel/lib/redmine_git_hosting/commands.rb#L136

Hi Nicolas,

(Hmmm... Are there any other related code-spots that need to be fixed because of this? hmmm)

https://github.com/jbox-web/redmine_git_hosting/blob/devel/lib/redmine_git_hosting/commands.rb#L136

When sudoing from redmine (www-data) into the git user, -i is ok:
### Test www-data -> sudo to -> git
###################################
root@redminedebian:~$ sudo -n -u www-data      sudo -n -u git -i whoami     ### perfect
          git                                                #^^

(Therefore the code you mention commands.rb#L136 is ok!)
But when sudoing from git into redmine (www-data), then -i should not be used (->because in Debian Jessie... www-data has /usr/sbin/nologin):
### Test git -> sudo to -> www-data
###################################
root@redminedebian:~$ sudo -n -u git -i      sudo -n -u www-data    whoami     ### perfect
          www-data                                              #^^

Therefore the following should be changed:
gitolite_config_tests.rb#L81
create-ssh-keys-for-user-running-redmine

Therefore the code you mention commands.rb#L136 is ok!. But when sudoing from git into redmine (www-data), then -i should not be used (->because in Debian Jessie... www-data has /usr/sbin/nologin):

Thanks for this precisions. But this makes me realize that the sudo test git -> redmine is quiet useless as we never execute shell commands in this 'direction'.

This test is here for historical reasons, but I think it should even work without having the sudo config for the git user.

Ah ok, right! ;) Hehe
The "source" is redmine (via webbrowser) and this triggers to git when needed.

The "source" is redmine (via webbrowser) and this triggers to git when needed.

Yes

If this is so, then
https://jbox-web.github.io/redmine_git_hosting/howtos/install/#step-5-configure-sudo
can probably also become one line shorter:
root$ visudo
# Add these lines
redmine        ALL=(git)      NOPASSWD:ALL

Exactly. I'm testing it right now.

Cool, thanks a lot!

Ok great.
Just note: the following could also be updated:
https://jbox-web.github.io/redmine_git_hosting/howtos/install/#step-2-create-ssh-keys-for-user-running-redmine
to the following:
root# sudo -u redmine ssh-keygen -N '' -f REDMINE_ROOT/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa


Revisit substitution for a type parameter <T extends @NonNull Object>

https://jspecify.dev/docs/spec/#substitution discusses our current handling of this situation, handling that which we sometimes refer to as "the ImmutableList.Builder rule." Discussions of that go way back, and even today we have have an issue open for a small detail of the current handling.
@wmdietl was concerned that (if I'm summarizing correctly) a user who writes NullHostileList<@Nullable String> might want to receive an error not only when writing the type "NullHostileList<@Nullable String>" and when inserting nulls into the list but also when dereferencing an element retrieved from the list: If NullHostileList is written without runtime checks, then a null value might make it the whole way through to that point.
We should write up a doc on this before spec 1.0.

(If we keep the current rule, then the spec should provide better justification (maybe inline but probably by linking to whatever we write). The justification should touch on not just "Why do we want a special case here?" but also "Why do we implement the special case as a special case in the substitution rules, rather than through a rule that says that ImmutableList<@Nullable String> gets silently reinterpreted to ImmutableList<@NonNull String>. That question has become a FAQ among spec enthusiasts.)

(Some related discussion of this happened in https://github.com/jspecify/jspecify/issues/640.)

Is the task for this issue simply to enhance the non-normative text in the spec, or is it to change the normative text or its meaning?
If it's just to make the non-normative text better, then is it really necessary to do so before we release 1.0?

This is to discuss whether to change the normative text. (There is also https://github.com/jspecify/jspecify/issues/521, which may end up being only non-normative text, too.)
I think that @wmdietl is no longer has strong concerns about the behavior we currently specify, so I'm hoping that we can dispatch this this _relatively) quickly.

While people continue to find the current rule a little surprising when they first encounter it, they've so far also felt OK about it after discussion. I'm going to propose in today's meeting that we stick with the current rule. So I'll say here, as well, that now would be the time to let you know if you object or just would like more time to consider this.

OK, having raised this in the meeting yesterday (and also over email last week) and not heard any concerns, I'm declaring this to be decided: No matter what type argument you pass, every non-null type-variable usage remains non-null.


Cost text updates

Clarify QR usage

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.1%) to 72.786%

Totals

Change from base Build<PHONE_NUMBER>:
0.1%

Covered Lines:
2589

Relevant Lines:
3557

💛  - Coveralls


Video tearing with any version above 0.2.1

Hi, Rinat.
I've been scratching my head on this one:
Any version above 0.2.1 creates video tearing on both mplayer and Flash. I don't know which commit/change makes this happen.
I don't know what kind of info you need, I'm gonna post what I think it's relevant:
Ubuntu 15.04;
vdpauinfo header:
display: :0   screen: 0
[VS] Software VDPAU backend library initialized
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva info: va_openDriver() returns 0
API version: 1
Information string: OpenGL/VAAPI/libswscale backend for VDPAU

vainfo header:
libva info: VA-API version 0.37.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_37
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.37 (libva 1.5.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Ivybridge Mobile - 1.5.0

mesa-vdpau-drivers 10.5.2-0ubuntu1
vdpau-va-driver 0.7.4-3
libvdpau1 0.9-1
If you need some other info, please tell me!
Thanks for your work.

Tearing is an inherent issue of X11. X11 draws instantly and synchronously, so one doesn't have a way to determine when  drawing will occur regarding to vertical synchronization. Sometimes upgrading client applications, X server, or drivers introduce delays or eliminates them. And drawing that happened in the middle of screen refresh moves to the pause time. That's how tearing disappears. If for similar reason, drawing moves from pause period to the time of active screen refresh, you start to see tearing.
There is only way to help mitigate tearing possible for X11 apps: draw to back buffer and then present it instantly with something like XCopyArea. One can also actively wait for vsync, but that additional care is not applicable for middleware such as libvdpau-va-gl. Assume you are running it with Flash movies, and there are 60 of them on the page simultaneously. As they all run in one thread, waiting for vsync will add 1/60 s delay for each of them, combining to 1 second for each frame. That one thread is browser main thread, so browser will become extremely laggy too.
I suggest to use composition managers like compton instead. Composition manager will be the only who waits for vsync, and that's acceptable. As always, there is no working-for-all solution, and even with compton you'll have to experiment to find settings which are good for you. Start with
$ compton --backend xrender --vsync opengl

Thanks for your explanation, it makes perfect sense. I've tried tweaking some vsync settings before, none of them was successful, unfortunately. I'll think about compton, with 0.2.1 I have no problems with tearing so I fear that changing things that are working might ruin them, eventually. So, I'll might try it.
The only reason I opened the 'issue' was the fact that the newer versions are somewhat related to the tearing. I figured i might be some new feature or changes that would cause it.
Thanks again, Rinat.

I have some updates.
Since I'm using GNOME as my DE, Mutter is the acting composition manager. I've been googling around for Tearing issue and found a workaround - it seems. It is working flawlessly with FF + YouTube's HTML5 Player, I haven't experienced any tearing so far.
The workaround is getting into Looking Glass (GNOME's integrated debugger and inspector tool/interactive JavaScript prompt):

Alt+F2
Run the command 'lg'
At the "Evaluator" tab, run 'Meta.disable_unredirect_for_screen(global.screen);'
Press ESC to leave Looking Glass

That removed the tearing issues I had with Youtube and Firefox.
You can create a shortcut for Looking Glass:

Settings -> Keyboard -> Shortcuts
The command is: gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Main.lookingGlass.toggle();'

I believe you can create a direct shortcut with the command: gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Meta.disable_unredirect_for_screen(global.screen);'

Thanks for the updates. That looks interesting.


not support japan language

Selected local version of com.google.mlkit.dynamite.text.japanese
FATAL EXCEPTION: pool-5-thread-1
Process: com.example.draw, PID: 17166

Please follow the issue template to report your issue.


Package name in setup.py should be the same as your pip install drf-api-logger.

Great package, but when you pip install drf-api-logger and then pip list packages installed, it identifies itself as drf_api_logger when it really should be drf-api-logger which was just installed.

I'll update this in the next release.

Available in the release 1.1.16


WOTS-Ed25 Wallet Transition Requirements

Description
In the new wallet users will transition their funds from WOTS addresses to Ed25519 addresses. Ed25519 will be the default signature scheme in the new wallet. One important part of this transition involves recovering funds that sit on spent addresses. Before transitioning a user's funds from WOTS to Ed25519, we check for funds on spent addresses and execute an optional process we call "Spent Address Recovery". Spent Address Recovery seeks to generate signatures that reveal as minimal additional private key fragments such that an attacker cannot realistically brute force signatures and steal the funds before they confirm. To execute Spent Address Recovery we need the signatures of the previous spend(s), and therefore will need to rely on a permanode.
One important consideration is how to handle historical data (pre-Chrysalis) as the transaction structure is changing (see https://github.com/iotaledger/protocol-rfcs/pull/17 and https://github.com/iotaledger/protocol-rfcs/pull/18). It seems there are two options: either 1. Maintain legacy APIs and legacy transaction structure for any pre-Chrysalis data, or 2. Transition all pre-Chrysalis transactions/bundles to the new transaction/message scheme. Option 2 may prove infeasible with Chrysalis' deprecation of bundles, but it might be worth exploring for the sake of cohesion.
Motivation
We need historical transactions/signatures to allow users to safely transition from WOTS to Ed25. Requiring the user to enter signatures manually is too great a friction point for UX. The only option is to request them from a Permanode.
Requirements

Store historical data as far back as possible (preferably to 2018).
IF to host (a) scalable permanode(s).
Transactions from before Chrysalis need to be handled appropriately.

Open questions

How should historical data (pre Chrysalis) be stored on the permanode?
Can we add historical data further back than the April 2019 (current earliest)?

Are you planning to do it yourself in a pull request?
No.

In permanode the historical data is stored inside Scylla keyspace which reflects the network name(mainnet, devnet, comnet, etc), therefore the two options which you described above are possible, I would prefer the second one but also depends on legacy API to query the Signatures.

Hornet will remove the spent address list with Chrysalis part II. We also need Chronicle to store spent addresses in the legacy API.

@cvarley100 What is the required lookup API for spent-addresses?

Something like:
isAddressSpent

Parameters

Name
Required
Type
Description

address
✔
array
Addresses for which to check spend status.

Returns

Name
Type
Description

spendStatus
array
Address spend statuses.

Update on your requirements:

Store historical data as far back as possible (preferably to 2018).

Our permanode already hold the data all the way back to 2017, but there might be some gaps in the earliest dump files.

IF to host (a) scalable permanode(s).

Already hosted

Transactions from before Chrysalis need to be handled appropriately.

Permanode doesn't differentiate between pre-chrysalis and chrysalis-pt-1 data, because the transaction layout doesn't change, but this should change for any data after chrysalis-pt-2.
Answers to your open questions:

How should historical data (pre Chrysalis) be stored on the permanode?

Chrysalis-pt-2 will require us to adapt a new data model, to simplify the implementation we will keep the data pre-chrysalis-pt-2 in mainnet keyspace using the current data-model, and we will have chrysalis keyspace for all the data after chrysalis-pt-2, therefore permanode will be able to satisfy everything.

Can we add historical data further back than the April 2019 (current earliest)?

Yes, and I also plan to resolidify everything we currently have and hopefully identify any gap in the earliest data we have and most importantly if we could fetch them from somewhere.

chrysalis-pt-2 support landed and our chronicle is already in production, please feel free to reopen if needed.


Continuous deployment of "Evaluations for our trello board.ipynb"

File to generate: https://github.com/serlo/evaluations/blob/main/src/evaluations/Evaluations for our trello board.ipynb
To generate API Key: https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/
To generate necessary token: https://stackoverflow.com/a/17301115

Closed since we don't use trello anymore


OpenAPI scheme fix followers property

This PR depends on #14
Previously in the scheme the follows property was specified as a common property between Project and ProjectResult, but that's not correct, as it is follows for ProjectResult, but followers for Project.

This more seems like something that should be changed in labrinth to be consistent... it should be followers, not follows

Yeah thought that as well, this is just a quick fix for the documentation, it can be updated again if this gets fixed in labrinth.


Most of the time php behaves better with leading semicolon.

Doing Python most of the time pays its toll.

Thanks! 👍


How to apply decimation filter on D405

Required Info

Camera Model
D405

Firmware Version
<IP_ADDRESS>

Operating System & Version
Ubuntu 22.04 Jammy

Kernel Version (Linux Only)
6.2.0-32-generic

Platform
PC

SDK Version
2.54.1

Language
Python

Segment
Others

Issue Description
D435i can apply decimation filter to color frames with realsense-viewer, but not with the sample code. D405 cannot apply the decimation filter in either realsense-viewer or the sample code.
How can I apply decimation filter to color frame and depth frame with D405?
Sample Code
import pyrealsense2 as rs

def main():
    ctx = rs.context()
    pipeline = rs.pipeline(ctx)

    config = rs.config()

    pipeline_wrapper = rs.pipeline_wrapper(pipeline)
    pipeline_profile = config.resolve(pipeline_wrapper)
    device = pipeline_profile.get_device()
    device_name = str(device.get_info(rs.camera_info.name))

    config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30)
    config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)

    decimation = rs.decimation_filter(2)

    print(f"Device name: {device_name}")

    _profile = pipeline.start(config)
    while True:
        frames = pipeline.wait_for_frames()
        depth_frame = frames.get_depth_frame()
        color_frame = frames.get_color_frame()
        depth_frame = decimation.process(depth_frame).as_depth_frame()
        color_frame = decimation.process(color_frame).as_video_frame()
        print(f"Depth frame: ({depth_frame.get_width()}, {depth_frame.get_height()})")
        print(f"Color frame: ({color_frame.get_width()}, {color_frame.get_height()})")

if __name__ == '__main__':
    main()

Sample Result
(venv) henbit@i7-9700 /tmp> python down_sampling.py
Device name: Intel RealSense D405
Depth frame: (320, 240)
Color frame: (640, 480)
Depth frame: (320, 240)
Color frame: (640, 480)
Depth frame: (320, 240)
Color frame: (640, 480)
Depth frame: (320, 240)
Color frame: (640, 480)
................

Hi @LamiumAmplexicaule  The D405 camera does not have an RGB sensor to apply the Decimation filter to, as the RGB image is provided by the depth sensor on D405 and then processed with an Image Signal Processor (ISP) chip inside the camera to produce the final RGB image.  The Decimation filter does downsample the resolution of the depth image on D405 though.
The Decimation filter divides the resolution by whatever value is set for the filter.  The default value for the filter is '2', which is what you have set in your script.  So if depth is set to 640x480 resolution then a Decimation value of '2' downsamples the depth resolution to 320x240, as shown in your frame size print-out.
For example, the 848x480 depth image below from the Viewer with frame information overlaid on the image demonstrates that if the filter is set to '3' then the image display size is divided by 3 (284x160).

Changing the Decimation filter value on D405 does not affect the RGB color image, only the depth image.

@MartyG-RealSense
Thank you for your response.
So, if I want to decrease the resolution of the D405 color image to match the resolution of the depth frame, should I use software like OpenCV to decrease the resolution of the color frame?
Sample Code
cv2.resize(np.asarray(color_frame.get_data()), (320, 240), interpolation=cv2.INTER_AREA)

The code that you quoted would be one method of custom configuring the RGB display resolution, yes.
The simplest way to match the resolutions on D405 though may be to just choose a low depth resolution.  Because RGB color comes from the depth sensor, RGB will automatically use the same resolution.  For example, choosing 424x240 will set both depth and color to that resolution.

Another way to match different resolutions is to use depth to color alignment (align_to), as the RealSense SDK's align processing block automatically adjusts for resolution differences between depth and color streams when calculating an aligned image.

It was very helpful. Thank you.

You are very welcome.  :)


Update the website to have a macOS download button

Modify the text to include macOS, and add a new download button

There is now mac os button but it's redirecting to play store.

This has been fixed and the updated site deployed.


Starts using istio-auth.yaml in e2e framework

And allow people to use any of the setup via flag:
istio-15.yaml
istio-16.yaml
istio-auth-15.yaml
istio-auth-16.yaml
istio-auth.yaml

Last time I checked the demo didn't work when RBAC is on. Can we have a RBAC-enabled K8S cluster to test out istio-*-16 YAMLs?

Jenkins is currenlty using 1.6. I am not sure what is supposed to be done to enable RBAC

This is a command to create a RBAC-enabled 1.6 GKE cluster:
gcloud container clusters create $NAME_OF_CLUSTER --cluster-version 1.6.2 --no-enable-legacy-authorization

@yutongz this is another duplicate of the work you are doing.


Added Unit test case for events sub commands

Added Unit test case for events sub commands

Now that the e2e tests have been moved to a separate workflow, the e2e test files should be moved into the test/e2e directory and you can remove the testing.Short() check.

I think this is failing because of the sheer number of available events; the paginator is trying to load all of them and there are so many that it's taking too long for the test to pass.  For now, lets update the test to do a metal project get, capture the ID of the first project, and then run metal events get -p <first project ID>.  We should probably only check that the events command succeeded for now, instead of checking for specific event types in the output; we can come back later and improve on that.


List of funky KodaDot names

Through our history we have seen many funky names.
If you have seen some please drop in the comment

KudaDot my fav
KondaDot my other fav

Me On the conference
Someone: "Oh Koda, I heard about you"
Me: "It's actually KodaDot"
Someone: "Wtf, never heard about that"

meanwhile koda.art ;D


sync option not appearing in dropdown

Hello, I just downloaded this package and am trying to follow the quickstart. However, when I right-click on a project folder as recommended in the quickstart, sync doesn't appear as an option. Is there something else I am supposed to be doing?

This needs to be patched.  We're all waiting on Pull Request #76


[Issue]  Explain this ?

What platform are you experiencing this issue on?
Windows
What architecture is your platform?
64-Bit
What version of UWB are you using?
Latest VoltstroUPM Release
What Unity version are you running?
2021
Describe what the issue you are experiencing is.

[Web Browser]: [CEF Engine Console]: An error occurred while trying to load 'https://accounts.google.com/gsi/button?theme=outline&text=signin_with&size=medium&type=standard&shape=rectangular&width=-48&logo_alignment=left&click_listener=function()%7BtrackButtonClick(r)%7D&client_id=657641920759-c7l1281jejtqqb0rr9jc03qgp9se6gms.apps.googleusercontent.com&iframe_id=gsi_195981_499872&as=AxgVbiSLwTnGk9O1OZGDPw'! Error details: ERR_ABORTED (Code: ABORTED)

UnityEngine.Logger:LogError (string,object)
VoltstroStudios.UnityWebBrowser.Logging.DefaultUnityWebBrowserLogger:Error (object) (at Library/PackageCache/dev.voltstro.unitywebbrowser@2.1.1/Runtime/Logging/DefaultUnityWebBrowserLogger.cs:36)
VoltstroStudios.UnityWebBrowser.Logging.ProcessLogHandler:HandleOutputProcessLog (object,System.Diagnostics.DataReceivedEventArgs) (at Library/PackageCache/dev.voltstro.unitywebbrowser@2.1.1/Runtime/Logging/ProcessLogHandler.cs:54)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback ()

I got this error for no reason , I haven't change the url ,so why there's calls to this endpoints ?  did you install addtional browser plugins ?
why there's a call for google endpoint
Provide reproducible steps for this issue.
disable ui components
Any additional info you like to provide?
please explain it this sounds sus

it might be irrelevant but does this has anything to do with Google's leaked ranking system ?
for reference https://www.youtube.com/watch?v=XNQhDl4a9Ko&ab_channel=Fireship


fix for KINEMATIC objects being moved by Bullet unexpectedly

Motivation and Context
Alex and I have both seen behavior where a Bullet body with kinematic motion will get moved by Bullet stepWorld. This is avoided by setting zero mass. Alex speculated that collision-resolution code isn't checking the kinematic flag and is thus moving the kinematic body when the mass is non-zero.
How Has This Been Tested
I tested locally in a scene with kinematic and dynamic objects. This change fixed the behavior bug for me.
Types of changes

[ ] Docs change / refactoring / dependency upgrade
[x] 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 change)

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have completed my CLA (see CONTRIBUTING)
[ ] I have added tests to cover my changes.
[ ] All new and existing tests passed.

For the failing test, I adjusted the golden number when I made the change you are reverting. Essentially a dynamic box is dropping on a moving kinematic platform and the exact response of the box (and thus the final transform) is different when mass is 0.

Remaining test failure is fixed on master.


new bots to make request to independent operator

let's keep just 1 issue for test bots and operator


[STORM-2191] shorten classpaths by using wildcards

Instead of fully enumerating all JARs in the lib directories, we just use
a Java classpath wildcard to allow the JVM to autodiscover all JARs in the
classpath.  This affects both the Worker and LogWriter processes, as well
as Storm daemons such as the Nimbus, UI, Logviewer, and Supervisor.
This change results in shorter commands, so that you can actually see
the full content of the Worker command in ps output on Linux.
Prior to this change Worker commands were easily longer than 4096 bytes,
which is the default Linux kernel limit for commands being recorded into
the process table.  Longer commands get truncated, though they do get
executed.
An example of the change in Worker classpath length can be seen here:
Before:
-cp STORM_DIR/lib-worker/asm-5.0.3.jar:STORM_DIR/lib-worker/carbonite-1.5.0.jar:STORM_DIR/lib-worker/chill-java-0.8.0.jar:STORM_DIR/lib-worker/clojure-1.7.0.jar:STORM_DIR/lib-worker/commons-codec-1.6.jar:STORM_DIR/lib-worker/commons-collections-3.2.2.jar:STORM_DIR/lib-worker/commons-io-2.5.jar:STORM_DIR/lib-worker/commons-lang-2.5.jar:STORM_DIR/lib-worker/commons-logging-1.1.3.jar:STORM_DIR/lib-worker/curator-client-2.12.0.jar:STORM_DIR/lib-worker/curator-framework-2.12.0.jar:STORM_DIR/lib-worker/disruptor-3.3.2.jar:STORM_DIR/lib-worker/guava-16.0.1.jar:STORM_DIR/lib-worker/httpclient-4.3.3.jar:STORM_DIR/lib-worker/httpcore-4.4.1.jar:STORM_DIR/lib-worker/jgrapht-core-0.9.0.jar:STORM_DIR/lib-worker/jline-0.9.94.jar:STORM_DIR/lib-worker/json-simple-1.1.jar:STORM_DIR/lib-worker/kryo-3.0.3.jar:STORM_DIR/lib-worker/kryo-shaded-3.0.3.jar:STORM_DIR/lib-worker/libthrift-0.9.3.jar:STORM_DIR/lib-worker/log4j-api-2.8.jar:STORM_DIR/lib-worker/log4j-core-2.8.jar:STORM_DIR/lib-worker/log4j-over-slf4j-1.6.6.jar:STORM_DIR/lib-worker/log4j-slf4j-impl-2.8.jar:STORM_DIR/lib-worker/minlog-1.3.0.jar:STORM_DIR/lib-worker/netty-3.9.0.Final.jar:STORM_DIR/lib-worker/objenesis-2.1.jar:STORM_DIR/lib-worker/reflectasm-1.10.1.jar:STORM_DIR/lib-worker/servlet-api-2.5.jar:STORM_DIR/lib-worker/slf4j-api-1.7.21.jar:STORM_DIR/lib-worker/snakeyaml-1.11.jar:STORM_DIR/lib-worker/storm-client-2.0.0-SNAPSHOT.jar:STORM_DIR/lib-worker/sysout-over-slf4j-1.0.2.jar:STORM_DIR/lib-worker/zookeeper-3.4.6.jar:STORM_DIR/conf:STORM_DIR/storm-local/supervisor/stormdist/foo-topology-1-1-1493359573/stormjar.jar

After:
-cp STORM_DIR/lib-worker/*:STORM_DIR/extlib/*:STORM_DIR/conf:STORM_DIR/storm-local/supervisor/stormdist/foo-topology-1-1-1493359573/stormjar.jar

This change also includes additional documentation about the use of classpaths in
Storm and provides some guidance for using the various features for using external
libraries.
For more details on this problem and a discussion about this solution's
merits, please see STORM-2191.

@revans2 & @harshach & @hmcl : Here's my proposed change.  I'm probably misinterpreting some of the usages or behaviors with all of these various external library features, but I tried my best to figure them out after extensively reading the tickets and commits that added the features.  Also, I'm fine with not renaming get_jars_full and getFullJars, I just thought the names were misleading after this change.


Migrate from watch to chokidar

Fixes #841.

[x] npm run test succeeds.
[x] npm run lint succeeds.
[x] Appropriate changes to README are included in PR.

LGTM


Remove block argument from loop

Introducing a block argument here was a mistake. Some people now want the loop index to be a different value. But the worse thing is that the loop index can silently overflow. And if we ever change the language to raise on overflow, this could eventually break some long running programs like servers (and that wouldn't be nice).
loop is intended to be a cute syntax sugar for while true while also allowing you to keep the variable inside the loop local to the block.
Closes #5975

Wow, the counter var was never actually used in the compiler and stdlib?

@straight-shoota i didn't even realise loop do had an index lol

In the event anyone wants this feature back, I've put together a shard to replace this functionality. When the compiler eventually raises an exception on integer overflows, I'll patch my shard to handle that accordingly.
Sidenote: the ability for me to bring a small feature like this back is one of my favorite features of Crystal! 😄

When the compiler eventually raises an exception on integer overflows, I'll patch my shard to handle that accordingly.

and do what? reset back to 0? That's even worse than raising!


Ladybird/Qt: Make trackpad scrolling more bearable

This performs the same calculation as is done with angle scrolling.
This makes the trackpad scrolling much more bearable on my Framework 13".
I have to confess though, although I read the documentation, I'm not sure this is how those APIs are meant to be used. I intend to have a look at Kirigami over the course of the week to see how it handles scrolling.

This is wrong, on macOS the pixelDelta() really contains the scroll delta in pixels as said in documentation.

Returns the scrolling distance in pixels on screen. This value is provided on platforms that support high-resolution pixel-based delta values, such as macOS. The value should be used directly to scroll content on screen.

But you are right the scrolling speed with cross-platform applications (especially on Linux distro's) is always a big hassle

Hmm, I'll cycle back to this pr when I've had a better chance to research this.
Certainly other Qt apps handle scrolling better than here.


New Linter: Ktlint

Hey!
I've created a new linter that uses ktlint and reviewdog.
Repo: https://github.com/ScaCap/action-ktlint
Marketplace: https://github.com/marketplace/actions/run-ktlint-with-reviewdog

Awesome! :+1: Thank you for your work!

I invited you to reviewdog org as action maintainers. Move the repository under the organization if you want. I actually either is fine.
Can you create a PR to add the action to README?
Can you take a look at https://github.com/reviewdog/action-template and copy the workflow?


DatePicker validation not giving correct error messages

This is due to the fact that I can't stopPropagation from C# events.  Validation is happening on both KeyDown, Change, and Blur events.  One of them will set an error such as "Invalid format" if you write a bad date... but then the others will just change it back to nothing (or "required" if required).
I have to decide if I want to:

Move this to JSInterop within the component :(
Create a way to stopPropagation as a basecomponent mixin or something...
Ignore the error until aspnetcore 3.1 is released officially and use the built-in stopPropagation features.
Find a way to use state to ignore events...

Fixed with some state changes... found some errors, too.


make-icons.sh: Add support for darwin specific multi-icon

This fixes both non-retina and retina screens by merging two pngs into one.
For more info you can read the apple docs: https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40012302-CH7-SW13

tiffutil seems to be OSX only (or another version is hidden very well), is there some alternative that can be run on linux?

maybe something like convert test.png<EMAIL_ADDRESS>test.tiff does also work? It at least creates a file with both icons inside...

This is highly OS X specific because it merges into tiff with special metadata. I have guarded the darwin specific part so it is not broken on linux.  I have dived deep into how the systray works on OSX with mapping to Golang from github.com/getlantern/systray  and I have tried to hack separatorItem into it.  I appreciate your work on alex2108/syncthing-tray but all the nice OS primitives and features are hidden in Golang.
As OSX has nice APIs to control GUI/Appearance we have no full control in Golang (currently). Probably in the near feature I will embedded my own native osx systray/app. But feel free if you need some OS X testing/building I will help you out (when time and space permits).
Thanks for merging!


Required true in strict mode

Now strict mode just ignores required: true, but what if we just want to make sure a value is defined? required: true in strict mode could be used for that.

Fixed.


R&D: some unknown issue

We have some strange logs with unknown origin, it might be a bug. See:
n-saktaganov:tnt n.saktaganov$ make gotest
STAGE: RUN GOTESTS
go test -race -parallel=20 -coverpkg="../../" -coverprofile cover.out -timeout=90s
2024/09/12 20:00:03 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (3) in response
2024/09/12 20:00:03 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (3) in response
2024/09/12 20:00:04 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (45) in response
2024/09/12 20:00:04 tarantool: connection <IP_ADDRESS>:33008 got unexpected resultId (5) in response
2024/09/12 20:00:04 tarantool: connection <IP_ADDRESS>:33006 got unexpected resultId (89) in response
2024/09/12 20:00:04 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (207) in response
2024/09/12 20:00:11 tarantool: connection <IP_ADDRESS>:33008 got unexpected resultId (5) in response
2024/09/12 20:00:12 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (197) in response
2024/09/12 20:00:12 tarantool: connection <IP_ADDRESS>:33000 got unexpected resultId (3) in response
2024/09/12 20:00:31 tarantool: connection <IP_ADDRESS>:33008 got unexpected resultId (3) in response
2024/09/12 20:00:40 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (3) in response
2024/09/12 20:00:47 tarantool: connection <IP_ADDRESS>:33000 got unexpected resultId (45) in response
2024/09/12 20:00:47 tarantool: connection <IP_ADDRESS>:33008 got unexpected resultId (5) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33008 got unexpected resultId (27) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (421) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33000 got unexpected resultId (109) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33006 got unexpected resultId (5) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (493) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33000 got unexpected resultId (181) in response
2024/09/12 20:00:48 tarantool: connection <IP_ADDRESS>:33006 got unexpected resultId (3) in response
2024/09/12 20:00:49 tarantool: connection <IP_ADDRESS>:33004 got unexpected resultId (79) in response
2024/09/12 20:00:49 tarantool: connection <IP_ADDRESS>:33006 got unexpected resultId (419) in response
2024/09/12 20:00:59 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (365) in response
2024/09/12 20:01:02 tarantool: connection <IP_ADDRESS>:33000 got unexpected resultId (21) in response
2024/09/12 20:01:02 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (177) in response
PASS
coverage: 66.6% of statements in ../../
ok      github.com/KaymeKaydex/go-vshard-router/tests/tnt       63.801s

It looks like some issue in go-tarantool, this is a program to reproduce:
package main

import (
	"context"
	"log"
	"sync"
	"sync/atomic"
	"time"

	"github.com/tarantool/go-tarantool/v2"
	"github.com/tarantool/go-tarantool/v2/pool"
)

func main() {
	ctx := context.Background()

	conn, err := pool.Connect(ctx, []pool.Instance{
		{
			Name: "pool",
			Dialer: tarantool.NetDialer{
				Address:  "<IP_ADDRESS>:33002",
				User:     "storage",
				Password: "storage",
			},
		},
	})

	if err != nil {
		log.Fatalf("can't create connect to pool: %v", err)
	}

	isConnected, err := conn.ConnectedNow(pool.ANY)
	if err != nil {
		log.Fatalf("can't connect to pool: %v", err)
	}
	if !isConnected {
		log.Fatalf("pool is not connected")
	}

	const concurrencyLevel = 100
	const timeout = 10 * time.Second

	log.Printf("Starting with concurrencyLevel %d, timeout %v", concurrencyLevel, timeout)

	var wg sync.WaitGroup

	ctx, cancel := context.WithTimeout(ctx, timeout)
	defer cancel()

	var reqCnt atomic.Uint32

	for i := 0; i < concurrencyLevel; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()

			for {
				select {
				case <-ctx.Done():
					return
				default:
				}

				reqCnt.Add(1)

				req := tarantool.NewCallRequest("echo").
					Context(ctx)

				future := conn.Do(req, pool.ANY)
				_, _ = future.Get()
				//_, _, _ = resp, err, id
				//log.Printf("%d: resp %v, err %v", id, resp, err)
				//time.Sleep(1 * time.Second)
			}
		}()
	}

	wg.Wait()

	log.Printf("Finishing, total %d requests", reqCnt.Load())
}

Output sample:
n-saktaganov:got_unexpected_resultid n.saktaganov$ go run main.go
2024/09/18 22:33:36 Starting with concurrencyLevel 100, timeout 10s
2024/09/18 22:33:46 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (6755449) in response
2024/09/18 22:33:46 Finishing, total 3377779 requests
2024/09/18 22:33:46 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (6755451) in response
2024/09/18 22:33:46 tarantool: connection <IP_ADDRESS>:33002 got unexpected resultId (6755453) in response

It seems like caused by cancelled context

Even more minimal code to reproduce:
Lua
function sleep(time)
    fiber.sleep(time)
    return true
end

Golang
package main

import (
	"context"
	"log"
	"time"

	"github.com/tarantool/go-tarantool/v2"
	"github.com/tarantool/go-tarantool/v2/pool"
)

func main() {
	ctx := context.Background()

	conn, err := pool.Connect(ctx, []pool.Instance{
		{
			Name: "pool",
			Dialer: tarantool.NetDialer{
				Address:  "<IP_ADDRESS>:33002",
				User:     "storage",
				Password: "storage",
			},
		},
	})

	if err != nil {
		log.Fatalf("can't create connect to pool: %v", err)
	}

	isConnected, err := conn.ConnectedNow(pool.ANY)
	if err != nil {
		log.Fatalf("can't connect to pool: %v", err)
	}
	if !isConnected {
		log.Fatalf("pool is not connected")
	}

	ctx, cancel := context.WithTimeout(ctx, time.Millisecond)
	defer cancel()

	req := tarantool.NewCallRequest("sleep").
		Context(ctx).
		Args([]interface{}{1})

	future := conn.Do(req, pool.ANY)
	resp, err := future.Get()

	log.Printf("resp %+v, err %v", resp, err)

	time.Sleep(2 * time.Second)
}

PR to go-tarantool lib to avoid such questions in the future: https://github.com/tarantool/go-tarantool/pull/407


Fix typos: sucessfully->successfully, variuos->various

Signed-off-by: Bily Zhang<EMAIL_ADDRESS>
This PR is a

[ ] Feature Implementation
[-] Bug Fix
[ ] Documentation

What this PR does / why we need it:
Fix typos: sucessfully->successfully, variuos->various
Which issue(s) this PR fixes

Fixes #
Please leave this checklist in the PR comment so that maintainers can ensure a good PR.
Merge Checklist:

[ ] New feature

[ ] Tests
[ ] Documentation

[ ] SVCat CLI flag
[ ] Server Flag for config

[ ] Chart changes
[ ] removing a flag by marking deprecated and hiding to avoid
breaking the chart release and existing clients who provide a
flag that will get an error when they try to update

/assign @pmorie

/LGTM
/approve

@duglin can you also add "/ok-to-test" label? thanks.

/ok-to-test


Problem with uppercase

Hi.
I am making an APP on a DB with tables names and fields name are in UPPERCASE, But I am having problems with the lib. For example:
php artisan infyom:scaffold predialUsos --primary=id --datatables=true  --fromTable --tableName=PRED_TR_USOS
but the list and the update did not works, because the filedsname are in uppercase and the lib does not read correctly.
Is there some option or config to handler uppercase
Thanks for your time.

--datatables=true

@ddiaz427 make sure you have yajra/laravel-datatables installed into your project. you can find more details at : http://labs.infyom.com/laravelgenerator/docs/5.8/generator-options#datatables

@ddiaz427 not sure if you figured this out, but the way laravel work is in snake_case, and maybe that's the thing which is creating a problem.
If you still have a problem then share some more details and I can try to look into it.


Extend T1550.003 with new PTT attack

Details:
This PR extends the T1550.003 atomic by adding a use case where a stolen TGT is reused on another system to request a TGS.
The ticket crafting/request is performed via Rubeus, while the initial TGT is crafted via PsExec on a remote host.
Testing:
Local testing

Associated Issues:
N/A

Nice suggestions, thanks

What about the "cmd"? ;)

Woops, missed that
Due to the default rubeus path containing $env:Temp, the command cannot be eecuted as-is. It would require dot or call operator and I though spawning cmd would be clearer for reader/reviewer. I could switch to & "#{rubeus_path}" if you prefer, i think both are used in ART.

I think this is clearer indeed & "#{rubeus_path}"


perf(linter): react/jsx_no_undef faster check for unbound references

#5349  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @overlookmotel and the rest of your teammates on  Graphite


SUGGESTION: Create sandboxes with --sandbox --create

It would be good to be able to create sandboxes via the weaviate-cli.
Use case: Create a sandbox in one go via the CLI tool.
$ weaviate-cli --sandbox --create

(I'm suggesting --create because we might want to be able to add --extend or --remove functions later.)
Additionally I would like to suggest:
$ weaviate-cli --sandbox --create --current

The --current flag means that you don't have to rerun weaviate-cli --init and that it automatically sets it as the current Weaviate.
PS:
The Sandbox API includes more variables that currently are not part of the suggested commands above or the --init function. I would like to use this issue to discuss the final design. cc: @etiennedi

I would like to use this issue to discuss the final design. cc: @etiennedi

If we're discussing design I'd also like to mention something that is technically off-topic to this suggestion, but would also affect the final design here.
Currently, the cli tool uses flags for everything, however, some flags should in my opinion actually be commands. For example, weaviate-cli --init --init-email<EMAIL_ADDRESS>uses --init as a command (i.e. tells the CLI to run the init process) and uses --init-email for config option (i.e. tells the CLI what the email is).
A more typical API would be in my opinion be something like weaviate-cli init --email<EMAIL_ADDRESS>whereas init would be a command, and --email a config flag that is scoped only to the init command. Commands can of course also be hierarchical, so for this issues we'd end up with (weaviate-cli sandbox create and weaviate-cli sandbox create --current)
A major benefit is that the commands are their own scopes which can also have their own help menus. For example weaviate-cli --help would print a generic help whereas weaviate-cli sandbox --help would print a sandbox-specific help.
This is a pattern that is quite common. For example If you want to retrieve the credentials from a GKE cluster with the gcloud tool, you would run gcloud container clusters get-credentials --zone europe-west1-b, whereas container is the first hierarchical command, clusters is the second and get-credentials the third. Finally, --zone=europe-west1-b is additional config option via a flag.
Now that I've written this, I realize even more how much of it's own topic this should be and I recommend creating a new issues based off of this comment. Nevertheless it would affect this design as well.

Additionally I would like to suggest:
$ weaviate-cli --sandbox --create --current
The --current flag means that you don't have to rerun weaviate-cli --init and that it automatically sets it as the current Weaviate.

I think the feature is a really great idea, but --current isn't the most intuitive term. I.e. just from reading the command I don't think I'd understand that this would update my config. Some alternative suggestions:

--init, the simplest one. Currently this would conflict with the overall --init, but this would be solved if we follow the approach in https://github.com/semi-technologies/weaviate-cli/issues/13#issuecomment-507710430
--reinit
--update-config


minor typo

Codecov Report

Merging #47 into master will increase coverage by 2.54%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #47      +/-   ##
==========================================
+ Coverage   66.24%   68.78%   +2.54%
==========================================
  Files           3        3
  Lines         157      157
==========================================
+ Hits          104      108       +4
+ Misses         45       41       -4
  Partials        8        8

Impacted Files
Coverage Δ

main.go
53.7% <0%> (+7.4%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a1c2f7d...63e7c1f. Read the comment docs.

@diego-vieira thank you for contribution!


Add commands to shell examples for sockets testing

Problem
We need an example application to demonstrate and testing IP integration
Proposed Solution
Add commands to existing Mbed shell examples which use WiFi interface and sockets for simple network connection

Commands for testing InterInterface are ready. The main command for sockets is also implemented. Just to add subcommands for specific action


Warn when builders instance are not used - either built or used as source for a new builder

With the builder pattern we have adopted, you may forget to use a builder and thus miss some configuration and realise it only much later.
Another issue is the overloaded static heap method - see #1296 - which if used instead of the instance one could again cause the loss of builder state.
Idea to improve this: have a finalizer on Builder instances that will log whenever a builder gets reclaimed without having been used.

This may be a reasonable enhancement, but the logging is unlikely to help much, and in the 6 years since this was filed I'm not aware of any customer or user needing help with this behavioral 'quirk'. The Javadoc also explicitly warns users about this behavior.


Working demo on Expo.io

Hi,
I have tried the demo on my snack expo without luck.
I have the following error:
Device: (1068:6932) Failed to install module 'react-native-gcanvas': Tried to register two views with the same name RCTGCanvasView

Any ideas?

please try to use below code
var RCTGCanvasView = requireNativeComponent('GCanvasView');

Hi @hejian1639 I have followed your instructions in the expo snack but I have the same issue.
You can ty it here in case that you want to test it personally. I'm using gcanvas.js and react-native-gcanvas from npm.

Hi, with the new update (0.0.6) I have tried in expo again and the error is different:
Error: "Invariant Violation: View config not found for name GCanvasView This error is located at: in GCanvasView in t in RCTView in TouchableHighlight in RCTView in App in RCTView in RCTView in t in t in r in RCTView in RCTView in t" in exports@/data/data/host.exp.exponent/files/26.0.0/cached-bundle-experience-%40snack%2FHJ9d63YjM-2143420360-26.0.0:17:309 << createInstance@/data/data/host.exp.exponent/files/26.0.0/cached-bundle-experience-%40snack%2FHJ9d63YjM-2143420360-26.0.0:44:69648 << completeWork@/data/data/host.exp.exponent/files/26.0.0/cached-bundle-experience-%40snack%2FHJ9d63YjM-2143420360-26.0.0:44:47204 << t@/data/data/host.exp.exponent/files/26.0.0/cached-bundle-experience-%40snack%2FHJ9d63YjM-2143420360-26.0.0:44:56029 ...
```

Snack Expo is not building native library.


Check inferred constraints for 'infer X' type variables

With this PR we properly check inferred constrains for infer X type variables in conditional types. Specifically, during type inference in a conditional type, when a candidate type for an infer X type variable doesn't satisfy the constraint inferred for that type variable (see #21709), the candidate is replaced with the constraint. That will subsequently cause the conditional check to be false. For example:
type MustBeString<T extends string> = T;
type EnsureIsString<T> = T extends MustBeString<infer U> ? U : never;

type T1 = EnsureIsString<"hello">;  // "hello"
type T2 = EnsureIsString<42>;  // never

Previously, T2 would be the type 42 which doesn't satisfy the constraint string inferred from MustBeString.
Fixes #22221.

@ahejlsberg is there a way to express Not?
type Not<T, U> = ... // T can be anything but U, if T is U then error
// use case:
function notSupposedToTakeAsyncCallbacks<X>(callback: () => Not<X, Promise<any>) {
}

there is not really a way to throw an error. so the best that is possible today is to return a type that will cause a down-stream error, something like never would be good.
So you can define Not as:
type Not<T, U> = T extends U ? never : T;

type t1 = Not<{ a: number }, Promise<any>>; // { a: number }

type t2 = Not<Promise<number>, Promise<any>>; // never

another silly questions please
https://github.com/Microsoft/TypeScript/issues/22375#issuecomment-371222550


Navigation Consistency

There are various inconsistency issues, but the major one is navigation.

Agreed.  My intention was to wire up the main menu to existing resources as a first step, so it can go live immediately, and then get them working by first jumping down the page for a better workflow.  Your thoughts?

I have shared some stuff on IRC, so sharing the same..

I found this on my server. http://ishwerdas.com/brlcad/ It has almost all the issues solved (except moving signup page below).

And another minor ones, but mostly quick fixes.

I think I created it much before GSoC, or before I designed the wiki theme (http://beta.brlcad.org/wiki/Main_Page) as a prototype. It's consistent, it looks good and it just works. Why don't we use this instead?
I understand the part about using GCI stuff, but for this HTML based temporary landing page, I feel like it would be a duplication of effort. We would still be using GCI created Wordpress theme anyway, so GCI stuff is still being used. I can do some changes in this (would take an hour max) and we are good to go, what say?

I suggest merging your changes into the /wp files as a starting point since your version has several fixes still needed.
As for the main page, I think it'll still be more work to fix the WP page than to get this custom landing page working and linked up.  Provided details on IRC, but it's something we can sort through later.
We do still want to use WP for news articles, so I suggest the focus be there.  The landing page has a NEWS link -- that should jump down the page to recent articles, but then provide a button there that goes to /wp for all articles.  I was going to simply point it at the current brlcad.org/d Drupal install, but getting WP working and loaded with the current articles would be much better.

Since we're talking about the landing page choices:
Looking at the index.html right now, the way that news articles are written/displayed in it looks like it might not be ideal, since it makes dynamically updating them quite hard (and the current implementation uses a lot of markup and javascript duplicated for each article...).  Do we need to eventually combine the index page with wordpress in order to get the current articles? We might also be able to use the WP API to dynamically pull them into the front page.
A few things stood out to me when I was playing around with the current setup, here are a few design ideas:
From a usability standpoint, I also think that it might be a good idea to put at the very least a title as well as a thumbnail image next to each news article, I found the current appearance quite confusing.
Since the front page is quite short, do we even want the nav links to jump to a page section that then has more links for going to the actual related pages?  If we can get the wordpress, wiki, and front page menus to all line up, it might be worth it to just have "Documentation" go straight to the wiki on documentation, "News" go straight to the blog, etc.  Then the content on the index page is a brief summary of the recent/important parts of each of those categories, with another set of links to the real pages.

Yes, we'll want to dynamically pull them in later and at least some of the menu items should just jump to the main content (e.g., Documentation).  I hadn't really gotten to anything below the three feature highlights under the title, but agree that the simple circles are a bit too simplistic.  I have some examples in mind, but was going to worry about that after this goes live since it's not a show stopper.

As for the main page, I think it'll still be more work to fix the WP page than to get this custom landing page working and linked up. Provided details on IRC, but it's something we can sort through later.

The link I showed http://ishwerdas.com/brlcad/ is not a wordpress page. It's a simple HTML Page. I was suggesting to use it in place of current landing page so that we can quickly get it online.

I provided a list of things on IRC that would need to change... I can't see it taking less work to clean it up at this point.  The logo, the login, and non-brl-cad images would need to change at a minimum. That said, your page definitely has a better highlights section and persistent hovering menu that we should incorporate.

Okay, got it.

I still suspect :P the current one taking more time so I would keep the other ready too in case we change our mind.


Images now have a modal pop up.

image_library.html have a modal that pops up when clicking view details.

niceu


[1.12.2] advancement trigger minecraft:inventory_changed does not work with sponge

I am currently running

SpongeForge version: 1.12.2-2555-7.0.0-BETA-2764
SpongeVanilla version: 1.12.2-7.0.0-BETA-369
Java version: 8
Operating System:linux

Issue Description
Server not trigger advancement action when  minecraft:inventory_changed
Does not working on the spongevanilla and spongeforge too.
Work with mojang server, Spigot and SinglePlayer.

caused by overwrite in MixinEntityPlayerMP.sendSlotContents (used for updating client crafting output with custom recipes)


Address Elixir 1.4 char_list deprecation warnings

Coverage remained the same at 99.296% when pulling 54c922e36ae4e3d1dddbd8ef3d9eb746d2735fe6 on jparise:charlist into 81816b15cdb69262c654071ba2b7f302fe1989d0 on pinterest:master.

Dropping this in favor of retaining Elixir 1.2 compatibility until our next big release.


Unable to run stocks app on ios

Trying to start the stocks example app on ios yields the following output in flutter start[1], and trying to open the xcode project and start it from there, yields the following error[2].
@chinmaygarde
[1]
flutter-start-out.txt
[2]

Is an older version of the application already installed on the device?

Nope

Looks like this is related to the fact that there is already an ios folder in the stocks demo.  If I nuke that folder and re-create it via 'flutter ios --init', it works.

Gonna leave this open for now, since that bad ios folder is checked into git.


fix: match the assumed aa order of the code to the pssm files and perform checks on correctness of pssm files

Summary:

Change the assumed order in which the pssm file is read to alphabetical by 3-letter-code (was 1-letter-code, but this did not match pssm files used).

Perhaps would be even nicer to read the order from the top of the pssm file instead of assuming a fixed order in the future.

Include sanity check on matching amino acid order of pssm and pdb file

Test for both correct aa order (test_incorrect_pssm_order) and missing entries (test_incomplete_pssm) in pssm in test_query.py

Test that not having a pssm file throws an error if conservation module is selected

Improve the error message when no pssm file is found

Allow for excluding feature modules QueryCollection.process() using module names as str

Test that it works as intended

Improve test speed, e.g. by reducing the number of queries and epochs in some of the tests (as this PR was on hold for a while, that may have been implemented by some other PR in the meantime).

Note: It would be nice if there were some form of documentation on what the pssm files should look like and/or where and how to build it correctly, as it is very easy get it wrong and very difficult to diagnose or even detect if it is. This is not implemented in this PR.

this PR could def use a shorter name.

I added comments about minor edits in the process method. I think that explicitly defaulting the modules (not using None) and allowing for 'all' but not None is clear from the user perspective.

Agreed!


Fix Python buffering in wrapper

As pointed out during the review of #389, the output is really "laggy". This is new behavior on Mint 20/Ubuntu 20.04. It's the same with spawn_sync and spawn_async. We should try and clean that up so that it scrolls smoothly prior to shipping in the fall.

@kylelaker Has this been looked into more since issue was opened?

@tuckerzp Nope! We're still seeing lots of buffering in the wrapper application and you'd see the same buffering if you ran the Ansible command directly. If you set PYTHONUNBUFFERED=1 you can see that the output looks like you'd expect but polkit limits the environment variables that get retained in the child process. You'll have to dive into this function and possibly toggle the way that the subprocess gets invoked in the call to pkexec. It's also possible we'll need to find a way to call/spawn pkexec through a more Python-friendly API. Or we may need to modify our custom policy.

@tuckerzp if this is something you want to work on, I just put a test VM image up that you can use https://w3.cs.jmu.edu/uug/testing/image-fa21.ova


Can't recover from momentary network glitches

For a variety of reasons, notifications from the SR server back to the client, such as job completion notifications, or other responses, may not make it.  SR is able to detect that the notification failed because it prints so in the log.  In this situation, can SR be made to try again, say up to 3 times?  This seems like it could go along way to improving robustness against momentary network glitches.

This should be pretty straightforward - we can add a retry around the job completion callback to try to help with this.
We'll add a note on our internal task board and try to get to it in the next month, though if anyone is interested, people are welcome to submit a PR!

There is a potential fix for this being tested in the dev/ branch right now. Job completion callbacks will now retry up to 5 times with exponential backoff between attempts.


Lint + Format Megablocks

This PR formats and lints all the code in MegaBlocks. It also adds a pre-commit-config.yaml file to do all of this. This is the first step of creating CI/CD for MegaBlocks.
These changes primarily consist of:

removing unnecessary semicolons, extra spaces, and package imports
replacing lambdas with actual functions, i.e. def f():
replacing double quotes with single quotes
Adding a license to the beginning of every file

Many of these changes were generated automatically by running the pre-commit-config.yaml file which contains astral-sh/ruff-pre-commit, google/yapf, pycqa/isort, adrienverge/yamllint, pre-commit/pre-commit-hooks, Lucas-C/pre-commit-hooks, kynan/nbstripout, trufflesecurity/trufflehog. This pre-commit-config.yaml was taken from composer's pre-commit-config.yaml.
Initially, I was planning on making these all separate, smaller PR's but @b-chu said I should just make this one single PR. I am currently running a small MoE training script with MCLI to confirm that this does not break anything.
To do:

Should I delete the unused variables? I currently just commented them out. You can see the exact variables I commented out in this commit: comment out unused variables; delete later.
I made the license

Copyright 2024 MosaicML MegaBlocks authors
SPDX-License-Identifier: Apache-2.0

Is license correct from a legal perspective? Do we want to include anything about giving Trevor credit?
3. It seems like running the Ruff formatter deleted the imports in every init.py file. I'm not sure if this is desirable behavior. Should I revert this?

I renamed this branch to dev and this automatically closed this PR. I will reopen this in a different PR.

Continued this work in #123 .


when I set maxOptionsText is String(not function), Just show the first letter of my string

in line 1127
var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?
that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,
maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),
I think the maxTxt need to set in different condition of function and String.

Duplicate of #1300.


Add protect_from_forgery to satisfy Brakeman

Brakeman flags StaticController as not being protected (even though it only serves GET requests). This change adds protect_from_forgery to get out of the red for now.

LGTM :+1:

@Fryguy, There was some concern from @himdel that if protect_from_forgery touches the session in any way it could break Euwe, but we're pretty sure it doesn't modify the session.

LGTM, thanks @hayesr

:+1: thanks for putting this together @hayesr

@chessbyte We'll need to backport this to euwe to make euwe green again.  Or lock down brakeman 3.4.0.  I vote for backport to euwe and fix any fallout.

I agree with backporting, protect_from_forgery should never touch the session if the request is a GET request - works for us.
Full disclosure, if there is fallout, it will be in the form of "random screens that depend on data in session completely stop working", so not a good thing. But "It Should Not Happen" (TM).

Euwe Backport details:
$ git log -1
commit 3b670bf56975bb9dc4278c271bd9f84cbcc7c242
Author: Chris Arcand<EMAIL_ADDRESS>Date:   Thu Nov 3 12:24:45 2016 -0500

    Merge pull request #12408 from hayesr/protect_static_cont

    Add `protect_from_forgery` to satisfy Brakeman
    (cherry picked from commit 09440cd3d63438234ff3df4be8b89247597381c5)


Run pipeline for binary files on pull if go code changed

will resolve a todo on #684

PS: remove include: result in jsonschema report an error - I think we have to fix that ... but it's another pull to do s