[Ssh Key File] ~ in filename will be replaced by _ in Chrome.

Now we added namespace as prefix to the jobname and joint with ~,  if we click private key the file will be downloaded but the ~  in file name will be replaced by _ automatically in Chrome. Which will cause the step 3 and 4 failed since the name changed.

@wangcan0329 can we provide a more efficient way to users by opening a console in webport and connect to the container? So users wouldn't need to download the key file and connect to the container manually.

I don't think we should rely on filename auto-generating feature of browser / local file system. Instead of rename the URI of the key file I prefer add a notice like "Make sure your downloaded file named some-key".
In the future, I propose providing a shell script includes current three commands and encourage user to use the commands like
$ bash <(curl http://rest-server/v1/api/user/foo/jobs/bar/containers/baz/connect.sh)

to connect the container, as well as giving the download link of key file as tech details.

@DongZhaoYu  Actually I had a simple test on web ssh tool but didn't get time to have a further investigation. I will consider to add this feature but I don't think this is high priority thing.

@Gerhut Agree. We can consider to combine these three commands into one script.

Chrome replace the tilde ~ with an underscore _ is by design to avoid potential filename issue on Windows . please refer to Character “~” will be automatically changed to “_” in filename during downloading by Chrome

Can we detect whether the page is rendered by Chrome or not? if yes, we can show a warning in the page.

we publish it as a known issue.

PAI does not print the url anymore.


Auto deploy to 'surge' on every pull request

This issue is about Auto Deployment feature.

[x] I searched or browsed the repo’s other issues to ensure this is not a duplicate.
[ ] This issue is for adding feature.
[x] I have gone through Contribution Guidelines.
[x] Assign this issue to me.

We need something that will comment the surge deployed link on the PR.
Right?

No, it will be like, as soon as Travis Build completes, our PR Template will contain a demo link as
ongaku-js-{PR-NUM}.surge.sh
and this will be active if the build is successful.

Check this https://github.com/aashutoshrathi/ongaku/pull/1

I'll do it tomorrow ASAP.

There are some major problems going on with links, the hylia apparently is porting their servers. This will need to wait.
Btw some good use of susper :wink:


Add !important to color property in disabled class

It is needed to add !important to color property in disabled class because of line 62, which has an !important, too.

Sorry Allan, I did not see this before. ;)

Not sure why that !important is there to be honest. However, this is a good workaround for now. Thanks!


Error: object ‘GDCquery_Maf’ is not exported by 'namespace:TCGAbiolinks'

Hi! Thanks for this package. I'm trying to install the package but I get the following error:
> devtools::install_github("ashishjain1988/MAFDash")
Downloading GitHub repo ashishjain1988/MAFDash@HEAD
Skipping 6 packages not available: BSgenome.Hsapiens.UCSC.hg38, IRanges, GenomicRanges, ComplexHeatmap, maftools, TCGAbiolinks
✔  checking for file ‘/private/var/folders/mr/rywc03vj2h3bjg39kpv0mbg80000gn/T/RtmpZAnApd/remotesa8f5425ebbb0/ashishjain1988-MAFDash-3f4a662/DESCRIPTION’ (1.4s)
─  preparing ‘MAFDash’:
✔  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘MAFDash_0.2.2.tar.gz’

* installing *source* package ‘MAFDash’ ...
** using staged installation
** R
** inst
** byte-compile and prepare package for lazy loading
Error: object ‘GDCquery_Maf’ is not exported by 'namespace:TCGAbiolinks'
Execution halted
ERROR: lazy loading failed for package ‘MAFDash’
* removing ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/MAFDash’
Warning message:
In i.p(...) :
  installation of package ‘/var/folders/mr/rywc03vj2h3bjg39kpv0mbg80000gn/T//RtmpZAnApd/filea8f5597441da/MAFDash_0.2.2.tar.gz’ had non-zero exit status

Session info:
> sessionInfo()
R version 4.2.1 (2022-06-23)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.0

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] maftools_2.12.0

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.9          BiocManager_1.30.19 urlchecker_1.0.1    compiler_4.2.1      RColorBrewer_1.1-3  later_1.3.0         remotes_2.4.2
 [8] profvis_0.3.7       prettyunits_1.1.1   tools_4.2.1         digest_0.6.30       pkgbuild_1.3.1      pkgload_1.3.0       memoise_2.0.1
[15] lifecycle_1.0.3     lattice_0.20-45     pkgconfig_2.0.3     rlang_1.0.6         Matrix_1.5-1        shiny_1.7.3         cli_3.4.1
[22] rstudioapi_0.14     curl_4.3.3          fastmap_1.1.0       withr_2.5.0         stringr_1.4.1       htmlwidgets_1.5.4   fs_1.5.2
[29] vctrs_0.5.0         devtools_2.4.5      rsthemes_0.4.0      hms_1.1.2           rprojroot_2.0.3     grid_4.2.1          glue_1.6.2
[36] data.table_1.14.4   R6_2.5.1            processx_3.7.0      DNAcopy_1.70.0      survival_3.4-0      sessioninfo_1.2.2   purrr_0.3.5
[43] callr_3.7.2         magrittr_2.0.3      usethis_2.1.6       promises_<IP_ADDRESS>    ps_1.7.1            ellipsis_0.3.2      htmltools_0.5.3
[50] splines_4.2.1       mime_0.12           xtable_1.8-4        httpuv_1.6.6        stringi_1.7.8       miniUI_<IP_ADDRESS>      cachem_1.0.6
[57] crayon_1.5.2

I think this is related to the GDCquery_Maf function that was removed from the latest versions of TCGAbiolinks.

I am facing the same issue. When will this issue be resolved?

@ymahmoud Sorry for the late reply. This error is coming due to the changes in the latest of the TCGABiolinks package. I will try to comment of the code that is using TCGAbiolinks.
@Rohit-Satyam

I commented out the code that were using TCGAbiolinks functions. Please try to install the package with the latest code. I will create a new issue to update the function to get TCGA datasets.


Improve strawberry.enum typing by using generics

Description

Using a TypeVar bound on EnumMeta instead of EnumMeta, which allows type-checkers (like pyright)
to detect the fields of the enum being decorated. For example, for the following enum:

@strawberry.enum
class IceCreamFlavour(Enum):
    VANILLA = "vanilla"
    STRAWBERRY = "strawberry"
    CHOCOLATE = "chocolate"

Prior to this change, pyright would complain if you tried to access
IceCreamFlavour.VANILLA, since the type information of IceCreamFlavour was being
erased by the EnumMeta typing  .

Overloading it so that type-checkers (like pyright) knows in what cases it returns a decorator
(when it's called with keyword arguments, e.g. @strawberry.enum(name="IceCreamFlavor")),
versus when it returns the original enum type (without keyword arguments.

Types of Changes

[ ] Core
[x] Bugfix
[ ] New feature
[ ] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR
NA
Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

I'm not sure whether tests are necessary for this change. Please do tell me if they are -- I'm not sure how/where to put them, if so.

Thanks for adding the RELEASE.md file!

Here's a preview of the changelog:

Improve typing of @strawberry.enum() by:

Using a TypeVar bound on EnumMeta instead of EnumMeta, which allows the type-checker
to detect the fields of the enum being decorated. For example, for the following enum:

@strawberry.enum
class IceCreamFlavour(Enum):
    VANILLA = "vanilla"
    STRAWBERRY = "strawberry"
    CHOCOLATE = "chocolate"

Prior to this change, the type checker would complain if you tried to access
IceCreamFlavour.VANILLA, since the type information of IceCreamFlavour was being
erased by the EnumMeta typing.

Overloading it so that the type-checker knows in what cases it returns a decorator
(when it's called with keyword arguments, e.g. @strawberry.enum(name="IceCreamFlavor")),
versus when it returns the original enum type (without keyword arguments.

Here's the preview release card for twitter:

Here's the tweet text:
🆕 Release (next) is out! Thanks to Tim Joseph Dumol for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

Nice! If you want to add tests, we have some mypy tests under tests/mypy: https://github.com/strawberry-graphql/strawberry/blob/main/tests/mypy/test_enum.yml

Added a pair of tests for it! It was hard to find a failing test, since mypy (unlike pyright, which is why I noticed this issue in VSCode) seems to have some special-inference for decorators.

@TimDumol this looks awesome! I'm going to add a test for Pyright too if you don't mind 😊

Thanks for contributing to Strawberry! 🎉 You've been invited to join
the Strawberry GraphQL organisation 😊
You can also request a free sticker by filling this form: https://forms.gle/dmnfQUPoY5gZbVT67
And don't forget to join our discord server: https://strawberry.rocks/discord 🔥


Slow download speed

I tested it under the same conditions and OF-Scraper gives 2-3MB/s while the original onlyfans-scraper gives 10-15MB/s
I'm talking about each file
Downloading with the original onlyfans-scraper is much faster
How can this be fixed?
Thanks

Please mention what version you are on

2.1

Are you outputting to discord by chance

Yes, I run the script with the command ofscraper -dc STATS

I tried without -dc STATS and nothing changed

I have a branch with aiohttp instead of httpx for request.
It would be better to do some sort of average of the speeds.
So I'm planning on recording the difference in completion time between different changes

Do you know where it fails
it weird that this only happens with purchased content
As all content goes through the same downloader in the end, after scraping

I just chose to download only purchased content and it did not download anything then I immediately switched to version 2.1 and it downloaded everything fine

I checked the speed on 2.4 and it still does not go higher than 4.5 MB/s

I haven't changed the downloader
In going to add that in a patch after more testing.

Okay, thanks :)

I switched the engine


Make it work with 2.13.1 and with sbt 1.xb

A bunch of stuff regarding <2.12 was just plain not working, at this point you already have those published anyway, and I doubt anyone will care about an upgrade of those, so I just collapsed everything into publishing only 2.12 and 2.13 branches.

Thanks for the PR< @rleibman. I still use 2.11 so I need to continue supporting that. I've reworked your changes a bit in #11. If you'd like to submit a separate PR for the .gitignore changes, it might be nice to clean that up.


Add str_mapping

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (f522d67) 100.00% compared to head (4bc3d59) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #330   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          322       322
  Lines        10095     10100    +5
  Branches       971       972    +1
=========================================
+ Hits         10095     10100    +5

Impacted Files
Coverage Δ

src/gravitorch/utils/format.py
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Starting a transaction while another one is in progress locks up the client

The following code never terminates (and all future queries hang):
await Promise.all([
  transaction(async (tx) => {
    console.log("txn 1:", await tx.sql`select * from groceries`);
    await sleep(100); // just to be sure the txns overlap
  }),
  transaction(async (tx) => {
    console.log("txn 2:", await tx.sql`select * from groceries`);
  }),
]);

full gist
My reading is that:

The first transaction that gets to the worker works as expected: it's a new transaction when no transaction is active, so partOfTransaction === true, and it does a single lock / unlock of transactionMutex (starting here)
The second transaction is noted as being !partOfTransaction, since there's an separate active transaction (Processor#transactionKey != null && Processor#transactionKey != message.transaction). It hits the outer transactionMutex.lock() and waits for the first txn to finish.
Once the first txn finishes + releases the lock, second transaction continues, but still has transactionMutex locked – then it hits the inner transactionMutex.lock(), and deadlocks.

My use case is that I'm inserting rows in transactions as objects come in over the network. It's understandable if your suggestion is just for me to use a queue, but I'd think that this should just work (or at least error).

Thanks for the report! Yeah, that's definitely a bug. I'll look into it more later today. In the meantime, if you wanted to open a PR that adds your example as a failing unit test, that would be good.

Thanks for looking – opened #46 with the failing test.

I appreciate it. I just published version 0.11.3 with the fix for this.


Custom font is not working properly:

With custom font its working for few font sizes .
Eg - if i use Proxima nova regular then it work with font size less then 15 pixel (for 2 line label) after that tappable area is not working.

Having same issue

I am having the same issue here also. Has anyone found a workable solution?

Same issue

Hello,
You can replace
let attributes = [NSForegroundColorAttributeName: UIColor.black,NSFontAttributeName: UIFont.boldSystemFont(ofSize: 12.0)]
this is working fine in my project as I have replaced above code


Allow to set a custom prefix?

Sometimes it would be useful to have single page applications that don't require a server configuration and that can run from any possible location. For this use, as far as I know, it would be necessary to use a hash prefix like "page.html#!/site". I used it sucessfully with mithril ( https://mithril.js.org/route.html#routing-strategies ).
In my opinion, this would also make sense in the preact router. Do you agree?

Sorry for the late response, but you can use history to create a hash router like you'd want. We outline how in our ReadMe: https://github.com/preactjs/preact-router#custom-history

Thanks. For some reason I didn't find it.


Possibility for plugins to set a verbose name in the permission matrix

A plugin that adds new permissions is shown in the matrix with a technical name. It should be possible to use a human readable verbose name. Example https://github.com/OpenSlides/openslides-votecollector.

A simple solution (but not the best) would be to make an entry for each existing plugin in the users/site.js. Like for the app users: entry for users
A smarter solution is to iterate through all registered plugins. So where do the plugins register? I quickly recognized the MainMenu-Provider. Is this the right place?

@normanjaeckel Ping

We have a new plugin provider now so we can use this. See somewhere in core/base.js I think.


LIVE-2632 - Bugfix: WalletConnect error on disconnect

📝 Description
Unfortunaltey I didn't find a good way to reproduce the bug yet. BUT, the explanation is:

On unknown events, WalletConnect connexion is not closed correctly, therefore we never remove the walletconnect entry from the localStorage
It results with the user never being able to use WalletConnect anymore
Removing the entry allows for WalletConnect to work again

This PR adds a catch on the WalletConnect.killSession that can sometimes return this error:

It probably is the culprit for never really removing the localStorage entry.
Result is:
If you can kill the session properly, then do it (common case)
If you can't kill it, either because of the unkown event, or because you've touched by the bug before and your entry cannot be removed, then just force remove the entry.
That means that a user stuck with the bug, will see the modal opening, still be stuck in the infinite loading, but as soon as he closes the modal, he should be unstuck.
❓ Context

Impacted projects: live-common ledger-live-desktop
Linked resource(s): https://ledgerhq.atlassian.net/browse/LIVE-2632

✅ Checklist

[ ] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo
Proof of the bug existing and the solution being to remove the localStorage entry:
https://user-images.githubusercontent.com/44363395/173340034-bc77fec6-6b78-45fc-9863-7ab17d9ef300.mov
🚀 Expectations to reach
Please make sure you follow these Important Steps.
Pull Requests must pass the CI and be internally validated in order to be merged.

Qa approved on Ledger Live 2.43.0-next.5


Nightly builds started failing for the last week

What happened:
Dear authors (@rmshkv and @ kristenkrumhardt ), the nightly builds of this cookbook have been failing for the last week likely due to a recently-broken URL.
Could you please have a look at it?
Minimal Complete Verifiable Example:
Latest nightly build as of the creation of this issue.
Anything else we need to know?:
If you think it is due to Pythia infrastructure or something else other than the cookbook itself, please let us know.

Thanks for the heads up, @erogluorhan! I'll take a look and get it fixed this week.

Thanks very much!

I am closing this since apparently it was a one-time failure.


Updates for "Building a new adapter"

See also: https://github.com/fishtown-analytics/dbt/issues/3002
Description & motivation
There are more folks than ever building and maintaining dbt adapters. That's really cool! There are things we could do to make the process more clear, and ways we could keep this information more readily up to date.
Ideally, more of the specific bootstrapping code, important classes, architectural overview, and implementation hints would move into one of:

create_adapter_plugins.py
READMEs/wikis that live in the main dbt repo

It's just too easy for highly specific things to get out of date if they require updates here, too. That said, I think docs.getdbt.com is the right place for folks who:

Are thinking about writing a new adapter plugin
Are hoping to use a new adapter plugin

Pre-release docs
Is this change related to an unreleased version of dbt?

[ ] Yes: please

update the base branch to next
add Changelog components: <Changelog>[New/Changed] in v0.x.0</Changelog>
add links to the "New and changed documentation" section of the latest Migration Guide

[x] No: please ensure the base branch is current
[ ] Unsure: we'll let you know!

Ideally, more of the specific bootstrapping code, important classes, architectural overview, and implementation hints would move into one of:

create_adapter_plugins.py
READMEs/wikis that live in the main dbt repo

Interesting 🤔 . There's another discussion item at the moment about writing docs for package builders — personally I haven't figured out where I would want such docs to live long-term (the first hurdle is writing them though).
No action here, just wanted to bring two separate conversations into one line of thinking :)

Ideally, more of the specific bootstrapping code, important classes, architectural overview, and implementation hints would move into one of:

create_adapter_plugins.py
READMEs/wikis that live in the main dbt repo

Interesting 🤔 . There's another discussion item at the moment about writing docs for package builders — personally I haven't figured out where I would want such docs to live long-term (the first hurdle is writing them though).
No action here, just wanted to bring two separate conversations into one line of thinking :)

There's another discussion item at the moment about writing docs for package builders — personally I haven't figured out where I would want such docs to live long-term (the first hurdle is writing them though).

Agree that these are related conversations! There's specific overlap—e.g. authors of both packages + plugins may want some familiarity with adapter.dispatch—but also more broadly the question is, How can we write for different audiences?
Right now, it feels like docs.getdbt.com does a decent job of organizing content for:

Brand-new dbt users
Intermediate dbt users
dbt Cloud users

By contrast, discourse.getdbt.com has content for:

Advanced dbt users
Ecosystem integrations / non-dbt Cloud deployments of dbt

There's some good long-form content on discourse intended for package authors/contributors.
Other places:

Plugin authors are likely to look at dbt source code. We've talked about adding more resources here—not just code annotations, but also updating Wiki pages, which are really out of date.
Package authors are likely to spend time on hub.getdbt.com. Should we add a contributing guide there?

There's another discussion item at the moment about writing docs for package builders — personally I haven't figured out where I would want such docs to live long-term (the first hurdle is writing them though).

Agree that these are related conversations! There's specific overlap—e.g. authors of both packages + plugins may want some familiarity with adapter.dispatch—but also more broadly the question is, How can we write for different audiences?
Right now, it feels like docs.getdbt.com does a decent job of organizing content for:

Brand-new dbt users
Intermediate dbt users
dbt Cloud users

By contrast, discourse.getdbt.com has content for:

Advanced dbt users
Ecosystem integrations / non-dbt Cloud deployments of dbt

There's some good long-form content on discourse intended for package authors/contributors.
Other places:

Plugin authors are likely to look at dbt source code. We've talked about adding more resources here—not just code annotations, but also updating Wiki pages, which are really out of date.
Package authors are likely to spend time on hub.getdbt.com. Should we add a contributing guide there?

Let's definitely continue that ^ conversation. I marked this PR ready to review in the meantime, with the narrower aim of updating some info that's incorrect on the live docs site.

Let's definitely continue that ^ conversation. I marked this PR ready to review in the meantime, with the narrower aim of updating some info that's incorrect on the live docs site.


Plans to use a GitHub App Key rather than PAT?

A fine-grained GitHub App key would seem much better suited to this action than a PAT which would need renewing regularly. Are there any plans for this or am I missing something?

I belive this action and most of the calls should work out of the box with the ghs_ token that you get from a GitHub app. You could use actions like this to generate it: https://github.com/navikt/github-app-token-generator and then just input that as the PAT value.
But this needs testing and verification of course.
Could also be built in as well pretty easily to the auth part as well.

Thanks - that extra action sounds useful so I might try that initially. Having implemented an application to get GitHub App tokens, I agree it would be a simple addition to the auth part. Perhaps that could go on the roadmap?

Another benefit of this is that the API Rate Limit is also increased from 5,000 to 15,000 for Enterprise Customers.

@edwardsph this was solved with #79 (merged)


WNS does not work for Cordova 6

Hey,
we updated our project to cordova-cli 6. On windows platform we get trouble sending push notifications over wns to devices identified by windows specific token url (e.g. https://db5.notify.windows.com/?token=AwYAAACfJThQkTKw6URcAYXwRhPwoibHvUyi%2FULsWOKbx0ZQYFjmfQ1exLxbJ6wyM9u9SatwkiqLd0yKdUhpde2PibZzokljka%2BoMwHXG5LWZg9BsZyWQKskHdoGgJAU6fQ3wfM%3D, (expired token url as example)). Our cloud messaging server responds every time with a "403 Forbidden", using a valid OAuth token, which matches to client sid and client secret for our windows app for 100 percent. The reason is X-WNS-ERROR-DESCRIPTION: Channel URL incompatible with caller app. When we downgrade back to cordova-cli 5.4.1 by changing taco and deleting platforms directory all works as expected. This issue is happening in master branch v 1.5.3 and branch 1.6.x (we fork it to become an easy binding for our project) either.
We hope this helps find the issue
Best regards

It seems like you are trying to use a channel URI obtained with one SID/Key to send a notification authenticated with a different SID/Key. Could you verify that it isn't the case?

This is not the case. We check the sid and client secret both is correct. We have identified the error now. With update on cordova 6 our build process is not able to create a valid appxmanifest because config.xml does not process vs: tags anymore were we set publisher id and identity of the app. We need to use

Then it might work again. I will tell you here when it works. Thank you for your help

Great. I couldn't see your comment completely as you might have used '<' without the quotes. Let us know if you run into anything.

Closing for inactivity

@HuebnerITC Please post your solution again, i'm facing the same issue...

Is there a solution on this?  I'm getting what I think is the same result:
"Forbidden | BN3SCH030010634 | Channel URL incompatible with caller app | 67A3E4B143455A33 | dropped"
I have verified that my SID and secret are correct in the Microsoft portal.
The SID in the portal and what's returned in the push.on('registration') match, I cut and paste from the web page.
From what I can see, the issue is that the appid is not making it's way into the windows app itself.  But I'm not sure where.
Any help would be greatly appreciated.  To keep things simple on the  push side, I'm using this code:
https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868252.aspx
The documentation for the 403 says:
The access token provided in the request does not match the credentials of the app that requested the channel URI. Ensure that your package name in your app's manifest matches the cloud service credentials given to your app in the Dashboard.
I'm using the visual studio taco tools, my app was accepted by the windows store.  So, I'm a bit confused.

Hello guys,
i am so sorry i never complete my previous post with the fix. I never looked at it again. But today I received an email from this topic. So I searched our subversion and maybe provide a solution:
With the update to cordova 6 we change our config.xml from this structure
`

vs:platformSpecificValues
<vs:platformSpecificWidget platformName="windows" id="{{windowsStoreId}}" version="{{windowsStoreVersion}}">
vs:name{{windowsStoreName}}</vs:name>
vs:authorxxxxxxxxxxxxxxxxxxxxxxx</vs:author>
vs:publisherIdCN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</vs:publisherId>
vs:certFileCordovaApp.pfx</vs:certFile>
vs:packageOutputPath.\bin\Windows</vs:packageOutputPath>
vs:BackgroundColor#0154A0</vs:BackgroundColor>
</vs:platformSpecificWidget>
</vs:platformSpecificValues>`
to this:
<!-- Publisher ID and certificate path can now be found in build.json-->   <preference name="WindowsStoreIdentityName" value="{{windowsStoreId}}" />   <preference name="WindowsStorePublisherName" value="xxxxxxxxxxxxxxxxxxxxxxx" />
I hope this helps you.
Merry Christmas

Hi and thank you very much.  As it turns out this was not my problem.
The issue seems to be that I needed to re-associate my app with the store.
That rebuilt the certificate file and I'm now able to push.
I am running the following versions:
cordova -v
6.4.0
Installed platforms:
windows 4.4.3
phonegap-plugin-push 1.9.2 "PushPlugin"
Thank you for your response!


Document how to add custom extensions

Do you want to request a feature or report a bug?
Documendation update / Missing documendation
What is the current/expected behavior?
Vim-Prettier runs fine on files it can understand (css, scss, php with the plugin).
What I am missing is how to map it to other file extensions.
For example:
Drupal uses .module and .theme extensions, which are PHP files. I would love to have Vim-Prettier work on them.
Document that this is possible with the following config:
autocmd FileType module let b:prettier_ft_default_args = {
  \ 'parser': 'php',
  \ }

What version of vim-prettier are you using - (output of :PrettierVersion) ?
0.2.0
What version of prettier are you using - (output of  :PrettierCliVersion) ?
1.15.3
What is your prettier executable path - (output of  :PrettierCliPath) ?
prettier
Did this work in previous versions of vim-prettier and/or prettier ?
Irrelevant

On release/1.x this should work just by ensuring the plugin is installed

Plugins are enable by default, closing this issue for now.


Add hook for measuring components

Motivation
One may need to know the exact size of a DOM node, to know whether it's big or small enough.
Details
How can I measure a DOM node? – React Hooks FAQ:
function MeasureExample() {
  const [rect, ref] = useClientRect();
  return (
    <>

Hello, world

      {rect !== null &&

The above header is {Math.round(rect.height)}px tall

      }
    </>
  );
}

function useClientRect() {
  const [rect, setRect] = useState(null);
  const ref = useCallback(node => {
    if (node !== null) {
      setRect(node.getBoundingClientRect());
    }
  }, []);
  return [rect, ref];
}

Seems like you'd need to be able to refresh the measurement, maybe on a scroll event or after some animation etc. What do you think about the following refactor?
Simple usage
const [rect, ref, refresh] = useNodeRect()

Implementation
function useNodeRect() {
  const [rect, setRect] = useState(null)
  const savedRef = useRef()

  const ref = useCallback(node => {
    if (node.getBoundingClientRect) {
      setRect(node.getBoundingClientRect())
      savedRef.current = node
    } else if (savedRef.current) {
      setRect(savedRef.current.getBoundingClientRect())
    }
  }, [])
  const refresh = ref

  return [rect, ref, refresh]
}

Personally, I'm thinking about using the ResizeObserver API, but it comes with the cost of polyfilling as of today:
import { useCallback, useMemo, useState, useEffect } from 'react';
import ResizeObserver from 'resize-observer-polyfill';

export default function useSize() {
  const [size, setSize] = useState<Readonly<[number, number]>>([0, 0]);
  const ro = useMemo(
    () =>
      new ResizeObserver(([entry]) => {
        setSize([entry.contentRect.width, entry.contentRect.height]);
      }),
    [],
  );

  const ref = useCallback(
    node => {
      if (node) {
        ro.observe(node);
      }
    },
    [ro],
  );

  useEffect(() => {
    return () => {
      ro.disconnect();
    };
  }, [ro]);

  return [size, ref];
}

Also, I'm not entirely sure about the ro.disconnect() part.

Looks like that's what react-use has as well.

Here is an improved snippet of code, which makes sure not to observe the same target multiple times:
import { useCallback, useMemo, useState } from 'react';
import ResizeObserver from 'resize-observer-polyfill';

export default function useSize(): [
  Readonly<[number, number]>,
  (element: HTMLElement) => void,
] {
  const [size, setSize] = useState<Readonly<[number, number]>>([0, 0]);

  const ro = useMemo(
    () =>
      new ResizeObserver(([entry]) => {
        setSize([entry.contentRect.width, entry.contentRect.height]);
      }),
    [],
  );

  const ref = useCallback(
    (element: HTMLElement) => {
      // Avoid observing the same target multiple times
      ro.disconnect();

      if (element) {
        ro.observe(element);
      }
    },
    [ro],
  );

  return [size, ref];
}

This has been resolved by bb74f0bbd6404e7d654f62f2b887403ccaf16afa.


add a docs footer and style it

Description
this is adding a new footer to docs pages
no changes to the marketing footer
ux designs in figma
we should not merge this until the docs nav changes land
fixes https://github.com/pulumi/docs/issues/8970
@anita-trimbur a few questions for you in figma; also i changed the border width from 3px to 2px cause it looked way too thick, but i can change it back if ya don't like it, let me know
it seems registry uses the marketing template not the docs template? or maybe its own template; so ill do that in a registry specific pr after this lands, if that's okay. let me know if you want them to ship together.
Checklist:

[x] I have reviewed the style guide.
[x] If blogging, I have reviewed the blogging guide.
[ ] I have manually confirmed that all new links work.
[x] I added aliases (i.e., redirects) for all filename changes.
[x] If making css changes, I rebuilt the bundle.

from figma

[ ] increase spacing between footer links (was previously 20) - is 24px enough of an increase? if not we can try 32px
[ ] hover styles will be the same as standard links (roomier underline in gray600)
[ ] code styles added to figma frame
[ ] 16px spacing between paragraphs
[ ] top and bottom margin 16px
[ ] should we consider orange link text inside the warning notes? if we were to do that, we would need to use orange900 to meet contrast minimums

@anita-trimbur some of ur checklist items in here seem unrelated to the footer? unless im missing something

noticed that the spacing seems to be off at smaller sizes. seems like the container for the links should have more width than it does and that something is happening with the text alignment as well.

@anita-trimbur this is fixed now

thanks, that was fast!! i'll approve now, but the final link is aligning weird at my smallest possible window size:


[Release 0.7.0+rc]

An automated PR for next release.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.8%) to 88.02%

Totals

Change from base Build<PHONE_NUMBER>:
-0.8%

Covered Lines:
2307

Relevant Lines:
2621

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 88.853%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2750

Relevant Lines:
3095

💛  - Coveralls


Disallow encryption of watchonly wallets

Watchonly wallets do not have any private keys to encrypt. It does not make sense to encrypt such wallets, so disable the option to encrypt them.
This avoids an assertion that can be hit when encrypting watchonly descriptor wallets.
As our current behavior allows for encrypting watchonly wallets (no crash with legacy, crash, but still encrypted with descriptors), the new NoKeys status is only returned for unencrypted watchonly wallets. This allows any watchonly wallets that were previously encrypted to show the correct encryption status (they have encryption keys, and so should be indicated as being encrypted).

I couldn't reproduce the crash mentioned on IRC. On my machine (Ubuntu 21.10 VM) nothing happened after encrypting a wallet with private keys disabled.

The crash is for descriptor wallet specifically. Legacy wallets will "encrypt" successfully.

However, this change does not prevent the user from creating a blank wallet (without disabling the private keys) and encrypting an empty wallet.

Yes, blank wallets are not watchonly because they can have private keys imported.

concept ACK
On Fri, Jul 15, 2022 at 5:45 PM Andrew Chow @.***>
wrote:

Watchonly wallets do not have any private keys to encrypt. It does not
make sense to encrypt such wallets, so disable the option to encrypt them.
This avoids an assertion that can be hit when encrypting watchonly
descriptor wallets.
As our current behavior allows for encrypting watchonly wallets (no crash
with legacy, crash, but still encrypted with descriptors), the new NoKeys
status is only returned for unencrypted watchonly wallets. This allows any
watchonly wallets that were previously encrypted to show the correct
encryption status (they have encryption keys, and so should be indicated as
being encrypted).
You can view, comment on, or merge this pull request online at:
https://github.com/bitcoin-core/gui/pull/631
Commit Summary

4c49541
https://github.com/bitcoin-core/gui/pull/631/commits/4c495413e138ec1dd6874e41b44e689f0c15e0e3
Disallow encryption of watchonly wallets

File Changes
(3 files https://github.com/bitcoin-core/gui/pull/631/files)

M src/qt/bitcoingui.cpp
https://github.com/bitcoin-core/gui/pull/631/files#diff-2ecf8cbf369cf3d2f3d2b1cf5cfe4c1a647d63e11e2885d2fd0ac11fb5f7a804
(6)
M src/qt/walletmodel.cpp
https://github.com/bitcoin-core/gui/pull/631/files#diff-3c5f55f5118243d479461d5445315d9d27772fde1f1d86d828f26d113d1ba8ac
(5)
M src/qt/walletmodel.h
https://github.com/bitcoin-core/gui/pull/631/files#diff-22574d424404ec3586264be2b71b9fa33c6e5a039f1209fb7693aaa2ae25f1db
(1)

Patch Links:

https://github.com/bitcoin-core/gui/pull/631.patch
https://github.com/bitcoin-core/gui/pull/631.diff

—
Reply to this email directly, view it on GitHub
https://github.com/bitcoin-core/gui/pull/631, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMRS4W42QLK6KZCP3LLO2A3VUGBR3ANCNFSM53V7YK3A
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Concept ACK

Note: This could be rebased as far back as the v0.5.0 tag (or at the latest for 0.21 compatibility, 831675c8dccfa6525ffe751da3cc60709c380953) to cleanly merge to older branches.

The issue reported on IRC:

12:01 <stevenroose> bitcoin-qt: wallet/scriptpubkeyman.cpp:1850: bool DescriptorScriptPubKeyMan::AddDescriptorKeyWithDB(WalletBatch&, const CKey&, const CPubKey&): Assertion `!m_storage.IsWalletFlagSet(WALLET_FLAG_DISABLE_PRIVATE_KEYS)' failed
12:01 <stevenroose> qt crashes when trying to encrypt a watchonly wallet
12:02 <stevenroose> it prompts for the passphrase and then hangs about 5 seconds and crashes

Could you provide steps to reproduce the issue reliably?

Create a new descriptor wallet with only private keys diasbled. It must not be marked as a blank wallet. This requires using the RPC to create the wallet as the GUI will always set the blank wallet flag. Then encrypt that wallet using the GUI and it will crash.

Backported to the 23.x branch in https://github.com/bitcoin/bitcoin/pull/25828.

Backported to the 22.x branch in https://github.com/bitcoin/bitcoin/pull/26521.


[WIP] Initial implementation of maps

This is a (very) rough start on a map interface that I started working on for providing group actions in #25. My vision for our maps is to provide some level of type checking at compile time, a more familiar mathematical interface for working with maps, various types of derivatives, and pushforwards/pullbacks. It will lay the groundwork for pullback metrics and and charts, though this PR will probably only introduce basic maps. The maps should have very little overhead (most of the existing maps essentially compile out). I'd appreciate feedback on the overall design.

Good start, maps would be good to have. I wonder what is the overhead of these abstractions though, it might be worth adding to the benchmark suite.

I just pushed some benchmarks for Logarithm and Exponential that I need help understanding. Namely, in the benchmark suite, these maps can be much less efficient than the corresponding log and exp functions. Even if the map has already been created, where as a callable, they are just wrappers of the log and exp functions, there is a loss in efficiency. Example:

ID
time
GC time
memory
allocations

["manifolds", "Euclidean{2} -- MVector", "Exp"]
46.000 ns (5%)

64 bytes (1%)
3

["manifolds", "Euclidean{2} -- MVector", "instantiated_Exp"]
48.000 ns (5%)

64 bytes (1%)
3

["manifolds", "Euclidean{2} -- MVector", "exp"]
19.293 ns (5%)

64 bytes (1%)
3

["manifolds", "Euclidean{2} -- MVector", "Log"]
46.000 ns (5%)

80 bytes (1%)
3

["manifolds", "Euclidean{2} -- MVector", "instantiated_Log"]
47.000 ns (5%)

80 bytes (1%)
3

["manifolds", "Euclidean{2} -- MVector", "log"]
19.960 ns (5%)

80 bytes (1%)
3

So there's a loss in efficiency, but it's in the calling of the map, not in the constructor. However, this is not what I see when I benchmark them manually. Here's an example:
julia> M = Euclidean(2)
Euclidean{Tuple{2}}()

julia> x = @MVector randn(2)
2-element MArray{Tuple{2},Float64,1,2}:
 1.3373546726197771
 0.6934958258194306

julia> v = @MVector randn(2)
2-element MArray{Tuple{2},Float64,1,2}:
 -1.7392391474145479
 -1.2145367177871123

julia> @benchmark exp(M, x, v)
BenchmarkTools.Trial:
  memory estimate:  64 bytes
  allocs estimate:  3
  --------------
  minimum time:     35.903 ns (0.00% GC)
  median time:      38.393 ns (0.00% GC)
  mean time:        45.497 ns (9.16% GC)
  maximum time:     1.820 μs (97.45% GC)
  --------------
  samples:          10000
  evals/sample:     992

julia> @benchmark Manifolds.Exponential(M, x)(v)
BenchmarkTools.Trial:
  memory estimate:  80 bytes
  allocs estimate:  4
  --------------
  minimum time:     96.331 ns (0.00% GC)
  median time:      105.408 ns (0.00% GC)
  mean time:        123.362 ns (5.94% GC)
  maximum time:     4.239 μs (96.11% GC)
  --------------
  samples:          10000
  evals/sample:     944

julia> exp_map = Manifolds.Exponential(M, x)
Expₓ: 𝑇ₓ𝑀 ⟶ 𝑀,  𝑥 ∈ 𝑀
𝑀 = Euclidean{Tuple{2}}()
𝑥 = 2-element MArray{Tuple{2},Float64,1,2}:
 1.3373546726197771
 0.6934958258194306

julia> @benchmark exp_map(v)
BenchmarkTools.Trial:
  memory estimate:  64 bytes
  allocs estimate:  3
  --------------
  minimum time:     34.223 ns (0.00% GC)
  median time:      40.582 ns (0.00% GC)
  mean time:        57.338 ns (12.43% GC)
  maximum time:     5.017 μs (97.53% GC)
  --------------
  samples:          10000
  evals/sample:     993

julia> wrapped_Exp(M, x, v) = Manifolds.Exponential(M, x)(v)
wrapped_Exp (generic function with 1 method)

julia> @benchmark wrapped_Exp(M, x, v)
BenchmarkTools.Trial:
  memory estimate:  64 bytes
  allocs estimate:  3
  --------------
  minimum time:     34.430 ns (0.00% GC)
  median time:      38.553 ns (0.00% GC)
  mean time:        48.548 ns (10.28% GC)
  maximum time:     3.636 μs (97.90% GC)
  --------------
  samples:          10000
  evals/sample:     993

There's a pretty consistent pattern with these maps that when benchmarked in the REPL with creation of the map, there's a loss in efficiency, but if the map is pre-constructed or if the construction of the map and its calling take place in a function, then the result is as efficient as exp itself. Does anyone have any ideas why the benchmark suite and this don't agree?

For me, results of benchmarks and from REPL more or less match. Did you delete your tune.json file before running with a new benchmark suite? I've noticed that it's good to remove that file every time the benchmark suite changes.

Oh, no I hadn't deleted tune.json. Once I did, the suite agrees that Exponential and Logarithm have no overhead. Thanks @mateuszbaran! I'll add some tests for other types of maps.
I'm considering replacing Injection/Bijection and Surjection with LeftInvertibleMap and RightInvertibleMap, respectively, since that's more in-line with what they'll be used for (pullbacks mostly), and the terms "injection" and "surjection" technically preclude the map being a partial map (where not every element of the domain maps to the codomain). Unless we have a good interface for submanifolds/subsets, this could become cumbersome. But the inverse of an injection is a partial bijection, so if we don't distinguish between partial and total maps, then Injection/Bijection could be merged into a single LeftInvertibleMap.

It's good that the problem with benchmarks is fixed 😃 .
Correct me if I'm wrong but if we are allowing partial maps, then every function has a (potentially partial) right inverse? So left-invertible maps should be a both-side-invertible perhaps?

I decided to substantially simplify the interface. The specialized types Bijections, Injections, and such, were misleading, since nothing forces the map to actually have those properties, and any map can be partial. The purpose of those specialized types was to define various types of inverses and validate map properties while in use. However, I think it's better when providing a feature that uses maps to document what properties the map should have and leave it to the user to be sure their map does have those properties. In many cases, even a map that violates some of the assumptions might still do provide something useful.
Inverses are handled by inv and pinv. inv returns a true inverse and in general should not be defined, while pinv loosely returns a left or right inverse. I probably won't split that out into linv and rinv until it becomes useful (e.g. while implementing pushforwards/pullbacks, which aren't part of this PR).
Some of the interface will improve when #31 gets merged, in particular we'll get better support for tangent bundles and such, with the motivating example being Exp and Log.
What do you think about the shows used here? Maps can have really hideous type names, especially when using products and composition, so the goal is to have something cleaner and more mathematically explicit for visualizing in the REPL. Still have no idea how to show CompositeMap well.
I'd appreciate any feedback on this implementation. I'd like to get this merged soonish so that I can use it in #25.

Inverses are handled by inv and pinv. inv returns a true inverse and in general should not be defined, while pinv loosely returns a left or right inverse. I probably won't split that out into linv and rinv until it becomes useful (e.g. while implementing pushforwards/pullbacks, which aren't part of this PR).

Actually, what can I safely use pinv for? I don't really get that function. Left and right inverses seem to be more natural.

Some of the interface will improve when #31 gets merged, in particular we'll get better support for tangent bundles and such, with the motivating example being Exp and Log.

Yes, I don't really like the Log and Exp in this PR. If you want to merge this PR soon, could you perhaps put these functions in a separate PR? By the way, I'm generally more used to thinking about the logarithm as a function x \in M \to ( M \to T_x M) so that it's explicit in which tangent space vectors lie. Similarly for exponential map.

What do you think about the shows used here? Maps can have really hideous type names, especially when using products and composition, so the goal is to have something cleaner and more mathematically explicit for visualizing in the REPL. Still have no idea how to show CompositeMap well.

I think it's generally a good idea but I'll have to think about what exactly should be printed a bit more.

Actually, what can I safely use pinv for? I don't really get that function. Left and right inverses seem to be more natural.

No, it's a good point. pinv isn't a safe or clear default. Even LinearAlgebra.pinv sometimes returns left inverse, sometimes right.  I've added linv and rinv.

If you want to merge this PR soon, could you perhaps put these functions in a separate PR?

I'm fine with removing them for now. I'll have Geodesic and ShortestGeodesic source their corresponding functions for now.

By the way, I'm generally more used to thinking about the logarithm as a function x \in M \to ( M \to T_x M) so that it's explicit in which tangent space vectors lie.

That's an interesting way to define it. I'll have to revisit when I implement these for real. There will be variants that are localized at a base point, (Log_x, etc), which would be the kind of map returned in your example.


tile feature

@aleph7
I would like to propose adding a tile feature to both ValueArray and Matrix.  This would provide similar functionality to tile found in Numpy and repmat found in Matlab.  Below is the code I have implemented in ValueArray.swift
    open func toMatrix(rows: Int, columns:Int) -> Matrix<Element> {
        precondition(rows*columns == count, "Element count must equal rows*columns")
        return Matrix(rows: rows, columns: columns, elements: self)
    }

    open func tile(m: Int, n: Int) -> Matrix<Element> {
        precondition(m+n >= 1, "Minimum of 1 repeat is required")
        let newCount = (m+1)*(n+1)*count
        let newElements = ValueArray<Element>(count: newCount, repeatedValue: self[0])
        let numberOfCopies = (m+1)*(n+1)

        withUnsafeBufferPointer { src in
            newElements.withUnsafeMutableBufferPointer { dest in
                var ptr = dest.baseAddress
                for i in 0..<numberOfCopies {
                    ptr = dest.baseAddress?.advanced(by: i*count)
                    cblas_ccopy(Int32(count), src.baseAddress, 1, ptr, 1)
                }
            }
        }
        return newElements.toMatrix(rows: (m+1), columns: (n+1)*count)
    }

And the unit test I added to ValueArrayTests.swift
    func testTile() {
        let a: ValueArray<Double> = [1.0, 2.0]
        let b = a.tile(m: 1, n: 1)

        XCTAssertEqual(b.count, 8)
        XCTAssertEqual(b.elements, [1.0, 2.0, 1.0, 2.0, 1.0, 2.0, 1.0, 2.0])
    }

Is this something you would consider, and would I be able to contribute to Upsurge.
Regards,
Brian

Yes, that's great. Just make sure to add some docs.

Yes, that's great. Just make sure to add some docs.

Yes it would be great to have both doc comments and something in the README
I don't think there there is much difference between those libs. Up to you.

Issue was duplicated by #69


Homepage diagrams have hardcoded versions

Path to the page with the problem (do not include domain name): /
Describe the problem: The homepage has diagrams reference older versions of bottlerocket. It would look better if this was able to be easily updated.
Screenshot, if possible

Describe how the site should look?
They should be more recent versions

While updating - would be good to use the correct casing for VMware (small "w").

@stmcginnis Good call. I'll make that change.


Median function inefficiently calls quantile method (instead of quantileSorted)?

The median implementation performs an array copy, runs quickselect, and then invokes quantile... which in turn performs an array copy, sorts the array, and then calls quantileSorted. This appears to be doing costly unnecessary extra work.
Should the median method be calling quantileSorted instead?

Derp! Thanks for finding and fixing this.

Fixed in #121.


feat: support get_option for local-rel threshold

SparkConnect's Scala client currently fails for spark.createDataFrame() requests
with a NotImplementedError.
The Scala client for this API submits a request to "get_option" with
key "localRelationCacheThreshold".
We only support ConfigRequests for this key if "op_type"  is "get".
fixes #61

Thanks for the fix!


[QUESTION] Secure auth method that still has guest acess?

Reading the authentication docs, It seems like guest access is only possible if using the 'insecure' password method. Is it possible to add support for a more secure authentication system while still giving guests access to the site? (obv still keeping them from changing config or viewing sections that guests are disallowed viewing.)

So this would be something that you configure in Keycloak, rather than with Dashy.
Basically kc sits in-front of Dashy, and any non-authenticated user is rejected server side. Modifying that would not be possible, as it'd open up the exact same issues that an adversary could use against the basic auth (cracking the hash)
I'll have a read though the kc docs and get back to you tomorrow with instructions, if it is actually possible. How are you running keycloak- with Docker, right?

Generally I do not have much control over the features offered by third-party authentication providers. If there's a feature you want from one of these services, your best bet is going to raise this issue/ submit a PR / create a bounty with their repo.
So here are your options:

Switch to Authelia, which has a similar feature set but more login options
Keep your current KC setup, and create guest account(s) on the Keycloak admin interface for each of your friends/ family/ whoever
Use a KC extension to provide social login for your guests
Write a KC extension to provide all of your desired functionality (I think you'll find it easier than it sounds, looks like you have Java experience)
Use basic auth, but choose a strong password (that can't be reasonably cracked using it's hash), and preferably don't expose your dashboard publicly to the internet. Guest functionality is available out of the box
Fork the repo and add in whatever functionality you need, and then run your version of Dashy

At this moment in time, I don't plan on adding many new features to the auth system. I don't have much spare time, and added complexity makes testing and securing harder, and there are other authentication providers which manage user control much better than I ever could, and I am focusing on the new UI editor + widget support over the next couple of weeks.

Heya @gabevenberg - Just checking that these work arounds solve you issue?

Thanks. For now Im just using built in auth. There isnt anything really sensitive on there. (anything sensitive has its own auth, as well.)


Player character can move through obstacles

That's purposeful at the moment (there's modification cheats for that toward the top of the asm that can be commented out)

Thank you.

Though keep in mind that this is unfinished even with that disabled!

So far it has been very playable.  I just made it to Figaro Castle.

I can tell you that I know figaro's cutscene is all kinds of messed up, no clue if others are. Check the open reports to see issues I've found so far with various things


AWS Provider Docs - Add Recommendation to enable HTTPS

Since we want users to run and connect to their Airy instance securely in the cloud, we should recommend to enable HTTPS by adding SSL certificates (for example using Let’s encrypt).
The recommended way of doing this seems to be to enable SSL on either the ingress controller or the load balancer serving the ingress.
We should refer to the documentation of AWS or the relevant cloud provider / ingress controller.
To the extent this is necessary for HTTPS to work, we should also show how the configuration needs to be adjusted in the relevant Airy instance.

depends on: https://github.com/airyhq/airy/issues/1212

We had a discussion and we decided to solve https on a per-provider basis. Therefore I closed #1212 and for AWS we will write docs on how to create AWS ACM certificate and update the loadbalancer service to use that certificate with the loadbalancer them with the loadbalancer

We added instructions on howto enable HTTPS for AWS in the docs, however we are using a self-signed certificate and that is not an ideal solution.
We need to instruct on how to create a HTTPS tunnel with a generated let's encrypt certificate and also make Airy core available on a configurable domain name (example myairy.customer.com)

When trying to create Airy Core on Google Cloud, we realized that the HTTPS approach we have in the docs for AWS works completely different for Google.
So in my opinion we should again explore the option of adding HTTPS capabilities to our Traefik ingress, so that we can unify the process for different types of cloud providers.

This is done.


fix: fix varnamelen linter

Signed-off-by: riya-singhal31<EMAIL_ADDRESS>

Still a few issues reported by golangci-lint, you'll probably want to address those as well.
The prefix fix: is not commonly used for the patch subject, better use cleanup: fix varnamelen linter instead.

I see no value in fixing this one and we should leave this as it is, @riya-singhal31 WDYT?

Yes right Madhu, because to all the variables where name length is < 2, its popping this linter. So doesn't put much difference.


eth: add eth_fillTransaction, fix result of eth_signTransaction

Fixes https://github.com/ethereum/execution-apis/issues/508
While adding spec for eth_fillTransaction I noticed that the spec for eth_signTransaction deviates from the geth implementation. I'm not sure yet how other clients implement this.

I've updated the PR with support for generation and verification of blob sidecars. The proposal is as follows:
If the transaction arguments contain a non-empty list of blobs, then, fillTransaction will:

Fill in proofs, commitments if they are not provided
Verify proofs, commitments if they are provided

And later verify or compute blob hashes from those commitments.


Change the latex printing of Mv to use aligned instead of align*

Depends on #379. Will rebase and squash the commits once that is merged.
Starting to CI to work out which notebooks need regenerating.

The former can be used in math mode, but the latter is only legal in text mode.
The sympy latex printer expects all results to be usable in math mode.
This resulted in a bug when attempting to use something like:
from IPython.display import Math
from sympy import latex
Math(latex((F.Fmt(3,'F'), F.Fmt(3,'F'))))

Before this change:

After this change:

Rebased. Notebooks need regenerating.

Looks like I lost some cleanup in the rebase too


Scanning postgres array columns into map[string]interface{}

Thanks a lot for this great library!
I try to scan a query where some of the columns are arrays, with the destination being a map[string]interface{}. This works fine for all columns, but the array columns don't turn into slices, but instead an object with a structure like this:
"myArray": {
    "Elements": ["my first value"],
    "Dimensions": [
      {
        "Length": 1,
        "LowerBound": 1
      }
    ],
    "Status": 2
  }

What I actually expected is:
"myArray": ["my first value"]

Is this intentional? Is there some way to get around this? If I scan into a struct with slice fields, it works fine. But for my use case, a map is needed.

Hello and thank you for opening the issue. Could you please provide the SQL query and the Go code on how you call scany library.

@georgysavva sorry, just want to ask, is scany support scanning into map[string]interface? what the data type will be use by default? uint8 which is user need to parse the data type manually? or scany will automatically convert the data into the original type that defined in database?

@lamualfa Hello. Could you also provide an example of your SQL query and how would you call scany library. So I could better understand your case please.

var session map[string]interface{}

// select only 1 data
rows, err := deps.Db.Query(context.Background(), `select * from mono_iris_session where id=$1 limit 1;`, sessionId)
if err != nil {
	return errors.WithStack(err)
}

// i don't know eaxctly how to use ScanOne. but for sure i want scany to scan into a map, not an array.
pgxscan.ScanOne(&session, rows)

fmt.Printf("session id is %s.", session["id"].(string))

@lamualfa Hey. You are using ScanOne() correctly and scany should fill the session map variable with data from your single row.
Regarding the data types inside the map: scany doesn't do anything to affect them. The database library (pgx) parses the database column type and assigns the corresponding Go type.
After that, you need to type assign them as you've shown session["id"].(string) and convert if needed.


limit relation in detail views to 250 per relation class

as soon as all relation list views are established like in https://pmb.acdh.oeaw.ac.at/apis/relations/person-place/ I'd like to limit the number of relations displayed in the entity-detail view to ~ 250 per relation class BUT providing a link to the relation list views filtered by the current subject with some text like "Klicke hier um alle Verbindungen zu dieser Entität angezeigt zu bekommen"
@martinantonmueller any good objections

It looks really good!
Two observations though:

this is the first time I would have access to the literal date field. before that it was always automatically filled via the other date field. I don't know if deviating from this is a good idea
for now I can't really see the use of "copy relation". maybe this is because it allows for easier creation of similar entries, i.e. if I want to create relatioms for every time Schnitzler went on the ferris wheel and just the dates changed? Or his son went along and the date stays the same but the son of course is a different person?

I tried to use the copy feature but it immediately created a duplicate (which should be forbidden anyhow)
the amount of fields is too much. it would be more meaningful to have the relevant fields at the top, i.e. target elements and dates

this is the first time I would have access to the literal date field. before that it was always automatically filled via the other date field. I don't know if deviating from this is a good idea

I changed the order of the fields

"copy relation". maybe this is because it allows for easier creation of similar entries,

yes, that was the intended purpose

created a duplicate

see https://github.com/arthur-schnitzler/pmb-service/issues/225
and as of now, after editing/creating a new relation through an entities detail view, only the last (editied) view rows are returned; therefore heavy work on relations should be done in the dedicated relation views


Add -fno-exceptions support

To be able to build without exceptions enabled. Required for Clang + Mingw with "-fno-exceptions" flag.

This PR is worthy of careful consideration, but is not quite ready for merging. Enabling the library's use even in the case of -fno-exceptions would enable even broader acceptance, provided that it does not break existing use cases. Some comments, on why I consider it unready, and how to bring it to a ready state:

The mechanism you chose is GCC-only. Ideally, the library would not break if a user were to employ it in Visual Studio, Clang, etc. You can ensure this using appropriate preprocessor macro checks. To detect GCC, check whether the macro __GNUC__ is defined. You can then ensure that the standard throw is used for all other compilers.
__throw_exception_again is not the right mechanism for throwing a new exception; consider __throw_<<exception_name_here>> instead. When -fno-exceptions is supplied, the code __throw_exception_again std::runtime_error("What?") will still construct an instance of std::runtime_error.
Wherever a piece of code exists only to throw an exception, the entire piece should be disabled if -fno-exceptions is used. As an example:

#ifndef NDEBUG
        if (mCounter.load(memory_order_relaxed) != kWriteBit)
            __throw_exception_again system_error(make_error_code(errc::operation_not_permitted));
#endif

is better formulated as:
#if defined(NDEBUG) && defined(__cpp_exceptions)
        if (mCounter.load(memory_order_relaxed) != kWriteBit)
            throw system_error(make_error_code(errc::operation_not_permitted));
#endif

Note that __cpp_exceptions is one of the proposed C++20 feature-testing macros, so it is more portable than the GCC-only __EXCEPTIONS and __throw_* macros. To enable compatibility with all C++11 compilers, however, will require more sophisticated approaches.

I changed all "thow" with  _throw<<exception_name_here>>. I just need some verification for the corresponding functions.

__throw_system_error is implementation-specific, which makes the code non-portable (and would break if the standard library changes its internals). As nmcclatchey said, ideally this library should be usable with all other popular compilers under Windows, not only gcc.

I add  one file "mingw.throw.h" to be more flexible and to be easily implementation-specific. For now with this, without the "-fno-exceptions" flag, the throw system is untouched, so this will work on others compilers, as is it now.

Some notes about the new commits:

Falls back to using exceptions if the compiler is not known to state whether it supports exceptions. (Currently, only GCC and Clang are known to do so, using __cpp_exceptions and compiler-specific macros)
788f81a is a general quality improvement, which should increase performance in the rare cases when it's used by reducing the total number of trips into the compiler's prefered exception-handling mechanism. That it improves support for -fno-exceptions is convenient, but a secondary concern.
Because both try and catch require exception support (in GCC, at least), they have been removed if the library is being compiled without exception support.
Macros with lower-case names (rather than the expected UPPER_CASE) have been replaced with functions; this improves encapsulation, reduces chance of usage errors, and removes errors related to macro argument types (eg. failed attempts to convert instances of error code enumerated types to int).

Is there a reason this was reverted? I'm running into this very issue right now.


Avoid auxiliary variables in the definition of boundary conditions?

Consider the following simple PDE where I wrapped the convective Flux into an auxiliary variable:
# 1D PDE and boundary conditions
eq = [Dt(u(t, x)) ~ -Dx(Flux(t,x)),
Flux(t,x) ~ v / rho * u(t, x)
]

The system should describe the sedimentation and displacement of material with a sedimentation influx v and density rho, which translates v into an advection velocity (v / rho).
When I use the Flux(t,0) auxiliary variable in the boundary conditions, I get a concentration u higher than the theoretical maximum rho.
bcs = [u(0, x) ~ 0,
Flux(t,0) ~ v]

Using the exact definition of Flux(t,x) instead in the boundary conditions seems to give the correct solution.
bcs = [u(0, x) ~ 0,
v/rho * u(t, 0) ~ v]

My interpretation from this is that auxiliary variables cannot be used in the boundary conditions. It could be something for documentation if I haven't missed it.
Here is the complete simple example:
using ModelingToolkit
using MethodOfLines
using DomainSets
using Plots
using OrdinaryDiffEq

@parameters t x
@variables u(..), Flux(..)
Dt = Differential(t)
Dx = Differential(x)

@parameters v
@parameters rho
ps = [v => 0.5, rho => 145.0]

# 1D PDE and boundary conditions
eq = [Dt(u(t, x)) ~ -Dx(Flux(t,x)),
Flux(t,x) ~ v / rho * u(t, x)
]

# OPTION #1
# goes above rho
bcs = [u(0, x) ~ 0,
Flux(t,0.0) ~ v]

# OPTION #2
# does not go above rho, looks okay
#bcs = [u(0, x) ~ 0,
#v/rho * u(t, 0) ~ v]

# Space and time domains
domains = [t ∈ Interval(0.0, 200.0),
    x ∈ Interval(0.0, 2.0)]

# PDE system
@named pdesys = PDESystem(eq, bcs, domains, [t, x], [u(t, x), Flux(t,x)], ps)

# Method of lines discretization
dx = 0.1
order = 1
discretization = MOLFiniteDifference([x => dx], t)
# explicitly specify upwind order

# Convert the PDE problem into an ODE problem
prob = discretize(pdesys, discretization)

# Solve ODE problem
sol = solve(prob, Tsit5(), saveat=10.0)

p1 = plot(xlab="u(t,z)", ylab="depth", legendtitle="Time sol.t")
for i in 1:length(sol.t)
    p1 = plot!(collect(sol[u(t, x)][i, 1:end]), -collect(sol[x]), legend=:outertopright, label=round(sol.t[i]; sigdigits=2))
end
p1

This is an unknown problem, thank you for bringing this to my attention. I'll add a note to the docs.
Can you try without aux variables? System transformation should handle this but we don't have too many test cases.

Removing aux variables in eq and bcs produces the same results for
eq = [Dt(u(t, x)) ~ -Dx(Flux(t,x)), Flux(t,x) ~ v / rho * u(t, x)]

and
eq2 = [Dt(u(t, x)) ~ -Dx(v / rho * u(t, x))]

However, with the aux variable in bcs, you get the discrepancy that I mentioned in the first post:
bcs = [u(0, x) ~ 0, Flux(t,0) ~ v] and bcs = [u(0, x) ~ 0, v/rho * u(t, 0) ~ v] for solving eq give different results.
bcs = [u(0, x) ~ 0, v/rho * u(t, 0) ~ v] gives the correct results.
It seems like you can use aux variables in the equations but not the boundary conditions.

If Flux(t,x) is in @named pdesys = PDESystem(eq, bcs, domains, [t, x], [u(t, x), Flux(t,x)], ps), shouldn't MoL treat it as a dependent variable not any different from u(t,x)?

Yes, to my knowledge this should be equivalent -- this is definitely unexpected.

The result is a Tuple{ODESystem, Tuple{Float64,Float64}} rather than a ODEProblem; solve crashes. Tried converting but it also crashes with some SymbolicUtils error.

the tuple is (sys, tspan), some systems need simplification though

This system appears to be incompatible, tried transforming using https://github.com/SciML/MethodOfLines.jl/blob/feac4dc0851a23a8a8213a39605c823cd828f7e7/src/MOL_discretization.jl#L149 without simplification but it didn't work. When I used structural_simplify it worked but the same problem occured.

Aux variables are treated identically by the system - I will double check the boundary parsing to make sure there isn't an extra assumption about the form that is applying that I may have missed


Provider and tenant verifier development

What has been done:
how to differentiate tenant and provider:

set a flag in the verifier's agent library: cloud_verifier_tornado.py L281 d['need_provider_quote'] = False. Provider set False and tenant set True

for the tenant side:

be able to send the request to the provider after getting a quote from its agent

using the GET method to send the request to provider side endpoint

be able to verifier the provider quote with provider information (hardcoding)
can get provider quote only once, then enter attestation loop

for provider side:

develop an endpoint /verifier?nonce=%s&mask=%s&vmask=%s to receive and handle the request from tenant
be able to forward these parameters to agent api /quotes/integrity?nonce=%s&mask=%s&vmask=%s&partial=%s

using GET method to send request to provider agent

be able to get quote from provider agent and send back to tenant verifier

Problem and TODO:

still confused about the synchronize/asynchronize approch for getting a quote.

current approach is set both tenant and provider getting quote as 'await', and it works for now

the request handler for tornado asynchronized server will be blocked, can't processing multiple requests simultaneously

Detail of the problem:
Explain in following comments
How to run the code:

Run a full set of keylime instance for provider

set cloud_verifier_tornado.py L281 d['need_provider_quote'] = False before run the code

Run a full set of keylime instance for tenant

set loud_verifier_tornado.py L281 d['need_provider_quote'] = True before run the code
hardcoding provider's ip and port on cloud_verifier_tornado.py L410

What's the behavior of the code
After provision the tenant agent from tenant's tenant terminal, you can see the quote which requests by tenant verifier in the tenant's verifier terminal and the result of validating the quote.
@nabilschear @lukehinds , thanks a lot!

My confusion about synchronizing and asynchronizing approach:
The question is that for the two-stage request process (tenant verifier get provider quote), @nabilschear you have mentioned the provider verifier shouldn't use ensure_future. I'm confused about this part. From my understanding, for the tenant verifier, to get a provider quote is a part of its bootstrapping (one state in the state machine). So the tenant should wait to proceed provide_V until it gets a provider quote and the quote is valid, it should be blocked. Therefore, the request stage for the tenant verifier should be synchronized and use await.
For the provider verifier, it spun up before the tenant verifier, so basically it has already entered the attestation get quote loop when it received the get provider quote request from tenant verifier. Besides, all tenant verifiers will send the get provider quote request to the provider verifier, so the provider verifier should be able to handle these tenants as well as keep doing attestation loop, it shouldn't be blocked. Therefore, the provider verifier should be asynchornized and use ensure_future.

Question about tornado request handler
I run some test on the verifier to see how the verifier reacts when receiving multiple get requests simultaneously. But I find out that the handler will not process the following requests unless the former one is done. So I check the thread the request handler running on, it seems the handler only run on one thread, instead of create a new handler for each request. Handler reaction

Update for this PR
What are we trying to do
Do the nonce aggregation in the provider verifier when it receiving multiple get provider quote requests from the tenant verifier. We add a sleep function in the provider's GET handler to simulate the stall of hardware TPM.
What's the problem
Simulation of the stall
We add a sleep function in the provider's GET handler to simulate the stall of hardware TPM. We want to add sleep to the agent originally, but we find the agent's HTTPServer is multi-tread and if we add sleep it will be treated separately on each thread. And the type of sleep is asynio.sleep(). Is this approach of simulation acceptable? Or we can have another desirable way to simulate the stall?
Attempt to gather nonce with Global variable, asyn.queue, and SQLdb
We want to batch all the nonce from requests together. But since we have tornado.process.fork_processes(config.getint('cloud_verifier','multiprocessing_pool_num_workers'))
The requests are randomly partitioned, so as the nonce inside. So we can't gather them all. As you can see from the screenshot below.

In this example, I send 10 requests simultaneously. I try to use the async queue (first column), global variable(second column), apparently, the requests are partitioned when pooling jobs to workers(divided into 3 + 7). Then I remember Nabil has mentioned sharing and synchronizing information with the SQL database. So I hack a little bit inside the SQLdb, adding a new column 'quote_col' to store tenant's nonce.  Each time the provider verifier receives a get provider quote request from the tenant verifier, it will read info from the DB, append the nonce to the column and update the DB. And this approach seems to work (third column), it gathers all ten nonces.
Then we have another problem. After gathering all the nonce and finishing the stall, we want to extract all nonces by reading from DB. But when we read from DB, this column is empty.

It doesn't make any sense, if the column is empty, the length of the list should be zero (in screenshot column three). So that may be the asyn things. And we don't know how to do this.
Another solution (double post)
@ericli21 please leave a comment below with your design and problems, with the link of code preferably.
Serialize and put Merkle tree into the response
@klwalsh please leave a comment below with your design and problems, with the link of code preferably.
How to run the code
(haven't integrated @astoycos resolved hardcoding version yet)

Start two identical virtual machines with keylime installed. One is provider and the other one is the tenant. Put these two machines into same network. Can use @astoycos ansible vagrant file. (@astoycos please leave the link of the file below)
Since the structure of DB has been changed. You need to remove the original DB file to resolve the incompatibility.  rm /var/lib/keylime/cv_data.sqlite
Some library has changed, run python3 setup.py install in the keylime root folder.
Run the provider first
i. Edit d['need_provider_quote'] = False
ii. Bring up the whole set of keylime instance as usual. keylime_verifier, keylime_registrar, keylime_agent and keylime_tenant -t <IP_ADDRESS> -f /home/zycai/Keylime_test/keylime/README.md
Run the tenant
i. Edit d['need_provider_quote'] = True
ii. Hardcoding the provider's ip and verifer's port in the url.
iii. Bring up the whole set of keylime instance as usual.

What you will see
From the tenant provider verifier terminal, you can see the quote from the provider verifier with the nonce you sent. And it can also verify the quote with hardcoding provider info(Since we haven't implement the registration process yet, we don't have provider's pubAIK).
How to test the batch get request
Turn off the tls and use curl to test. (can test on one VM using its own URL)
curl "http://<IP_ADDRESS>:8881/verifier?nonce=70159ea0d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=701561a1d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=708f2d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=70caea3d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=7800ea4d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=70891ea5d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=7016ea6d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=7050ea7d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=7043ea8d&mask=0x408000&vmask=0x808000" & \
curl "http://<IP_ADDRESS>:8881/verifier?nonce=7098ea9d&mask=0x408000&vmask=0x808000";

(note! requests must send simultaneously, using &, otherwise, the script will wait until the last curl receives its response )

thanks @cjustacoder , just need to fix #212 and will jump onto this.

Merkle Tree
Design
We want to use the Merkle tree data structure to accumulate nonces sent to our provider verifier.
Ideally, what we wanted to do was to serialize the Merkle tree into a string or JSON format (to send back to the tenant verifiers in the GET response). Then, we send the root to the provider agent, and the TPM could sign the quote with the root as the given nonce, which then gets sent back to the provider verifier.  From there, there were two options:

Send the entire tree back to each tenant verifier, and have nonce inclusion verification happen there.
Have the provider verifier verify the inclusion of each tenant verifier nonce, and send back only the appropriate audit proof to each tenant verifier.

The first option is more straightforward, but transmits more data.  The second option requires bookkeeping at the provider verifier level, but sends log(n) data instead of (n) data.  This was originally considered step two of our development process, since we needed to figure out how we're going to send the Merkle tree first.
However, sending the Merkle tree has proven more difficult than we originally thought.
Current Issues
(Note: I have been testing Merkle tree functionality in this script before integrating it with Keylime for debugging purposes)
The main problem with sending the Merkle tree is that the typical serialization methods do not work: Jsonify and json.dumps fail because the object MerkleTree is not serializable. Using the pickle library yielded the same results. Using the export function included in merklelib also fails (NameError: name 'io' is not defined).
If we can't serialize the Merkle tree, then we can't send it to the tenant verifiers after processing. This puts us in a pickle (no pun intended).
Moving forward, if we can't figure out a way to serialize the tree, then nonce inclusion verification needs to happen in the provider verifier. We would have to include some bookkeeping in the provider verifier to keep track of which nonces go to each tenant verifier. This way, we know where each individual proof needs to be sent. One way to do this is to tie each nonce to its tenant verifier's IP and port.

The current solution is having the tenant verifier send a GET request with the nonce to the provider verifier, which handles the request using its get function and sends back the quote as a response. Before it sends the response, this get function must await invoke_get_quote, which must await the GET response from the provider agent. Because multiple get handler functions must await a single invoke_get_quote function that batches all nonces up, this becomes confusing to deal with using the asyncio tools.
An alternate solution to the REST API interface is to have the tenant verifier POST their nonce to the provider verifier, so it does not expect the quote back as a response. The tenant verifier will then wait in a new state (the state is called GET_STATUS for now).
The provider verifier will store the nonce + PCRs requested, IP, and port through the post handler function into a series of data structures. This series of data structures is the next batch of GET requests that will be processed when getting a quote. When the provider is ready to request a quote again, it will copy this next batch series of data structures into a current batch series of data structures. The next batch series is then emptied to allow for aggregation of new nonces.
Using this new batch of nonces in a Merkle tree,  invoke_get_quote will send a single GET request using the root of this Merkle tree to the provider agent, and await the GET response. When receiving the quote via response, it will go through the current batch data structures to look for the port and IPs to POST the quote back to the correct tenant verifiers.
Upon receiving the POST, the tenant verifier will enter the next state, which is PROVIDE_V. Overall, this method is similar to the original, but tries to avoid having to deal with asyncio tweaks. A weakness is that if the tenant verifier never receives the 2nd POST, it will be stuck in the waiting state.


Double task execution on multi-machine setup

This is a different issue from #183.  I didn't set a timeout, and setting it to 60 doesn't help.
I'm using Django-Q with the ORM broker.  I run two clusters on separate machines, both talking to the same PostgreSQL database, no caching.  When my application fires off a task, it gets executed twice.
Both executions happen in the same second.  The admin UI only shows a single completed task.
My suspicion is that task locking isn't working properly so that both clusters pick up the same task.  When I shut down one of my Django-Q clusters, so that I'm running only one, this no longer happens.  With a single cluster, tasks execute only once.

Yup, looking through the logs I see both clusters picking up the same job, so it gets processed twice.  I thought this wasn't supposed to happen when running against the same broker?

We have seen this multiple task execution bug with scheduled tasks -- see #231.

After reading a lot of database logs, I think I found the problem!  Here's how the current code for the ORM broker grabs a task::
if self.get_connection().filter(id=task.id, lock=task.lock).update(lock=timezone.now()):

This is quite clever.  (Which also means that it could do with some comments — cleverness leads to misunderstandings once you've forgotten the intricacies.)  It conditionally, atomically, updates Task.lock if nobody else has already done it.
The ORM returns the number of rows updated: 1 if the statement was able to grab the job, or 0 if it was not.  If two clusters try to do this at the same time, one will be kept waiting until the other has grabbed the job... and by that time it will simply not grab the job.
But here's what actually happens in my database (simplifying a bit for legibility)::
UPDATE django_q_ormq
SET lock = '2017-04-13T09:36:05.061057+00:00'::timestamptz
WHERE id = 1

There's no check for the current Task.lock value there, and that's why two clusters can both think they grabbed the task at the same time!
And I found out why.  I'm running Django-Q 0.7.18.  Here's how its ORM broker grabs a task::
            task.lock = lock
            task.save(update_fields=['lock'])

So, the concurrency check is new, and it's not in 0.7.18 yet.  The next update should see the bug disappear!

@jtv has this problem been resolved in the newer versions?

Yes, thanks.  The code I showed fixed the problem — but it wasn't yet in the version I deployed originally.
The code is subtle, so it could probably do with some documentation.  Otherwise somebody might be tempted to change it later and cause a regression.


Some fields can not be encoded to json, and cause plugin crash

Here is a full list of supported log fields, extracted from etc/emq_plugin_elasticsearch.conf
For each field, verify that

After enabling it, plugin does not error out
The value logged matches what is expected

And then tick the field.

[ ] clean_sess
[x] client_id
[ ] connack
[ ] connected_at
[ ] dup
[ ] from
[ ] id
[ ] keepalive
[ ] msg_timestamp
[ ] options
[ ] payload
[ ] peername
[ ] pktid
[ ] proto_ver
[ ] qos
[ ] reason
[ ] retain
[ ] sys
[ ] topic
[ ] topics
[ ] username
[ ] will_topic

client_id, topic and topics field confirmed.


Install package Command fails

R -e "install.packages('RODBCext', repos='https://cran.microsoft.com')"
fails with the error "package 'RODBCext' is not available (for R version 3.6.3)" also fails for R-3.5.3

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

ID: 949cfe97-f890-4989-c1af-6a497fd56b64
Version Independent ID: 16f80dc0-6902-a9a9-64ec-945bf6acac55
Content: Add an R package to Machine Learning Services (preview) - Azure SQL Database Machine Learning Services (preview)
Content Source: articles/sql-database/sql-database-machine-learning-services-add-r-packages.md
Service: sql-database
Sub-service: machine-learning
GitHub Login: @garyericson
Microsoft Alias: garye

@rhubley Thank you for bringing this to our attention, and for taking the time to test with multiple version of R. I am seeing the same issue:

C:\Users\miubezzi\Downloads>"C:\Program Files\R\R-3.6.3\bin\R.exe" -e "install.packages('RODBCext', repos='https://cran.microsoft.com')"
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
install.packages('RODBCext', repos='https://cran.microsoft.com')
Warning message:
package 'RODBCext' is not available (for R version 3.6.3)
C:\Users\miubezzi\Downloads>"C:\Program Files\R\R-3.6.3\bin\RScript.exe" -e "install.packages('RODBCext', repos='https://cran.microsoft.com')"
Warning message:
package 'RODBCext' is not available (for R version 3.6.3)

It appears the document will require information pertaining to specific versions as there are dependencies. I am going to have the content owner review this and make an update as necessary.

Might even be a problem with the package

This worked:
R -e "install.packages('RODBC', repos='https://cran.microsoft.com')"

C:\Users\miubezzi\Downloads>"C:\Program Files\R\R-3.6.3\bin\R.exe" -e "install.packages('RODBC', repos='https://cran.microsoft.com')"
R version 3.6.3 (2020-02-29) -- "Holding the Windsock"
Copyright (C) 2020 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
Natural language support but running in an English locale
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
install.packages('RODBC', repos='https://cran.microsoft.com')
trying URL 'https://cran.microsoft.com/bin/windows/contrib/3.6/RODBC_1.3-16.zip'
Content type 'application/zip' length 880331 bytes (859 KB)
==================================================
downloaded 859 KB
package 'RODBC' successfully unpacked and MD5 sums checked
The downloaded binary packages are in
C:\Users\miubezzi\AppData\Local\Temp\Rtmpu6z6HF\downloaded_packages

But the second part does not install:

C:\Users\miubezzi\Downloads>"C:\Program Files\R\R-3.6.3\bin\R.exe" CMD INSTALL sqlmlutils_0.7.1.zip
installing to library 'C:/Program Files/R/R-3.6.3/library'
Warning in unzip(zipname, exdir = dest) :
error 1 in extracting from zip file
Warning in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
cannot open compressed file 'sqlmlutils/DESCRIPTION', probable reason 'No such file or directory'
Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) :
cannot open the connection

My file was corrupted. I had to clone the Git project and run again.

C:\Users\miubezzi\Documents>"C:\Program Files\R\R-3.6.3\bin\R.exe" CMD INSTALL C:\Users\miubezzi\projects\git-samples\sqlmlutils\R\dist\sqlmlutils_0.7.1.zip
installing to library 'C:/Program Files/R/R-3.6.3/library'
package 'sqlmlutils' successfully unpacked and MD5 sums checked

@garyericson The Install sqlmlutils section is not crystal clear, as the RODBCext package is not found but RODBC does exist. I went through this section and was able to get sqlmlutils installed, and looking to test this against a ML instance of SQL Database but, the doc needs an update to reflect the correct RODBC reference. Thank you!

sqlmlutils_0.7.1 cannot run without RODBCext
Error: package or namespace load failed for ‘sqlmlutils’ in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]):
there is no package called ‘RODBCext’

@rhubley Thank you for verifying. I was attempting to test this against a ML SQL instance but was not able to test adding the glue package. Thank you for verifying.

@rhubley With R 3.4, the RODBCext package is available. https://cran.microsoft.com/bin/windows/contrib/3.4/RODBCext_0.3.1.zip

SQL 2019 has R version 3.5.2 installed
I'm having other problems installing packages to the server after installing RODBCext from github.
Maybe this isn't supported for OnPrem installs

@rhubley This is not supported for on-premise from what I have researched. This is specific to Azure Machine Learning where Azure SQL Database is being deployed. More information would be helpful in the documentation. This is also in preview, so limited support at the moment.

@Mike-Ubezzi-MSFT - Thanks for your work on investigating this.
@rhubley - The preview for Azure SQL Database Machine Learning Services is currently closed and the plan is to shut down the service permanently at the end of June. There will be a replacement announced sometime before then. Since the preview is closed, we're not planning to update documentation. So I'm going to go ahead and close this issue with the answers Mike has given. Feel free to re-open it if I've misunderstood.
#please-close


Update Mesos scheduler to make leaseOfferExpiration and declinedOfferRefuse duration configurable

Follow up to the review (https://github.com/criteo-forks/flink/pull/10) as we're still seeing super skewed resource offers from Mesos causing our jobs to take very long to schedule with the quotas we have in place.
This review adds configuration knobs for the following Mesos / Fenzo scheduling options and pipes them down:

Reject all expired offers - If true when we hit our expiry timeout we reject all the unused expired offers.
Max offers to expire - If the rejectAll = false, this option specifies exactly how many unused expired offers we want to reject.
Unused offer expiration time - How much time we want to wait before rejecting unused expired offers.
Declined Offer Refuse duration - Option to send to the Mesos master that indicates that a rejected resource offer should not be sent back for a certain duration.

In the previous review we tried out the option of rejecting all expired unused offers. With this one, we can also tune to lower the unused offer expiration time (from 120s -> 1s so we get new hopefully less skewed offers from Mesos sooner) as well as increasing how long Mesos should wait before sending us a declined offer again (5s -> 1min).

cc @BenoitHanotte  / @kamaradclimber / @JTaky
(values I've used in the configs as defaults are the ones in Fenzo as defaults as of now)

LGTM, excited to have that merged so that we can test it more :+1:
If we were to also push upstream they might not want the imports to be reformatted if no imports has been added/removed, but that's very very minor.

Thanks @BenoitHanotte. Yeah I'll make some of these tweaks when I put up the upstream review. They also typically ask for other minor changes so likely there will be changes on this in that review..


About how to use this code with TPU in Colab?

I want to train a stylegan2 encoder based on your handsome code in Colab TPU. But when I do it, "from op import FusedLeakyReLU, fused_leaky_relu, upfirdn2d" is wrong (No CUDA Home ./local/..) in "model.py". I guess it may be an issue in folder "op" since it defines c++ extension. But I do not know how to resolve this issue, would you mind taking some advice for me ?

I haven't tried to use tpu, but you can modify this branches for cpus https://github.com/rosinality/stylegan2-pytorch/blob/master/op/fused_act.py#L87 https://github.com/rosinality/stylegan2-pytorch/blob/master/op/upfirdn2d.py#L146 to be used for tpus.

Thanks for your reply, I will try it. Thanks a lot!

Did you manage to run on TPU?

I do it but failed since one TPU has limited memory(8G), I will do not run it on TPU. Thanks very much. @ShivanshuPurohit

No problem. But just fyi, you could fit it for cifar-10 probably with 8gb

I'm using a TPU in Google Kubernetes Engine. I think I might have enough memory and would like to give it a try. However, what do fused_bias_act and upfirdn2d do if I want to rewrite them for TPU?

Can I use the fused_bias_act implementation from official StyleGAN2 repository directly?

@DIMPLY You can use pytorch native version of these operators.

I haven't tried to use tpu, but you can modify this branches for cpus https://github.com/rosinality/stylegan2-pytorch/blob/master/op/fused_act.py#L87 https://github.com/rosinality/stylegan2-pytorch/blob/master/op/upfirdn2d.py#L146 to be used for tpus and remove the import of custom operator

what does this mean?

On a computer with gpu access I can run the code using only cpu, but on a computer without gpu access I get the errors No CUDA runtime is found, using "CUDA_HOME='/usr/local/cuda' and RuntimeError: No CUDA GPUs are available."


Add new default configs

Start implementing new configurations from other tokamaks, e.g.: AUG, COMPASS, EAST, JET, JT60-SA, KSTAR, MAST, TCV and other toroidal or linear devices

A first version of JET was added by PR #282


chore: Fix in-app messages overlay color ignored from message content

Motivation
When sending an in-app message to the mobile apps, the specified Overlay Color in the in-app message editor is not reflected on the message shown on the app.
Root cause
The value overlayColor sent to the mobile SDK from the server along with the in-app message payload is ignored and not used to set the in-app message overlay color.
Instead a hard-coded color of #33000000 is used for all message.
Testing the fix
Here's a version of the fix with slow animations (10X the normal duration) to make it easy to verify the fix is working
https://github.com/user-attachments/assets/5d9a7ef0-9da9-4a2f-a749-0a3ae132b0ac
Here's a version with the real animation speed
https://github.com/user-attachments/assets/1cb6d556-466a-42a3-9251-1bd6f3e02105

If you notice that there is no closing animation when dismissing the modal, you are right! The fix for that is in the following PR #480


⚠ Minecraft has degraded performance

In 5f42f59, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1536 ms

Resolved: Minecraft performance has improved in 93f344f.


[Feature]:  Incorrect Comment in ants.go Regarding  workerChanCap Description

Description of new feature
Due to the recent version update of fasthttp, the original line numbers no longer correspond to the line numbers for workerChanCap.

Scenarios for new feature
Current Text: [https://github.com/valyala/fasthttp/blob/master/workerpool.go#L139]
Suggested Correction: [https://github.com/valyala/fasthttp/blob/v1.58.0/workerpool.go#L158]
Reason for Change: [I believe this change will improve the documentation more accurate]
Breaking changes or not?
No
Code snippets (optional)
No response
Alternatives for new feature
No response
Additional context (optional)
No response

Actually, I don't think we need this comment anymore.


bun run regtest errors

Trying to follow the README but getting:
Error: Not enough file descriptors available.
error: script "regtest" exited with code 1 (SIGHUP)

when running
bun run regtest

If I do sh ./utils/regtest.sh it works fine. Not familiar with bun so no idea if I'm using it wrong.

I deleted the whole regtest folder, just to make sure

Hey thanks for finding these. We just updated to bun and I already had regtest running and forgot to check the create and run commands. Looks like bun doesn't like running shell scripts. I will research if thats possible and maybe just make a TS wrapper to do it.

@raphjaph do you think Just could be good here for these command running? I haven't really looked into Just yet.

yeah just would be perfect for this!

Yeah only issue is it would add another dependency. I got the issues resolved for now by making those run as shell scripts. Could maybe use just as a addition. Give it another spin see if you can break something else haha.


Property 'sendStatusMessage' does not exist on type 'PuppetBridge'

Getting this on trying to run bridge with latest commit (8b4059214e3904ccd77516551675614e4f2eab53):
Sep 14 03:10:57 server npm[28329]: src/discord.ts(369,22): error TS2339: Property 'sendStatusMessage' does not exist on type 'PuppetBridge'.
Sep 14 03:10:57 server npm[28329]: src/discord.ts(489,16): error TS2352: Conversion of type '{ displayname: string; callbacks: { canNotifyRoom: () => Promise<true>; getUserId: (mxid: string) => Promise<string | null>; getChannelId: (mxid: string) => Promise<null>; getEmoji: (mxc: string, name: string) => Promise<...>; mxcUrlToHttp: (mxc: string) => string; }; }' to type 'IMatrixMessageParserOpts' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
Sep 14 03:10:57 server npm[28329]:   Types of property 'callbacks' are incompatible.
Sep 14 03:10:57 server npm[28329]:     Property 'getEmojiId' is missing in type '{ canNotifyRoom: () => Promise<true>; getUserId: (mxid: string) => Promise<string | null>; getChannelId: (mxid: string) => Promise<null>; getEmoji: (mxc: string, name: string) => Promise<null>; mxcUrlToHttp: (mxc: string) => string; }' but required in type 'IMatrixMessageParserCallbacks'.


Get CI working properly

I have put the basic files in place for CI testing of all the things, but I haven't had the time to actually get it running yet. This issue is a reminder for me to fix that.

CI runs now. Adding Vader test coverage is another issue I'll open.