Add ScreeningPhaseStability notebook

Rendered notebook view

New version incoming that uses all xarray instead of dropping into numpy:
# Index into the result to find all points where FCC and HCP are stable
import numpy as np
dims_list = list(eq_result.dims)

# We need to handle both potential orderings of the phases
masked_idxs = np.nonzero(np.sum(eq_result.Phase.values == ['FCC_A1', 'HCP_A3', ''], axis=-1) == 3)
T_idxs = masked_idxs[dims_list.index('T')]
X_ZN_idxs = masked_idxs[dims_list.index('X_ZN')]
plt.scatter(eq_result.X_ZN[X_ZN_idxs], eq_result.T[T_idxs], c='teal', s=2)

masked_idxs = np.nonzero(np.sum(eq_result.Phase.values == ['HCP_A3', 'FCC_A1', ''], axis=-1) == 3)
T_idxs = masked_idxs[dims_list.index('T')]
X_ZN_idxs = masked_idxs[dims_list.index('X_ZN')]
plt.scatter(eq_result.X_ZN[X_ZN_idxs], eq_result.T[T_idxs], c='teal', s=2)

is now
mask_cond = (eq_result.Phase.isin('FCC_A1').sum(dim='vertex') == 1) & (eq_result.Phase.isin('HCP_A3').sum(dim='vertex') == 1)
X_ZN = eq_result.X_ZN.where(mask_cond).transpose(*mask_cond.dims)
T = eq_result.T.where(mask_cond).transpose(*mask_cond.dims)
plt.scatter(X_ZN, T, c='teal', s=2)

New rendered view: https://nbviewer.jupyter.org/github/pycalphad/cookbook/blob/0611a193fb111ddde4dd3c1b5c07e817aa91aac9/ScreeningPhaseStability/ScreeningPhaseStability.ipynb

The transpose operation after where is unexpected. What's the explanation?

It seems like when you index the coordinate eq_result.X_ZN of eq_result.X_ZN.where(mask_cond), xarray puts the dimension corresponding to the coordinate into the first dimension and then appends the unique dimensions of mask_cond (N, P, T in this case). The same thing happens for eq_result.T.where(mask_cond), so the dimensions after masking become (X_ZN, N, P, T) and (T, N, P, X_N) for eq_result.X_ZN and eq_result.T, respectively. In this case, that means the shapes become (50, 1, 1, 70) and (70, 1, 1, 50), which are mis-aligned. The call to transpose resets the coordinates to be in the same order, the same as in mask_cond.


Fix metadata sync behavior when descendant type is NONE

What changes are proposed in this pull request?
When the metadata sync descendant type is NONE, stop loading the children of the sync root.
If a metadata sync is trigged by a GetStatus() call on a directory Previous behavior: The directory itself, as well as all its sub directories in the inode store will be synced.
New behavior: ONLY the directory itself will be loaded.
Why are the changes needed?
This PR addresses https://github.com/Alluxio/alluxio/issues/16922. The incorrect metadata sync behavior on GetStatus for a directory loads more children of the directory than expected and put a lot of pressure on UFS side.
Does this PR introduce any user facing changes?
Yes. The metadata sync behavior has been changed. See the comment above. The previous behavior was actually wrong and we added a hidden feature flag to allow customers to fallback.
pr-link: Alluxio/alluxio#16935
change-id: cid-2a5a2b4959422ecff74149881e400659d07c2163

alluxio-bot, merge this please


nexus memcache patching

this is for the https://github.com/brilliant-org/nexus-memcache repo
parse_backend_uri is deprecated so I added it in here for nexus-memcache
changed SortedDict to OrderedDict
changed get_cache() to caches[]

Cool.


Feature/performance updates

PR Overview
This PR will address the following Issue/Feature:

internal ticket
also partially addresses https://github.com/fivetran/dbt_shopify/issues/65

This PR will result in the following new package version:

v0.12.0 breaking for materialization changes
Please provide the finalized CHANGELOG entry which details the relevant changes included in this PR:

IN PROGRESS
PR Checklist
Basic Validation
Please acknowledge that you have successfully performed the following commands locally:

[x] dbt run –full-refresh && dbt test
[x] dbt run (if incremental models are present) && dbt test

Before marking this PR as "ready for review" the following have been applied:

[x] The appropriate issue has been linked, tagged, and properly assigned
[x] All necessary documentation and version upgrades have been applied
[x] docs were regenerated (unless this PR does not include any code or yml updates)

will regen after approval

[x] BuildKite integration tests are passing
[x] Detailed validation steps have been provided below

Detailed Validation
Please share any and all of your validation steps:

See ticket for internal validation

If you had to summarize this PR in an emoji, which would it be?

:dancer:

@fivetran-joemarkiewicz This is ready for re-review. I also made additional documentation and test updates that I realized were missing.


correct head positions for eurolite LED TMH-18

closes #326

Export files validity
(Output of test script tests/github/exports-valid.js.)
Test the exported files of selected fixtures against the plugins' export tests.
You can run a plugin's export tests by executing:
$ node cli/run-export-test.js -p <plugin name> <fixtures>
Fixture eurolite/led-tmh-18 changed in this PR

d-light

attributes-correctness

:white_check_mark: eurolite/led-tmh-18-1ch.xml
:white_check_mark: eurolite/led-tmh-18-16ch.xml
:white_check_mark: eurolite/led-tmh-18-48ch.xml

ecue
ofl
qlcplus

xsd-schema-conformity

:white_check_mark: Eurolite-LED-TMH-18.qxf

Plugin export diff
(Output of test script tests/github/export-diff.js.)
You can run view your uncommited changes in plugin exports manually by executing:
$ node cli/diff-plugin-outputs.js -p <plugin name> <fixtures>
Fixture eurolite/led-tmh-18 modified in this PR
Fixture output to all plugins is checked.
:information_source: Plugin d-light
Outputted files not changed.
:information_source: Plugin ecue
Outputted files not changed.
:warning: Plugin ofl

Changed outputted file eurolite/led-tmh-18.json
--- removed
+++ added
@@ -879,21 +879,21 @@
       "Green 1",
       "Blue 1",
       "White 1"
     ],
-    "top center": [
+    "center left": [
       "Red 2",
       "Green 2",
       "Blue 2",
       "White 2"
     ],
-    "top right": [
+    "bottom left": [
       "Red 3",
       "Green 3",
       "Blue 3",
       "White 3"
     ],
-    "center left": [
+    "top center": [
       "Red 4",
       "Green 4",
       "Blue 4",
       "White 4"
@@ -903,21 +903,21 @@
       "Green 5",
       "Blue 5",
       "White 5"
     ],
-    "center right": [
+    "bottom center": [
       "Red 6",
       "Green 6",
       "Blue 6",
       "White 6"
     ],
-    "bottom left": [
+    "top right": [
       "Red 7",
       "Green 7",
       "Blue 7",
       "White 7"
     ],
-    "bottom center": [
+    "center right": [
       "Red 8",
       "Green 8",
       "Blue 8",
       "White 8"

:information_source: Plugin qlcplus
Outputted files not changed.


refactor handlers

Rather than doing eval() and mapping ResourceTypes to method names, we should have factory to produce start/stop handler on resource type. If resource type is not supported, nil should be produced, and resource skipped.

this is implemented and released as part of v0.2.0


Add CMAKE and ndk-build as build systems

I am not sure how this CMAKE relates to NDK. Could you share more light on this? Where do you think it fits exactly?

Added to board, thanks for the contribution.


Update addSatellite.py

Updated for smooth camera view. However the satellite followed is not exactly stationary yet.

linear interpolation is fine but the reason for the camera wobble is that the 2x multiple is not same in all 3 directions, (might be 2 in x, 1.9 in y and something else in z).
Try implementing a FirstPersonController camera instead of Editor camera!
https://www.reddit.com/r/Ursina/comments/x273du/a_glitch_happens_when_i_add_a_camera_to_my_player/


.gitattributes: Mark install/kubernetes/cilium/values.yaml as generated

Since commit 11333b291de3 ("install: Templatize image repositories and tags"), we've been using install/kubernetes/cilium/values.yaml.tmpl as a template to generate .../values.yaml, which should no longer be edited by hand. Pull Requests on GitHub usually display changes on the two files, but what we want instead is to see only the diff for the template (the CI should ensure that both files are in a consistent state).

Full CI is not required, marking this ready to merge.


feat: Configure TTS voice per Model

Is your feature request related to a problem? Please describe.
Add the ability to optionally configure a TTS voice per model. I have many types of Models on my current instance of OpenWeb UI, I'd like to select different default voices for each.
Describe the solution you'd like

Now that Models in OpenWeb UI are seperated a bit from Modelfiles, an optional field for TTS voice could be added.
If that voice isn't present in the TTS configs with the config endpoint is checked, then it could default to whatever the system wide default voice is

Describe alternatives you've considered
None
Additional context
This will be useful for my current usecase of making a series of educational AI persona impersonating real historical figures, I would like to give each a different voice.

#3097

pls this


Auth 系统设计

之前的Auth系统是login或者register的时候通过用户输入的userName来判断，后来支持了github auth 登录，造成有可能出现多个相同的userName，这样之前的userName Auth 登录会有bug，所以目前采用的解决方案是将userName Auth 和 Github Auth 分离开，userName Auth登录的时候将查找非github用户(github_id IS NULL)的账户密码进行校验
=>

Hello Aermin, very nice project is it possible to have comments in English? Otherwise it becomes impossible to read everything.

Hello Aermin, very nice project is it possible to have comments in English? Otherwise it becomes impossible to read everything.

Hi, Dani. Sorry to reply so late. These comments are just some development logs. I will write a blog in English this weekend which includes this development logs. Thank you for your attention.

@dani2003  Pls tell me if you have any problem or suggestion in using this project.

Your project is beautiful. Have you thought about a multilingual solution with I18?

Your project is beautiful. Have you thought about a multilingual solution with I18?

Thank you. The multilingual solution with I18 is in my todo list. But there are some more important features as well for this product, such as lazy loading in chat. But I think I can make it done in the next half a month. 😄


Closing as duplicate of https://github.com/Microsoft/sqlopsstudio/issues/217


Add Vectors (2D) extensions: Mag, Normalize, Rotate, Cross

[✓] Has this change been discussed on the forum or in an issue before?
[✓] Does the code follow the SFML Code Style Guide?
[ ] Have you provided some example/test code for your changes?
[✓] If you have additional steps which need to be performed list them as tasks!

Description
This pull request adds more functionality and features for 2D vectors, specifically magnitude, normalize (unit vector), cross product, and rotate.
This PR is related to the issue #1810
Tasks

[ ] Tested on Linux
[ ] Tested on Windows
[ ] Tested on macOS
[ ] Tested on iOS
[ ] Tested on Android
[ ✓] Additonal Step: Test on macOS

How to test this PR?
To test these additions a similar structure to the commit "Add more utilities for working with vectors" can be implemented in test/System/Vector2.cpp for cross product, magnitude, normalize, and rotate.
ex.
SUBCASE("dot()")
    {
        CHECK(sf::Vector2f(0, 0).cross(sf::Vector2f(0, 0)) == 0);
        CHECK(sf::Vector2f(1, 0).cross(sf::Vector2f(0, 1)) == 0);
        CHECK(sf::Vector2f(1, 1).cross(sf::Vector2f(0, 1)) == 1);
        CHECK(sf::Vector2f(1, 1).cross(sf::Vector2f(1, 1)) == 2);
        CHECK(sf::Vector2f(1, 2).cross(sf::Vector2f(3, 4)) == 11);
    }

This issue is already being handled by #1979.

Closing, vector extensions will be handled with #1979.


API changed (yesterday)

I do not get data anymore, the Android app needs an update, so I guess API has changed.

Hmmm, that is strange, I don't have any issues right now. Do you have any logfiles showing the problem? You can increase verbosity with -vvv


Update reference to tmlanguage package

@nguerrera let me know that he's moved this package from @azure-tools/tmlanguage-generator to tmlanguage-generator. This PR just updates our reference to the new package.

Thanks!


Since rgb is about to release version 0.11 beta6, will rgb-lib follow up?

rgb-core is already 0.11 beta6, I think rgb and rgb-std should be soon. So I want to ask about the follow-up work of rgb-lib. As you know, beta6 refactored a lot of things, I think the workload should be a bit more.

Development of rgb-lib hasn't stopped, on the contrary we use its test suite to check and review every new PR on RGB libraries, so we're totally up to date with beta6 and we'll release a new version as soon as beta6 will be ready.


CurveXYZTexture bug visual

Godot version
4.0beta11
System information
Win10, AMD Radeon 6570, 15.201.1151.1008, GLES3
Issue description
https://user-images.githubusercontent.com/54606139/212390289-4f7b1c50-bcc8-4b46-b9d6-22956f4903b5.mp4
Steps to reproduce
https://user-images.githubusercontent.com/54606139/212390417-a6245072-7538-40cd-9a77-3dc0ebce89b8.mp4
Minimal reproduction project
N/A

I think this is fixed by https://github.com/godotengine/godot/pull/72474. Can you test again in RC3?


Was the crossfade supposed to be removed in 0.7?

What is your question?
There's no black crossfade between screens in 0.7 - it feels rather jarring and sudden going between screens now, which leads me to believe it was unintentionally removed. However, I don't know if it actually was intentional. Was it?

fixed


Change the spped of playing

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

No time for it


Use JSON mimetype for GitHub release source archives

See the middle fix of KSP-CKAN/CKAN#4192, GitHub now requires us to use an incorrect mime type to download source archives.
Now we comply.
Fixes part of KSP-CKAN/CKAN#4234.

The remaining errors are for a mod that was deleted and therefore could be frozen, but will probably become available again once archive.org is restored, so I'm leaving it as is.


clients (both Max and webvr) should maintain a full OT-valid copy of the current graph

This is important for several reasons. Some examples:

when sending a delnode OT, it should contain all the _props of the node, to ensure that it is accepted by GOT as an accurate and invertible change. (This was the cause of speakers not being deleted from Max when deleting in VR.)
separation of concerns: the client's task is to ensure that the local scene (gen~ objects or Three.js objects) are no more or less than the OT graph. Having an explicit copy of the graph to refer to is far more stable and reliable than doing this ad hoc as OT deltas are received.
it will scale up to more complex use of OTs, e.g. forked worlds

achieved this pre-NIME, but now is redundant as we move to a combined script in mischmasch.js/mischmasch.maxpat


Determine whether create_config needs a credential

The generated configuration class requires a credential at construction and our create_config method exposes this requirement to users. Neither the configuration object nor the generated client appears to do anything with this credential, so we can likely remove it from create_config without consequences.

The generated configuration class' credential isn't used. However, our handwritten clients' create_config method requires a credential to construct the pipeline's authentication policy, so it must remain in the signature.


Plain JS CheatSheet uses @NgModule

This documentation:
https://angular.io/docs/js/latest/guide/cheatsheet.html
is currently using TypeScript-Syntax

My bad. Will look into a fix.

Closing this and let's continue at https://github.com/angular/angular/pull/11070


CLI integration transpiled pseudo class error when watch mode

first:bg-green-5   ->   first_a_bg-green-5

First build works, but cli mode must with --write-transformed parameter.
When source code transpiled to first_a_bg-green-5, unocss can't recognize when rerun watch mode, and removed first_a_bg-green-5 in output css file.

This issue cannot be solved because the source code has been changed unless a set of adaptation rules is written.


Create Edit Profile

As a user with a profile, I should be able to edit my Profile page, so I can change the information about me.
All of the following edits will be done with modals
Edit profile info
As a profile owner I should be able to add my information so I can fill up my profile.
Acceptance Criteria:

[x] Every profile section has an add button.
[x] When the button is clicked, a box with a set of fields related to the section is loaded.
[x] The user can edit fields, once saved the fields' data is added.
[x] The box hides, the profile page with updated data is shown.

Edit Profile Sections
As a profile owner I should be able to edit sections on my profile page so I can modify information on a specific section rather than editing the whole page.
Acceptance Criteria:

[x] Each section has an edit icon
[x] When the edit icon is clicked, a box with the sections' fields, prefilled with data, is loaded
[x] The user can edit fields, once saved the fields' data is updated.
[x] The box hides, the profile page with updated data is shown.

Edit Visibility of Profile Sections
As a profile owner I should be able to change the visibility of sections on my profile page so I can determine if my information are public or they can be seen only by other members.
Acceptance Criteria:

[x] Each section has an edit visibility icon, except for the Name section.
[x] The user can select one of these options, 'Public', 'Only Members', 'Only Me'.

If 'Public' is selected, the section is publicly visibile on the Internet.
If 'Only Members' is selected, the section is shown only to logged in users.
If 'Only Me' is selected, the section is shown only to the profile's owner, or admins.

[x] When the edit visibility icon is clicked, a dropdown with options is loaded.

closed in pr #169


Feature idea: add redirect link to latest published version for each crate

For example, instead of linking to https://crates.fyi/crates/geojson/0.1.1/, I could link to https://crates.fyi/crates/geojson/latest/ which will redirect to https://crates.fyi/crates/geojson/0.1.1/. Then, everytime I update a new version, I don't have to update documentation links.

Hi. Thanks for idea. This is exactly like #1. New version will fix this. Stay tuned.

Ah, good call. Thanks for this awesome project! :sparkles:

@onur Do you need any help with this project? I'd love to contribute!


Complete first draft of script to pull full-text directly from Solr rather than local copy

I just realized this is pretty much a duplicate issue of #556 so we'll track there instead


Add performance test to the validator

Description of the issue
Add the performance to the validator options and add use case logs to performance validator. To be more specific regarding the current situation, the performance test will generate the logs dynamically according to the number of logs; afterwards, instruct the agent to monitor the logs, get all the performance metrics and sending it to the database
Description of changes

Add use case logs for validator
Add performance validator, similar to how performance testing works

License
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Tests
Describe what tests you have done.

Which one is supposed to be reviewed first? This or #144

Which one is supposed to be reviewed first? This or https://github.com/aws/amazon-cloudwatch-agent-test/pull/144

Either one is fine. The two PR only relates by the AWS SDK; other than that, it will work


Fix main branch building break

Fix the build break in main branch. We may need merge queue to detect such behavior.

@liurenjie1024 Instead of using a merge queue, the option that requires the PR to be rebased before merging could be enabled.


container start accepts hostConfig for backwards compatibility

As of https://github.com/docker/docker/commit/1df87b95066198c30312147393c18e0be0564fd0 the create container remote api endpoint still accepts a HostConfig as POST body, but a code comment indicates that the HostConfig should only be used for start container.
The relevant docs produced some confusion (see #13466) after the request body description had been removed and added again.
I propose to explictly indicate in the docs that the HostConfig is only allowed on start container for backwards compatibility.

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

@thaJeztah a bit longer than 5 minutes: this is the PR as suggested in #13466  :)


nixos/modules/services/x11/clight: update configuration format to new version

The new version of clight (which is already in nixpkgs) has a changed configuration file format. This patch just updates the module to use the new format.

Motivation for this change
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

I'm not sure this is relevant anymore, it seems #99314 has fixed the config file generation already, and this module seems to be working fine for me. As far as I can see the generated file has the same format as the example file here: https://github.com/FedeDP/Clight/blob/master/Extra/clight.conf

Ah, I didn't notice that someone had already made a PR for it.


Troubleshooting info

This article should include a section on troubleshooting info. Specifically, if your CORS settings are incorrect you will get an error "Unable to download Swagger 2.0 metadata. Please verify that the URL is publicly accessible. You may need to enable CORS for the App SErvice portal extension located at ......."

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

ID: 65e9220b-e2f7-071d-ae97-fd4e958745d7
Version Independent ID: e6cc1cc9-4e05-6750-ac75-be661e631b78
Content: Call an Azure function from Microsoft Flow
Content Source: articles/azure-functions/functions-flow-scenario.md
Service: functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

All done!  Work item is here

Thanks @alexkarcher-msft !
I will close this out now that we have an internal work item.


test,daemon: Fix repeated devices

This PR:

Ensures that the GetDefaultIface() test helper will return a single device.
Omits repeated devices passed via --devices by a user.

/cc @pchaigno @jrajahalme
Reviewable per commit.

test-me-please

Coverage increased (+0.02%) to 37.113% when pulling 19931f0ce9343207ede76e7149f0ff0cb10d21b9 on pr/brb/ci-fix-default-devices into d28767b3b740b8dee0dc82506b1059e653aee8ab on master.

retest-net-next

test-me-please


Make reference counting more generic

This PR allows types to define their own generate_incref (etc) type functions, with put_incref (etc) deferring to those functions. The idea being that mixed C struct/Python types can be created more easily and make use of the existing code for generating reference counting.
Right now this PR defines the such functions for PyObject and MemoryviewSlice. It's really designed to support https://github.com/cython/cython/pull/3346, so should probably be reviewed before that PR.
This PR does shouldn't change anything user-visible (hopefully) - it's just a change in structure to make other changes easier.

Right - I've done made the easy changes and I'll come back to the ones that need more thought.

Yes, I think that looks much better. A couple of keyword argument issues left according to travis, and I'll give it another review soon.

Closed and opened just to rerun tests. I don't think the previous batch actually failed - I think one of the OS X/Clang ones just ran out of time.

Thanks a lot @da-woods !


Performance Query

We have just implemented an API that uses the Resource Owner Flow. As part of testing, we discovered that the retrieval of the AccessToken is quite slow compared to the Client Credentials Flow. About 4-5s Vs 0.5s.
I understand that it will be longer for Resource Owner because it needs to make a few DB calls.
I had a look through the logs, and it appears as though the longest part of the login is the call to Verify Password.
2016-02-15 10:56:15,128 [21] INFO  Sema.IdentityServer.MembershipReboot - [UserAccountService.VerifyPassword] called for accountID: ae790c39-c351-4360-a14b-608919f30100

2016-02-15 10:56:19,910 [21] DEBUG Sema.IdentityServer.MembershipReboot - [UserAccountService.VerifyPassword] success

The call to VerifyPassword seems to take about 4.5 seconds.
the above times are from my DEV environment. Test is about 3-4 seconds, and PROD is 1-2 seconds. I haven't checked UAT.
Is VerifyPassword likely to be slower because of the Database hits or the hashing of the password? I'm just wondering how we can speed this up if possible.

You should explicitly configure the password hashing to be a number that's good for your scenario -- most hardware isn't keeping up with moore's law these days.

As for DB query performance, if you need an index then set one in the DB.

I know it's not DB query performance as I only have about 100 users in DEV at the moment. I also didn't notice a change when we did our bulk loads into DEV.
What I did notice in the bulk loads was the password hashing, so that was at the back of my mind as a possible cause.
I know I haven't altered the hashing count. From memory your hashing algorithm is based on the current year? That might explain why its appear "slower" in the past few weeks. My only requirement is to be OWASP compliant, so I will revist thoses specs.

From memory your hashing algorithm is based on the current year? That might explain why its appear "slower" in the past few weeks.

Yes. I'd pick ~50K to ~100K depending on how slow it is for a user to login.

If I change the hashing count, will I need to update the stored passwords at all?

No -- the count is stored per-account, so you can change it without problems.

I had to double check if the passwords are re-hashed if the count in config is different than the stored password, and they're not. So if you have some passwords using a higher iteration and want to lower them, then you could handle an event from MR to re-hash and re-store the password.

Where does it store the hash iteration count? I can't see that in the UserAccounts table.
hmmm I'll have to think about if I'll go ahead with the change or not.
Looks like it would have changed from 128K iterations to 256K when we went from 2015 to 2016.
It'll be the same for next year, so this may be alright.
One question though.... if I create a user in 2015 and and they're hashed with 128K iterations and they login in 2016, their hash iteration count would be different, wouldn't I have seen issues if we had to re-hash passwords when iteration counts changed?

It's prefixed on the hash (in hex).
256K is a lot, to be honest. 100K feels about right these days, but still might be too slow for some.

Ohhhh I see.
I just had a look at VerifyHashedPassword and saw that it uses that prefix to perform the iterations when verifying an entered password.
Is the config setting for the Password Hashing Iteration Count only used when changing someone's password?
If so, then I should be right to change my iteration count in the configuration without affecting my existing users. When my existing users change their password, they will then be given a new hashing prefix.

Yes

Ok then, well it should be fairly easy to reduce the iteration count back down to 100K.
Thanks for your help on this.


Fixed error in Example 7

Docs Build status updates of commit 47ae388:
:clock10: Full build: the average full build time is 11 min(s) 46 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 47ae388:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/mailboxes/Set-CalendarProcessing.md
:white_check_mark:Succeeded
View (exchange-ps)

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

Docs Build status updates of commit 1338bf1:
:clock10: Full build: the average full build time is 11 min(s) 46 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 1338bf1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/mailboxes/Set-CalendarProcessing.md
:white_check_mark:Succeeded
View (exchange-ps)

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

Docs Build status updates of commit da4dbbb:
:clock10: Full build: the average full build time is 11 min(s) 46 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit da4dbbb:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/mailboxes/Set-CalendarProcessing.md
:white_check_mark:Succeeded
View (exchange-ps)

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

Docs Build status updates of commit 8e35807:
:clock10: Full build: the average full build time is 11 min(s) 46 sec(s), this is based on the last 1000 build(s) for this repository.

Docs Build status updates of commit 8e35807:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/mailboxes/Set-CalendarProcessing.md
:white_check_mark:Succeeded
View (exchange-ps)

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


Next DB schema : use utf8mb4 ?

We should probably move from utf8 to utf8mb4 for yourls_url at least, to support emojis and other 💩
However this will make the upgrade routine more complex because maximum length of columns and index keys will be affected. See migration notes on https://mathiasbynens.be/notes/mysql-utf8mb4
At least we should probably decrease the maximum length of yourls_url.keyword to something like 150 instead of 200, to make sure folks on InnoDB without  innodb_large_prefix are not affected.
Background story on this issue: #2115 and #2125

I already use utf8mb4 with no problem, but not tested with emoji

I am running yourls latest version with utf8mb4_unicode_ci
0 problems.

A couple stats & facts for later

utf8mb4 requires MySQL 5.5.3 (released in early 2010)
5.9% of installs used over the 6 months use an older mysql engine (6,5% over the last 12 months, 16,8% of all installs since the beginning, but only 3.7% of installs running 1.7.2, which is latest stable as of writing, and presumably used by folks who are keen to update their install)

Ponder this option : enforce charset utf8mb4 is the engine has the capability, enforce utf8 otherwise. See wpdb::has_cap() for instance.

@ozh I assume this issue causes yourls to hang when attempting to create a long link whose title includes an emoji, etc? Is there any sort of workaround for this? This is for a new installation so there's no issue with migrating old data.
Yourls 1.7.4
Ubuntu 18.04
MySQL 5.7.25
php 7.2.15
Thanks!

I went ahead and followed the steps in
https://mathiasbynens.be/notes/mysql-utf8mb4 and things seem to be working fine.  The only yourls code needing change was line 31 of includes/class-mysql.php, from
$charset = yourls_apply_filter( 'db_connect_charset', 'utf8' );
to
$charset = yourls_apply_filter( 'db_connect_charset', 'utf8mb4' );

@cjstone Exactly. But actually, prefer using a plugin to apply the filter instead of editing core files.

It indeed works with @cjstone 's patch in https://github.com/YOURLS/YOURLS/issues/2226#issuecomment-468067075 but I also like to keep custom changes in plugins, so here is my solution. Add it to user/plugins/utf8mb4-charset/plugin.php, based on the example plugin included in Yourls:
<?php
/*
Plugin Name: MySQL utf8mb4 Charset Plugin
Plugin URI: https://github.com/YOURLS/YOURLS/issues/2226
Description: Change the default MySQL charset from utf8 to utf8mb4 on includes/class-mysql.php:31
Version: 0.1
Author: Immánuel Fodor
Author URI: https://fodor.it
*/

// No direct call
if( !defined( 'YOURLS_ABSPATH' ) ) die();

/*
 * We're going to modify the default charset of Yourls DB connection
 *
 * Notice the following call on includes/class-mysql.php:31
 * $charset = yourls_apply_filter( 'db_connect_charset', 'utf8' );
 * This means: give charset the value "utf8", unless a
 * filter modifies this value.
 *
 * We're going to hook into this filter and modify this value.
 */

yourls_add_filter( 'db_connect_charset', 'fodor_mysql_charset' );
/* This says: when filter 'db_connect_charset' is triggered, send its value to function 'fodor_mysql_charset'
 * and use what this function will return.
 */

function fodor_mysql_charset( $value ) {
        return 'utf8mb4'; // a filter *always* has to return a value
}
/* And that's it. Activate the plugin and notice the accented characters and emojis are supported */

Hello.
Reproducing what cjstone said, I am able to add a long url that has emoji in the page title.
But, installing the plugin that immanuelfodor provided, I am not able to do that.
Doing some debug, whit the following code:
<?php /* Plugin Name: MySQL utf8mb4 Charset Plugin Plugin URI: https://github.com/YOURLS/YOURLS/issues/2226 Description: Change the default MySQL charset from utf8 to utf8mb4 on includes/class-mysql.php:31 Version: 0.1 Author: Immánuel Fodor Author URI: https://fodor.it */ echo "Debug1 "; if( !defined( 'YOURLS_ABSPATH' ) ) die(); echo "Debug2 "; yourls_add_filter( 'db_connect_charset', 'fodor_mysql_charset' ); echo "Debug3 "; function fodor_mysql_charset( $value ) {         echo "Debug4 ";         return 'utf8mb4'; // a filter *always* has to return a value }
With this code, I could detect that the function fodor_mysql_charset is never called!
The result of this code can be seen in the image attached (check the top of the page, where Debug1, Debug2 and Debug3 are shown, but not Debug4).

Is there something I am missing?
Kind regards,

Well, it seems when the db_connect_charset filter is called, there are no plugins loaded at all. It seems when I created the plugin, I left the charset in the mysql class as well, that's why it seemed to work. :(
Debug with these lines:
# add to yourls_apply_filter @ includes/functions-plugins.php
# after the global $yourls_filters; line
var_dump($hook);
var_dump($yourls_filters);

string(18) "db_connect_charset"
array(1) {
  ["plugins_loaded"]=>
  array(1) {
    [10]=>
    array(1) {
      ["yourls_kses_init"]=>
      array(3) {
        ["function"]=>
        string(16) "yourls_kses_init"
        ["accepted_args"]=>
        int(1)
        ["type"]=>
        string(6) "action"
      }
    }
  }
}

The first time the custom plugin is present is after the get_option_active_plugins filter.
string(25) "get_option_active_plugins"
array(1) {
  ["plugins_loaded"]=>
  array(1) {
    [10]=>
    array(1) {
      ["yourls_kses_init"]=>
      array(3) {
        ["function"]=>
        string(16) "yourls_kses_init"
        ["accepted_args"]=>
        int(1)
        ["type"]=>
        string(6) "action"
      }
    }
  }
}
string(14) "plugins_loaded"
array(10) {
  ["plugins_loaded"]=>
  array(1) {
    [10]=>
    array(1) {
      ["yourls_kses_init"]=>
      array(3) {
        ["function"]=>
        string(16) "yourls_kses_init"
        ["accepted_args"]=>
        int(1)
        ["type"]=>
        string(6) "action"
      }
    }
  }
....
  ["db_connect_charset"]=>
  array(1) {
    [10]=>
    array(1) {
      ["fodor_mysql_charset"]=>
      array(3) {
        ["function"]=>
        string(19) "fodor_mysql_charset"
        ["accepted_args"]=>
        NULL
        ["type"]=>
        string(6) "filter"
      }
    }
  }
}

If you check the source code where it's located, it seems that the enabled plugins list is itself loaded from the database, so the db_connect_charset filter will inevitably run first.
We need a way to create "system" plugins by specifying a list of "always-on" plugins, e.g., in config.php that will be loaded before the DB connection is ever made. Until such happens (or somebody tells how it can be achieved without modifying core yourls files), it seems the only way is to manually edit the charset in the mysql class (and so modifying the core which we wanted to avoid in the first place).

Indeed, plugins are loaded from the DB, so code in class-mysql.php (and  the db_connect_charset filter) have to be loaded first.
A clean workaround is to use YOURLS' ability to load a custom DB engine : make a a db.php file in /users, define the charset, then require_once YOURLS_INC.'/class-mysql.php'. See https://github.com/YOURLS/YOURLS/blob/master/includes/Config/Init.php#L139-L151
So, not a "plugin" per se (you won't find it listed in the "Plugins" admin page), but still a very valid user file, requiring no core file editing

Okay, so just copypaste the original db engine file and replace the utf8 to utf8b4 in it, seems easy. Then what's the meaning of the db_connect_charset filter or any other filter in the file? 😃

Either to be used internally, or used by drop ins

The solution described in https://github.com/YOURLS/YOURLS/issues/2226#issuecomment-594176298 indeed works, thanks!
One small remark is that after copying the mysql class file, a yourls_db_connect(); call is needed at the end according to https://github.com/YOURLS/YOURLS/blob/master/includes/Config/Init.php#L139-L151 as it's never called in the custom db driver case.

@immanuelfodor nice catch. I've updated my comment accordingly for easier searching.

For the record, maybe I'll use this later: https://github.com/YOURLS/YOURLS/issues/2500#issuecomment-626739620


syscall: mksyscall_windows.go should be possible to work on internal package

Related issue #5395
When add new APIs into internal/syscall, we can't use mksyscall_windows.go like below.
internal/syscall_windows.go
package syscall

import (
  stdsyscall "syscall"
)

//sys ...

The generation of syscall wrappers is not automatic, so you need to add a
go:generate comment.
//go:generate go run ../../syscall/mksyscall_windows.go -output
zsyscall_windows.go syscall_windows.go
And then run go generate.

it doesn't use name stdsyscall. will be compile error.
On 1/20/15, Minux Ma<EMAIL_ADDRESS>wrote:

The generation of syscall wrappers is not automatic, so you need to add a
go:generate comment.
//go:generate go run ../../syscall/mksyscall_windows.go -output
zsyscall_windows.go syscall_windows.go
And then run go generate.

Reply to this email directly or view it on GitHub:
https://github.com/golang/go/issues/9635#issuecomment-70564013

--

Yasuhiro Matsumoto

OK. I see.
We have at least three choices:

Add a flag to mksyscall program
Add NewLazyDLL and Syscall9 wrapper to internal/syscall. One extra level
of indirection won't hurt much as the overhead of cgocall is much higher.
Dot import syscall in internal/syscall. This might be ugly, but it is
probably fine in this case as we are extending existing syscall package and
it will also prevent us from redefining existing symbols in the original
syscall package.

I like the 3rd option best.

@minux you are forgetting another option. We are calling new package internal/syscall/windows and then we don't need to do anything.
Alex

But I don't agree with that package name. Just having to import it under
another name when another package with the same name is in use is not
strong enough to change the package name. And it's possible to only use the
internal/syscall package alone if it's self-sufficient enough (like the
current internal/syscall package).
Think text/template and html/template for example.

My best is mixin
On 1/20/15, Minux Ma<EMAIL_ADDRESS>wrote:

But I don't agree with that package name. Just having to import it under
another name when another package with the same name is in use is not
strong enough to change the package name. And it's possible to only use the
internal/syscall package alone if it's self-sufficient enough (like the
current internal/syscall package).
Think text/template and html/template for example.

Reply to this email directly or view it on GitHub:
https://github.com/golang/go/issues/9635#issuecomment-70573289

--

Yasuhiro Matsumoto

Think text/template and html/template for example.

Not a good example. These two are never imported into the same source file. I would say think syscall and golang.orx/x/sys/windows instead.
Good names are important. I would like to decide on best possible name now and not to have that bikesheding every time we use these 2 packages together.
Alex

How could you be so sure that text/template and html/template are never
used in the same file?
I've found about 120 packages that import both packages (of about 2k and
2.1k packages that import either of them). And the first three common
packages happen to all import them in the same file. Renaming a package is
not as rare as you might have expected.
https://camlistore.googlesource.com/camlistore.git/+/master/website/camweb.go
https://github.com/bosun-monitor/bosun/blob/master/cmd/bosun/conf/conf.go
https://bitbucket.org/phlyingpenguin/collectinator/src/default/common/http.go
Similar name collision happen with net/http/pprof and runtime/pprof,
go/scanner and text/scanner, crypto/rand and math/rand. That's the example
in the std packages.
If you don't want renaming syscall package, you can only use it in a new
file, as long as we design internal/syscall in a way that the user are not
required to also import syscall, that should be fine too.

I believe @alexbrainman fixed this already.


Add logging to file

Add a proper logger to get rid of all the debug prints

Addressed in develop


Change profile stack element data structure

Please answer these questions before submitting pull request

Why submit this pull request?

[x] Bug fix

[ ] New feature provided

[ ] Improve performance

Related issues
#4104

Bug fix

GraphQL cannot support self reference, cannot build query request.

How to fix?
Change profile stack element using single level list, use id and parentId to reference parent element.

Codecov Report

Merging #4332 into master will decrease coverage by <.01%.
The diff coverage is 92.85%.

@@            Coverage Diff            @@
##           master   #4332      +/-   ##
=========================================
- Coverage   27.01%     27%   -0.01%
=========================================
  Files        1175    1175
  Lines       25672   25675       +3
  Branches     3663    3664       +1
=========================================
- Hits         6935    6934       -1
- Misses      18127   18128       +1
- Partials      610     613       +3

Impacted Files
Coverage Δ

.../core/profile/analyze/ProfileAnalyzeCollector.java
100% <ø> (ø)
:arrow_up:

...lking/oap/query/graphql/resolver/ProfileQuery.java
0% <0%> (ø)
:arrow_up:

...p/server/core/profile/analyze/ProfileAnalyzer.java
77.77% <100%> (ø)
:arrow_up:

.../server/core/profile/analyze/ProfileStackNode.java
90.38% <100%> (+0.28%)
:arrow_up:

...king/apm/agent/core/remote/GRPCChannelManager.java
70.51% <0%> (-5.13%)
:arrow_down:

Continue to review full report at Codecov.

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


fee should't have related op

Fixes # .
Motivation
Fee op shouldn't have related_operation field
Solution
added validation for the above scenario in the asserter.
Open questions

Pull Request Test Coverage Report for Build 15419

7 of 7 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 77.88%

Totals

Change from base Build 15403:
0.01%

Covered Lines:
8517

Relevant Lines:
10936

💛  - Coveralls


Profile sync

Describe the problem
The PROFILES parameter in the --features property/run flag does not work. If you pull up help it is not listed either.
Additional context
If the feature is already coded which I assume by it's inclusion in the documentatiom, then I assume it just needs to be added as an accepted input for the function.
I have a Docker deployment.

Hi @ChiSoxDev, what version of tconnectsync are you using? I see PROFILES as an option within --features under tconnectsync --help in the latest release run via docker:
$ docker run --rm -it ghcr.io/jwoglom/tconnectsync/tconnectsync:v0.9.5 --help
usage: main.py [-h] [--version] [--pretend] [-v] [--start-date START_DATE] [--end-date END_DATE] [--days DAYS] [--auto-update] [--check-login]
               [--features {BASAL,BOLUS,IOB,PUMP_EVENTS,PUMP_EVENTS_BASAL_SUSPENSION,PROFILES} [{BASAL,BOLUS,IOB,PUMP_EVENTS,PUMP_EVENTS_BASAL_SUSPENSION,PROFILES} ...]]

Syncs bolus, basal, and IOB data from Tandem Diabetes t:connect to Nightscout.

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --pretend             Pretend mode: do not upload any data to Nightscout.
  -v, --verbose         Verbose mode: show extra logging details
  --start-date START_DATE
                        The oldest date to process data from. Must be specified with --end-date.
  --end-date END_DATE   The newest date to process data until (inclusive). Must be specified with --start-date.
  --days DAYS           The number of days of t:connect data to read in. Cannot be used with --from-date and --until-date.
  --auto-update         If set, continuously checks for updates from t:connect and syncs with Nightscout.
  --check-login         If set, checks that the provided t:connect credentials can be used to log in.
  --features {BASAL,BOLUS,IOB,PUMP_EVENTS,PUMP_EVENTS_BASAL_SUSPENSION,PROFILES} [{BASAL,BOLUS,IOB,PUMP_EVENTS,PUMP_EVENTS_BASAL_SUSPENSION,PROFILES} ...]
                        Specifies what data should be synchronized between tconnect and Nightscout.

Version 0.9.5

I will need to check my version number tomorrow, but I definitely do not have all those same options. Is v 0.9.3 ties to the "latest" channel in the docker image?
ghcr.io/jwoglom/tconnectsync/tconnectsync:latest

The latest tag should resolve to the most recent version but you can also try pinning specifically to the latest version. v0.9.5 was just released today.

Great! I'll try first thing tomorrow. Thank you for all the work you have done on this project. It's making an incredibly positive impact on people's lives!

I tested again. Loading the latest docker image gives an error. I don't think it's properly updating.

It looks like your latest is pulling v0.6.6. I'll specify the version. Thanks!

Interesting, I'll look into why GitHub is doing that. Glad you got it working


fix: Copy and deploy complete contents of l1-contracts

This PR attempts to fix deployments of l1-contracts by copying the entire package rather than simply the compiled artifacts.

Benchmark results
No metrics with a significant change found.

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Values are compared against data from master at commit 5a6bcef8 and shown if the difference exceeds 1%.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
676
676
676

l1_rollup_calldata_gas
6,400
6,400
6,424

l1_rollup_execution_gas
585,733
585,733
585,757

l2_block_processing_time_in_ms
1,315
4,711 (+2%)
9,510 (+8%)

note_successful_decrypting_time_in_ms
181 (-2%)
523 (+4%)
1,051 (+13%)

note_trial_decrypting_time_in_ms
87.4 (-5%)
39.0 (+63%)
57.6 (-9%)

l2_block_building_time_in_ms
13,929 (-2%)
51,762 (+2%)
102,526 (+3%)

l2_block_rollup_simulation_time_in_ms
7,950
28,194 (+3%)
55,401 (+4%)

l2_block_public_tx_process_time_in_ms
5,952 (-3%)
23,514
47,027 (+1%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,060 (+3%)
26,502 (+1%)

note_history_successful_decrypting_time_in_ms
1,276 (+1%)
2,475 (+3%)

note_history_trial_decrypting_time_in_ms
106 (-4%)
154 (+32%)

node_database_size_in_bytes
18,628,688
34,934,864 (-1%)

pxe_database_size_in_bytes
29,859
59,414

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
235 (-2%)
44,377
28,214

private-kernel-ordering
208
52,880
14,296

base-parity
4,530 (+2%)
128
311

root-parity
1,622 (+4%)
1,244
311

base-rollup
18,028 (+3%)
165,760
861

root-rollup
50.2
4,359
725

private-kernel-inner
306 (-1%)
73,794
28,214

public-kernel-app-logic
126
35,251
28,217

public-kernel-tail
171 (+1%)
40,928
28,217

merge-rollup
9.50 (+4%)
2,568
861

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.0 (+1%)
16.0 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.6
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.586 (+1%)
0.496 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
46.4 (+1%)
72.4 (+1%)
232 (-2%)
446
872 (+3%)
1,723 (+4%)
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
96.0
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.476 (+1%)
0.447 (+1%)
0.423 (-2%)
0.417
0.416 (+3%)
0.414 (+4%)
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
53.8 (+1%)
107 (+2%)
340 (+1%)
662
1,314 (+3%)
2,618 (+4%)
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
104
207
691
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.479 (+1%)
0.481 (+1%)
0.460
0.456
0.455 (+2%)
0.456 (+4%)
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
61.8 (+2%)

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
109

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.542 (+2%)

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
14,966
494,914

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes

tx_pxe_processing_time_ms
2,373 (-3%)
1,404

Metric
0 public data writes
1 public data writes

tx_sequencer_processing_time_ms
16.9 (+14%)
736 (+1%)


How to authenticate google credentials inside the docker?

hey,
I have managed to use google crendentials.json for fetching google docs for being used as a knowledge base inside gpt-index. But I found that while initializing the service I need to once authenticate with my login for the credentials.
My problem is when I will wrap the gpt-index service inside the docker. How will this authentication happen?
Can you suggest me ways for authenticating the google credentials inside the docker?

The approach I usually use in this case is to follow the OAuth flow for desktop flows.
https://developers.google.com/identity/protocols/oauth2/native-app
Using that flow you can get a refresh token which can then be used to obtain an oauth access token.
So what I usually do is

Go through the oauth flow on my local machine where I can click accept in the webbrowser
Have my code save the refresh token somewhere (e.g. a file, GCS, etc...) that will be accessible from my application
Have my application load the refresh token and then exchange it for an access token (this can be done without user intervention)

thank @jlewi for your answer
I found that we can use oauth flow to generate the token which we can store in a db, and let my docker application load the token in session before accessing the document using google doc api.


BlueCoat - 400 response

The BlueCoat service seems to have changed. The current payload returns a Bad Request error.

Symantec/BlueCoat periodically changes the site to thwart automated use of their reputation service - which is what causes this error.


Hero Image does not display on Home page.

The title says it all. The background image (hero.jpg) does not display on the Home page, but it does on other pages. Current implementation is at https://praxislab.netlify.com/ . Click on one of the blog posts to see what I think should be showing up on the Home page as well.
I tried the code suggestion on Issue #15 but it does not seem to work. I am not sure why the Home page index.html contains /img/nil and the other pages have /img/hero.jpg. I think there is much I do not understand on how the public html pages get generated. Or configured?
I will continue to explore the hugo-verse.

So, if you go to your root Hugo folder (not the root of the theme folder), and check content/_index.md it should be populated with the following:
---
hero_image: "hero.jpg"

---

This is the file that defines the metadata for the homepage, so if this file is missing or blank, you will experience the same issue you have described here. You can see where this is defined in the exampleSite folder.
Let me know if that helped!


Multiple basic auth entries with same username

Do you want to request a feature or report a bug?
Bug
What did you do?
Looks like basic auth entries are overwritten when using multiple entries for the same username?
I want multiple passwords for same user.
I am using traefik.frontend.auth.basic.users

What did you expect to see?
Use all the provided entries
What did you see instead?
Only last entry was used for the username
Output of traefik version: (What version of Traefik are you using?)

(paste your output here)

What is your environment & configuration (arguments, toml, provider, platform, ...)?
# (paste your configuration here)

If applicable, please paste the log output in DEBUG level (--logLevel=DEBUG switch)
(paste your output here)

Hello @koliyo,
Looking at RFC 7617 and 2617, it is not obvious that a user can have multiple passwords with basic auth. However, it does not seem explicit that a user cannot have multiple passwords.
Can you provide us an RFC section that would suggest that this is possible?
If so, we can have it implemented, but are hesitant to do so without an RFC to go off of.
Thanks!

I think you are right! I assumed this was possible, but seems like it is not supposed to work. An error message / warning would be nice though :)
Thanks for feedback!


[BBPGLIB-1102] (Part two) Load memory balance from file

Context
Addresses the second part of https://bbpteam.epfl.ch/project/issues/browse/BBPBGLIB-1102 by loading and using the allocation data generated via dry run to memory balance execution.
Scope
No present structures are changed, only added.
A new load balancing mode is introduced by using the --lb-mode=Memory flag in order to load and use the allocation.pkl.gz file generated in a previous run.
Testing
A new test specific for the Load Balance Memory workflow was added.
Also the dry-run workflow test was expanded with a 1-rank distribution, in order to also generate an allocation.pkl.gz file that can be ran for the Load Balance Memory workflow.
Review

[x] PR description is complete
[x] Coding style (imports, function length, New functions, classes or files) are good
[x] Unit/Scientific test added
[x] Updated Readme, in-code, developer documentation

After testing the current workflow on a variety of circuits it became clear that the current workflow would be pretty clunky for the end user:

run a normal dry run to get an estimate for the number of nodes to use
multiply that value by the number of physical ranks available on those nodes and re-run a dry run with the --num-target-ranks CLI options set to that number in order to generate the allocation file
finally run the simulation with --lb-mode=Memory

Therefore we paused the approval and review of the MR in order to address this issue, possibly by merging the first two steps into a singular one in order to improve the user experience with the tool.


logs only with changes

Hi, Sir,
what i noticed is that when i update a json column model it still logs even though there is no change on original value..

My question is this a default behavior?
updateOrCreate method does not log anything..
thanks for helping.. :D

lol i got it.. when using json column u should make ur array alphabetical order.. :D


Fix Context size test

Currently it only works on 64 bit and it's skipped: https://github.com/Thomasdezeeuw/io-context/blob/06704d789a7ba20b2c16642efb4aa19bdc880d5e/src/tests.rs#L16-L17. Need to find out what the size is on different platforms and architectures.

This was fixed by https://github.com/Thomasdezeeuw/io-context/commit/489423f15508a4c9ff0b499665dd1c77b3063f0a.


generate_training_set.py for CircuitNet-N28 is not working.

Is the "generate_training_set.py" script in the Google Drive (https://drive.google.com/drive/folders/1Xp2y29Le6Doo3meKhTZClVwxG_7z2QuF) for CircuitNet-N28 outdated? Because I am getting this error, after decompressing the routability features when trying to generate the training dataset for the task DRC:
processing 9 files
Process Process-1:
Traceback (most recent call last):
File "../python3/3.10.6/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "../python3/3.10.6/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "../CircuitNet-main/CircuitNet-N28/preprocess_scripts/generate_training_set.py", line 60, in pack_data
feature = np.load(os.path.join(args.data_path, feature_name, name))
File "../python3/3.10.6/lib/python3.10/site-packages/numpy/lib/npyio.py", line 390, in load
fid = stack.enter_context(open(os_fspath(file), "rb"))
NotADirectoryError: [Errno 20] Not a directory: '../CircuitNet-main/CircuitNet-N28/routability_features_decompressed/macro_region/macro_region'

It is not outdated, please confirm the paths in the error do exist.


Remove unnecessary borrows and clones

Nice spot - thanks!  I wrote most of this code when I was very new to Rust, when I didn't know exactly when clones/borrows were needed.  If you could run cargo fmt on this branch, then I'd be happy to merge it (there's a PR check to ensure that master is always nicely formatted).  I tried to edit the PR myself, but I couldn't push the changes...

No problem. Yes, sorry didn't check cargo fmt, I will run it and update the PR now.

Awesome - thanks! Merging now...


Registry tool: commands that call log...Fatal() are untestable.

Throughout the registry tool, command implementations handle fatal errors by calling functions like this one:
log.FromContext(ctx).WithError(err).Fatal("Failed to identify parent project")

However, if we attempt to write tests to verify these error handlers, the tests always fail because the call to Fatal calls os.Exit() (discussion).
One way to fix this would be add a mode to Fatal() to prevent it from exiting in the situations that we want to test, but this would probably also prevent the cobra wrapper code from reporting the error to the caller in test code like this:
cmd := Command()
cmd.SetArgs(test.args)
err := cmd.Execute()

Fortunately, cobra also provides an alternate way to define run handlers that return error codes. If we define commands by setting the RunE fields, they are expected to return errors, and these errors are passed back to callers of cmd.Execute().
We might begin to do this incrementally as we write tests for command error-handling, but I think generally we should consider deprecating calls to Fatal and moving to RunE for all registry tool command handlers.

For cases where we expect errors, we can prevent cobra from printing error and usage descriptions (which clutter up test logs) by setting SilenceUsage and SilenceErrors before calling cmd.Execute().
cmd := Command()
cmd.SilenceUsage = true
cmd.SilenceErrors = true
cmd.SetArgs(test.args)
err := cmd.Execute()

I agree with returning errors directly via RunE instead of using log.Fatal(). Doing so also ensures that it emits help and the exit value for the command is non-zero.

As noted by @theganyo, let's be mindful of how we report errors when we replace calls to log.Fatal with return err.  Returned errors should be descriptive without adding unnecessary verbosity. If we need to wrap errors, we'll probably want to follow an idiomatic strategy.
https://github.com/apigee/registry/pull/859#discussion_r1042657457

Almost completely fixed by https://github.com/apigee/registry/pull/1137. Reviewing code after that change, the only call to log.Fatal in the registry tool is in an init function in cmd/registry/cmd/check/check.go.
But there are still a dozen or so calls to log.FromContext(ctx).WithError(err).Fatal().


Move testing of GEOS 3.5 to Python 3.6

Adds back in testing of GEOS 3.5 until April 2021.

Unfortunately GEOS 3.5 is not available with Python 3.6 in conda, so this is not quite as easy as I hoped.  Don't merge yet...

It looks like Python 3.5 is the default version on Ubuntu 16.04.  If we're holding back GEOS version based on 16.04, then it seems like we have to hold back Python to 3.5 as well?

In that case I think we should build / cache GEOS ourselves (using https://github.com/Toblerity/Shapely/blob/master/ci/travis/install_geos.sh )

In that case I think we should build / cache GEOS ourselves (using https://github.com/Toblerity/Shapely/blob/master/ci/travis/install_geos.sh )

I can investigate this for Travis CI.

This is now covered by https://github.com/pygeos/pygeos/pull/219


Accessing electron APIs causes stack overflow

Hi all,
I'm having an issue with Spectron and have been unable to find a solution. I'm trying to access the electron APIs to get access to all the current open windows so that I can send IPC requests to the ones that I want. However whenever I try to access those APIs I get an error saying the Maximum call stack size exceeded. It looks like an error here but I have been unable to find the root cause.
This is my test:
describe('application launch', () => {
  let app = null

  beforeEach(() => {
    app = new Application({
      path: path.join(appRoot, 'node_modules', '.bin', 'electron'),
      args: [appRoot],
    })
    return app.start()
  })

  afterEach(() => {
    if (app && app.isRunning()) {
      return app.stop()
    }
    return null
  })

  it('can use electron apis', () => {
    return app.electron.remote.BrowserWindow.getAllWindows()
      .then(allWindows => {
        console.log('allwindows ', allWindows)
        assert.equal(allWindows.length, 1, 'window is open')
      })
      .catch(err => {
        console.log('Error', err)
        throw err
      })
  })
})

Expected reponse
allwindows, [Object object] (or something along those lines)
Actual response
 { Error: An unknown server-side error occurred while processing the command.
        at execute(<Function>, "BrowserWindow", "getAllWindows", , "require") - api.js:269:21
      details: undefined,
      message: 'unknown error: Maximum call stack size exceeded',
      type: 'RuntimeError',
      seleniumStack:
       { type: 'UnknownError',
         message: 'An unknown server-side error occurred while processing the command.',
         orgStatusMessage: 'unknown error: Maximum call stack size exceeded\n  (Session info: content shell=)\n  (Driver info: chromedriver=2.29 (8e8216e581c512667203931f81c1a1ead47222e5),platform=Mac OS X 10.12.6 x86_64)' } }

Additional info
When looking into the other issues on this repo I noticed this issue: https://github.com/electron/spectron/issues/251 and they use app.electron.BrowserWindow.getAllWindows(). I tried that but get the same response.
This error happens not just with BrowserWindow but with other electron APIs as well. However a command like app.client.getWindowCount() will work fine.
I have created this repository as an example to reproduce my problem. I tried to make it as simple as possible. It just opens an electron window and tries to access the APIs: https://github.com/colinlgray/spectron_failing_test_example
Anyone know what is going on here or have suggestions for how I can accomplish what I am trying to do? Let me know if there is any additional information I can provide.

same here i thought i was doing something wrong... been at it for almost an hour

@colinlgray did you find a work-around for this?

No, unfortunately I never did


Inconsistent naming conventions of class member variables / C++ standards violations

Within the context of singularity-eos we have different conventions for naming private variables which are members of classes.  For nearly all of the analytic EOSs (for which I was mostly responsible) we use a leading underscore for private member variables.  In such class scope, this is allowed under the standard, but only if the next character is neither an underscore nor a capital letter.  This is part of C++ standards, and while it is likely to work without issue, it's technically reserved.
I propose changing all of the private member variables to trailing underscores, which is consistent with the tabular EOS implementations (both spiner and EOSPAC) and is not standards violating.

I approve of this change. :+1:


Replace default trapeze with generic RK scheme defined by Butcher table

do sth like

nlp = DirectProblem(ocp, scheme(…))

Whether we use dedicated code for each scheme (which can be optimized, although julia apparently already does some work, cf trapeze scheme that was not faster when explicitely saving the dynamics at the end of the time interval instead of recomputing it, meaning that julia probably already did the optimization), or a generic RK scheme (cf bocop, more compact but probably not optimal for explicit schemes, although this would need a benchmark to be sure, since the convergence of the iterations will be different), we'll have to modify the following parts

the formula for the dynamics equation itself in the constraints
additional unknowns and equations for implicit schemes (add a getter for the k_i variables)
the layout control variables at time stages in the optimization; getters for the control have to be updated
more generally dimensions for NLP unknown X and constraints C(X) have to be updated
same in the solution, with also the control interpolation

For reference

[x] put bocop3 code
[x] put hampath code

Generic implicit RK scheme in CTDirect

[x] solve(ocp, N=10, RK_method=:euler, init=[x1,..,xn,u1,..,um])
[x] create the struct for RK method with butcher coefficients
[x] initial point: update setter for control at stages u_ij
[x] box constraints: +-Inf for k_i, adjust control (stages)
[x] constraints layout per step: [K_EQ_1, .. , K_EQ_s), DYN_EQ, PATHCOND]
[x] bounds for K_EQ (0)
[ ] solution: update parsing for variables, constraints and multipliers
[x] aux functions:

[x] state at stage

[x] k_ij

[x] control at stage u_ij

[x] control at step ('average' control)

Note on the discretization of path constraints (consider the mixed constraints for genericity)
Since the state and control are discretized on two different time grids (the so-called time steps and time stages), evaluating a mixed constraint g(t,x,u) is a it tricky. Two intuitive choices are to enforce the constraint at all time steps or all time stages, each having their advantages and disadvantages

constraints on time stages (cf bocop2): control is directly available; state needs to be recomputed at time stages, and a natural choice is to reuse the expression x_i + h sum bj kij already computed to evaluate the dynamics at times stages; constraint is not explicitely enforced at time steps, especially t0 and tf, which can lead to obvious side effects on the solution (can be partially alleviated by using additional boundary conditions).
constraints on time steps (cf bocop3): state is directly available, control needs to be recomputed at times steps, and a 'natural' choice is to use the expression sum bj u_ij (which may or may not be the solution of finding the constant control on each step that gives the closest integration to the stage controls ?), also the final time case needs to be adressed separately in the constraints loop.

To do ?

[ ] compare with control discretized on steps instead of stages
[ ] compare discretization of path constraints on stages vs steps
[ ] dense output for solution , in particular for the control? (see OrdinaryDiffEq ?).
Remark : Implicit Runge-Kutta method with different coefficients c_i, can be considered as a collocation method
[ ] if we have one c_i=0 and one c_i=1 then we have de control at the stage. So we can  particularize  this case

See also Issue 117.

For reference, her is the code used in bocop3 for generic (implicit) RK schemes
void dODE::setRKcoeffs(const std::string RKmethod)
{
    if (!RKmethod.compare("euler_implicit"))
    {
        // Euler implicit (1-stage, order 1)
        //  1    1
        //       1
        rk_stages = 1;
        butcher_a.resize(rk_stages, std::vector<double>(rk_stages));
        butcher_b.resize(rk_stages);
        butcher_c.resize(rk_stages);
        butcher_a[0][0] = 1e0;
        butcher_b[0] = 1e0;
        butcher_c[0] = 1e0;
    }
    else if (!RKmethod.compare("midpoint_implicit"))
    {
        // Midpoint implicit (1-stage, order 2)
        // 1/2  1/2
        //        1
        rk_stages = 1;
        butcher_a.resize(rk_stages, std::vector<double>(rk_stages));
        butcher_b.resize(rk_stages);
        butcher_c.resize(rk_stages);
        butcher_a[0][0] = 0.5e0;
        butcher_b[0] = 1e0;
        butcher_c[0] = 0.5e0;
    }
    else if (!RKmethod.compare("heun"))
    {
        // Explicit trapeze aka Heun (2-stage, order 2)
        //  0   0       0
        //  1   1       0
        //      1/2    1/2
        rk_stages = 2;
        butcher_a.resize(rk_stages, std::vector<double>(rk_stages));
        butcher_b.resize(rk_stages);
        butcher_c.resize(rk_stages);
        butcher_a[0][0] = 0e0;
        butcher_a[0][1] = 0e0;
        butcher_a[1][0] = 1e0;
        butcher_a[1][1] = 0e0;
        butcher_b[0] = 0.5e0;
        butcher_b[1] = 0.5e0;
        butcher_c[0] = 0e0;
        butcher_c[1] = 1e0;
    }
    else if (!RKmethod.compare("gauss2"))
    {
        // Gauss s=2 aka Hammer and Hollingworth (2-stage, order 4)
        // A stable, B stable, symplectic. Geometric Numerical Integration Table 1.1 p34
        // 1/2 - sqrt(3)/6   1/4              1/4 - sqrt(3)/6
        // 1/2 + sqrt(3)/6   1/4 + sqrt(3)/6  1/4
        //                      1/2              1/2
        rk_stages = 2;
        butcher_a.resize(rk_stages, std::vector<double>(rk_stages));
        butcher_b.resize(rk_stages);
        butcher_c.resize(rk_stages);
        butcher_a[0][0] = 0.25e0;
        butcher_a[0][1] = 0.25e0 - sqrt(3e0)/6e0;
        butcher_a[1][0] = 0.25e0 + sqrt(3e0)/6e0;
        butcher_a[1][1] = 0.25e0;
        butcher_b[0] = 0.5e0;
        butcher_b[1] = 0.5e0;
        butcher_c[0] = 0.5e0 - sqrt(3e0)/6e0;
        butcher_c[1] = 0.5e0 + sqrt(3e0)/6e0;
    }

    else if (!RKmethod.compare("gauss3"))
    {
        // Gauss s=3 aka Kuntzmann and Butcher (3-stage, order 6)
        // A stable, B stable, symplectic. Geometric Numerical Integration Table 1.1 p34
        //  1/2 - sqrt(15)/10       5/36                2/9-sqrt(15)/15     5/36-sqrt(15)/30
        //  1/2                       5/36+sqrt(15)/24  2/9                   5/36-sqrt(15)/24
        //  1/2 + sqrt(15)/10       5/36+sqrt(15)/30  2/9+sqrt(15)/15    5/36
        //                              5/18                4/9                5/18
        rk_stages = 3;
        butcher_a.resize(rk_stages, std::vector<double>(rk_stages));
        butcher_b.resize(rk_stages);
        butcher_c.resize(rk_stages);
        butcher_a[0][0] = 5e0/36e0;
        butcher_a[0][1] = 2e0/9e0 - sqrt(15e0) / 15e0;
        butcher_a[0][2] = 5e0/36e0 - sqrt(15e0) / 30e0;
        butcher_a[1][0] = 5e0/36e0 + sqrt(15e0) / 24e0;
        butcher_a[1][1] = 2e0/9e0;
        butcher_a[1][2] = 5e0/36e0 - sqrt(15e0) / 24e0;
        butcher_a[2][0] = 5e0/36e0 + sqrt(15e0) / 30e0;
        butcher_a[2][1] = 2e0/9e0 + sqrt(15e0) / 15e0;
        butcher_a[2][2] = 5e0/36e0;
        butcher_b[0] = 5e0 / 18e0;
        butcher_b[1] = 4e0 / 9e0;
        butcher_b[2] = 5e0 / 18e0;
        butcher_c[0] = 0.5e0 - sqrt(15e0) / 10e0;
        butcher_c[1] = 0.5e0;
        butcher_c[2] = 0.5e0 + sqrt(15e0) / 10e0;
    }
    else
    {
        std::cout << "ERROR: unknown RK method: " << RKmethod << std::endl;
        exit(1);
    }
}

Constraints
// Layout of C: {boundarycond [dynstep (dynstage...dynstage) pathcond] ... [dynstep (dynstage...dynstage) pathcond] }
// +++ NB. here the path constraint is not enforced at final time !

template <typename Variable>
inline bool dOCPCppAD::evalConstraints_t(const Variable& v, Variable& g)
{

  using value_t = typename Variable::value_type;

  double initial_time = ocp->initialTime();
  double final_time = ocp->finalTime();
  auto initial_state = stateAtStep(v, 0);
  auto final_state = stateAtStep(v, discretisationSteps());
  auto parameters = getParameters(v);
  auto constants = ocp->getConstants();

  // +++ NB for more genericity use aux functions fillDynamicsConstraints, fillPathConstraints etc in dODE

  // 1. boundary conditions
  std::size_t index = 0;
  std::vector<value_t> boundary_conditions(ocp->boundaryConditionsSize());

  ocp->boundaryConditions(initial_time, final_time, initial_state.data(), final_state.data(), parameters.data(), constants.data(), boundary_conditions.data());

  for (std::size_t i = 0; i < ocp->boundaryConditionsSize(); ++i)
    g[index++] = boundary_conditions[i];

  // 2. loop over steps: discretized dynamics + path constraints
  for (std::size_t l = 0; l < discretisationSteps(); ++l)
  {

    // 2.1 dynamics constraint at time step: y_l + h sum(b_j*k_j) - y_{l+1} = 0
    double h = timeStep();
    auto step_state = stateAtStep(v, l);
    auto next_step_state = stateAtStep(v, l+1);
    for (std::size_t i = 0; i < ocp->stateSize(); ++i)
    {
      value_t sum_bk_i = 0e0;
      for (std::size_t j = 0; j < RKStages(); ++j)
        sum_bk_i += rk->butcherB()[j] * kComponent(v, l, j, i);

      // here we have 2 possible choices for the 'sign' of the equality constraint
      // this formulation is consistent with multipliers for initial conditions x=x0...
      g[index++] = next_step_state[i] - (step_state[i] + h * sum_bk_i);
    }

    // 2.2 loop on stages for k_j equations: f(...) - k_j = 0
    for (std::size_t j = 0; j < RKStages(); ++j)
    {
      double stage_time = timeAtStage(l, j);
      auto stage_state = stateAtStage(v, l, j);
      auto stage_control = controlAtStage(v, l, j);
      std::vector<value_t> state_dynamics(ocp->stateSize());

      ocp->dynamics(stage_time, stage_state.data(), stage_control.data(), parameters.data(), constants.data(), state_dynamics.data());

      for (std::size_t i = 0; i < ocp->stateSize(); ++i)
        g[index++] = state_dynamics[i] - kComponent(v, l, j, i);
    }

    // 2.3 path constraints (on step with average control)
    double step_time = timeAtStep(l);
    auto step_control = controlAtStep(v, l);
    std::vector<value_t> path_constraints(ocp->pathConstraintsSize());

    ocp->pathConstraints(step_time, step_state.data(), step_control.data(), parameters.data(), constants.data(), path_constraints.data());

    for (std::size_t i = 0; i < ocp->pathConstraintsSize(); ++i)
      g[index++] = path_constraints[i];

  }

  if (index != constraintsSize())
  {
    std::cout << "dOCPCppAD::evalConstraints_t >>> constraints last index " << index << " vs total size " << constraintsSize() << std::endl;
    exit(1);
  }

  return true;

}

The hampath code for butcher :
https://gitlab.inria.fr/ct/hampath/-/blob/2b8c06eb2ddef5aa4a48534488779bcd2ebdbe81/src/hampath/core/common/integration/getButcherTab.f90

With the managing of butcher tables
https://gitlab.inria.fr/ct/hampath/-/blob/2b8c06eb2ddef5aa4a48534488779bcd2ebdbe81/src/hampath/core/common/integration/ModGestButcher.f90

WIP on various RK branches

Switched to low priority. As a sidenote, implementation may be easier if we introduce abstract interfaces first.


Issues with the looking_at function in Transform2D

Godot version
4.0 Stable
System information
Windows 11, Nvidia RTX3060ti, Intel i5-9400F
Issue description
I've written a test for the looking_at function that checks that the inverse of the transform maps the target to the x-axis. I've noticed a few problems while running the test.

The current implementation does not pass with transformations with skew.
The current implementation changes the skew and scale of the original matrix.
The current implementation is not very clean. The first line Transform2D return_trans = Transform2D(get_rotation(), get_origin()); could honestly be removed and it'll save a few function calls.

Something like this would fix all the problems, although perhaps I'm misunderstanding the intended use of the function:
Transform2D Transform2D::looking_at(const Vector2 &p_target) const {
    real_t target_angle = (p_target - get_origin()).angle();
    Transform2D return_trans = *this;
    return_trans.set_rotation(target_angle);
    return_trans.set_skew(get_skew());
    return return_trans;
}

Steps to reproduce
// create transform with skew
Transform2D T = Transform2D(Vector2(1,2), Vector2(3,4), Vector2(5,6))
Vector2 target = Vector2(3, 9);
Transform2D T_looking_target = T.looking_at(target);
// check that the inverse maps target to the x-axis
CHECK(Math::is_equal_approx(T_looking_target.affine_inverse().xform(target).y, 0));

// check scale and skew is preserved
CHECK(T_looking_target.get_scale().is_equal_approx(T.get_scale()));
CHECK(Math::is_equal_approx(T_looking_target.get_skew(), T.get_skew()));

All checks fail.
Minimal reproduction project
N/A

Also see the discussion in #57998 , which may be relevant (although for 3D). Also this comment: https://github.com/godotengine/godot/pull/26897#issuecomment-480037938

All these fixes were applied only to Transform3D not Transform2D. So I think it is neccessary to create a seperate issue. Also the 2D version of the function is implemented completely differently.

What fixes? Transform3D discards all those things, by design, and stated in the documentation for it, I believe this should be fixed instead by changing the documentation for Transform2D

The current code does have a bug though, the direction to the target is sensitive to the current skew and should use a different way to achieve the target rotation

What do you mean by IK code? I've done a code search and couldn't quite find references to this function.
Ah you're right the documentation for Transform3D talks about resetting all these things. I'll make a PR changing the docs then.

Skeleton IK, it's under resources

I've added some tests to check that the matrix produced by the new looking_at is the same as the old_looking_at after reapplying set_scale and set_skew. They all seem to pass. One thing I see in IK is that after calling looking_at, it changes the scale and skew back. So it seems weird to reset these things and then reapply them again...

Where does it apply the skew?


Support parsing empty records in patterns

Issue
The following valid Elm code is not being properly parsed
emptyRecordFn {} = 1

Pull request status
This pull request does two things:

Add failing test cases (in the complete suite)
Change the parser to allow an optional list of valid fields

Note
Using the "Add type annotation" intention for a {} = 1 now generates a : { a |  } -> number as a type annotation. The compiler itself has a similar problem, which I have pointed at in https://github.com/elm/compiler/issues/2204. I think this is an okay problem to have, especially since there isn't any valid type that could be infered here.

LGTM! I'm taking over steward ship of this project and will merge this for the next release.

@jfmengels Could you merge master into that branch? I fixed the CI :)


iOS version

According to this https://github.com/airbnb/epoxy/issues/562#issuecomment-427986157 Epoxy for iOS is coming soon, are you planning to open source iOS MvRX as well?
Would be great to have consistent architecture on both platforms.
Thank you for your awesome work!

@qbait Yes we do have plan to open source iOS version. They will have consistent architecture since ios and android mvrx teams work very close together.

That's great news, thank you.

Any news guys? :)

@hellohuanlin ^

@qbait Yes. Things are going well. We currently have 4 pilot teams in Airbnb trying out MvRx on iOS and the feedback has been pretty positive. We should expect it open-sourced soon.

@qbait In the meantime, while you wait for MvRx iOS from Airbnb, FFUF created a version for iOS
heavily based MvRx and Epoxy
https://github.com/feilfeilundfeil/Cyanic

@hellohuanlin just curious do you have any new information about MvRx iOS version? 👍

Is there any plan for kotlin multiplatform? or any update on MvRx iOS version?

Any update on ios version.

@hellohuanlin How is the iOS version going on?

I believe the iOS version is dead. no plans for ios or multiplatform

I believe the iOS version is dead. no plans for ios or multiplatform

If this is true, it's really sad.

Dropping by to know if there has been a change of mind with KMM?

With the upcoming 3.0 release, there will be a mavericks-common jvm artifact that brings us one step closer. It hasn't been a top priority for Airbnb or Tonal, however.


Learn how to create pdf file in C# using ironPDF

Formatting and structure checks

[X] Have you used the correct folder and file structure? - see Contribution Guidelines

[X] Is your article properly formatted in Markdown? - see Github Markdown guide

[X] Have you used our preferred heading structure? - H3 (###) and up

[X] Does your article follow any of the suggested structure formats? - see example formats

[X] Is your article over 750 words? - Tool: Wordcounter.net

[X] Is the article you are submitting an in-depth and unique article? Does it go beyond what is in the official docs and what is covered in other blog sites. See these articles as examples.

[X] Does your article provide enough value and detail about your topic? - Articles should be clear, accurate, and fully explained.

[X] Can your article be understood by beginners? - Assume the audience is smart but has no prior exposure to the common terminology in your article.

[X] Have you included a hero image that is 600x400 pixels, under 300KB in size, and have the copyright to use it? - Tools: Pixlr Image Editor for resizing and Unsplash for Creative Commons images

Grammar & plagiarism checks

[X] Have you spellchecked and grammar checked your article? - Tools: Write&Improve - ProWritingAid - Grammarly
[X] Please place your article through a 3rd party plagiarism checker. We suggest using Quetext, this tool is free and has a daily limit. We typically accept articles with 10% or less.
[X] Have you checked your article for readability? - Tool: Hemmingway
[ ] Have you added sources for quotes and images that aren't yours?

Technical checks

[X] Are your code snippets properly formatted for syntax highlighting - see Syntax guide
[X] Have you checked your code runs correctly and you've highlighted all necessary dependencies for installation?
[X] Are the software programs and packages you're highlighting in your article up to date, using current versions and not deprecated?

Topic suggestion this closes
This closes #5388

@hectorkambow hello, here is the PR. Thanks

@section-engineering-education/content-moderator-team lets keep an eye on this PR and provide @Jeff-mwangi with any guidance he may need as he performs this test review.
Thank you

@Dawe-7 Hello, could you kindly review this article, thanks.

@section-engineering-education/peer-reviewers Anyone available to jump on this review.

Learn how to create pdf file in C# using ironPDF #5522.pdf
@fabulousDesigns
Upon running your article through our 3rd party plagiarism checker it seemed to raise a few flags and the % was higher than we typically accept. Please see attached PDF - and revisit the article to ensure we are contributing wholly unique and original content. Be sure to see our resources page to see more info on plagiarism and what is considered as such.
We're really looking for unique/original content, and based on the content provided, it seems that information that you intend to cover is already readily available through the documentation or via many other blog sites.


Variable names in For In Seed Code

Describe the Issue
This seed code can lead to a bit of confusion because the global variable name and parameter name are pretty similar
Affected Page
https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-data-structures/iterate-through-the-keys-of-an-object-with-a-for---in-statement
Your code
const users = {
  Alan: {
    online: false
  },
  Jeff: {
    online: true
  },
  Sarah: {
    online: false
  }
}

function countOnline(usersObj) {
  // Only change code below this line

  // Only change code above this line
}

console.log(countOnline(users));

Expected behavior
What about
const myFriends = {
  Alan: {
    online: false
  },
  Jeff: {
    online: true
  },
  Sarah: {
    online: false
  }
}

function countOnline(allUsers) {
  // Only change code below this line

  // Only change code above this line
}

console.log(countOnline(myFriends));

allUsers isn't my favorite if someone has another idea. I just don't like varNameWithType when the type isn't strictly needed.
Screenshots
No response
System
All
Additional context
No response

@jeremylt can I work on this if anyone is not working?

This issue isn't ready for PRs yet

One idea for naming:
users -> example or exampleUsers
usersObj -> users

I went with something other than users because

that's the example

at least one learner has has said user in users was a little hard to grok at first

We could change the example (and maybe we should in light of 2?)

I can appreciate the idea behind it but I don't think the names should imply they are different things, friends and users are not the same thing.
Wouldn't just changing to allUsers for the parameter and leaving the object name as is work?
function countOnline(allUsers)
user in allUsers

We can use that as the parameter name; I like it better than usesObj.
This still doesn't fully handle the user complaint though.
const users = {
  Alan: {
    online: false
  },
  Jeff: {
    online: true
  },
  Sarah: {
    online: false
  }
}

function countOnline(allUsers) {
  // Only change code below this line

  // Only change code above this line
}

console.log(countOnline(users));

I see two problems

usersObj is a really awkward variable name. Swapping to allUsers fixes this.

Given the example, its an easy bug for users to write user in users instead of the intended user in allUsers. Not sure if we want to address this or ignore this. Changing the global object name seems to be the best way to address this.

Maybe what really needs to be done is to change the example to something else, like maybe food in refrigerator or something like that?

Not sure how I feel about the parameter name but it might work.
const allUsers = {
  Alan: {
    online: false,
  },
  Jeff: {
    online: true,
  },
  Sarah: {
    online: false,
  },
};

function countOnline(usesToCount) {
  let count = 0;
  for (const user in usesToCount) {
    if (usesToCount[user].online) count++;
  }
  return count;
}

console.log(countOnline(allUsers));

I like the direction.
How about
Instructions
Sometimes you need to iterate through all the keys within an object. You can use a for...in loop to do this. The for...in loop looks like:
const refrigerator = {
  'milk': 1,
  'eggs': 12,
};

for (const food in refrigerator) {
  console.log(food);
}

This code logs milk  and eggs, with each value on its own line.
We defined the variable food in the loop head and this variable was set to each of the object's keys on each iteration, resulting in each food's name being printed to the console.

We've defined a function countOnline which accepts one argument, allUsers. Use a for...in statement inside this function to loop through the allUsers object and return the number of users whose online property is set to true. An example of an object which could be passed to countOnline is shown below. Each user will have an online property set to either true or false.
Seed Code
const users = {
  Alan: {
    online: false
  },
  Jeff: {
    online: true
  },
  Sarah: {
    online: false
  }
}

function countOnline(allUsers) {
  // Only change code below this line

  // Only change code above this line
}

console.log(countOnline(users));

I think this way we use your better parameter name and we swap the example for something that doesn't lead the learner to the user in users bug.

I think it looks good.

As an aside, if we are documenting how for...in works we should show how to access the properties on the object (in the example).
I know we have taught how to use variables with objects and making them bridge the gap might force the learner to think about it more. But it feels a little wrong to me to teach for...in without actually showing how to use it.

Small tweak for that:
Instructions
Sometimes you need to iterate through all the keys within an object. You can use a for...in loop to do this. The for...in loop looks like:
const refrigerator = {
  'milk': 1,
  'eggs': 12,
};

for (const food in refrigerator) {
  console.log(food, refrigerator[food]);
}

This code logs milk 1  and eggs 12, with each key-value pair on its own line.
We defined the variable food in the loop head and this variable was set to each of the object's keys on each iteration, resulting in each food's name being printed to the console.

We've defined a function countOnline which accepts one argument, allUsers. Use a for...in statement inside this function to loop through the allUsers object and return the number of users whose online property is set to true. An example of an object which could be passed to countOnline is shown below. Each user will have an online property set to either true or false.
Seed Code
const users = {
  Alan: {
    online: false
  },
  Jeff: {
    online: true
  },
  Sarah: {
    online: false
  }
}

function countOnline(allUsers) {
  // Only change code below this line

  // Only change code above this line
}

console.log(countOnline(users));

I think this way we use your better parameter name and we swap the example for something that doesn't lead the learner to the user in users bug.


Add Batman Arkham Knight cheat table from Codename Gamma

Original source for table https://www.patreon.com/posts/batman-arkham-21473484 (free publicly)

Why would I add this table if I have made tools for this game (which are in this repo?) 😄


remove infra tolerations, replace with hosted-control-plane

Summary

Change Type

Check List Before Merging

[ ] This PR passes all pre-commit hook validations.
[ ] This PR is fully tested and regression tests are included.
[ ] Relevant documentation has been updated.

Additional Information

Can be done by only touching downstream. This would be cleanup for a later date.


Transformation panel

a) Fix the behaviour of the transformation pane (textboxes did not have any effect when changes were applied). To fully work it needs resolving of Issue #882 as it generates now a syntax error
b) added 90° degree rotation by right clicking the button

I corrected the ordering of #824 and merged it, the code here was the only code that used it and it's set in the normal svg ordering so no since introducing inconsistencies by fixing matrix to use the other somewhat reasonable ordering as such.
It's correctly set to want sx, kx, ky, sy, tx, ty now.

Merged in the main branch to test the matrix changes, and yeah, that all seems to work perfectly fine. The Transform bit there has always been the weakest and least helpful so making it more helpful does a lot to justify its existence.

Applied some cosmetic changes to the layout
Added angle conversion to skew fields, so you may provide an angle, but it will then be represented as its tan
'Blacked' the code

P.S. Can you update the very first comment box at the top to include all the improvements that are now in this.

I did a quick test of this, and it is looking awesome!
Unlock pane, undock, and note that minimum size is too small, the textboxes get clipped.
Likely this will be different on different platforms and needs testing.

@tiger12506 On Windows there's no such effect, everything is fine. I assume you are referring to MacOs? Could you provide me with a screenshot please?
(Just compiling wxPtyhon on a Linux machine to see how it behaves there)

@jpirnay This is the minimum size that I see on Windows 10, 4K screen with 150% DPI scaling (maybe that's the difference?)

@tiger12506 Great, thank you - I can reproduce this behaviour on my Linux machine as well:
But this seems to be a problem that is true for the other two panels as well...

@jpirnay This is the minimum size that I see on Windows 10, 4K screen with 150% DPI scaling (maybe that's the difference?)

And on my Linux machine:

This is actually a broader issue of minimum pane sizes and I am not sure whether we should allow the user to reduce size below that needed to display everything or not.
But the default pane and window sizes need to show everything.

@Sophist-UK We should just merge this, as generally done. None of the defects are due to any changes made by jpirnay. If we opt to fix the other bugs which are in the pane sizes elsewhere for the FloatSize() or whatever then that can be done in another PR.
This code here breaks nothing that wasn't already broken. And fixes a number of things.

@Sophist-UK We should just merge this, as generally done. None of the defects are due to any changes made by jpirnay.

This PR is certainly functional however (to be factually correct) some of the minor visual issues were in fact due to changes made by Jens. The addition of X and Y to the left of the transform input fields was the cause of the alignment changing and the boxes moving closer together etc. I don't say this to point any finger of blame, just to correct the facts.
I genuinely believe that we should encourage PRs to be as perfect as possible, subject to the author being willing to make them so, because otherwise we are storing up minor issues that need to be fixed later and because IME minor UI imperfections disproportionately impact the reputation of software (i.e. users look at the UI imperfections and believe that the core functionality is equally imperfect).
But if the author is not willing to do more (which is their choice - we are all volunteers) and no one else is willing to fix it, and the choice is therefore between merging something with minor issues or losing all the work that has been done, then I certainly would prefer to see the PR merged and not to see the effort wasted.

I have been playing around with your code to see how easy it would be to make it do the transform on a tab. I have a version of the code which I would like to share with you. Do you have an email I can use? Or can I encourage you to join our Discord server?

a) There were some minor tweaks and code cleaning applied (thank you @Sophist-UK - appreciated :-) )
b) As there is unused screen estate in the transformation window I added a resize panel - feedback appreciated

As there is unused screen estate in the transformation window I added a resize panel - feedback appreciated

If you need more real-estate to deliver useful functionality then just annex your next door neighbours field.
I will get to reviewing this when I can - perhaps this evening.


After successful installation hokus does not open

Hi! After a flawless installation on Debian 10 Buster Hokus, nonetheless, does not open. I have tried also to use the AppImage file. Same negative result.
If I call the program from terminal with "hokus-cms" I get:
Detected trace/breakpoint
Many thanks
Alex

Oh, sorry. It was already solved...
issue 75