Add possibility to dynamically update the sunrise and sunset times in a scheduled task.

This PR targets the WIP branch as it is definitely considered to still be a WIP after it was merged.
It makes sheduled tasks finally work. And it adds the possibility to register a task  that dynamically updates the sunrise and sunset times based on the currently active time zone and the specified geographic coordinates.
For the latter, algorithms from Paul Schlyter's SUNRISET.C are taken.
https://stjarnhimlen.se/comp/sunriset.c

That's been the last commit to this PR. I swear 🤞🏻

In hindsight I realize I should've first rebase-reworded my wip commit and then merged this PR. Now I did it the other way around, which messed up the entire author/committer thing. 🤦♂ Since I messed it up anyway, I decided to squash your PR manually and pushed that to master instead: https://github.com/lhecker/windows-dark-mode-switcher/commit/112e47449217e4a82d00acb96b43fe6c731ea750

Apropos, I've been thinking about moving away from scheduled tasks and towards CreateWaitableTimerW, because I realized that AutoDarkMode has a neat little tray icon menu:

It'd be nice if this had such a menu as well, but that means that the application needs to run constantly in the background. Ideally I want it to consume no CPU during idle and I suspect that a combination of using a bare bones HWND and a CreateWaitableTimerW would allow me to do that.

Now I did it the other way around, which messed up the entire author/committer thing. 🤦♂

If only that had been the problem to save your changes, I don't insist on finding my name anywhere.

It'd be nice if this had such a menu as well, but that means that the application needs to run constantly in the background.

Depends on which target group you want to reach. I'm pretty pragmatic/minimalist and can get by just fine without a tray icon or menu control. However, I would consider myself too old and outdated to judge realistically 🤣
FWIW I didn't know about the AutoDarkMode app. So I tried to find out if they use simpler algorithms to calculate sunrise and sunset. Turns out it's a one-to-one C# transcription of the C source I used 🤷♂
https://github.com/AutoDarkMode/Windows-Auto-Night-Mode/blob/master/AutoDarkModeSvc/Handlers/Sunriset.cs

Depends on which target group you want to reach. I'm pretty pragmatic/minimalist and can get by just fine without a tray icon or menu control.

I use it quite regularly during development when testing light/dark mode in applications. Sometimes I just toggle it when it's particularly dark outside. 😅
FWIW the reason I wrote this project is because I felt like AutoDarkMode consumes a tad bit too much CPU, although it's gotten quite a bit better at that in recent times. I also felt like it's a bit too large for what it does at almost 200MB. I wanted to see whether I could do it myself with a tiny app and as it turns out, it works sufficiently well even with just a scheduled task!


Update MD file on new branch 2017-29-26_21-11-07

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


fix: format-send-amount-on-permission-send-view

:books:   LIQ-old-1068  :books:

PR closed in favour of new one against the current release candidate


Styles

Updated tailwind config to include css variable styles that might be used in the future, converted header, layout, index, and the cheat sheet page to what was discussed in society-chat in discord. I tried moving some of the styles higher up to make styling more consistent, but didn't change anything on the routes other than index and cheat sheet.
This will be a personal choice if you want to move more towards using tailwind. I put the variables into tw config that could be used to convert other files over and created a color palette based on what you used in css-variables before.
Issue #51

Personally not a fan at all of TW but it seems like a bunch of people like it so I'm open to it.


Remove testing install script for Windows

What was changed

removed the Windows platform when testing install .sh script
Why?

For Windows users we will recommend either downloading from the Github Releases or possibly Windows oriented package managers (e.g winget)
Checklist

Closes

How was this tested:

CI

Any docs updates needed?

Can merge with #139. Should just have a proper matrix using includes that has all permutations of "os" and "install approach" you want to confirm.


Too much empty space in Closed Trades

Is your proposal related to a problem?

Closed Trades report is very ineffective taking too much space to show nothing.
Describe the solution you'd like

Detailed information about buy via and sell via should be embedded as buy/sell amount tooltip thus there should be much more rows per page displayed.
Describe alternatives you've considered

As an alternative there should be an option to collapse/expand detail section.
Additional context

100% agree.

I agree too :)

@chrisleekr @habibalkhabbaz
OK. I'm already doing some UI improvements. I'll create PR for all of them.


Bitvector

Initial implementation of the Bitvector functionality backed by BigMerkleTree

In general ok, a couple of thoughts:

When we are going to do the bit vector compression/decompression, I think you will need to keep track of additional info, but we will see when the time comes;
I think JNI side both BitVectorSMT and ZenBoxSMT can extend the BigMerkleTree class, so you will be able to re-use some of the already existing functions and avoid some code duplication;
According to the logic SDK side (e.g. if we don't need to update the trees one box at a time), it may be worth to use a LazyBigMerkleTree instead of a BigMerkleTree for performance improvement.

Thank you for the additional suggestions!
Regarding the LazyBigMerkleTree - indeed, we can implement additional versions such as LazyZenBoxSMT and LazyBitVectorSMT like it is done for BigMerkleTree and LazyBigMerkleTree.
About the JNI side I suppose to create class ZenBoxSMT with JNI calls to the rust methods of ZenBoxSMT, like it is done for BigMerkleTree. Maybe I misunderstood, but I don't see how BitVectorSMT and ZenBoxSMT can be extended from BigMerkleTree class on the Java side.

In general ok, a couple of thoughts:

When we are going to do the bit vector compression/decompression, I think you will need to keep track of additional info, but we will see when the time comes;
I think JNI side both BitVectorSMT and ZenBoxSMT can extend the BigMerkleTree class, so you will be able to re-use some of the already existing functions and avoid some code duplication;
According to the logic SDK side (e.g. if we don't need to update the trees one box at a time), it may be worth to use a LazyBigMerkleTree instead of a BigMerkleTree for performance improvement.

Thank you for the additional suggestions!
Regarding the LazyBigMerkleTree - indeed, we can implement additional versions such as LazyZenBoxSMT and LazyBitVectorSMT like it is done for BigMerkleTree and LazyBigMerkleTree.
About the JNI side I suppose to create class ZenBoxSMT with JNI calls to the rust methods of ZenBoxSMT, like it is done for BigMerkleTree. Maybe I misunderstood, but I don't see how BitVectorSMT and ZenBoxSMT can be extended from BigMerkleTree class on the Java side.

Thank you for the additional suggestions!

Thanks to you !

Regarding the LazyBigMerkleTree - indeed, we can implement additional versions such as LazyZenBoxSMT and LazyBitVectorSMT like it is done for BigMerkleTree and LazyBigMerkleTree.

Only if it's worth it: if the logic SDK-side is such that you have to update the tree with lot of boxes in a single time, the Lazy will be much quicker; otherwise we can keep the non-lazy.

About the JNI side I suppose to create class ZenBoxSMT with JNI calls to the rust methods of ZenBoxSMT, like it is done for BigMerkleTree. Maybe I misunderstood, but I don't see how BitVectorSMT and ZenBoxSMT can be extended from BigMerkleTree class on the Java side.

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

Thank you for the additional suggestions!

Thanks to you !

Regarding the LazyBigMerkleTree - indeed, we can implement additional versions such as LazyZenBoxSMT and LazyBitVectorSMT like it is done for BigMerkleTree and LazyBigMerkleTree.

Only if it's worth it: if the logic SDK-side is such that you have to update the tree with lot of boxes in a single time, the Lazy will be much quicker; otherwise we can keep the non-lazy.

About the JNI side I suppose to create class ZenBoxSMT with JNI calls to the rust methods of ZenBoxSMT, like it is done for BigMerkleTree. Maybe I misunderstood, but I don't see how BitVectorSMT and ZenBoxSMT can be extended from BigMerkleTree class on the Java side.

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

Thank you, now I understood! Actually this is the way to implement ZenBoxSMT which I also thought about, but Alberto said that it would be better to implement the whole logic completely in Rust. As I understand this will save JNI-calls, because in case of extending BigMerkleTree on the Java side there would be at least two JNI calls for methods which work with BitVectorSMT: to the BigMerkleTree and to BitVectorSMT both on the Rust side. But in case when on the Rust side we have ZenBoxSMT, which contains BigMerkleTree and BitVectorSMT and exposes methods to the Java side there will be a single JNI call per each method, while all the auxiliary logic for updating both trees is implemented in Rust.

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

Thank you, now I understood! Actually this is the way to implement ZenBoxSMT which I also thought about, but Alberto said that it would be better to implement the whole logic completely in Rust. As I understand this will save JNI-calls, because in case of extending BigMerkleTree on the Java side there would be at least two JNI calls for methods which work with BitVectorSMT: to the BigMerkleTree and to BitVectorSMT both on the Rust side. But in case when on the Rust side we have ZenBoxSMT, which contains BigMerkleTree and BitVectorSMT and exposes methods to the Java side there will be a single JNI call per each method, while all the auxiliary logic for updating both trees is implemented in Rust.

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

Thank you, now I understood! Actually this is the way to implement ZenBoxSMT which I also thought about, but Alberto said that it would be better to implement the whole logic completely in Rust. As I understand this will save JNI-calls, because in case of extending BigMerkleTree on the Java side there would be at least two JNI calls for methods which work with BitVectorSMT: to the BigMerkleTree and to BitVectorSMT both on the Rust side. But in case when on the Rust side we have ZenBoxSMT, which contains BigMerkleTree and BitVectorSMT and exposes methods to the Java side there will be a single JNI call per each method, while all the auxiliary logic for updating both trees is implemented in Rust.

Maybe we are saying the same thing, let's proceed with your design, mine was just a minor comment !

You can create, for instance, a BitVectorSMT class in JNI folder extending BigMerkleTree (or LazyBigMerkleTree according to the comment above): in this way you already have the function to create, destroy, get root, get path, etc.; then you can add in this new class the specific BitVector functions such as modify_bit_in_bvt, get_bvt_bit and so on.

Thank you, now I understood! Actually this is the way to implement ZenBoxSMT which I also thought about, but Alberto said that it would be better to implement the whole logic completely in Rust. As I understand this will save JNI-calls, because in case of extending BigMerkleTree on the Java side there would be at least two JNI calls for methods which work with BitVectorSMT: to the BigMerkleTree and to BitVectorSMT both on the Rust side. But in case when on the Rust side we have ZenBoxSMT, which contains BigMerkleTree and BitVectorSMT and exposes methods to the Java side there will be a single JNI call per each method, while all the auxiliary logic for updating both trees is implemented in Rust.

Maybe we are saying the same thing, let's proceed with your design, mine was just a minor comment !


Drop-in callbacks aren't fired

We got some issues, especially with PayPal. For example, sometimes the PayPal authorization windows goes blank and users cancel their orders.
Now, I want to track every single error or cancellation, which happens during the checkout. But some callbacks are never fired.
braintree.setup(token, "dropin", {
    container: "foo"
    ,onError: function (error) {
        // Works great!
    }
    ,onReady: function () {
        // Works great!
    }
    ,onPaymentMethodReceived: function (obj) {
        // Only fired by submitting the whole form. Not really helpful.
    }
    ,paypal: {
        onUnsupported: function () {
            // Never fired.
        }
        ,onCancelled: function () {
            // Never fired.
        }
        ,onAuthorizationDismissed: function () {
            // Never fired.
        }
    }
});

Any ideas?

Have you noticed any patterns for when the popup window does not display? IE, is it always in a particular browser?

@Tyrdall ^

@crookedneighbor Sorry for the misunderstanding. The blank PayPal window is part of https://github.com/braintree/braintree-web/issues/166.
This issue is about the callbacks, which aren't fired.

Here's an explanation of the PayPal callbacks you mentioned:

onUnsupported - fired when you attempt braintree.setup with paypal options, but they browser is not supported by PayPal.
onCancelled - fired when a user has already logged in to paypal and completed the popup authentication flow, then clicks the cancel link next to their email address in the UI element that has since replaced the PayPal button.
onAuthorizationDismissed - fired when a user closes the PayPal auth popup prematurely, or has clicked a cancellation link within the popup flow.

In regard to other error scenarios such as the popup going blank, it may not fire any error callbacks. We're currently investigating the issues described in #166.

@mrak Thanks for the explanation. The onAuthorizationDismissed event is what I'm looking for. Unfortunately I'm not able to get it to work. It doesn't get fired, if I close the PayPal window or if I click on "Cancel" within the window. Any advice?

However, our Drop-in integrations do not fire the paypal-specific callbacks.
Our documentation does not mention this fact -- we will get this corrected. Sorry for any confusion.


NO BUILD FOLDER #ROOKIE MISTAKE

Hey, I appreciate your feedback! I’ve added Webpack to build the project, which will now ensure all required files (including fonts) are bundled correctly into a dist folder. This fixes the missing build folder issue. Thanks for pointing that out!
Feel free to check out the latest version, and let me know if you encounter any more issues.


Greeting for first time contributor added

Fixes #2026
Greeting for first time contributor added
Shows Only for First Time Contributor
They Get Links to the Code of Conduct and Code PR Guidelines in this way
On Creating Their First Issue in this AlgoTree Project
Screenshots of Testing & Checking

@plazzy99 Hope to see these changes live on this project soon, Please Merge it, sir!

@rudrakshi99 Please Review it once, It will be Helpful a lot


Socket reuse flag not working?

Hi - I'm running einhorn via upstart and I'm seeing the following exception if there is a stop/start sequence in rapid succeession:
Mar 12 19:13:13 doughnut goliath-channel_api: [MASTER 29092] INFO: Writing PID to /srv/www/channel_api/shared/pids/einhorn.pid
Mar 12 19:13:13 doughnut goliath-channel_api: [MASTER 29092] INFO: Binding to <IP_ADDRESS>:8080 with flags ["rn"]
Mar 12 19:13:13 doughnut goliath-channel_api: [MASTER 29092] INFO: Sending USR2 to []
Mar 12 19:13:13 doughnut goliath-channel_api: /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:205:in `bind': Address already in use - bind(2) for <IP_ADDRESS>:8080 (Errno::EADDRINUSE)
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:205:in `bind'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:356:in `block in socketify_env!'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:355:in `each'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:355:in `socketify_env!'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/lib/einhorn.rb:449:in `run'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/gems/einhorn-0.6.3/bin/einhorn:327:in `<top (required)>'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/bin/einhorn:23:in `load'
Mar 12 19:13:13 doughnut goliath-channel_api: #011from /home/deploy/.bundler/channel_api/ruby/2.1.0/bin/einhorn:23:in `<main>'

When the error is reported, there are no running einhorn processes but netstat -na | grep 8080 reports a few sockets in TIME_WAIT.  I thought the r flag should let einhorn bind despite that?

I think individual flags have to be comma-separated - does it work if you pass -b <IP_ADDRESS>:8080,r,n instead of ,rn?

It does!  I tried it with just r previously, but, whatever, works.  Thanks!


Instructions for Internationalization

Hi, I'm trying to translate Siwapp to spanish...
Can anyone give me any instructions for extract the strings?
I'm here: http://symfony.com/doc/current/best_practices/i18n.html
and here: http://jmsyst.com/bundles/JMSTranslationBundle/master/usage
But I can see the strings, only the id.
Any idea?

You can find the english translations into:
src/Siwapp//Resources/translations/.en.yml
You can copy each file to
src/Siwapp//Resources/translations/.es.yml
and work there

Hi again, I've placed the spanish translation files and cleared the cache and don't work, any idea?
Thanks!

Hi! Could it be that you have selected a locale that is not "es" but es_STH? eg not "Spanish", but "Spanish (Spain)"?
Also note that when changing locale you have to logout and then log back in.

Hi, I'm using "es" locale, this is my test commit: https://github.com/facine/siwapp-sf3/commit/7a6f70eeda378c142710e7f7176f712434c9ad7e and I'm doing re-login.
There is no error in var/log
Any idea?

It worked for me. Did you clear the "prod" logs or "dev"?
Maybe do sudo rm -rf var/cache/prod
Also, you can use the dev mode under /app_dev.php
There you also have the helpful bottom bar which gives some nice details for translations

Thanks! now works.


prerequisites all depend on being able to start the server

You have to run select statements on files that are in the master database that needs to be rebuilt in order to start the database in the first place.  How does that work?

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

ID: 39e93d44-8942-2548-190e-616285b554c6
Version Independent ID: 4a1e67f5-097c-f4c9-544f-fd75ce0c974c
Content: Rebuild System Databases - SQL Server
Content Source: docs/relational-databases/databases/rebuild-system-databases.md
Product: sql
GitHub Login: @stevestein
Microsoft Alias: sstein

@BillPennock -- Bill, thank you for your question.  You may find an answer in these links:

Reddit - general discussion about SQL Server
DBA Stack Exchange
Stack Overflow

Also, you may want to add your question to SQL Server Feedback.
@stevestein -- Steve, please look into this issue 3376 for possible documentation impact.

The initial SELECT statements represent a scenario where either the original database has remained intact or for use prior to a case where the database actually needs rebuilding.
This is the only way to extract potentially wanted settings not restored by the build process.

@BillPennock - thanks for the feedback!
Yes, if the server is literally down and won't start you need to resolve that issue first. Then, depending on the underlying issues, might need to restore your system databases from a most recent backup, or rebuild following the steps in this article.

#please-close

@BillPennock - thanks for the feedback!
Yes, if the server is literally down and won't start you need to resolve that issue first. Then, depending on the underlying issues, might need to restore your system databases from a most recent backup, or rebuild following the steps in this article.

But SQL Server says “Cannot recover the master database. SQL Server is unable to run. Restore master from a full backup, repair it, or rebuild it. For more information about how to rebuild the master database, see SQL Server Books Online.”. So the rebuild or repair is the step I need to complete prior to starting the rebuild process…? “Repair” seems to be a substep of “Rebuild”…? I might be missing something here.
Anyway, I am going to try to see if skipping all the prerequisites and jumping to using setup.exe’s Repair option does anything useful for me.


Consider dropping TransactionManager support in Spanner for next version

I seem to remember having a conversation about this, and deciding that as we don't really support 2-PC, it would be better not to have it in there at all.
Removing the support fully might be quite a lot of work, admittedly.

We've decided not to go ahead with this.


I need to add a name prefix in resnet.py

I found the symbol's name in resnet.py are fixed, for example (conv0):
body = mx.sym.Convolution(data=data, num_filter=filter_list[0], kernel=(7, 7),
  stride=(2,2), pad=(3, 3), no_bias=True, name="conv0", workspace=workspace)

so I can not create two resnet. How can i add a name prefix to resnet.
with namescope(prefix='resnet1'):
  body = mx.sym.Convolution(data=data, num_filter=filter_list[0], kernel=(7, 7),
  stride=(2,2), pad=(3, 3), no_bias=True, name="conv0", workspace=workspace) # body's name is resnet1/conv0

I found the answers.


how to use knn with Biscale?

according to the knn code there is a parameter "normalizer". And says it could be object like Biscale. But when I do this:
data_clean = KNN(k=5, normalizer=BiScaler).complete(data)
the error below occurred:
File "/usr/local/lib/python2.7/site-packages/fancyimpute/solver.py", line 207, in complete     imputations = self.multiple_imputations(X)                                              File "/usr/local/lib/python2.7/site-packages/fancyimpute/solver.py", line 199, in multiple_imputations     return [self.single_imputation(X) for _ in range(self.n_imputations)]                   File "/usr/local/lib/python2.7/site-packages/fancyimpute/solver.py", line 176, in single_imputation     X = self.normalizer.fit_transform(X)     TypeError: unbound method fit_transform() must be called with BiScaler instance as first argument (got ndarray instance instead)

You probably just need to instantiate  BiScaler.

Oh sorry I did not notice that. Thank you so much


Android/HTML5: Support for depth/stencil buffers

Hi Robert,
this PR adds support for depth/stencil buffers on android.
I'm not quite sure it's the best way to implement it. I tried using a separate attached stencil/depth buffer, but that fails on the s4 and succeeded but didn't work on my htc. Now i use the GLES1.1 GL_DEPTH_STENCIL_OES extension and it's working on all devices i have access to so far (HTC Desire X, S3, S4, HUAWEI Ascend something).
Edit: Oh it seems that the 'HTML5 stencil support' commit got somehow added as well (i'm still very much a noob in using git; I thought a pull request is just for a specific commit. I wanted to create a separate PR for it so they stay small and easier to merge).

Thanks for testing on all of those devices, couldn't even have done that.


Request support for ChartCenter from JFrog

The new chart repo (Chart Center) from JFrog is not supported due to chart path setting.
Example aws-alb-ingress-controler:
Because Chart Center prepends 'center/' to cloned repo paths Helmfile reads it as a folder path.
https://chartcenter.io/incubator/aws-alb-ingress-controller?version=0.1.14
Example helmfile.yaml
repositories:
- name: center
  url: https://repo.chartcenter.io

releases:

- name: aws-alb-ingress-controller
  chart: center/incubator/aws-alb-ingress-controller
  version: 0.1.14
  namespace: default

Error output
STDERR:
  Error: could not find center/incubator/aws-alb-ingress-controller: stat center/incubator/aws-alb-ingress-controller: no such file or directory

any workarounds?

any workarounds?

I know of none, other than finding the original source and using it.

@michaelpporter Thanks for raising this! Apologies I had been putting this onto my "nice-to-have" list. But it turned out this will be important soon as the upstream MAY discontinue the stable and incubator repositories after November https://helm.sh/blog/helm-v2-deprecation-timeline/


[WIP] GUI - Login with GitHub

Short description of what this resolves:
This PR allows the user to log in to GitHub using a button, and the extension will automatically generate a token with the correct scopes and find the gist id.
Changes proposed in this pull request:

Login to GitHub using OAuth
Create a GUI for Settings and Welcome page
Allow user to choose from a list of available gists

Fixes: #506
How Has This Been Tested?

I have tested this by logging in to GitHub and checking if the token and gist id has been saved properly.
Screenshots (if appropriate):

Checklist:

[x] I have read the contribution guidelines.
[x] My change requires a change to the documentation and GitHub Wiki.
[x] I have updated the documentation and Wiki accordingly.

Status:

[x] Authenticate with OAuth
[x] Save Token
[x] GUI for Gist Selection page
[x] GUI for Settings page
[x] GUI for Welcome page

Thanks.
We will a detailed UI review once v3.2.9 is released.
This PR is 3.3 worthy :)

@shanalikhan once again the commit timeline has been littered with random commits :(. I'm going to open a new PR with only my changes


Ssh-rs panic on a thread when using in multi threading

Hello,
I had an issue with your library.
One thread panic when i use more threads than i have physical cores.
When i use Available parallelism from the rust standard library, i got 12 cores.
I precise that my cpu have 8 cores without hyper threading and 2 physical cores with Hyper Threading.
So 10 physical core without hyper threading.
When i set the number of threads to 10, no crash happen but when i increase the number of threads to 11 or 12 then it crash.
i m just running n threads and running ssh inside of each one.
thread '<unnamed>' panicked at C:\Users\Username\.cargo\registry\src\index.crates.io-6f17d22bba15001f\ssh-rs-0.4.1\src\config\version.rs:36:17:
assertion `left == right` failed
  left: [69, 120, 99, 101]
 right: [83, 83, 72, 45]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Hi,
May I have a copy of your PoC code?
It looks strange cuz this assert is only to test the first 4 bytes of the ssh server replies when we connected.
According to the RFC, it must be "SSH-xxxxxx", which in ASCII is [83, 83, 72, 45, xxxxx]
A fatal here is that we shall throw an error rather than panic. But if you're connecting a true ssh server, it is worth investigating more about how could it happen.
BRs.

Hi, thank you for your help.
Ssh Server : OpenSSH_8.9p1
PoC
use ssh;
use std::thread::{self, JoinHandle};
use std::thread::available_parallelism;
fn main() {
    //let default_parallelism_approx = available_parallelism().unwrap().get();
    let default_parallelism_approx = 11;
    let mut threads = Vec::<JoinHandle<()>>::new();
    for i in 0..default_parallelism_approx {
        let mut start = i;
        let e = thread::spawn(move || {
            let session_name = "Admin";
	    let password = "12345678";
            while start < 10000 {
                let connection = ssh::create_session()
                .username(&session_name)
                .password(&password)
                .connect("wwww.website.com:22");

        }
        });
        threads.push(e);
    }
    for _u in 0..default_parallelism_approx {
        let r = threads.pop().unwrap();
        let _ = r.join();
    }
}

Hi @Paulo-21
With #78 it now returns an error SshError::VersionDismatchError rather than panic.
It's actually some error message which indicates that the server is not able to handle more clients.
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: VersionDismatchError { our: "SSH-2.0-SSH_RS-0.4.1", their: "Exceeded MaxStartups" }', exec/src/main.rs:38:18
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: VersionDismatchError { our: "SSH-2.0-SSH_RS-0.4.1", their: "Exceeded MaxStartups" }', exec/src/main.rs:38:18
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: VersionDismatchError { our: "SSH-2.0-SSH_RS-0.4.1", their: "Exceeded MaxStartups" }', exec/src/main.rs:38:18
thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: VersionDismatchError { our: "SSH-2.0-SSH_RS-0.4.1", their: "Exceeded MaxStartups" }', exec/src/main.rs:38:18

I'll later have 0.4.2 released to include the fix.
Thank you for reporting!
BRs.

Hi @HsuJv
Thank you for your reactivity.


Something wrong maybe with java when i started the ha-bridge

I downloaded the jar from github and follow the steps in readme. When i used the command sudo systemctl start habridge.service , nothing happened and localhost:80 is disconnected. Then i saw the log, it showed me as follow:
Dec 25 19:59:32 sun-ThinkPad-X270 systemd[1]: Started HA Bridge.
Dec 25 19:59:32 sun-ThinkPad-X270 systemd[19689]: habridge.service: Failed at step CHDIR spawning /usr/bin/java: No such file or directory
Dec 25 19:59:32 sun-ThinkPad-X270 systemd[1]: habridge.service: Main process exited, code=exited, status=200/CHDIR
Dec 25 19:59:32 sun-ThinkPad-X270 systemd[1]: habridge.service: Unit entered failed state.
Dec 25 19:59:32 sun-ThinkPad-X270 systemd[1]: habridge.service: Failed with result 'exit-code'.

So i reinstalled my java environment by apt-get and try again. This error appeared again.
So i have no idea about this. Anyone help?

The error shows it cannot find java. Install java 8.

Hi,
i have the same issue. Java is installed. I've also switched the versions from 11 to 8, but could not resolve the problem.
Any further suggestions?
BR
Florian


Document escape strings

Towards #2308

the <IP_ADDRESS>. Dollar-Quoted String Constants seems also working, do you want to include as well?
<IP_ADDRESS>. Dollar-Quoted String Constants #


Show repository name in multiqueue

Useful for sorting and quickly checking visually.
Tested for servo, seems to work.
r? @barosl

I merged this, and handled some concerns in d3701e8. Please take a look, and tell me if there are some mistakes I made.

LGTM


⚠ Spryr has degraded performance

In 5192a52, Spryr (https://spryr.com) experienced degraded performance:

HTTP code: 200
Response time: 5943 ms

Resolved: Spryr performance has improved in dbadfef after 7 minutes.


Zotero Manually Add Citation to Bibliography

Hello, I have been frequently using the Zotero plugin lately to write APA papers. The in text citation editor works fine and properly adds the citation to the bibliography, but with APA style it sometimes makes more sense to write the in-text citation myself for short quoting.
Example:
According to Jones (1998), "students often had difficulty using APA style, especially when it was their first time" (p. 199).
Jones (1998) found "students often had difficulty using APA style" (p. 199); what implications does this have for teachers?
In these situations, I type the citation myself instead of using the insert citation tool, but then it does not get added to the bibliography. I don't think it would be feasible to somehow make the plugin aware of these short citations, but it would be nice if there was at least an option to manually add sources to the bibliography section that do not link to in text citations created by Zotero. If this is already possible please let me know because I have not found an option to do so.

Hello! @17hoehbr
Just to confirm, are you looking to input text into a document and then add it to the Zotero site via a plugin?

No, I am only looking to add bibliography information from existing Zotero entries to the bibliography section. I would just like an option to manually add entries that are not associated with an in text citation.
Example:

Zotero does not recognize Hassenzahl (2006) as a citation since I typed in manually. Thus, clicking insert citation just gives the message "Please insert some citation into the document". I would like to have some way to manually add a source to the bibliography even if it is not associated with an in text citation generated by the Zotero plugin.


buildbot: 0.9.15.post1 -> 1.0.0

Motivation for this change
Updates buildbot to version 1.0.0.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build buildbot buildbot-full

Success on x86_64-linux (full log)
Partial log (click to expand)
[SKIPPED]
ViewBuildsEndpointMatcher is not implemented yet

buildbot.test.unit.test_www_endpointmatchers.ViewBuildsEndpointMatcherBranch.test_build
-------------------------------------------------------------------------------
Ran 5255 tests in 79.405s

PASSED (skips=237, successes=5018)
building '/nix/store/q6d1l2ikmb3mc4h55yxway26wilvpnm4-wrapped-buildbot-1.0.0.drv'...
'/nix/store/054ab6aapi730krgwwy9aslsbhr73hfa-wrapped-buildbot-1.0.0/lib' -> '/nix/store/4rhciwfr7pslzdg75p6xwpn61h52viwn-buildbot-1.0.0/lib'

Success on x86_64-darwin (full log)
Partial log (click to expand)
[SKIPPED]
ViewBuildsEndpointMatcher is not implemented yet

buildbot.test.unit.test_www_endpointmatchers.ViewBuildsEndpointMatcherBranch.test_build
-------------------------------------------------------------------------------
Ran 5255 tests in 85.205s

PASSED (skips=238, successes=5017)
building '/nix/store/h3rs4shs00y8isb4qrj5wdpdq853zzf6-wrapped-buildbot-1.0.0.drv'...
'/nix/store/fwr72jknsp9rzijnk2awz7j3djw81lmw-wrapped-buildbot-1.0.0/lib' -> '/nix/store/qdqblqs1cg2kcbrhapab3ii16d0330cm-buildbot-1.0.0/lib'

Failure on aarch64-linux (full log)
Partial log (click to expand)
Failure: sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: configured_workers [SQL: u'SELECT DISTINCT configured_workers.buildermasterid \nFROM configured_workers LEFT OUTER JOIN builder_masters ON builder_masters.id = configured_workers.buildermasterid \nWHERE builder_masters.masterid = ?'] [parameters: (10,)] (Background on this error at: http://sqlalche.me/e/e3q8)

buildbot.test.unit.test_db_workers.TestRealDB.test_workerConfiguredManyBuilders
-------------------------------------------------------------------------------
Ran 5255 tests in 390.301s

FAILED (skips=237, errors=11, successes=5014)
builder for '/nix/store/5v7i3fq54y571birga83pq9qv4gr4b1y-buildbot-1.0.0.drv' failed with exit code 1
cannot build derivation '/nix/store/fyc0d01wqpsra5c5mba01x6rphsznfg4-wrapped-buildbot-1.0.0.drv': 1 dependencies couldn't be built
error: build of '/nix/store/5v7i3fq54y571birga83pq9qv4gr4b1y-buildbot-1.0.0.drv', '/nix/store/fyc0d01wqpsra5c5mba01x6rphsznfg4-wrapped-buildbot-1.0.0.drv' failed

@GrahamcOfBorg test buildbot

Failure on aarch64-linux (full log)
Partial log (click to expand)
error: attribute 'buildbot' in selection path 'tests.buildbot' not found

Failure on x86_64-linux (full log)
Partial log (click to expand)
error: attribute 'buildbot' in selection path 'tests.buildbot' not found

@GrahamcOfBorg test buildbot

Success on x86_64-linux (full log)
Partial log (click to expand)
drwxr-xr-x 4 bbworker bbworker 4096 Feb 17 10:11 .
drwx------ 3 bbworker bbworker 4096 Feb 17 10:11 ..
-rw------- 1 bbworker bbworker 1236 Feb 17 10:11 buildbot.tac
drwxr-xr-x 2 bbworker bbworker 4096 Feb 17 10:11 info
drwxr-xr-x 2 bbworker bbworker 4096 Feb 17 10:11 runtests
-rw-r--r-- 1 bbworker bbworker    9 Feb 17 10:11 twistd.hostname
-rw-r--r-- 1 bbworker bbworker 1554 Feb 17 10:11 twistd.log
vde_switch: EOF on stdin, cleaning up and exiting
vde_switch: Could not remove ctl dir '/build/vde1.ctl': Directory not empty
/nix/store/jwxb0857p373654rdw7ldkrgdkdz4hl5-vm-test-run-buildbot

Failure on aarch64-linux (full log)
Partial log (click to expand)
cannot build derivation '/nix/store/a09hqjglsfp0f8rgx1y9fd5lp8v6xf3k-system-units.drv': 4 dependencies couldn't be built
cannot build derivation '/nix/store/bjj327b3a4j4my8jzszlbiqlss3s0vrn-user-units.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/02r2dans72vq81hq35m8z10nig1rf9g9-etc.drv': 4 dependencies couldn't be built
cannot build derivation '/nix/store/j2hcyr7xngyppy7z3i6ywwn68xq6yh5q-nixos-system-bbmaster-18.03.git.fa46179.drv': 2 dependencies couldn't be built
cannot build derivation '/nix/store/ha2i0pyfnx885plybhvlz1c7v8vs45ja-closure-info.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/q96247hfbpadg4pqvn22lqhbxxkh9rcq-run-nixos-vm.drv': 2 dependencies couldn't be built
cannot build derivation '/nix/store/i87v4isfrayg96gl5jm57kcpl2w0q5x8-nixos-vm.drv': 2 dependencies couldn't be built
cannot build derivation '/nix/store/4xgc2752r13d5a3xhipa7zkbav1nbvxk-nixos-test-driver-buildbot.drv': 1 dependencies couldn't be built
cannot build derivation '/nix/store/fpgs5pvcddlfsfgiwr049ghckjza7qir-vm-test-run-buildbot.drv': 1 dependencies couldn't be built
error: build of '/nix/store/fpgs5pvcddlfsfgiwr049ghckjza7qir-vm-test-run-buildbot.drv' failed

@GrahamcOfBorg eval

Buildbot has always failed on aarch64: https://hydra.nixos.org/job/nixpkgs/trunk/buildbot.aarch64-linux

cc maintainer @nand0p

@lopsided98 could maybe disable aarch64 then as platforms?

Is there a changelog? Are there any major changes?

@FRidh https://docs.buildbot.net/latest/relnotes/index.html#buildbot-1-0-0-2018-02-11
It's a minor release signifying API stability.


When using single image (e.g. KITTI)

Hi, thank you for your great work!
I'm trying to learn BEVFusion on a KITT dataset.
Since using a single image, I have used 5 images as the zero array. Accordingly, I have set the corresponding calibration matrix to the identity matrix.
This setup worked successfully in BEVFusion with the codebase version of MMDetection3D.
However, after modifying the code based on this repository, I observed a drop in the fusion model's performance relative to the LiDAR model's performance.
To date, I have not been able to identify a clear reason.
In my opinion, the difference between my current code and the implementation in MMDetection3D is the order of the images.
(Of course, there could be other differences).
In MMDetection3D, I put the single image in the third (because I was using CAM2), whereas here I put it in the first.
Can this have a significant impact on the results? Or can you speculate on another cause?

When I ues bevfusion in our own datasets(only 1 camera too), I get a drop in the fusion model's performance too....

Hello, I am also trying to learn BEVFusion on KITTI dataset but I keep getting errors, can you provide me some help, I will be very thankful!

When I ues bevfusion in our own dataset(only one camera too), I get a drop in the fusion model's performance too， have you found the reason??

No, I'm using model from mmdetection3d repo.

When I ues bevfusion in our own dataset(only one camera too), I get a drop in the fusion model's performance too， have you found the reason??

No, I'm using model from mmdetection3d repo.

so  after using model from mmdet3d repo, the fusion model's performance improved？？？？

When I ues bevfusion in our own dataset(only one camera too), I get a drop in the fusion model's performance too， have you found the reason??

No, I'm using model from mmdetection3d repo.

so after using model from mmdet3d repo, the fusion model's performance improved？？？？

Yep, I could get a reasonable performance improvement.

Hello, I am also trying to learn BEVFusion on KITTI dataset but I keep getting errors, can you provide me some help, I will be very thankful!

Hi, to train BEVFusion on KITTI requires some bunches of modification of the codes and it's not trivial. You have to consider some factors (such as number of input images, number of outputs except for velocity, etc.).
If you show me the error, I could give you some advice for you.
Thanks so much.
When I train, the following error occurs:
File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward
cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords)
IndexError: too many indices for tensor of dimension 2

When I ues bevfusion in our own dataset(only one camera too), I get a drop in the fusion model's performance too， have you found the reason??

No, I'm using model from mmdetection3d repo.

so after using model from mmdet3d repo, the fusion model's performance improved？？？？

Yep, I could get a reasonable performance improvement.

Nice! And I have another question, the image size of kitti datasets(1392 x 512) is different from nuscenes(1280 x 720)，how to set the resize parameter in data augmentation???

Hello, I am also trying to learn BEVFusion on KITTI dataset but I keep getting errors, can you provide me some help, I will be very thankful!

Hi, to train BEVFusion on KITTI requires some bunches of modification of the codes and it's not trivial. You have to consider some factors (such as number of input images, number of outputs except for velocity, etc.).
If you show me the error, I could give you some advice for you.

Thanks so much.
When I train, the following error occurs:
File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward
cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords)
IndexError: too many indices for tensor of dimension 2

Nice! And I have another question, the image size of kitti datasets(1392 x 512) is different from nuscenes(1280 x 720)，how to set the resize parameter in data augmentation???

First, please notice that the configuration file could be different from here because I use the mmdetection3d repo.
In my case, all input image is resized to (256, 704) which is input size of 2D model.

Nice! And I have another question, the image size of kitti datasets(1392 x 512) is different from nuscenes(1280 x 720)，how to set the resize parameter in data augmentation???

First, please notice that the configuration file could be different from here because I use the mmdetection3d repo.
In my case, all input image is resized to (256, 704) which is input size of 2D model.

OK...... Thanks so much~

Thanks so much. When I train, the following error occurs: File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords) IndexError: too many indices for tensor of dimension 2

In my memory, cur_img_aug_matrix should have the shape of (N, 4, 4) where N is the number of input images.
With KITTI dataset, I put the dummy zero array to it except for the real one because I used a single image.
Please check the shape of cur_img_aug_matrix.

Thanks so much. When I train, the following error occurs: File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords) IndexError: too many indices for tensor of dimension 2

In my memory, should have the shape of (N, 4, 4) where N is the number of input images. With KITTI dataset, I put the dummy zero array to it except for the real one because I used a single image. Please check the shape of .cur_img_aug_matrix``cur_img_aug_matrix

Yes, but I haven't been able to find it, if it's convenient, could you provide me with the relevant code, I'd appreciate it!

Thanks so much. When I train, the following error occurs: File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords) IndexError: too many indices for tensor of dimension 2

In my memory, cur_img_aug_matrix should have the shape of (N, 4, 4) where N is the number of input images. With KITTI dataset, I put the dummy zero array to it except for the real one because I used a single image. Please check the shape of cur_img_aug_matrix.

Thanks so much. When I train, the following error occurs: File "mmdetection3d/projects/BEVFusion/bevfusion/depth_lss.py", line 299, in forward cur_coords = cur_img_aug_matrix[:, :3, :3].matmul(cur_coords) IndexError: too many indices for tensor of dimension 2

In my memory, cur_img_aug_matrix should have the shape of (N, 4, 4) where N is the number of input images. With KITTI dataset, I put the dummy zero array to it except for the real one because I used a single image. Please check the shape of cur_img_aug_matrix.

I will check it, thank you very much~

@Lcl159, oops, sorry I was confused about it. I do not modify the img_aug_matrix.
If the input images whose shape is (B, N, C, H, W) are processed, the augmentation matrix is assigned in here.
So, if you correctly set the input images, cur_img_aug_matrix should be loaded. Please print the shape of it.

I'm thinking that I'm modifying the config file, or the loading file, but I can't fix it, can you tell me what you've changed?

In here, you have to put the dummy array.

Yes, I changed it, here is my code, can you help me see what is wrong?
class BEVLoadKittiImageFromFiles(LoadMultiViewImageFromFiles):
"""Load multi channel images from a list of separate channel files.
``BEVLoadMultiViewImageFromFiles`` adds the following keys for the
convenience of view transforms in the forward:
    - 'cam2lidar'
    - 'lidar2img'

Args:
    to_float32 (bool): Whether to convert the img to float32.
        Defaults to False.
    color_type (str): Color type of the file. Defaults to 'unchanged'.
    backend_args (dict, optional): Arguments to instantiate the
        corresponding backend. Defaults to None.
    num_views (int): Number of view in a frame. Defaults to 5.
    num_ref_frames (int): Number of frame in loading. Defaults to -1.
    test_mode (bool): Whether is test mode in loading. Defaults to False.
    set_default_scale (bool): Whether to set default scale.
        Defaults to True.
"""

def transform(self, results: dict) -> Optional[dict]:
    """Call function to load multi-view image from files.

Args:
    results (dict): Result dict containing multi-view image filenames.

Returns:
    dict: The result dict containing the multi-view image data.
    Added keys and values are described below.

        - filename (str): Multi-view image filenames.
        - img (np.ndarray): Multi-view image arrays.
        - img_shape (tuple[int]): Shape of multi-view image arrays.
        - ori_shape (tuple[int]): Shape of original image arrays.
        - pad_shape (tuple[int]): Shape of padded image arrays.
        - scale_factor (float): Scale factor.
        - img_norm_cfg (dict): Normalization configuration of images.
    """
    # TODO: consider split the multi-sweep part out of this pipeline
    # Derive the mask and transform for loading of multi-sweep data
    # Support multi-view images with different shapes
    # TODO: record the origin shape and padded shape
    filename, cam2img, lidar2cam, cam2lidar, lidar2img = [], [], [], [], []
    filename.append(results['images']['CAM2']['img_path'])
    lidar2cam.append(results['images']['CAM2']['lidar2cam'])
    lidar2cam_array = np.array(results['images']['CAM2']['lidar2cam']).astype(np.float32)
    lidar2cam_rot = lidar2cam_array[:3, :3]
    lidar2cam_trans = lidar2cam_array[:3, 3:4]
    camera2lidar = np.eye(4)
    camera2lidar[:3, :3] = lidar2cam_rot.T
    camera2lidar[:3, 3:4] = -1 * np.matmul(
        lidar2cam_rot.T, lidar2cam_trans.reshape(3, 1))
    cam2lidar.append(camera2lidar)
    cam2img_array = np.eye(4).astype(np.float32)
    cam2img_array[:3, :3] = np.array(results['images']['CAM2']['cam2img'])[:3, :3].astype(np.float32)
    cam2img.append(cam2img_array)
    lidar2img.append(cam2img_array @ lidar2cam_array)

    results['img_path'] = filename
    results['cam2img'] = np.stack(cam2img, axis=0)
    results['lidar2cam'] = np.stack(lidar2cam, axis=0)
    results['cam2lidar'] = np.stack(cam2lidar, axis=0)
    results['lidar2img'] = np.stack(lidar2img, axis=0)

    results['ori_cam2img'] = copy.deepcopy(results['cam2img'])

# img is of shape (h, w, c, num_views)
# h and w can be different for different views
    img_bytes = [
        get(name, backend_args=self.backend_args) for name in filename]
    imgs = [
        mmcv.imfrombytes(
            img_byte,
            flag=self.color_type,
            backend='pillow',
            channel_order='rgb') for img_byte in img_bytes
    ]
    # handle the image with different shape
    img_shapes = np.stack([img.shape for img in imgs], axis=0)
    img_shape_max = np.max(img_shapes, axis=0)
    img_shape_min = np.min(img_shapes, axis=0)
    assert img_shape_min[-1] == img_shape_max[-1]
    if not np.all(img_shape_max == img_shape_min):
        pad_shape = img_shape_max[:2]
    else:
        pad_shape = None
    if pad_shape is not None:
        imgs = [
            mmcv.impad(img, shape=pad_shape, pad_val=0) for img in imgs
        ]
    img = np.stack(imgs, axis=-1)
    if self.to_float32:
        img = img.astype(np.float32)

    results['filename'] = filename
    # unravel to list, see `DefaultFormatBundle` in formating.py
    # which will transpose each image separately and then stack into array
    results['img'] = [img[..., i] for i in range(img.shape[-1])]
    results['img_shape'] = img.shape[:2]
    results['ori_shape'] = img.shape[:2]
    # Set initial values for default meta_keys
    results['pad_shape'] = img.shape[:2]
    if self.set_default_scale:
        results['scale_factor'] = 1.0
    num_channels = 1 if len(img.shape) < 3 else img.shape[2]
    results['img_norm_cfg'] = dict(
        mean=np.zeros(num_channels, dtype=np.float32),
        std=np.ones(num_channels, dtype=np.float32),
        to_rgb=False)
    results['num_views'] = self.num_views
    results['num_ref_frames'] = self.num_ref_frames
    return results

@Lcl159, Have you modified the in here?LoadMultiViewImageFromFiles
In here, you have to put the dummy array.
For example, my modification in mmdetection3d codebase is as follows.
        filename, cam2img, lidar2cam, cam2lidar, lidar2img = [], [], [], [], []
        for _, cam_item in results["images"].items():
            if isinstance(cam_item, dict):
                if "img_path" in cam_item.keys():
                    filename.append(cam_item["img_path"])
                    lidar2cam.append(cam_item["lidar2cam"])

                    lidar2cam_array = np.array(cam_item["lidar2cam"]).astype(
                        np.float32
                    )
                    lidar2cam_rot = lidar2cam_array[:3, :3]
                    lidar2cam_trans = lidar2cam_array[:3, 3:4]
                    camera2lidar = np.eye(4)
                    camera2lidar[:3, :3] = lidar2cam_rot.T
                    camera2lidar[:3, 3:4] = -1 * np.matmul(
                        lidar2cam_rot.T, lidar2cam_trans.reshape(3, 1)
                    )
                    cam2lidar.append(camera2lidar)

                    cam2img_array = np.eye(4).astype(np.float32)
                    cam2img_array[:3, :3] = np.array(
                        cam_item["cam2img"]
                    ).astype(np.float32)[:3, :3]
                    cam2img.append(cam2img_array)
                    lidar2img.append(cam2img_array @ lidar2cam_array)
                else:
                    filename.append("zero.png")
                    lidar2cam.append(np.eye(4))
                    cam2lidar.append(np.eye(4))
                    cam2img.append(np.eye(4))
                    lidar2img.append(np.eye(4))
            else:
                filename.append("zero.png")
                lidar2cam.append(np.eye(4))
                cam2lidar.append(np.eye(4))
                cam2img.append(np.eye(4))
                lidar2img.append(np.eye(4))

        results["img_path"] = filename
        results["cam2img"] = np.stack(cam2img, axis=0)
        results["lidar2cam"] = np.stack(lidar2cam, axis=0)
        results["cam2lidar"] = np.stack(cam2lidar, axis=0)
        results["lidar2img"] = np.stack(lidar2img, axis=0)

        results["ori_cam2img"] = copy.deepcopy(results["cam2img"])

        # img is of shape (h, w, c, num_views)
        # h and w can be different for different views
        imgs = []
        for name in filename:
            if not name == "zero.png":
                imgs.append(
                    mmcv.imfrombytes(
                        get(name, backend_args=self.backend_args),
                        flag=self.color_type,
                        backend="pillow",
                        channel_order="rgb",
                    )
                )
            else:
                imgs.append(np.zeros((1, 1, 3)))

Or can you give me your contact information?

List such as cam2img seems to have only 1 element.
Please check the shape of input image tensor and corresponding calibration matrices.

In here, you have to put the dummy array.
For example, my modification in mmdetection3d codebase is as follows.

I made the changes according to what you said, but I still get that error, can you tell me the details of the changes on mmdetection3d, I really can't change it, thank you very much!

@Lcl159 Have you checked the shapes of input image, calibration params, and img aug matrix?

@Lcl159 Have you checked the shapes of input image, calibration params, and img aug matrix?

I printed the shape of the parameter, can you tell me where I should change it?

I cannot check the data in my code because I'm not in lab now.

I remember img aug matrix have shape of (B, N, 4, 4). However, your mat have (B, 4, 4). Then, in the code you provided, cur_img_aug_matrix will be (4, 4), not (N, 4, 4).

Why is not the shape of image (B, N, 3, H, W)? The channel is 256. It's weird.

img aug matrix

I cannot check the data in my code because I'm not in lab now.

I remember img aug matrix have shape of (B, N, 4, 4). However, your mat have (B, 4, 4). Then, in the code you provided, cur_img_aug_matrix will be (4, 4), not (N, 4, 4).
Why is not the shape of image (B, N, 3, H, W)? The channel is 256. It's weird.

I'm confused too, it's been bugging me for a long time, I can't solve the problem and I've never been able to find out what the problem is

I cannot check the data in my code because I'm not in lab now.

I remember img aug matrix have shape of (B, N, 4, 4). However, your mat have (B, 4, 4). Then, in the code you provided, cur_img_aug_matrix will be (4, 4), not (N, 4, 4).
Why is not the shape of image (B, N, 3, H, W)? The channel is 256. It's weird.

view_transform=dict(
type='DepthLSSTransform',
in_channels=256,
out_channels=80,
image_size=[256, 704],
feature_size=[32, 88],
xbound=[-54.0, 54.0, 0.3],
ybound=[-54.0, 54.0, 0.3],
zbound=[-10.0, 10.0, 20.0],
dbound=[1.0, 60.0, 0.5],
downsample=2),
Maybe it's because I didn't change it here?

filename

have you apply kitti to bevfusion successfully?

have you apply kitti to bevfusion successfully?

have you apply kitti to bevfusion successfully?
你好，可以向您学习有关如何在KITTI上训练的相关事宜吗，希望可以加个好友联系v13731082126

你好，我现在也没搞出来
向阳
@.***

------------------ 原始邮件 ------------------
发件人:                                                                                "mit-han-lab/bevfusion"                                                                                @.>;
发送时间: 2023年11月21日(星期二) 下午4:50
@.>;
<EMAIL_ADDRESS>主题: Re: [mit-han-lab/bevfusion] When using single image (e.g. KITTI) (Issue #501)
have you apply kitti to bevfusion successfully?
你好，可以向您学习有关如何在KITTI上训练的相关事宜吗，希望可以加个好友联系v13731082126
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.Message ID: @.***>

你好，我现在也没搞出来 向阳_@_ .***
…
------------------ 原始邮件 -------------- ---- 发件人：“mit-han-lab/bevfusion” @ . >; 发送时间：2023年11月21日（周二）下午4:50 _@** . _>; _@。@。>; 主题: 回复：[mit-han-lab/bevfusion] 使用单图像（例如 KITTI）时（问题#501）您是否成功将 kitti 应用于 bevfusion？你好，可以向您学习有关如何在 KITTI 上训练的相关传染病吗，希望可以加个好友联系 v13731082126 — 直接回复此电子邮件，在 GitHub 上查看，或取消订阅。您收到此消息是因为您发表了评论。消息 ID：@_ .*>

好的，我已经写完了。

能分享一下代码吗，我这里用单摄像头训练后导出的onnx图像输入还是1,6,3,256,704的size

你好，我现在也没搞出来 向阳 @.***
…
------------------ 原始邮件 ------------------ 发件人: "mit-han-lab/bevfusion" @.>; 发送时间: 2023年11月21日(星期二) 下午4:50 @.><EMAIL_ADDRESS>主题: Re: [mit-han-lab/bevfusion] When using single image (e.g. KITTI) (Issue #501) have you apply kitti to bevfusion successfully? 你好，可以向您学习有关如何在KITTI上训练的相关事宜吗，希望可以加个好友联系v13731082126 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

您好！请问您现在实现在kitti上的训练了吗，

Thank you for your interest in our project. This repository is no longer actively maintained, so we will be closing this issue. Please refer to the amazing implementation at MMDetection3D. Thank you again!


Rehydrated arrays

Hello,
I've seen some issues about this, but no definitive answer, hence I'm posting.
I have added a new component called home which state is like this:
const initialState = Map({
  data: null,
  status: 'loading'
});

while my container looks like this:
// connect ...
data: state.getIn(['home', 'data']),

at component mount, an action GET_DATA is dispatched to fetch some remote data in the form of an array and insert it, data which will then be displayed in my view component, something like this:
render() {
// Some code
const {data} = this.props;
content = data.map((item) => {
        <SomeItem prop={item.prop} />
});
//etc
}

At first launch, an array is correctly inserted into my state, and the getIn method does its job, returning an array. However, when restoring the state from the app storage, this time I get an immutable object full of mumbo-jumbo that I can't make sense of. Why is that? Why do I not simply get my immutable state and why is getIn not doing its job of returning a simple JS object?
This is kinda ruining the entire app, because in my case, data is fetched at app startup, regardless of whether is exists in the restored state (to keep it up-to-date), so when comparing a simple array against an immutable object (even when the data has not changed) Redux permutates them, believing them to be different.
Is there some way to remedy this?
Thank you.
PS: Sorry for the long issue. I thought I had to be as explicit as possible.

did you find a solution?


Update README.md

Change attributeName to unknown type to allow for use-case described in https://github.com/DefinitelyTyped/DefinitelyTyped/pull/33950. For example, you may extend the Profile object with an attribute roles which is an array of string. Having unknown still allows for typing enforcement, and yet is flexible to allow for these use-cases

(cc: @markstos). This patch is needed to create a PR for the passport-saml types. :)


NAFTA example with fixest

Hi
I checked your question about: "Three or more FEs: fixest vs lfe vs base vs Stata (reghdfe) #286" in the fixest package. And I am wondering if you did something special in the of the fepois function call, because I could not replicate the glm results.
I attach my script
04_pacha.txt
.

hi!
I'm super busy, but I added this to my google calendar, you'll get a detailed reply nex Thu in the morning

hi
I've pushed the results now, as a comparison I checked the excel file that comes with the book, where it looks some columns have flipped names
to be sure, I checked table 2 in this article https://www.econstor.eu/bitstream/10419/144543/1/86371790X.pdf, which is the same as my replication., with the same columns as in the excel


Add jsonMode option

Add jsonMode option for support array of object data

Coverage decreased (-0.4%) to 77.416% when pulling 7c8e1d62fb8bc3e35c3838663cb0439e37416c56 on mgolkardev:patch-1 into 5b64e5548938322fac470ec055c335759434546f on gregnb:master.

So people have been asking about accepting array of objects for a long time now. I will be willing to accept this PR with some changes:

I don't want an explicit option so can we just detect if a user is passing in an array of arrays (current implementation) and if they are not then handle the array of objects
Change 'field' to 'id' and document this in the README. Specify how name is the label and id is the true column id
Something in the README to show that it accepts both array of arrays and array of objects

I could really use the JSON mode in my project and I am willing to finish this up. @mgolkardev, I saw that you worked on it Jan. 5th. What remaining work is there?

If @abrhim couldn't work on this I'll be glad to help and move this forward.

This PR as it is will prevent other functionalities like Sorting/CustomBodyRender, etc from working correctly.

The latest release now supports data as objects. Example: https://github.com/gregnb/mui-datatables/blob/master/examples/data-as-objects/index.js


Returning "wrong type" while key does not exist

Having the following case -
	redisClient, err := redisPool.Get()
	....
	defer redisPool.Put(redisClient)
	redisResp := redisClient.Cmd("GET", "someKey")
	respErr := redisResp.Err
	strValue, strErr := redisResp.Str()

If someKey is non-existent, then the value of respErr will be "wrong type" (probably due to receiving nil).
I think that we should either get an empty string as strValue's value, respErr with "key value non-existing" or strErr with the value of "empty value received". Another option is to have a default value.
Many times non-existing key isn't necessarily a case of an error.

Hey there! What's happening is that redis considers nil and strings to be two different types, so when you call Str on a response but that response is a nil it is technically the wrong type. I'd prefer to keep those strict semantics rather than do fuzzy casting to avoid confusion.
An easy way to get around the problem you're having (you want nil returns to be empty strings) is to do something like this:
resp := redisClient.Cmd("GET", "someKey")
// If there's an error on the resp that means it's some kind of network error or "key wrong type"
// or something immediate like that
if err := resp.Err; err != nil {
    return err
}

// If the resp isn't an error itself then you don't have to worry about checking the casting error,
// since you can be sure you know what the possible types GET returns are
strValue, _ := resp.Str()

Hope this helps, let me know if you have any further questions though.


Get user that does the upload when using tusd embedded in your Go app

I embedded tusd into an existing web server and added the necessary endpoints
using
a.Router.HandleFunc("/event/upload", a.UploadHandler.PostFile).Methods("POST")

where UploadHander is an UnroutedHandler
As you see this calls the PostFile method (https://sourcegraph.com/github.com/tus/tusd/-/blob/unrouted_handler.go#L220)
There is also a goroutine that listens to the channels as you see below.
func (a *App) setupPostHooks() {
	go func() {
		for {
			select {
			case info := <-a.UploadHandler.CompleteUploads:
				log.Println("COMPLETE ", info) // I would like to know the user who uploaded here
			case info := <-a.UploadHandler.TerminatedUploads:
				log.Println("TERMINATA ", info)
			case info := <-a.UploadHandler.UploadProgress:
				log.Println("PROGR ", info)
			case info := <-a.UploadHandler.CreatedUploads:
				log.Println("CREATE ", info)
			}
		}
	}()
}

Before the requests goes to the PostFile method I have a middleware that performs authentication using JWT tokens. There I set a user id in the request context.
The question is now how I can access that user id in the Fileinfo structs above when one of the above events happen?
I am thinking to write my own PostFile and add this to the FileInfo.Metadata .
Do you know another way?

Your idea using metadata is near my recommendation: When the user starts the upload, you add the JWT token to the upload's metadata (see https://tus.io/protocols/resumable-upload.html#upload-metadata). How exactly you can pull this off depends on what tus client you are using (for example, tus-js-client has a metadata option). Whenever the hooks are fired, you can obtain the JWT token by accessing the metadata as info.MetaData["JWTToken"].

This is how I did it, but I don't like it since the JWT token is also on the request Headers when user initially uses the upload endpoint (which uses PostFile). So , it would be nice that we could "override" the PostFile and add the JWT token behind the scenes to the FileInfo so the client does not have to do that.

I think the whole http.Request should be available when handling these events. Besides the .Header, the .RemoteAddr field is also important.
As it is, I am going to have to smuggle the RemoteAddr into the Upload-Metadata header before calling PostFile, but even doing that is awkward since the parseMeta and serializeMeta functions are unexported: https://github.com/tus/tusd/blob/0.10.0/unrouted_handler.go#L835-L879

We currently do not expose any details of the underlying HTTP request to hooks or the data store because we want the tus protocol to be an abstraction layer where consumers do not have to care about HTTP. In this thought, authorization or any other details should be carried in the upload's metadata. However, I realize that this is not intuitive and a annoyance for some users. Therefore, I am open to rethink this idea but let's discuss this in a separate issue: https://github.com/tus/tusd/issues/185


Presentation Draft

Completed version should be ready to present on Thursday

Please disregard, base branch error on my part.


Middle clicking a workspace links to a 404

Info:

When I left click on a workspace from the list, I get the workspace details. This is fine. (example URL: https://slovník.gov.cz/modelujeme/workspace/instance-1764959588)
However, when I middle click on a workspace to open it in another tab, I get a 404. (example URL: https://slovník.gov.cz/workspace/instance-1764959588 - the /modelujeme/ part is missing).

Same bug with clicking on the title:

Instead of getting https://slovník-test.mvcr.gov.cz/modelujeme/workspaces, I get https://slovník-test.mvcr.gov.cz/.

Same bug with clicking on the title:

Instead of getting https://slovník-test.mvcr.gov.cz/modelujeme/workspaces, I get https://slovník-test.mvcr.gov.cz/.

@bindeali Should be fixed. I had to merge the PR so that I could test it on the dev instance.


Error during loading process

fairnsquare.zip
I have attached the files I am trying to extract. I am using the latest version.

fixed in c7895502e4fd4ecca83ec082f476195dffffa03e


Support knex actions in the backstage-cli

When the plugins start, they run their own migrations. Which can cause errors when rolling back the code as the migrations files don't always stay the same across versions leading to knex throwing when running an old version thinking that the migrations directory is corrupted.
Feature Suggestion
Maybe we could have some backstage-cli commands that you can run on running hosts to mimic the knex cli.
These would be run in a plugin folder.
$ backstage-cli knex:migrate

$ backstage-cli knex:rollback

These commands would wrap up the config in app-config.yaml and provide the ability for people to migrate easier.

Hm. These migrations are on a per plugin basis. So you'd want to target a certain plugin on the command line - by ID perhaps? Those are chosen by the integrator. And would the command read app-config to compute what the actual db name and connection parameters are?

Ah I missed that you said it would be run in a plugin folder. But in any case the plugin ID is not known from there

It would be a naive question, but how does it run the migrations/some_migration.js
I am trying to create a new migration in one of the custom plugin (placed in packages/backend/plugins/custom/migrations/migration_file.js  . But I do not know how to trigger the migration.

same problem here. we have a CICD pipeline to deploy a testing instance, and we were not able to rollback the release. I had to drop affected database tables by hand for each involved plugin 😞

I had this same issue and found an example of how to do it. See how they use applyDatabaseMigrations in the catalog-backend plugin: https://github.com/backstage/backstage/blob/fdff9cc040816e03f85af5cdeae15d893d086cee/plugins/catalog-backend/src/database/migrations.ts#L20
You can put this either in your startStandaloneServer  function or in your createPlugin function, where you can apply the migrations before calling createRouter:
I have something like this in packages/backend/src/plugins/myplugin.ts which will hopefully all work out.
import { createRouter } from '@backstage/plugin-myplugin-backend';
import { Router } from 'express';
import { PluginEnvironment } from '../types';
import { Knex } from 'knex';
import { resolvePackagePath } from '@backstage/backend-common';

export async function applyDatabaseMigrations(knex: Knex): Promise<void> {
  const migrationsDir = resolvePackagePath(
    '@backstage/plugin-myplugin-backend',
    'migrations',
  );

  await knex.migrate.latest({
    directory: migrationsDir,
  });
}

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const db: Knex<any, unknown[]> = await env.database.getClient();

  // apply the migration(s)
  env.logger.info("Applying db migrations for my plugin")
  if (!env.database.migrations?.skip) {
    await applyDatabaseMigrations(db);
  }
  env.logger.info("Done applying db migrations for my plugin")

  const model = new MyKnexModel(db, env.logger);

  return await createRouter({
    logger: env.logger,
    model: model,
  });
}

Re-opening as this is something that we want to support and be able to provide some CLI or interface for doing this easier.

Here's what I did to get knex to reuse the Backstage config:
import { Knex } from 'knex';
import { getVoidLogger, loadBackendConfig } from '@backstage/backend-common';

export const PLUGIN_ID = 'your-plugin'
export const MIGRATION_DIR = resolvePackagePath('@internal/plugin-your-plugin-backend', 'src/db/migrations');
export const SEEDS_DIR = resolvePackagePath('@internal/plugin-your-plugin-backend', 'src/db/seeds');

const config: Knex.Config = {
  client: 'postgresql',
  connection: async () => {
    const backstageConfig = await loadBackendConfig({
      logger: getVoidLogger(),
      argv: process.argv
    });

    const dbConfig = backstageConfig.get<Knex.ConnectionConfig>('backend.database.connection');

    return {
      ...dbConfig,
      database: `backstage_plugin_${PLUGIN_ID}`
    };
  },

  migrations: { directory: MIGRATION_DIR },
  seeds: { directory: SEEDS_DIR },
};

module.exports = config;

and added these to the root package.json:
{
  "scripts": {
    "knex": "yarn --cwd plugins/your-plugin-backend knex",
    "db:migrate": "yarn knex migrate:latest",
    "db:migrate:list": "yarn knex migrate:list",
    "db:migrate:make": "yarn knex migrate:make",
    "db:rollback": "yarn knex migrate:rollback",
    "db:seed": "yarn knex seed:run",
    "db:seed:make": "yarn knex seed:make"
  }
}

knexfile.ts for Backstage 1.29:
import { Knex } from 'knex';
import { ConfigSources } from '@backstage/config-loader';
import { resolvePackagePath } from '@backstage/backend-plugin-api';

const PLUGIN_ID = 'my-plugin';

module.exports = async (): Promise<Knex.Config> => {
  const configSource = ConfigSources.default({ argv: process.argv });
  const backstageConfig = await ConfigSources.toConfig(configSource);

  const databaseConfig = backstageConfig.getConfig('backend.database');
  const prefix =
    databaseConfig.getOptionalString('prefix') || 'backstage_plugin_';

  const dbConnection =
    databaseConfig.getOptional<Knex.ConnectionConfig>(
      `plugin.${PLUGIN_ID}.connection`,
    ) || databaseConfig.get<Knex.ConnectionConfig>('connection');

  const migrationsDir = resolvePackagePath(
    `@internal/${PLUGIN_ID}-backend`,
    'migrations',
  );

  return {
    client: databaseConfig.getString('client'),

    migrations: {
      directory: migrationsDir,
    },

    connection: {
      ...dbConnection,
      database: `${prefix}${PLUGIN_ID}`,
    },
  };
};

knexfile.ts for backstage 1.31:
import { Knex } from 'knex'
import { ConfigSources } from '@backstage/config-loader'
import { resolvePackagePath } from '@backstage/backend-plugin-api'
import pluginPkgJson from './package.json'

const PLUGIN_ID = 'your-plugin'
const PLUGIN_PKG_NAME = pluginPkgJson.name

module.exports = async (): Promise<Knex.Config> => {
  const configSource = ConfigSources.default({ argv: process.argv })
  const backstageConfig = await ConfigSources.toConfig(configSource)

  const databaseConfig = backstageConfig.getConfig('backend.database')
  const prefix = databaseConfig.getOptionalString('prefix') || 'backstage_plugin_'

  const dbConnection =
    databaseConfig.getOptional<Knex.ConnectionConfig>(`plugin.${PLUGIN_ID}.connection`) ||
    databaseConfig.get<Knex.ConnectionConfig>('connection')

  const migrationsDir = resolvePackagePath(PLUGIN_PKG_NAME, 'migrations')

  return {
    client: databaseConfig.getString('client'),

    migrations: {
      directory: migrationsDir,
    },

    connection: {
      ...dbConnection,
      database: `${prefix}${PLUGIN_ID}`,
    },
  }
}

Not planned? Why? We need this.


TeX Input: array support for *{n}{...}

Is your feature request related to a problem? Please describe.
I just tried to use the *{n}{...} syntax to specify repetitive columns in the array environment, and it doesn't seem to work.
I don't know if something on my side is not working, but I would like to be able to use this feature.
Thanks!

The column syntax core MathJax v3 and below is pretty limited, but v4 (now in beta release) is more extensive and extendable.  I will make a PR to add this in version 4, but it is not currently available even in the beta release.

Okay superb! Thank you!

Okay superb! Thank you!

Mmmmmm

https://github.com/mathjax/MathJax/issues/3090#issuecomment-1689892795


docs: fix typo Boolan -> Boolean

Minor typo in docs while reading the package src.

Closing for a more favorable PR to batch fix typos.


knock2: Add install for Knock to Unlock

This is already added. https://github.com/caskroom/homebrew-cask/blob/master/Casks/knock.rb


QR code authorisation question

To start off, apologies for the number of issues generated by me during this short period of time.
Now on the topic, after almost all users could do things as per normal after #2488 was resolved, there's one user, that appears to be stuck in authorizationStateWaitOtherDeviceConfirmation, even when the QR code is already scanned using the official app, and the device is already appearing in the "active sessions" list of the official app.
It's definitely not on "incomplete login attempts" either since the screenshot that the user sent has the "accept on this device" section with the secret chats toggle, etc. At the same time however, the screenshot didn't have any IP address and location, but I think it can be reasonably assumed that was censored away rather than really not being there.
Advised to terminate session in app and rescan QR again, but that did not solve the problem.
User claims to have reinstalled the app many times too.
Unlikely to be a network issue I guess, since user already has a valid QR code, one that the official app does acknowledges.
I have no access to logs in this case, user is running client based on TDLib 1.8.12.
Any ideas on why thats the case? Did I missing something that I should implement? Or impossible to know due to lack of logs?

To start off, apologies for the number of issues generated by me during this short period of time.

Thank you for creation of the issues. You reported 2 bugs, which were fixed and are very unlikely to be reported by someone else, because they affected only watchOS and HTTP-only proxies.

Any ideas on why thats the case? Did I missing something that I should implement? Or impossible to know due to lack of logs?

Does the user has 2-factor authentication? Did the user enter the password on the device while logging in? Is the user from America and was registered more than 7 years ago?

Thank you for creation of the issues

glad you didn’t find me a nuisance 😁, and thanks for replying to this issue.

Does the user has 2-factor authentication? Did the user enter the password on the device while logging in?

I assume you mean the Two Step verification? I highly doubt that it’s because of this, but then it’s a question that I didn’t ask the user. I assumed that wasn’t the issue as the screenshot given to me suggests it isn’t in the "incomplete login attempts" column since the screenshot that the user sent has the "accept on this device" section with the secret chats toggle, etc. which based on personal observation, when trying out if I didn’t enter the password yet.
Anyways, the watch app does work with Two Step Verification’s password field.

user from America and was registered more than 7 years ago

Also unsure about this, though the email’s domain (which has a country code) suggests it’s not from US.


Fix perms and update systemd

The goss-servers.service file is installed with executable permissions which cause extraneous errors to print to console:

This also patches up some systemd handling:

StartLimitInterval is deprecated in favor of StartLimitIntervalSec
Includes systemd macros in the RPM spec for goss-servers to enable/replace/remove the service properly when the RPM is installed and/or updated

/backport release/1.4 release/1.3 release/1.2 release/1.0


[test-triage, kmac] EDN timeout, APP interface error

Hierarchy of regression failure
Block level
Failure Description
* `UVM_FATAL (kmac_scoreboard.sv:528) [scoreboard] Check failed (kmac_app_rsp.rsp_digest_share* == *) APP interface error, expect output to be all *s` has 1 failures:
    * Test kmac_edn_timeout_error has 1 failures.
        * 0.kmac_edn_timeout_error.1872300908\
          Line 116, in log /workspaces/repo/scratch/HEAD/kmac_masked-sim-vcs/0.kmac_edn_timeout_error/latest/run.log

                UVM_FATAL @  82328372 ps: (kmac_scoreboard.sv:528) [uvm_test_top.env.scoreboard] Check failed (kmac_app_rsp.rsp_digest_share0 == 0) APP interface error, expect output to be all 0s
                UVM_INFO @  82328372 ps: (uvm_report_catcher.svh:705) [UVM/REPORT/CATCHER]
                --- UVM Report catcher Summary ---

Steps to Reproduce

GitHub Revision: 884b0e8e0
dvsim invocation command to reproduce the failure, inclusive of build and run seeds:
./util/dvsim/dvsim.py hw/ip/kmac/dv/kmac_masked_sim_cfg.hjson -i kmac_edn_timeout_error --build-seed<PHONE_NUMBER> --fixed-seed<PHONE_NUMBER> --waves fsdb

Tests with similar or related failures

[ ] kmac_edn_timeout_error

Relevant for tracking https://github.com/lowRISC/opentitan/issues/17899.

From looking at
https://github.com/lowRISC/opentitan/blob/ae6e5adf94567db9a0233e96acbf8b7e869b096f/hw/ip/kmac/dv/env/kmac_scoreboard.sv#L558-L565
it seems that the scoreboard is expecting an app interface error since the entropy_ready bit has not been set.
Can you double check whether that is indeed the case?
Isn't the expectation that only idle_mode can be used without setting the entropy_ready bit?
In that case, we should probably investigate why the hardware does not return an interface error because of incorrect usage of the entropy_bit and entropy mode selection...

Hm, I wonder why the check is executed if entropy_ready is set to 1 in the scoreboard ...
Unfortunately I can't reproduce this locally right now - would a debug session be helpful?

Let me check the waves, I think I can fix it. Thanks @msfschaffner and @ballifatih

Great, thanks @cindychip!

Thanks for closing the issue @cindychip.


SingleOrDefault() with IncludeOptimized returns the first item for not single collection

Hi guys!
Is it expected that SingleOrDefault() method returns the first element for IQueryable object returned by IncludeOptimized WHEN collection contains more than one element? I didnt find anything about it on your site and was a little bit confused.
https://dotnetfiddle.net/qk5l1f
My expectation here is to see InvalidOperationException thrown.

Hello @magicmanam ,
Thank you for reporting.
We will see if there is something we can do about it.
Best Regards,
Jon

Hello @magicmanam ,
After investigating, due to how our library is made, we will not be able to support this combination. This is more complex as we don't control everything on our side, and a lot of logic is done on the EF side.
You can somewhat use a trick on your side, but I don't recommend it even if it's working:
var t = context.EntitySimples.IncludeOptimized(x => x.Child).Take(2).ToList().SingleOrDefault();

Best Regards,
Jon

Hello @JonathanMagnan! Thanks for the answer!
Maybe it makes sence to add a remark to IncludeOptimized method's annotation and/or mention about this behavior in the documentation?
Anyway, feel free to close this issue. Thanks!

Hello @magicmanam ,
Thank you for your suggestion. I added a text about this in the limitations section and referenced this issue.
Best Regards,
Jon


Missing images

On loading https://agagd.usgo.org, there are several 404s:
https://agagd.usgo.org/static/img/header-bg.png
https://agagd.usgo.org/static/img/arrow-active-down.png
https://agagd.usgo.org/static/img/arrow-inactive-up.png
https://agagd.usgo.org/favicon.ico
favicon is pretty 'normal' to be missing, but these others seem to be referenced by templates but not provided. Not sure whether there's any real impact; potentially those missing arrow images are making some buttons invisible, I suppose.

More information: during manage.py collectstatic on my local machine, I can see these files being copied. However, they end up in /tmp/static/django_tables2/themes/paleblue/img, but the code apparently just references /tmp/static.

There could be a potential impact with this as it seems to be a table sorting feature. I don't think those files were ever added to this repo. The initial css change: c451033a0a05a070e323485.
Arrows Locally

I have asked @vash3g about a favicon for the agagd, and he told me a favicon would need to be created for the agagd.

Since this is an AGA app we could use the AGA logo/favicon for the AGAGD. The icon is generally so small i dont think it would show up effectively unless you have an old old display.

Pulled images from legacy server, sent to bad PR and Michael made a good PR and added them to the test server. they look gooood.


Specify AWS Region

Hi,
Appart from specifying the credentials I want to specify the region name to my ~/.aws/credentials file. Because if you give a role to an ec2 instance and then you install aws-cli with your module just including it by puppet in a node you don't need any credentials, you only need the region to work and I can't find where to specify it.

Sorry for the issue it's based on the forge of puppetlabs last version. I've just: puppet module install jdowning-awscli and 1.2.0 doesn't have support for region.
When are you going to do the next release?
Sorry for the wrong report!

Sorry it took me so long to release here, but this is available in 1.3.0 now. Thanks for your patience!


Automation script for build process.

Overview
Adds metadata and a build script to package up the repo into NuGet and Unity packages.

@davidkline-ms Pushed updates for all but the dependency chain comment above. Updated the script to improve some error cases and to keep logs for all invocations of Unity along with dropping the 'Sharing' checks.

Although we REALLY need the automation tests in GitHub which will kick off this build automatically once tests are complete.

Agreed


Automatically import SDWebImage when user write import SDWebImageSwiftUI

This close #99

We already do this for CocoaPods && Carthage user, beucase we add this in SDWebImageSwiftUI.h: https://github.com/SDWebImage/SDWebImageSwiftUI/blob/master/SDWebImageSwiftUI/Module/SDWebImageSwiftUI.h
However, SwiftPM seems suck and can not contains both Swift && Objc code in same target. So I don't add SDWebImageSwiftUI.h into the compile unit.


Make URL mandatory for reference model

Raise error when URL is not provided for a reference
Signed-off-by: Tushar Goel<EMAIL_ADDRESS>

I am closing this in favor of another approach in #909 that @TG1999  and I worked out together with advices from @tdruez


TextField trimming whitespace on save

I am using a TextField in an Orderable model and putting that in a page using InlinePanel.
It appears that on save of that page, Wagtail is stripping whitespace of the TextField save which is not really what I want.
I am using Django 2.1.4 and Wagtail 2.4, on Python 3.5 (Ubuntu 16.04)
I doubt the issue has anything to do with it being an Orderable model, it would probably also happen if I had a TextField on a page.
Is there a way to disable the stripping of whitespace on save? It seems like a feature that is useful in most cases... but not always what you want.

FYI: This is a bug in Django, I have filed an issue:
https://code.djangoproject.com/ticket/30077
Django 1.9 introduced a strip=False option (which defaults to True) to CharField, but it also affects TextField, yet the TextField constructor does not have this option. This means you end up having to subclass TextField or something similar which isn't ideal, I have therefore filed an issue with Django.


Adding secret defaulting and always look up reg secret

Description of changes:
Modified the reg secret logic to always do a lookup on the cluster to ensure backward compatibility since helm keep was not existing in older clusters.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

/lgtm


AcceptHeader.select() throws NPE

AcceptHeader.select() throws NPE if given media type is not supported.
e.g..
new AcceptHeader("text/html").select("text/plain")

PR submitted with possible fix.

Your PR fixes it.


Hardware Acceleration

Hi Kagami,
I was able to use your plugin to with GPU acceleration by changing vo from opengl-cb to default and hwdec to various values. Full screen videos play much faster but are not rendered within the browser window.
My goal is a full screen accelerated render of videos alternating with HTML content, so it would be nice if I could get this to work as a plugin rather than find a way to control the window that mpv creates.
Is it the case that opengl-cb video output necessary for a ppapi plugin to render in the browser window?
I know this is outside the original purpose of your plugin, but do you have any advice in this area?
Thanks.

Hi, if I understand you correctly you want hardware-accelerated decoding and there is already issue for that: #5. I haven't looked into it much, but wm4 (core developer of mpv) mentioned that it might be not that easy and require some work.
Closing in favor of #5, please correct me if you want something different.

Not sure how I missed that. Thanks Kagami.


Serve wasm file with the application/wasm mime type

This doesn't seem to be the case at the moment when serving Pyodide from a local server started with yarn serve (which uses http-server):

Lame, there's been a PR open for two years to fix this. #62 is a stopgap solution: seems like a junk dev server is preferable to another couple hundred packages.

Fixed by https://github.com/jtpio/jupyterlite/pull/62


feat: Trusted Builder MVP

This issue tracks the progress and the work required to build the trusted builder MVP
### Design work
- [x] Write a design doc: https://www.notion.so/astria-org/Trusted-Block-Builder-MVP-8eba7cd7cbd34e4e90a4adf726879028?pvs=4

### Astria-Geth changes
- [x] Support returning the included transactions as per the new protobuf changes for ExecuteBlock
- [x] Support simulateOnly mode for ExecuteBlock where we only create a block but do not insert it to the chain
- [x] Support validating BuilderBundlePacket
- [ ] Support validating BuilderBundlePacket signatures
- [x] Support moving transactions deserialized from BuilderBundlePacket to the top of block

### Composer changes
- [x] Support calling GetCommitmentState
- [x] Support calling ExecuteBlock on the final bundle to be submitted to simulate it
- [x] Support creating the BuilderBundlePacket
- [] Support signing of BuilderBundlePacket
- [x] Support sending the BuilderBundlePacket as a sequence action to sequencer
- [ ] Compute the max bytes of seq actions we can send based on the BuilderBundlePacket fields
- [x] Update blackbox tests of composer to call the execution api.

### Conductor Changes
- [x] Modify conductor to ensure that it is compatible with the new ExecutionAPI protobuf changes
- [x] Fix the unit tests in conductor post the protobuf changes.

### Protobuf changes
- [x] Modify ExecuteBlock protobuf to return the included transactions
- [x] Modify ExecuteBlock protobuf to accept a simulateOnly flag which will allow us to only create a block but not add it to the chain
- [x] Create the BuilderBundlePacket protobufs
- [x] Ensure that the Execution API protobuf changes and BuilderBundlePacket protobuf changes are pushed to buf.build

### Testing
- [x] Test if Astria Geth and Conductor compatible with the Execution API changes by deploying them locally
- [x] Launch the changes in a local cluster and send txs with spamooor

┆Issue Number: ENG-671

This issue is stale because it has been open 45 days with no activity. Remove stale label or this issue
be closed in 7 days.

This issue was closed because it was stale


Add SHA256 hash to Program interface

Implements the first part of #291

Kinda, I haven't actually built the code with my modification yet. I wanted to gauge interest/start a conversation about whether you guys want this.
I'm currently out of office with spotty internet, though. I can still submit I guess.

It's definitely an improvement, but you're right to ask how valuable it is. In this context, the MD5 was more a quick check to identify the version of a file that was imported when creating the Program. While it would be nice to make this a more secure hash, security was not originally the reason for including it. The contents are recorded in the Program (though loaded rather than the original image), so a user could compare if they're worried about surreptitious changes.

Right, I did not add this to improve security. It's more useful in the following context: Reverser A does some work and exports thte Ghidra database to some machine. Reverser B takes it, but does not necessarily have the original binary and wants to look up the original sample in, say, Virustotal or another data source. Many malware sources are nowadays easier to search using SHA256 hashes.
This would also definitely avoid MD5 collisions :)

Sorry if I was rude. I must confess I got a little too excited, as yours was the first non-trivial contribution. I've put this in for internal review.

Sorry if I was rude. I must confess I got a little too excited, as yours was the first non-trivial contribution. I've put this in for internal review.

Haha, no worries. I'm super used to thorough code reviews :)


Fix golint import path

I am a bot. Please reach out to @azillion if you have any issues, or just close the PR.

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:golint-fixer/swarm.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.


Member names are converted to kebab-case

I'm passing through this data:
(
    [id] => 1
    [customer_name] => My Company
    [vat_registered] => 1
    [vat_number] => 12345678
    [vat_percentage] => 20
    [currency_symbol] => £
    [created] => Cake\I18n\FrozenTime Object
        (
            [date] => 2020-07-12 09:23:24.000000
            [timezone_type] => 3
            [timezone] => UTC
        )

    [modified] => Cake\I18n\FrozenTime Object
        (
            [date] => 2020-07-12 09:23:24.000000
            [timezone_type] => 3
            [timezone] => UTC
        )

    [[new]] =>
    [[accessible]] => Array
        (
            [customer_name] => 1
            [vat_registered] => 1
            [vat_number] => 1
            [vat_percentage] => 1
            [currency_symbol] => 1
            [created] => 1
            [modified] => 1
        )

    [[dirty]] => Array
        (
        )

    [[original]] => Array
        (
        )

    [[virtual]] => Array
        (
        )

    [[hasErrors]] =>
    [[errors]] => Array
        (
        )

    [[invalid]] => Array
        (
        )

    [[repository]] => Settings
)

This is passed like so: $encoder->encodeData($data);
The output converts the member names from snake-case to kebab-case.
{
  "data": {
    "type": "settings",
    "id": "1",
    "attributes": {
      "created": "2020-07-12T09:23:24+00:00",
      "modified": "2020-07-12T09:23:24+00:00",
      "customer-name": "My Company",
      "vat-registered": "1",
      "vat-number": "12345678",
      "vat-percentage": 20,
      "currency-symbol": "\u00a3"
    },
    "links": { "self": "/api/settings/1" }
  }
}

Note that e.g. vat_registered is converted to vat-registered.
This is problematic for a number of reasons:

Kebab-case is not useful in most modern JavaScript frameworks – i.e. cannot be used in element directives and will not compile.
The JSONAPI spec suggests that member names should be camelCase, not kebab-case: https://jsonapi.org/recommendations/

Please advise.

Actually this is not due to anything in this library. My bad.


Provide an option to opt-out from putting x-sveltekit-page: true header

Describe the problem
Please provide an option to opt-out from putting x-sveltekit-page: true header.
I'd like to keep my http response headers clean and minimal.
Describe the proposed solution
Options like noBranding: true will work.
Alternatives considered
Deleting x-sveltekit-page header in hooks.server.ts.
Importance
nice to have
Additional Information
No response

There are already several other x-sveltekit-* headers that SvelteKit uses as part of its core functionality - not to mention all of the other indications in the HTML itself that this is a SvelteKit app. Perhaps the x-sveltekit-page header could be removed entirely, because I don't see off the top of my head where it gets used, but there won't be an option to control this.
In general, if you want to mutate the incoming requests or outgoing responses, this is exactly what the handle hook is for. We don't want to provide a different API or option for each different possible mutation someone might want to do. You're free to try removing the x-sveltekit-page header yourself, but, as always when you're manipulating the internals of a library, it may well eventually lead to problems.

You should reopen this.
Exposing the internal constructs of a product is a possible information assurance vulnerability.


Release Hybridmc

Pulling the latest release into main branch

The main branhc is now hybridmc v2.0.1


Add Bui Ha Duong to Contributors list

@buihaduong, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I merged it?


run wallet tests towards the stack

Codecov Report

Merging #87 (30a36f5) into develop (2a0b20f) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop      #87   +/-   ##
========================================
  Coverage    82.26%   82.26%
========================================
  Files           49       49
  Lines         1900     1900
  Branches       303      303
========================================
  Hits          1563     1563
  Misses         337      337

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 2a0b20f...30a36f5. Read the comment docs.

@InoMurko - looks good to me.

not ready yet pls don’t merge

The overall system is very well done - including all the wallet tests and the GH and the local whitelister etc. Beautiful!

further, opened two issues for tracking-
a. verifying and rem if there's any unused/test contacts from deployments
https://github.com/omgnetwork/optimism/issues/113
b. heads up, the integration tests as of now are expecting a fresh contract state, so running them second time on existing contracts might fail. will add some unit tests for the wallet, though will need l2geth, will try mocking relayers
https://github.com/omgnetwork/optimism/issues/114