Use a dedicated VCAP_SERVICES Secret

Is there a related GitHub Issue?
#1101
What is this change about?
Use a dedicated secret for vcap services instead of exposing sensitive information in plaintext on env var definitions
Does this PR introduce a breaking change?
Yes, temporarily regresses the app environment response to exclude VCAP_SERVICES as noted in a todo in the E2E tests which will be subsequently restored by #1146 .
Acceptance Steps
See #1101
Tag your pair, your PM, and/or team
@cloudfoundry/cf-k8s team

Please see my comments. I would also recommend having a look at the codeclimate issues as well - some could be fixed, the ones that make no sense could be marked as wontfix on the codeclimate UI

I took a look at these and they don't seem to be relevant. 2 of the errors were 5 return statements instead of 4. 2 of them were very short blocks of common code when creating controllers. The last 2 were very short blocks to get secrets. I didn't seem to have an option to mark as wontfix in codeclimate though.


(129922624) Don't convert already-converted NSURLs

I had previously used .init(reference:) so that an initializer was called in all code paths, but this caused the underlying NSURL to be _converted twice in those cases. This causes an issue when force-casting as! NSURL if the first conversion returns nil. This PR adds and uses a .init(convertedReference:) that assigns an already-converted NSURL to _url directly.

@swift-ci please test


Many issues with Services and Gradle

Installed the google auth plugin
https://pub.dartlang.org/packages/google_sign_in#-installing-tab-
Works as expected (at least it compiled)
Installed the Flutter auth plugin
https://pub.dartlang.org/packages/firebase_auth
Does not compile, complains it needs Gradle 4.0
Fixed that by opening the project in android studio, but now...

Launching lib/main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
Running 'gradlew assembleDebug'...
Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedFolders(FileCollection)

FAILURE: Build failed with an exception.

* What went wrong:
Failed to notify dependency resolution listener.
> The library com.google.android.gms:play-services-measurement-base is being requested by various other libraries at [[15.0.4,15.0.4]], but resolves to 15.0.2. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.
> The library com.google.firebase:firebase-analytics is being requested by various other libraries at [[16.0.0,16.0.0]], but resolves to 15.0.2. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 0s
Finished with error: Gradle build failed: 1

@voidrealms
The issue at https://github.com/flutter/flutter/issues/18579 has been closed and moved here. Future collaboration on this issue will be done here.

Please look up Dependency Resolution for Flutter.

Thank you @voidrealms https://github.com/flutter/flutter/issues/18579#issuecomment-398529653! I think the issue is safe to close.


[Bug] SqlCredential doc needs updating across the board

we now offer more than just windows and sql.

We do?

yes, we offer MFA in azure, sillz

I don't think that would be more than just adding examples. A credential is still a credential.... Or maybe I need to see what you mean by updating the docs :grinning:

.PARAMETER SqlCredential
   Login to the target instance using alternative credentials. Windows and SQL Authentication supported. Accepts credential objects (Get-Credential)

Perhaps something like

Login to the target instance using alternative credentials. Accepts credential objects (Get-Credential). Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported. For MFA support, please use Connect-DbaInstance.


Ensure RvsdgRoundtrip doesn't make programs cost more

We are going to not count the cost of id instructions for now
We are also not going to worry about unstructured programs for now

we now have a better metric for this problem in nightly with the rvsdg-round-trip mode


Disallow sprite sizes <1

Fixes #291.

I don't think 1 is small enough, since large sprites can go down to <1% size.


Admin user asked interactively sometimes, using mysql and persistence

Sometimes, I'm getting following log output:
2021-10-31T14:49:31+00:00 [Entrypoint] Local time set to Atlantic/Canary
2021-10-31T14:49:31+00:00 [Entrypoint] Checking permissions
2021-10-31T14:49:31+00:00 [Entrypoint] PUID not set, using current
2021-10-31T14:49:32+00:00 [Entrypoint] GUID not set, using current
2021-10-31T14:49:32+00:00 [Entrypoint] Adjusting identifiers
usermod: no changes
2021-10-31T14:49:35+00:00 [Entrypoint] Running launch script
2021-10-31T14:49:37+00:00 [Launch] Making symlink to latest version
2021-10-31T14:49:37+00:00 [Launch] Linking internal configuration and data folders with the volume
2021-10-31T14:49:37+00:00 [Launch] Launching seafile
Starting seafile server, please wait ...
** Message: 14:49:40.529: seafile-controller.c(536): No seafevents.
Seafile server started
Done.
LANG is not set in ENV, set to en_US.UTF-8
./seafile-server-latest/seahub.sh: line 210: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
LC_ALL is not set in ENV, set to en_US.UTF-8
Starting seahub at port 8000 ...
----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------
What is the email for the admin account?
[ admin email ]
Error happened during creating seafile admin.
Seahub is started
Done.
2021-10-31T14:50:23+00:00 [Launch] Done
2021-10-31T14:50:23+00:00 [Entrypoint] Waiting for termination

These lines in particular:
...
Starting seahub at port 8000 ...
----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------
What is the email for the admin account?
[ admin email ]
Error happened during creating seafile admin.
Seahub is started
...

Also, sometimes only shows these (without interactive messages, but with the error line):
...
Starting seahub at port 8000 ...
Error happened during creating seafile admin.
Seahub is started
...

I'm not sure about the cause, but it appears randomly. Service is properly configured to use mysql/mariadb database, with admin user and pass set at environment variables and using volumes for persistence. My deployment configuration is published at: https://gitlab.com/pedroetb-projects/seafile/-/blob/master/docker-compose.yml (docker-compose.yml and .env for defaults).
Despite this, service is working fine, thanks! Only sharing this because it may be helpful.

Hi, I've had this problem too sometimes but I never thought it could be blocking because of the interactive input. I guess you deleted the admin credentials from your dotenv (a good thing I don't do...) which triggers the interactive prompt.
Thanks for the report by the way, I think it's time to do something about it.
FYI, this is probably because the database is not ready to accept connections when Seafile starts. This could be tedious to fix properly, so I left it out...

Actually, I'm not deleting admin credentials. Seafile and MariaDB are being deployed as Docker Swarm services, with these variables set as environment variables, so they are always available.
While testing, database was always available to Seafile, because I was restarting only Seafile service. It's strange that this happens randomly (1 of 5 retries, approximately).
I will continue testing with next releases, thanks for fast answering!

Actually, I'm not deleting admin credentials. Seafile and MariaDB are being deployed as Docker Swarm services, with these variables set as environment variables, so they are always available.

Yes you're right, this has nothing to do. I spoke too quickly.

While testing, database was always available to Seafile, because I was restarting only Seafile service. It's strange that this happens randomly (1 of 5 retries, approximately).

Ok, I can reproduce (without blocking though) when database isn't reachable but this, it's totally something else.
Thus I have no idea what's happening. Could it be related to swarm usage ? I have very little experience with it.

I'm pretty sure Swarm is working fine here, database is reachable (through internal Docker network, on same machine or another one, the error may appear) while Seafile container is starting. I'm thinking about 2 possibilities:

Maybe is a Seafile bug, with a race condition when credentials are checked.
Or may be related with usage of docker_entrypoint.sh, init.sh or launch.sh at this repository, and some action made inside init.sh should be done always and not only on first boot.

This is just a guess, I haven't checked enough to be sure.

Thanks for your time and your hypotheses.
At this point I have no idea on how reproduce this. The above commit mitigate the only behavior I can test (i.e database not reachable) which will probably not help but, well, image will be on the hub soon so you'll see. ^^

Thank you!
Ok, I will check log output when using next releases, no problem.

I am unfortunately also facing this problem now, with the following log output, from what I can tell the same problem as @pedroetb mentions.
Should the "seafile" user be created by Seafile, or exist before the init script?
I understand that the Seafile databases (ccnet, seafile and seahub) are per default created during setup.
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] Local time set to Europe/Berlin
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] Checking permissions
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] PUID not set, using current
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] GUID not set, using current
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] Adjusting identifiers
seafile       | usermod: no changes
seafile       | 2022-01-23T17:46:59+01:00 [Entrypoint] Running launch script
seafile       | 2022-01-23T17:46:59+01:00 [Launch] Making symlink to latest version
seafile       | 2022-01-23T17:46:59+01:00 [Launch] Linking internal configuration and data folders with the volume
seafile       | 2022-01-23T17:46:59+01:00 [Launch] Waiting for db
seafile       | 2022-01-23T17:47:00+01:00 [Launch] Launching seafile
seafile       |
seafile       | Starting seafile server, please wait ...
seafile       | ** Message: 17:47:00.629: seafile-controller.c(621): No seafevents.
seafile       |
seafile       | Seafile server started
seafile       |
seafile       | Done.
seafile       |
seafile       | LANG is not set in ENV, set to en_US.UTF-8
seafile       | LC_ALL is not set in ENV, set to en_US.UTF-8
seafile       | ./seafile-server-latest/seahub.sh: line 220: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
seafile       | Starting seahub at port 8000 ...
seafile       |
seafile       | ----------------------------------------
seafile       | It's the first time you start the seafile server. Now let's create the admin account
seafile       | ----------------------------------------
seafile       |
seafile       | What is the email for the admin account?
seafile       | [ admin email ]
seafile       | Error happened during creating seafile admin.
seafile       |
seafile       |
seafile       | Seahub is started
seafile       |
seafile       | Done.
seafile       |
seafile       | 2022-01-23T17:47:12+01:00 [Launch] Done
seafile       | 2022-01-23T17:47:12+01:00 [Entrypoint] Waiting for termination

To follow up on the logs, here is a section of the logs from the DB during the failed/semi failed initialisation.
seafile-db    | 2022-01-23 17:47:00 3 [Warning] Access denied for user<EMAIL_ADDRESS>(using password: NO)
seafile-db    | 2022-01-23 17:47:00 4 [Warning] Access denied for user 'seafile'@'%' to database 'seafile_db'
seafile-db    | 2022-01-23 17:47:00 5 [Warning] Access denied for user 'seafile'@'%' to database 'seafile_db'
seafile-db    | 2022-01-23 17:47:04 6 [Warning] Access denied for user 'seafile'@'%' to database 'ccnet_db'
seafile-db    | 2022-01-23 17:47:19 7 [Warning] Access denied for user 'seafile'@'%' to database 'seahub_db'

It seems in my case to be some permission issue?

Should the "seafile" user be created by Seafile, or exist before the init script?
I understand that the Seafile databases (ccnet, seafile and seahub) are per default created during setup.

User's created at setup in the same script as the db (here).
Then what happens is the following:

At every Seahub launch, check_init_admin.py script checks the db to know if any admin is present (which returns false if there's a db issue).
Script then looks for an admin.txt file containing the credentials. This file is generated by the init script at initialization and automatically removed afterwards.
Since the file does not exist anymore after initial setup, it launches an interactive prompt which should fail since it isn't an interactive environment.
Admin creation failure is logged and Seahub is launched anyway.

What comes from this process is admin creation can fail without being an issue: for example if db wasn't started at admin check but becomes reachable afterwards.
In summary: this error can be minor (but still unexpected, as written before I don't understand where it comes from) or a symptom of a bigger issue. If everything's working, there's nothing to worry too much about. Else, well...

It seems in my case to be some permission issue?

I think so. Can you open another issue for this specific case? My advise would be to take advantage of the docker tools and wipe everything to start on clean basis. This obviously depends on your installation state (are there data stored, etc.)

Thanks for the detailed explanation! It turns out my issue was that I provided a MariaDB/MySQL user and password during docker DB startup, which should not be set there but instead are managed by the Seafile init, which adds a database user and password itself.
For MariaDB/MySQL only one environment variable is needed, and that's the root password (MARIADB_ROOT_PASSWORD/MYSQL_ROOT_PASSWD). The other error messages were not relevant.


Integrating the GAP help system

I've just submitted PR #7 which fixed an issue with using text help. It now displays the help section starting from the required position. The error with using cat was cause by it not understanding +num for starting display in line num.
GAP help comes in three different formats: text, html and pdf, and its lib/helpview.gi file defines a record HELP_VIEWER_INFO whose entries are corresponding functions to display documentation. One could certainly add there HELP_VIEWER_INFO.jypyter which will perform something Jupyter-specific, but what? Do we want to use text, pdf or html?
To me it seems most natural to open HTML documentation. If one runs Jupyter locally, then actually there is no need in a separate entry of HELP_VIEWER_INFO - it is enough to use SetHelpViewer("browser"); and then help invocation will open the exact location in the file using the default browser (exact location is achieved by using anchors).
Can we use https://docs.python.org/2/library/webbrowser.html to solve this for remote users as well?

@pedritomelenas says that webbrowser is not a good option - is it because it will not open local files, but only external URLs?
If this is the case, we may start to keep manuals for each GAP release and each GAP package release separately, and then HELP_VIEWER_INFO.jypyter may receive the local URL, translate it into the one under gap-system.org and then open in the browser. Note that help pages for Jupyter notebook are also opened elsewhere e.g. on http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Index.ipynb.

Can we please use a more principled approach to this issue?
In my view to get useful help output in the notebook, what we need to do is use the GAPDoc XML in some way, not kludge something around text help or HTML help.
What I would like is to have a (ideally useful) help response in a bubble potentially with a link to more help.
One way this could be achieved is some sort of indexed structure with (pre-processed?) GAPDoc XML that we  can send through to the jupyter notebook. I didn't have the time to implement this yet, and I don't know how much work this is, but it shouldn't be that bad.
As a stop-gap measure, if we can produce a URL (or a list of URLs) for help, one can just serve the current documentation as static files on cloud.gap-system.org (or on the local computer) and we can link to it, or open it just like the browse package does now, but that is only a first step.

The "stop-gap measure" is certainly doable along these lines:
  HELP_VIEWER_INFO.jupyteri := rec (
    type := "url",
    show := function (url)
            DoSomeMagic( Concatenation( "file://", url ) );
            return;
        end);

to open local file or with translating url to some http:// format. Note that this will navigate you to exact location and that one could use html manual with MathJax support.
I haven't looked much at the other approach, perhaps you had more thoughts about it. Obviously GAPDoc can produce html from xml. One could perhaps produce smaller individual html files one per section and not one per chapter as we have now. It should be possible to use XML to produce something else. Here my first concern would be performance, but if we will have preprocessed files, that may be solved. My second concern is about documentation for packages, some of which are not using GAPDoc. Finally, it may be a challenge to work with hyperlinks to other sections of the manual. If we are not going to have them, this will be not better than the text version, and if we do, then we would be essentially reduplicating the html.

Woa this is super ugly.
I was now running with the following hack:
HELP_VIEWER_INFO.jupyter_online :=
    rec(
         type := "url",
         show := function(url)
             local p,r;

             p := url;

             for r in GAPInfo.RootPaths do
                 p := ReplacedString(url, r, "https://cloud.gap-system.org/");
             od;
             Print("<doclink dst=\"", p, "\">\n");
         end
        );

There are of course more issues with this than I could even count.

Help could be installed god-knows where (for packages in particular). The above hack works if one just copies the documentation into the cloud gap publication path appropriately.
if the user decides to install packages in some weird way this breaks.

If we want to keep this we have to make sure in some wa that we make a way to install GAP help in some path so that we can kludge URLs together properly.
Note that I haven't installed the package help for static serving on https://cloud.gap-system.org yet and I also haven't hacked up the kernel to handle  messages.

Here's another issue with inspection: For inspection we need to ask GAP out-of-band for information, and we might already have send a partial command to the kernel. We could start 2 GAP processes, but that's borderline silly. I guess it's time to ditch the wrapper approach and write something better soon...

One could store URL https://cloud.gap-system.org/ in GAPInfo record and make setting it part of the configuration of web hosting for Jupyter notebooks. Maybe HELP_VIEWER_INFO.jupyter_online should be only used in this scenario, while those using GAP locally should just use `SetHelpViewer("browser"); and then we don't have to care about packages installed in non-standard locations as the GAP help system will pick them up correctly.

Amended version of the help viewer that works around the irritating insertion of line breaks:
# This is another ugly hack to make the GAP Help System
# play ball. Let us please fix this soon.
HELP_VIEWER_INFO.jupyter_online :=
    rec(
         type := "url",
         show := function(url)
             local p,r,fn,fd;

             p := url;

             for r in GAPInfo.RootPaths do
                 p := ReplacedString(url, r, "https://cloud.gap-system.org/");
             od;
             fn := TmpName();
             fd := IO_File(fn, "w");
             IO_Write(fd, "<doclink dst=\"");
             IO_Write(fd, p);
             IO_Write(fd, "\">");
             IO_Close(fd);

             Exec("cat","fn");

             IO_unlink(fn);
         end
        );

Right, setting SetPrintFormattingStatus("*stdout*", false) at least saves us from the silly hack above...

Except it doesnt work from setup.g....

With the following patch
--- a/lib/helpbase.gi
+++ b/lib/helpbase.gi
@@ -1007,7 +1007,7 @@ atomic readwrite HELP_REGION do
     if Length(exact) = 0 then exact := match; fi;
     i := exact[1];
     str := Concatenation("Help: Showing `", i[1].bookname,": ",
-                                               i[1].entries[i[2]][1], "'\n");
+                                               StripEscapeSequences(i[1].entries[i[2]][1]), "'\n");
     # to avoid line breaking when str contains escape sequences:
     n := 0;
     while n < Length(str) do

now the result of ?IsGroupRing does not contain escape sequences and looks like
Help: Showing `Reference: IsGroupRing' Help
Maybe the word "Help" should be replaced by "Click here" to be different from the 1st word in the line.

On a 2nd thought, the patch above is from HELP_SHOW_MATCHES in helpbase.gi. Likely we may want a version of HELP_SHOW_MATCHES for Jupyter which will also nicely handle cases when there are several matches. So the patch above should not go to the GAP repository, but kept in mind here.

See some work on this in PR #7, #14, #16 and https://github.com/gap-packages/jupyter-gap/commit/cdfc9a7d4fe47b2b5d33ab86ad33d731bcfcfece

I think what we should consider with my new-ish implementation of how commands are executed is to re-bind the HELP function.
With current master the following thing gives rendered HTML in all it's glory:
rec( json := true
     , source := "gap"
     , data := rec (("text/html") := "HELP"));

I am planning to make a new category IsJupyterDisplayableObj or something like that to wrap this information properly. Then, if a call returns an object in that filter, we can send "rich" information back to jupyter. The rich information will consist of some Jupyter-supported JSON.
Next one can go and make a ViewJupyter and DisplayJupyter and have objects displayed in graphical ways "magically".

Thanks to @alex-konovalov we have a working system now after merging #16. Of course there is still room for improvement, but maybe that could be addressed in a more structured way by issues addressing particular aspects (like popping up a help-bubble).

SetHelpViewer("jupyter_local") does not produce usable links as @alex-konovalov pointed on PR 16. I was not able to change the code so that file://can be prepend to p ... Any clues? Probably jupyter prevents linking to local files.
Also SetHelpViewer("browser") now produces some nasty output:
Error, the command [ 'o', 's', 'a', 's', 'c', 'r', 'i', 'p', 't', ' ', '<', '<', 'E', 'N', 'D',
  'S', 'C', 'R', 'I', 'P', 'T', '\n', 'o', 'p', 'e', 'n', ' ', 'l', 'o', 'c',
  'a', 't', 'i', 'o', 'n', ' ', '"', 'f', 'i', 'l', 'e', ':', '/', '/',
  "Reference", "PermutationCycle",
  "/Users/pedro/lib/gap/doc/ref/chap41.html#X81D4EA42810974A0", '"', '\n',
  'E', 'N', 'D', 'S', 'C', 'R', 'I', 'P', 'T', '\n' ] is not a name.
possibly a binary is missing or has not been compiled.

though in a terminal works as expected. Help viewer screen no longer works either.

@pedritomelenas I will document this, sorry :-)
For jupyter_local the trick is to start jupyter notebook from GAP root directory or symlink doc and pkg into the directory which is served by the jupyter server.
SetHelpViewer("browser") was thought as not needed as superseded by jupyter_local.

Thanks!
Enviado con Aquamail para Android
http://www.aqua-mail.com
El 18 de febrero de 2016 12:08:08 a. m. Alexander Konovalov
<EMAIL_ADDRESS>escribio:

@pedritomelenas I will document this, sorry :-)
For jupyter_local the trick is to start jupyter notebook from GAP root
directory or symlink doc and pkg into the directory which is served by the
jupyter server.
SetHelpViewer("browser") was thought as not needed as superseded by
jupyter_local.

Reply to this email directly or view it on GitHub:
https://github.com/gap-packages/jupyter-gap/issues/8#issuecomment-185450669


Use the Linked List to achieve a FIFO access.

🧐 Motivation
A FIFO access with Linked List in the Solidity.
📝 Details
In my problem, there exists such a situation: I want to store an array structure, such as
    struct PlayerInfo{
        address _account;
        uint256 _ownAmount;
    }

Because I want to push the newest, and pop the oldest,
so there may be an array to store their sequence, such as
   PlayerInfo[] public players;

In my project, recording order is essential.
but when we push in some elements and pop out some elements, we will find that
the first half of the array is empty. so just like in an Array List, in order to use space efficiently,
we would move the second half of the array to the empty position,
such like this:
    for (uint256 i = 1; i <= _length-1; i++) {
        players[i-1] = players[i];
     }
    delete players[_length-1];
    players.length--;

ok, now you will understand what I want to achieve, a FIFO access,
and according to @nventuro 's  advice,
it could be a circular buffer.
(thanks for @nventuro at here!),
but we all know that, every operation in the EVM will cost some gas,
so it should be better to achieve by Linked List,
because it can remove element efficiently,
and this is what I want to find out, because I really would run the function of  delete() frequently.
So now the problem comes out, how to achieve a Linked List in the Solidity?
And what I need likes this:
    uint256 private _total;

    struct PlayerInfo{
    address _account;
    uint256 _ownAmount;
    }

    PlayerInfo[] public players;

    /// @dev This should be equal to push an element in the array list.
    function addPlayer(address _sender, uint256 _count) public onlyOwner returns (bool) {}

    /// @dev This should be equal to pop an element in the array list.
    function removePlayer() public onlyOwner returns (bool) {}

    /// @dev This should be equal to delete an element in the linked list.
    function removePlayerByAddress(address _toRemove) public onlyOwner returns (bool) {}

I thought for a while, and I realize a key point, I want to remove elements by their order,
but why do I must use an array to record, I can make some changes in the struct, such as:
    struct PlayerInfo{
        uint256 _ownAmount;
        address _account;
        address _lastAddress;
        address _nextAddress;
    }

then I can record their sequence without an array, so I should write like:
    mapping(address => PlayerInfo) players;

So all modified code should be:
    address public _currentAddress;
    address public _toRemoveAddress;
    uint256 public _total;

    struct PlayerInfo{
        uint256 _ownAmount;
        address _account;
        address _lastAddress;
        address _nextAddress;
    }

    mapping(address => PlayerInfo) public players;

    /// @dev This is equal to push an element in the array list.
    function addPlayer(address _account, uint256 _amount) public  returns (bool) {
        if (_total == 0) {
            _toRemoveAddress = _account;
        }else {
            players[_currentAddress]._nextAddress = _account;
        }

        players[_account] = PlayerInfo(_amount, _account, _currentAddress, address(0));
        _currentAddress = _account;
        _total = _total + 1;
    }

    /// @dev This is equal to pop an element in the array list.
    function removePlayer() public  returns (bool) {
        address _temp = players[_toRemoveAddress]._nextAddress;
        delete players[_toRemoveAddress];
        players[_temp]._lastAddress = address(0);
        _toRemoveAddress = _temp;
    }

    /// @dev This is equal to delete an element in the linked list.
    function removePlayerByAddress(address _toDelete) public  returns (bool) {
        address _tempLast = players[_toDelete]._lastAddress;
        address _tempNext = players[_toDelete]._nextAddress;

        delete players[_toDelete];
        players[_tempLast]._nextAddress = _tempNext;
        players[_tempNext]._lastAddress = _tempLast;
    }

OK, please just give me some advice, and I will make a standard code
with the version 0.5.x later.

Hey there @Skyge, thanks for opening this! I know @elopio has read lots of awful array-management code while conducting security audits, perhaps you could share some of your learnings and common requirements here?

Ok, I will think my requirements seriously, and then share it.

The biggest problem here is the lack of generics in solidity. This means that if we implement a list for uint256, we will have to implement another one for addresses, and another one for your custom struct.
I think most of our efforts should go towards that first: https://github.com/ethereum/solidity/issues/869

I don't think Solidity will be adding support for generics soon, and would like to at least get an initial implementation for common types, like uint256 and address. A FIFO queue implemented using a circular buffer with read and write indexes sounds like an appropriate MVP for this.

We should implement for address only IMO.
I thought this issue was about linked lists? I don't understand how a circular buffer would work in the EVM where it's not possible (and not reasonable?) to "lock" until a slot in the buffer is available.

I think linked lists would be a useful structure to have in the EVM but the motivation in this issue is not the right one.
It's not necessary to use space efficiently in the EVM because there is effectively an infinit amount of it. A FIFO queue can be implemented by a dynamic array in storage. Rearranging elements is not necessary because you can assume that there is infinit room to grow the array.

Heh, I got carried away with the circular buffer idea.
An array-based FIFO is definitely possible and cheaper in the EVM: we'd just need a read index to read elements (which are deleted, but are still in the array), writing is simply arr.push(). Note that this means that the length of the queue is not arr.lenght but arr.lenght - read_idx.

It's not necessary to use space efficiently in the EVM because there is effectively an infinit amount of it. A FIFO queue can be implemented by a dynamic array in storage. Rearranging elements is not necessary because you can assume that there is infinit room to grow the array.
I am not sure, in my opinion, if I do not recycle space, I think it will be a little weird, because when we delete the first element in an array, array[0] still exists, but its value becomes undefined, so maybe when I try to update an element in the array, I should add a extra requirement require(array[index]!=address(0)), so I think it is a little weird and I want to recycle space.

An array-based FIFO is definitely possible and cheaper in the EVM: we'd just need a read index to read elements (which are deleted, but are still in the array), writing is simply arr.push(). Note that this means that the length of the queue is not arr.lenght but arr.lenght - read_idx.

Yeah, maybe we can try it in this way.

so I think it is a little weird and I want to recycle space.

You do get the recycling of space, since you zero-out the slot. This is roughly what I (and I think @frangio) mean (untested!):
contract FIFO {
  address[] private _array;
  uint256 private _read;

  function push(address value) public {
    _array.push(value);
  }

  function pop() public returns (uint256) {
    require(_read < _array.length);

    uin256 value = _array[_read];
    delete(_array[_read]);
    _read += 1;

    return value;
  }

  function length() public view returns (uint256) {
   return _array.length - _read;
  }

I become a little confused, you said
since you zero-out the slot.

Just like your code, I call pop() to delete the first element, the value of _array[0] change from a specific value to address(0), so although I can still call _array[0], but it does not use any space, does it?

On the EVM, all storage slots exist (they can be read from and written to), and are initialized with 0. Nodes simply keep track of which ones have been written with a non-zero value, and delete slots from that list when you write zero to them. It is because of this that changing a value from zero to non-zero is more expensive than from non-zero to non-zero, and why changing it back to zero refunds gas.

Oh, I see, thanks for your explanation.

@Skyge I think this issue is larger than simply coding a FIFO queue, since e.g. even if we did it for address, it wouldn't be useful for you and your custom data structure. I opened a post in the forum to discuss this and other ideas, come take a look! Closing the issue to continue discussion there.

OK

Hi, @nventuro I can not find the post in the forum, so do we delete it?

@Skyge It had been deleted but I think it was an accident. I have restored it now. Apologies.


Portal wont open

I installed the portal using the docker file and when I tried to hit the page i get HTTP STAUS 404 - NOT FOUND. Can you please help me here?

chrisipa@561d5e883d86:/$ curl http://localhost:8080
<!doctype html>HTTP Status 404 – Not FoundHTTP Status 404 – Not FoundType Status ReportMessage Not foundDescription The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.Apache Tomcat/9.0.8chrisipa@561d5e883d86:/$

Can you post the log file of the Spring boot application? It seems like there was a problem creating the Spring context. My guess is that the connection to the MongoDB is not working properly. It would also be helpful to get your Docker compose configuration file here (please remove any passwords, secrets, etc.).

I just created a docker image from this configuration
mongodb:
image: mongo:3.4.10
volumes:
- /opt/cloud-portal/data:/data/db
tomcat:
image: chrisipa/cloud-portal-server:latest
links:
- mongodb
ports:
- 80:8080
- 443:8443
volumes:
- /opt/cloud-portal/logs:/opt/tomcat/logs
environment:
- 'APPLICATION_TITLE=My Cloud Portal'
- 'APPLICATION_ADMIN_GROUP=my-admin-group'
- 'ENCRYPTOR_SECRET=my-encryptor-secret'
- 'LDAP_BASE_DN=dc=my,dc=domain'
- 'LDAP_GROUP_ATTRIBUTE=memberOf'
- 'LDAP_LOGIN_ATTRIBUTE=userPrincipalName'
- 'LDAP_PASSWORD=my-ldap-password'
- 'LDAP_PRINCIPAL=cn=my-admin-user,ou=users,dc=my,dc=domain'
- 'LDAP_URL_STRING=ldap://my-ldap-server-1:389,ldap://my-ldap-server-2:389'
- 'LDAP_USER_SEARCH_FILTER=(objectClass=inetOrgPerson)'
-<EMAIL_ADDRESS>-<EMAIL_ADDRESS>- 'MAIL_HOST=my-mail-server'
- 'MAIL_SEND=true'
- 'MONGO_DB_URI=mongodb://mongodb:27017/cloud-portal'

Can you post the output of the cloud-portal.log?

Can you please attach the cloud-portal.log file here?

I looked up inside the Server and even inside the Docker Container and could not able to find the cloud-portal.log file. Can  you please help me find it .. like where to look...

I found the location for Cloud-portal/logs but there are no logs inside the folder.

I think now I know what could be the problem. Please make sure to create a underprivileged user to run the cloud portal container. See this url as a reference:
https://github.com/chrisipa/docker-library/blob/master/debian-pom/java-pom/tomcat-pom/tomcat/README.md#preparation-create-a-underprivileged-user-on-the-host-system

I followed the above doc and added right permissions.. but still it did not work...

Can you post the output of the following command here?
docker logs tomcat

I gave up.. I tried all possible ways and it wont work.. Sorry :)


Incorrect RPC reply information with omni_gettransaction

Describe : When get a participate in crowdfunding transactions infomation in c , an error occurs in RPC's reply result in the following situations:

A successful participate in crowdfunding transactions Crowdsale Purchase (tx1)
Close the crowdfunding
Change issuers of crowdfunding assets.

Then retrieve information of the tx1 in information , the txtype will become Simple Send.
Reason of the Error : https://github.com/OmniLayer/omnicore/blob/v0.3.1/src/omnicore/sp.cpp#L318
Because the initial issuer address of the crowdfunding asset is addr1; after change the issuer of the crowdfunding property, the issuer address will be addr2.
When you query the transaction tx1 again, the return value of the function isCrowdsalePurchase is false ,  which causes tx1's txtype to be Simple Send.

@dexX7 ^^

Interesting edge case, thanks a lot for providing this information!


Include documentation in source distribution

The source distribution (as published at PyPI) does not include the documentation source. Please ensure the documentation source is part of each source distribution.

This can be resolved by specifying the documentation source files in the distribution manifest template, MANIFEST.in:
# MANIFEST.in
# Template for Distutils manifest for this distribution.
# Documentation: <URL:https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute>.

include LICENSE.*
include README

recursive-include docs/ *.txt conf.py Makefile make.bat

All fixed and released as 0.4.2.

@mbr, thank you for acting on this.
The change you've made will (unintentionally?) scoop up all files under the ‘docs/’ directory, including non-source files, and put them in the source distribution.
Can you adjust it so that it will match only source files in that directory?

The change you've made will (unintentionally?) scoop up all files under the ‘docs/’ directory, including non-source files, and put them in the source distribution.

I create releases using unleash, which always checks out from a clean commit and does not build the docs before creating a source dist. The published archive contains only the three files in the source tree. It's a trade-off I guess - this way I can't forget to add a different file extension, should the need ever arise, at the cost of accidentally distributing a compiled documentation file.


Instructions should be there to guide the beginners how to play

Prerequisites

[X] I am an Open Source Contributor
[X] I checked to make sure that this issue has not already been filed

Description
As I saw this game for the first time. Even after playing it for many times , it didn't get how to play this game. So, I want that there should be proper instructions for the new users.
Screenshots
No response
Code of Conduct

[X] I follow Contributing Guidelines of this project.

I want to work on this issue under JWOC

Sure, Assigned to you @priyanka1551

@Rakesh9100 please add tag to this issue whether its an easy, medium or hard tag

Labelling Medium tag but will change depending on the LOC and enhancement you make @priyanka1551

Labelling Medium tag but can change depending on the LOC and enhancement you make @priyanka1551

But this is not the criteria. Labelling is done before based on the issue and no mentor can change it depending on the length of code

Labelling is done before, so I labeled as medium but if suppose issue is opened to make the site as dark mode, so this issue will be Medium Level but if mentee only gives toggle button, so it will be easy level, but another mentee who gives button and also customize color depending on the theme and enhances so he/she will get Medium Level. Hope it's clear. @priyanka1551

You work on and don't worry on label. Every mentee will get label awarded as per the work.

You work on and don't worry on label. Every mentee will get label awarded as per the work.

okyyyy

Can you please tell me the condition of wining in this game as I am not getting how to play

This is a time-passing game made by me. It's not about any win or loss. Just if you are bored, then play the game by selecting different different edibles and enjoy.
If you have the idea to make this game to win and loss, then you can create issues in the future.

This is a time-passing game made by me. It's not about any win or loss. Just if you are bored, then play the game by selecting different different edibles and enjoy. If you have the idea to make this game to win and loss or high scores or anything new feature, then you can create issues in the future.

Okayyyyyy ... I will think about this

Just an update. I will make pr by tomorrow for sure.

Okay

@Rakesh9100 Can I add instruction button here?

No, there should be a small i button inside some designed shape like which would flash the instructions when clicked and this button should be visible in every screen.
You can put beside that play pause button, but should be visible in every screen. @priyanka1551

No, there should be a small i button inside some designed shape like which would flash the instructions when clicked and this button should be visible in every screen. You can put beside that play pause button, but should be visible in every screen. @priyanka1551

I am not able to understand where to put this instruction button. Can you show me some example how this should look like?

You can put the simple designed i button in that purple place beside that play pause button, but this button should be visible in every screen. And this when clicked should flash up the instructions in a proper designed box. @priyanka1551

I would like to work on this issue. Would be great you'd assign me with this issue @Rakesh9100

Also I am planning to add a popup window similar to gameover and pause-menu. Would do you say bhaiya? @Rakesh9100

Assigning to you @pooranjoyb Start working

I want to work on this under JWOC

I want to work on this Issue under JWOC


License Discussion

Hey guys,
I am opening an issue to select a license for our project. I suggest visiting choosealicense.com. From there you can browse and present your personal preferences. From there we will discuss the pros and cons of each license preference.
My preference:  MIT License
I chose this license because it is simple and covers the basic usage of our project. We are already using it. I believe the MIT License is a good idea and everyone is familiar with it. It helps our package viewers to understand the copyright rules of our project. In addition, I think the conditions listed in the MIT License serve the purposes of our project well. That is, it allows others to do what they want with our project while retaining the copyright.
we want to make sure the package is available for use, distribution and release. In short, we promote this package as open source. The purpose of this package is not to generate profits, but simply to help users use their time efficiently when performing exploratory data analysis. The MIT License is short and to the point. It lets people do almost anything they want with your project, like making and distributing closed source versions. I think our licenses should be short and to the point. I am not picky if people distribute closed source versions of our package code or want to modify it to suit their needs. Based on this criteria, I believe the MIT license is perfect for our needs

I agree with you @zzhzoe , I think MIT license would be the best suited license for our project. It is short and easy to use and also helps our package viewers to understand the copyright rules of our project. We can go ahead with the MIT license

Agreed, The MIT license is one of the most permissive software licenses out there. The MIT license is a great choice because it allows one to share ones code under a copyleft license without forcing others to expose their proprietary code. And as Zoe mentioned, the license is very short relative to other open source licenses.

I also agree that the MIT license is the best fit for our project. First, this license makes life easier for contributers and users as they are more likely to already be familiar with the condition and limitations of this license. Second, as our project is a package and we would like to let people do almost anything they want with our project, like making and distributing closed source versions, it aligns with our goals.

Final decision: MIT license


CORS check failed on laravel dependency Asm89\Stack

Laravel Version: v9.52.4
PHP Version: 8.1.16
Database Driver & Version:

Description:
The isOriginAllowed function of the CorsService class in laravel dependency package Asm89\Stack is wrongly judged.
Steps To Reproduce:

    public function isOriginAllowed(Request $request): bool
    {
        if ($this->options['allowedOrigins'] === true) {
            return true;
        }

        if (!$request->headers->has('Origin')) {
            return false;
        }

        $origin = $request->headers->get('Origin');

        \Log::info($origin);
        \Log::info($this->options['allowedOrigins']);

        if (in_array($origin, $this->options['allowedOrigins'])) {
            return true;
        }

        foreach ($this->options['allowedOriginsPatterns'] as $pattern) {
            if (preg_match($pattern, $origin)) {
                return true;
            }
        }

        return false;
    }

Log::info($origin);
Log::info($this->options['allowedOrigins']);
[2023-03-18 18:39:51] local.INFO: http://localhost:3000
[2023-03-18 18:39:51] local.INFO: array (
0 => '.xxxyyyzzz.net',
1 => '<IP_ADDRESS>:3000',
2 => 'localhost:3000',
3 => '.xxxyyyzzz.net:60080',
4 => '*.bilibili.com',
)
failed on:
        if (in_array($origin, $this->options['allowedOrigins'])) {
            return true;
        }

cors.php:
'allowed_origins' => ['*.xxxyyyzzz.net', '<IP_ADDRESS>:3000', 'localhost:3000', '*.xxxyyyzzz.net:60080', '*.bilibili.com'],
So both http:// and https:// need to be added here, but the documentation doesn't say that.

Hi, @number201724
First of all. This isn't issue of Laravel framework, and should be closed here. You should ask it in Asm89\Stack.
Second. The problem is you use wrong configuration. allowedOrigins designed to specify exact match, and not a partial. So you should place http://localhost:3000 and not just a 'localhost:3000' (pay attention on schema). In you need a partial match? like in '*.bilibili.com', then you should place in allowedOriginsPatterns config in form of preg expression '/.*\.bilibili\.com$/'.

Hi, @number201724
First of all. This isn't issue of Laravel framework, and should be closed here. You should ask it in Asm89\Stack.
Second. The problem is you use wrong configuration. allowedOrigins designed to specify exact match, and not a partial. So you should place http://localhost:3000 and not just a 'localhost:3000' (pay attention on schema). In you need a partial match? like in '*.bilibili.com', then you should place in allowedOriginsPatterns config in form of preg expression '/.*\.bilibili\.com$/'.

Ok, but hopefully this is done in the docs, otherwise it's easy to get people wrong.


Remove warnings

Some things i noticed while doing #10.
There's still one more warning about https://github.com/alpmestan/taggy/blob/master/src/Text/Taggy/Types.hs#L126 defining list but not using it. I'm not sure which way you wanted to go here. Only the type is exported, and list isn't used anywhere in the module so the warning makes sense.
Did you want to export this function as well, or just remove the name?

Hi,
First thanks for the patches! I think we can safely not export the list field accessor, yeah.
It seems there's one last build error though, could you take a look at it or do you want me to?
Cheers. Once this is all settled we can merge and make a new release, even just for the sake of 7.10-compatibility.

Sorry, the failure is because I wasn't thinking about backwards compatibility. I'll add CPP conditionals as @fmap  suggested if we're all good on that.

Up to @alpmestan.

That would be great, if you don't mind! The "price" to pay to remove that warning is (I think) worth it. Thank you!

So it turns out that with the CPP extension, (/*) is interpreted as the start of a block comment. This means it's viewed as starting a comment, but never ending one. So it's a compilation error wherever it's used.
I don't think the api should have to change just to alleviate some warnings, so I'm just going to close this PR. #10 is still pertinent though

@alpmestan How would you feel about deprecating the Combinators module? IMO the lens interface is superior in every way

I don't really care as I don't use it and indeed use the lens interface. I however think it's nice to have it there for people who are not too much into lenses. Thoughts?

Lenses can be pretty alienating at first. But I feel the taggy-lens documentation covers enough common use-cases for it to be accessible while shying away from its insides, hopefully gaining some confidence along the way. Is there some other perspective I'm overlooking?


No metrics logged when using wandb integrations of sb3

When I run sb3_job_script https://github.com/MyoHub/myosuite/blob/main/myosuite/agents/sb3_job_script.py  using wandb integrations, it didn't report a warning or error, but in the wandb website there is no metrics logged.
I tried with other framework, e.g., torchrl_job_script https://github.com/MyoHub/myosuite/blob/main/myosuite/agents/torchrl_job_script.py, and the metrics could be logged.
I am not sure where the problem come from, so could you help to figure out?

I also notice that in the process of learning, log information seems not to be printed or saved.

I guess there is some problems with the using of logger, I am a littled confused, looking forward to your help.

Hey @XiaobenLi00. Thanks for the question.
I defined the tensorboard_log directory to be within the wandb folder, and that fixed things for me. I now see metrics within the wandb app where I didn't before.
Specifically, when instantiating the PPO (or SAC) model in sb3_job_script.py, I included tensorboard_log=f"wandb/{run.id}" as an argument.
Does this work for you?

@jamesheald Thanks a lot for your reply, this seems work for me.
By the way, I want to save env videos during learning. But it seems neither EvalCallback nor monitor_gym=True works. I also tried VideoRecorderCallback from https://stable-baselines3.readthedocs.io/en/master/guide/tensorboard.html and it also fails and issue an error 'NoneType' object has no attribute 'transpose'. I have no idea about this and may need your help.

I am also wondering that is it OK to call model.set_logger after model.learn, would it cause problems?

I also find that the num of steps is small, how should I to adjust this?

@jamesheald Thanks a lot for your reply, this seems work for me. By the way, I want to save env videos during learning. But it seems neither EvalCallback nor monitor_gym=True works. I also tried VideoRecorderCallback from https://stable-baselines3.readthedocs.io/en/master/guide/tensorboard.html and it also fails and issue an error 'NoneType' object has no attribute 'transpose'. I have no idea about this and may need your help.

The monitor_gym flag automatically logs videos that are generated, but videos need to be generated by another process, such as VideoRecorderCallback (which you tried) or an environment wrapper like VecVideoRecorder. The problem is that both of these methods expect the gym environment to have an env.render() function, and the myosuite gym environments don't have this function; in myosuite,  env.mj_render() is used for onscreen rendering and env.sim.renderer.render_offscreen() is used for offscreen rendering. You may be able to create a gym wrapper that allows you to use VideoRecorderCallback or VecVideoRecorder. Alternatively you can manually save videos, as shown in the tutorial here.

I also find that the num of steps is small, how should I to adjust this?

If you're using the provided config files, https://github.com/MyoHub/myosuite/tree/main/myosuite/agents/config, you can adjust it there, or alternatively you can specify it directly as an argument to model.learn, for example:
model.learn(total_timesteps=1_000_000)

@jamesheald Thank you very much indeed for your answer!
I have understood how to record videos by defining wrapper and I will try.
I did have a problem which is not related to this issue very much.
I am wondering what roll_out mean in the learning process, I can see it in the log information but I am not sure what it actually means.
In my exp, I use
callback += [EvalCallback(max(job_data.eval_freq // job_data.n_env, 1), eval_env)]
callback += [InfoCallback()]
callback += [FallbackCheckpoint(max(job_data.restore_checkpoint_freq // job_data.n_env, 1))]
callback += [CheckpointCallback(save_freq=max(job_data.save_freq // job_data.n_env, 1), save_path=f'logs/',
                                            name_prefix='rl_models')]
# callback += [VideoRecorderCallback(eval_env, render_freq=max(job_data.render_freq // job_data.n_env, 1))]

and config
# PPO.learn function
total_timesteps   : 2000000
log_interval      : 10000

render_freq : 100000
eval_freq : 100000
restore_checkpoint_freq : 100000
save_freq : 100000

Then I got logs in wandb like this:

I am wondering why there are 50 steps in the chart, how to adjust this number, it seems not related to the parameters in the config file. What if I want to use much denser time intervals?

Hi,
You should change the x-axis to global steps to sync to the training steps. I suggest you reading the SB3 training documentations for more information on the use of each parameter: https://stable-baselines3.readthedocs.io/en/master/modules/ppo.html

@jamesheald @cherylwang20
Thanks a lot for your kind help!

Hi @cherylwang20 @jamesheald
Thanks for your kind help.
I read the sb3 docs and try to follow your suggestions. But I still have problems with the log info.
When log info to tensorboard, self.logger.dump(step=self.num_timesteps) is called after self.logger.record
self.logger.record("time/iterations", iteration, exclude="tensorboard")
if len(self.ep_info_buffer) > 0 and len(self.ep_info_buffer[0]) > 0:
    self.logger.record("rollout/ep_rew_mean", safe_mean([ep_info["r"] for ep_info in self.ep_info_buffer]))
    self.logger.record("rollout/ep_len_mean", safe_mean([ep_info["l"] for ep_info in self.ep_info_buffer]))
self.logger.record("time/fps", fps)
self.logger.record("time/time_elapsed", int(time_elapsed), exclude="tensorboard")
self.logger.record("time/total_timesteps", self.num_timesteps, exclude="tensorboard")
if len(self.ep_success_buffer) > 0:
    self.logger.record("rollout/success_rate", safe_mean(self.ep_success_buffer))
self.logger.dump(step=self.num_timesteps)

but in the plots of wandb, the x-axis is just the num of steps instead of self.num_timesteps

Do you have any suggestions?
BTW, it seems that the info is just logged each rollout, thus the time interval is too large, so how to get denser log info?
Looking forward to your suggestions!


Not Skipping Ads

Script version
5.7
Describe the bug
Whenever an ad starts, it just plays fast-forwarded but in loop and the video does not play until you press the skip button (whether it appears that is)
Expected behavior
It should just skip the ad or remove it
Desktop (please complete the following information):

OS: Windows 10
Browser Chrome
Version 22H2

I'm in the same situation.
Please fix ♥


consumer parameter can not passed to provider side

[x] I have searched the issues of this repository and believe that this is not a duplicate.
[x] I have checked the FAQ of this repository and believe that this is not a duplicate.

Environment

Dubbo version: 2.7.7
Operating System version: Mac
Java version: jdk 1.8

Steps to reproduce this issue

configure consumer in xml file
<dubbo:reference id="demoServieRpc" interface="com.aop.demo.demo.dubbo.DemoService" group="ceshi" retries="1">
<dubbo:parameter key="hide" value="1" hide="true"/>
</dubbo:reference>

public interface DemoService {
String sayHello();
}

define a filter in provider side
@Activate(group = "provider")
public class HideParameterFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
String hide = invoker.getUrl().getParameter("hide");
System.out.println("context" + RpcContext.getContext().getAttachment("hide"));
System.out.println("隐式参数" + hide);
return invoker.invoke(invocation);
}
}
and we also create a file named "org.apache.dubbo.rpc.Filter" under META-INF/dubbo folder, and file content is
hideParameterFilter=com.aop.demo.demo.dubbo.HideParameterFilter

configure service in provider side
<dubbo:service interface="com.aop.demo.demo.dubbo.DemoService"
ref="demoService" executes="10" group="ceshi" filter="hideParameterFilter"/>

Pls. provide [GitHub address] to reproduce this issue.
Expected Result
then consumer invode sayHello(), in provider side, hideParameterFilter should print 1.
Actual Result
hideParameterFilter print null.
Just put your stack trace here!

Guys, please help me figure it out, thanks a lot.

<dubbo:parameter is parameter configuration.
You can use RpcContext.getContext().setAttachment("index", "1") to implicitly pass parameters:
http://dubbo.apache.org/en-us/docs/user/demos/attachment.html

I'm also confuse about the dubbo:parameter , it doesn't seem to work,
sometimes we don't want to use RpcContext explicitly, but want to configure extra-param through a configuration file.

I'm also confuse about the dubbo:parameter , it doesn't seem to work,
sometimes we don't want to use RpcContext explicitly, but want to configure extra-param through a configuration file.

Like @DIscord010  said <dubbo:parameter> is a parameter configuration, which is used by Dubbo to config RPC properties. It is the same like retries properties in <dubbo:reference>. The only way to pass implicit parameters is using RpcContext.getContext().setAttachment.

I'm also confuse about the dubbo:parameter , it doesn't seem to work,
sometimes we don't want to use RpcContext explicitly, but want to configure extra-param through a configuration file.

Like @DIscord010 said <dubbo:parameter> is a parameter configuration, which is used by Dubbo to config RPC properties. It is the same like retries properties in <dubbo:reference>. The only way to pass implicit parameters is using RpcContext.getContext().setAttachment.

I get it now, thanks！👍


Python: Enforce type checking

Closes #314
Please verify that:

[x] The PR has a clear title and a concise summary of the changes (Use the present tense and imperative mood for your descriptions)
[x] Related issues are linked using Closes #number
[x] Code is up-to-date with the main branch
[x] There are no linting or formatting errors
[x] There are new or updated unit tests validating the change

(in this case I'm considering the lint-staged.js/CI pipeline integration as part of the last checkpoint :sweat_smile: )
For Maintainers
Please ensure:

[ ] The PR is linked to an issue and both are assigned to the same person
[ ] The PR is labeled as either 'feat', 'bug', or 'chore'
[ ] The changes have been approved by a reviewer
[ ] The contributor checklist is fully addressed

Hi @jamesL92,
First of all, great initiative. Thank you for bringing this up and implementing it 💯.
I wanted to inform you that we've made changes to the ConfigSchema in the TypeScript package. I currently have an open PR to implement these changes in Python. We aim to merge the new ConfigSchema implementation in Python as soon as possible to align the SDKs. Since there will be conflicts with this PR, I would appreciate it if you could conduct a code review on my PR first.
Once the new schema is merged, we'll return here and push it forward together.

Hi @jamesL92,
The new ConfigSchema PR has be released 👍  Thanks for your CR 🥇
You can now update this branch and continue working on it.
Let me know if there's anything I can help you with here.
Thanks,
Ron

@jamesL92 @RonConfigu archiving this for now :)


[lc-431] - Remove HATEOAS pattern from search functionality, replace …

…with direct calls to requried CSRS endpoints, performance fix

Good to go into release F after positive test results


Concurrently read and accept UDP packet

Queue accept and buffer read.
Read performance optimization is not included in this PR.
Reference issue
Fixes #190
~Requires https://github.com/pion/transport/pull/58~ merged

@adwpc @Sean-Der please take a look.

Queue accept and buffer read.
Read performance optimization is not included in this PR.
Reference issue
Fixes #190
~Requires pion/transport#58~ merged

Awsome！Concurrently read fix #190 and buffer maybe reduce cpu cost？

@adwpc packetio.Buffer is introduced to asynchronize inner connection and accepted connections. Read syscall is still called per packet. so, I guess it doesn't make large performance change.


Serenity.Services.ValidationError: '2017-12-20 is not a valid field name!'

i have date column with varchar(8) and data like 12122017etc
and in the grid i showed it as 12/12/2017 using query and i applied # date quikfilter on date column and when am performing filterting using the datequickfilter it shows
Serenity.Services.ValidationError: '2017-12-20 is not a valid field name!' how to overcome and how to perfoem filtering i.e when am selecting date from the datequickfilter the grid has filter based on that date

T4 transform templates and rebuild !

@brunobola  it's not working showing same errror.

You can't use varchar column as date, use proper date.


Implement eth_sendRawTransaction over RPC

An important component of this is to add a Local Broadcast Transaction Queue
This queue of transactions should exclusively contain transactions that were broadcasted locally (eg~ over json-rpc's eth_sendRawTransaction).
The queue should persist across Trinity sessions, broadcast to all peers, and be immune to local transaction pool eviction strategies.

Related to #26

Should we add this to the beta milestone?

Yeah, seems like MVP to me, good catch.

This landed with #1855 but some of the discussion was moved over to #1887


Empty type name in warning when expected prop type is a custom class

Vue version
3.2.45
Link to minimal reproduction
https://sfc.vuejs.org/#__DEV____SSR__eNp9UstO6zAQ/ZW53rRI1Na9FzZRi0CwYIPEoktvQjJtA/FDHqcFRfl3Jm5SoEA3iWbO8Zwzj1bceC+3DYpMzKkIlY9AGBt/pW1lvAsRWgi4gg5WwRmYMHVygB7ebuucaICkGmL5TB+cW2f8gdAHvRrD2hbOUoTKbvO6Kh+D88s3j7AAizu4yyNOz0bOT4xBazpZbiqCtUOCHdb1hB/N1b4T7oGDiMbXXI4jgPnmb/oD3DPZwc6FuvyTEDVAKUius4gUF1ocWdRCMXGuDoXFudg3OzO55+ad5Wm2qdYAkBYZpEyf4wH0sRabGD1lSjXWv6xl4Yy6ZkyFxsbK4Kx05vq//CcvLlVZUfycl0hm9hTcjjCwohbnn4orTm4xzALaEgOGk2JH3C+CR9g30V6z07bjAYyb/f2OTh7Lfs+eJ0y83xJXlcV+3jRNU+sXkY0VWPDUknVcMhvadl9O9m+loTV0bPXr1j4ssG18TTZZO2/qCEUyO5pOLpLJ0BTRhSkXPBs3GvkCk8IC+HsYSvcOOMAsfg==
Steps to reproduce
Juggle between passing the invalidPropType and validPropType to the component and observe the warning message
What is expected?
The warning message should contain the expected class' name
What is actually happening?
Warning message contains an empty string
System Info
No response
Any additional comments?
The issue comes from the getType function ( https://github.com/vuejs/core/blob/54b6ba32cafcc41fa9b7b85f1f1a306923204177/packages/runtime-core/src/componentProps.ts#L560 ) attempting to match the toString() result for a function keyword. This fails for classes since they return a class [NAME] {} when stringified. Couldn't we just use ctor.name here? It returns Object when passed an object, Array when passed an array etc, I don't know if it's widely supported though

https://vuejs.org/guide/typescript/composition-api.html#syntax-limitations
Also see #4294

Already realized my mistake, sorry about that.

This function returns an empty string for custom classes because MyClass.toString() does not match the regexp when using real native ES6 classes. Should be easy enough to extend this to also work for custom classes.
https://github.com/vuejs/core/blob/f3e4f038bf299794b2ca4750b4678074660113c8/packages/runtime-core/src/componentProps.ts#L559-L562


not able to get/retrieve Custom fields status

We're able to get most of the fields from your code except the custom fields, is there any way to retrieve/get all custom fields status such as "Automation Status", "Automation Assignee", "QA-Assignee" from this api-warper?
Many thanks in advance.

Hi @cyrusG123. I wasn't able to implement a clean solution for the custom fields while I was developing this, and no longer have TestRail access to continue development.
That said, all of the object data is stored in the _content dict, which you can access directly with something like this:
automation_status = test._content.get('<automation status custom field key>', None)
automation_assignee = test._content.get('<automation assignee custom field key>', None)
qa_assignee = test._content.get('<qa assignee custom field key>', None)

Hope that helps. If it doesn't, let me know and I can dig in more

Thanks, Levi for your quick response. I tried but getting None for all, perhaps I'm not doing it right or don't know how to get the automaton customer fields key.
client = traw.Client(username='username', password='passwrod', url='url)
test = client.project(30)
for x in range(1, 7):
print (test._content.get(x, None))
Results:
None
None
None
None
None
None
None
Many thanks in advance.

Which object are you trying to get the custom fields for, test objects?
If so, try something like this:
from pprint import pprint as pp
import traw

client = traw.Client(username='username', password='passwrod', url='url)
project = client.project(30)

new_run = client.run()
new_run.name = "Example run"
new_run.include_all = True
new_run.project = project

run = client.add(new_run)

for test in client.tests(run):
    pprint(test._content)

That should print out the _content dictionary. Look in it for your custom fields, which should have keys like custom_qa_assignee.
Once you know the key names, you should be able to access them as outlined above:
qa_assignee = test._content.get('custom_qa_assignee', None)
Let me know if that helps

Thank You, tried that and it returns value 1, not name, we do. have these option for  automation_status:
automation_status:

Code Reviewed
In Progress
Automated
etc..

print (test._content.get('custom_automation_status', None))
Result:
custom_automation_status: 1

Awesome, we're close. Try this:
for test in client.tests(run):
    automation_status = test._content.get('custom_automation_status', None)
    if automation_status:
        print (client.status(automation_status))

I do really appreciate it, I tried that before but it gives me the below, instead of actual value, I believe these are the keys.
Status-10
Status-7
Status-7
Status-7
Status-10
Status-10
Status-10
Status-8
...

Alright, getting closer, try this:
for test in client.tests(run):
    automation_status = test._content.get('custom_automation_status', None)
    if automation_status:
        status = client.status(automation_status)
        print(status.name)
        print(status.label)

the automation_status does return all other fields, not match the 'custom_automation_status' field, using the name to print the object like below, as I can see, passed, and defer status are not part of status of 'custom_automation_status' field.
for test in client.tests(run):
automation_status = test._content.get('custom_automation_status', None)
if automation_status:
x = client.status(automation_status)
print(x.name)
custom_status6
custom_status4
custom_status6
custom_status7
custom_status3
retest
defer
custom_status6
passed

for test in client.tests(run):
automation_status = test._content.get('custom_automation_status', None)
match = re.search(r'Code_approved', str(automation_status))
if match:
    status = client.status(automation_status)
    print(status.name)
    print(status.label)
else:
    print('did not find match')

Result:
did not find a match
did not find a match
did not find a match
did not find a match
did not find a match
did not find a match
did not find a match
...

since the first option in custom_automation_status start with 1, 2, 3 correspondings/maps to the text  I've created a dictionary to map the key value to the text and retrieve them as below:
auto_run = client.run(15)
tests = list(client.tests(auto_run))  # Expand the generator to a list
dic = {1: 'Under-Code-Review', 2: 'Code-Approved', 3: 'InProgress', 4: 'Automated'}
    for case in tests:
        automation_status = case._content.get('custom_automation_status', None)
        print(dic.get(automation_status))

Results:
In-Progress
Under-Code-Review

...
Many thanks for all the help Levi, much appreciated.


if this first line start with '-' in *.md file, report " invalid YAML delimiter" error

hugo v0.104.3+extended darwin/amd64 BuildDate=unknown
if this first line start with '-' in *.md file, report  invalid YAML delimiter error when execute hugo
the error occurrence at
here

if this first line start with '-' in *.md file, report invalid YAML delimiter error when execute hugo

Is the error message wrong? How do does this md file start?

it is a legal markdown file.

Yea, but it's not a valid Hugo Markdown file. I will keep this issue open, but it only gets fixed if the fix is really simple, which I suspect it would not be. The thing is
---
foo

Is also a valid Markown file, but it's certainly not valid front matter.
I suggest that you either don't start your markdown with one of Hugo's delimiters, or your just put empty front matter at the top:
---
---


feature: add option to disable Inject node button

I've just created a flow that needs to run on a schedule every day. It must not be run manually as that could lead to duplicate processing/data.
Rather than install a 3rd party cron node, I've used the core Inject node which is certainly up to the job. I have set the name of the node to 'DO NOT RUN MANUALLY' to remind me (and others in the team) not click the inject button.
It would be useful to have an option to disable the Inject node's button for this use case.

If this is open to suggestion...
I often wished the inject had an "Are you sure " [cancel] [confirm] feature.
This is very common on HMIs and touch screens in engineering environments mainly for accidental presses but also a way of informing the user/supervisor/maintenance guy "take care, here be dragons"

I would say two new features:

An option to disable the injection button (for user)
An option (that devs can use) to validate the press (Steve's notification)

So the editor is now the HMI ? .... hmm no ! (but yes here be lots of dragons! )
I think I did create an inject with option to disable button about 5 years ago ! but never made it into core :-) - the option only appeared if the fire at start or repeat options were enabled.

The scope of this item is strictly what I described above - having an option to disable the inject button to avoid accidental triggering. My use case has no need for an are-you-sure prompt so not something I'm going to spend my time on.


Dependabot fails to update same dependency in same pull request

Is there an existing issue for this?

[X] I have searched the existing issues

Package ecosystem
pip, pipenv
Package manager version
No response
Language version
No response
Manifest location and content before the Dependabot update
No response
dependabot.yml content
No response
Updated dependency
No response
What you expected to see, versus what you actually saw
Dependabot created two PR's for same dependency update:

https://github.com/Taxel/PlexTraktSync/pull/1209/files - updates requirements.txt
https://github.com/Taxel/PlexTraktSync/pull/1216/files - updates Pipfile.lock, and python_version < '4' to python_version < '4.0' changes already reported as https://github.com/dependabot/dependabot-core/issues/6091

it used to manage this nicely and update both files in same pull request. sometimes it fails, i have not yet determined the pattern.
Native package manager behavior
No response
Images of the diff or a link to the PR, issue, or logs
No response
Smallest manifest that reproduces the issue
No response

Looking at your dependency files, I think there's two issues here:

In presence of Pipfile and Pipfile.lock file, a requirements.txt file should be considered just as another lock file, and don't get updated directly, but just be updated to follow Pipfile.lock changes. So no PRs should be proposed for you unless you configure allow: [{ dependency-type: "indirect" }] in your dependabot.yml file.

If allow: [{ dependency-type: "indirect" }] was configured, you should indeed get just one PR with both updates included, not two.

@deivid-rodriguez so, if I got you correctly, do I need to do this?:

https://github.com/Taxel/PlexTraktSync/pull/1218

i'll  go with all then. thanks

I've merged that, but now it still updated only one file, requirements.txt this time:

https://github.com/Taxel/PlexTraktSync/pull/1226

oh, wow, it created the second PR already so soon:

https://github.com/Taxel/PlexTraktSync/pull/1232

I started looking at this in the debugger and it looks like it's possibly an issue in the resolver_type method which basically picks which package manager we think is being used. In my tests it keeps picking plain pip based on the fact that it is finding a possible update in requirements.txt before finding the Pipfile update.
I'll keep pulling on this thread and see if I can come up with a solution.

This is not the first time we've run into problems with trying to guess which package manager is being used within an ecosystem. From a product perspective IMO we should reconsider if it might be more straightforward for us to ask users to specify the specific manager for any ecosystem with more than one possible package manager. We probably could pick a default for every ecosystem. This would also pet users specify more than one package manager if they wanted to track updates multiple paths. Anyway, a discussion beyond the scope of this particular issue but wanted to mention as a recurring thread I've seen.

(the other recurring thread I've seen is the confusion resulting from python treating requirements.txt as both a manifest and a lockfile. Life would be simpler if they had an officially-blessed lockfile that all package managerd generate towards...)

Another example:

https://github.com/Taxel/PlexTraktSync/pull/1259
commit: Taxel/PlexTraktSync@e39cddf (#1259)
requirements.txt bumped 3.0.33 to 3.0.36
Pipfile.lock - stayed at 3.0.33: https://github.com/Taxel/PlexTraktSync/blob/e39cddfc2799d06e88425dbd644881f7c53452da/Pipfile.lock#L136

Yeah, our logic here is a little fuzzy and doesn't really work for transitive dependencies. Basically since prompt-toolkit is a transitive dependency, we don't see that it needs to be updated in the pipenv environment because it is not in the Pipfile. When we're detecting which package manager we're operating as we only consider the "manifest" files currently, which we classify requirements.txt as a manifest file. Since the dependency doesn't occur in Pipfile we choose pip instead of pipenv and perform the update only on requirements.txt instead of choosing pipenv which would then updated both.
I'm attempting to improve this logic to prefer pipenv over pip in the presence of a Pipfile even if the dependency doesn't occur in said Pipfile. Hopefully will have a PR in the next day or so. Basically the current assumption is if there is a Pipfile and a requirements.txt the requirements.txt is probably managed directly with pip and not generated from the Pipfile. My approach is going to be to change this assumption to be if there are both files in the repository, assume the requirements.txt is generated from pipenv until shown otherwise.

ok, so for me workaround is to just add all dependencies to both files. the requrements.txt is just a dump of pipfile.lock anyway in that project.

And now there's another problem: It updates other unrelated dependencies as well:

https://github.com/Taxel/PlexTraktSync/pull/1266/files

The PR is about "Bump certifi from 2022.9.24 to 2022.12.7", which it happens to update Pipfile, Pipfile.lock, requirements.txt. so far so good.
but it also updates prompt-toolkit==3.0.36; python_full_version >= '3.6.2', which there was prior PR already:

https://github.com/Taxel/PlexTraktSync/pull/1259

I'm not seeing the prompt-toolkit update in that PR? In requirements.txt it just seems to be removing the python_full_version from the prompt-toolkit line not changing the version? So it seems this is just another example of your issue https://github.com/dependabot/dependabot-core/issues/6091? Or am I missing another update to prompt-toolkit in that PR?

it was in the previous push:

@dependabot dependabot bot force-pushed the dependabot/pip/certifi-2022.12.7 branch from 36243f3 to 8e5462c 1 hour ago

How do I add items with markers to Pipfile?
i.e requirements has:
attrs==22.1.0; python_version >= '3.5'

I'm trying to work around that dependabot updates Pipenv files as well files in this PR:

Taxel/PlexTraktSync@022256a (#1301)

Since there was already marker in Pipfile.lock:

https://github.com/Taxel/PlexTraktSync/blob/3f5fa8b8be02d4613304c233af138ba58f43ac6f/Pipfile.lock#L27-L34

I only added line to Pipfile without markers

https://github.com/Taxel/PlexTraktSync/commit/f3a5e2de7373b592767f34b13740df398210e0a9

Closing out as stale

Some kind of problem still there. Need to add all packages to Pipenv to avoid some buggy behavior:

https://github.com/Taxel/PlexTraktSync/pull/1983


fix: Fix Windows support

Summary:
The react-native-windows repo provides Windows build target support to React Native projects. It provides AsyncStorage support through the module name AsyncLocalStorage (exact file is here) but commit 547445c148b18be8bd1476d418e6f3318587b5cb removed the reference to NativeModules.AsyncLocalStorage from this repo which broke Windows support. This PR adds that back in.
Test Plan:
Green CI

Hey @sbeca, thanks for bringing this up!
I've deleted this line as it looked like old-code leftover. I'm happy to bring it back.

Thank you for the review @tido64 and @Krizzu. I have just pushed a new commit that includes both of your recommendations.

:tada: This PR is included in version 1.2.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


A Suggestion to Improve UX

First of all: @nickjmiller thank you so much for your contribution, which is a huge help to me!
May I suggest to consider using the python.testing.cwd setting parameter?
I found in the Output that pytest-fixtures is running on the VS Code project's working directory, which appears to be the same approach the Python extension is taking in order to discover tests - which does not work for the folder structure of my project, so I am using its python.testing.cwd setting in order to point to my test root directory.
pytest-fixtures could provide the option to use python.testing.cwd as well.
Should you want to introduce such an option, I believe it needs to be false by default in order not to confuse existing installations.
Instead, should this suggestion not work with your product vision, the docs could suggest that providing pytest's --rootdir option in pytest-fixtures.extraArguments can help. (For me, this would duplicate settings, as --rootdir and python.testing.cwd would effectively be pointing to the very same location.)

Thank you for the suggestion, I won't have time to work on this soon but when I have a chance I'll add it.


Setup Session State through vuex

not using router in case animations need to happen

won't do separate session store, solved in #2


bug: add ticket button can stay disabled after changing selected date

Reproduction steps
Given: On event page & no date is selected
When:

Click on date
Click on time
Select a quantity
Click change date btn
Re-select a date & time

Then: Quantity picker has old value, but Add Ticket button is disabled (need to change Quantity selection to enable button)
Expected: If qty picker has a value, and a date/time is chosen, add ticket button is enabled.

This is a potential blocker if there's only 1 ticket available & there are no options for changing the quantity selection


SliceZone component is rendering slices in the wrong order in Preview

Versions

@prismicio/react: ^2.0.0-beta.3
react: ^17.0.2
node: 14

When not in Preview, the content is rendered correctly in the correct order. However, when in preview, there are couple of Slices which shouldn't be on the top, appearing on the top.
My SliceZone Resolve
import { SliceZone } from '@prismicio/react';
import SliceCarousel from './slices/SliceCarousel/SliceCarousel';
import SliceKtpHeroSection from './slices/SliceKtpHeroSection/SliceKtpHeroSection';

// code split larger components that are below the fold
const SliceCTASection = loadable(() => import('./slices/SliceCTASection/SliceCTASection'));
const SliceAuthorSection = loadable(() => import('./slices/SliceAuthorSection/SliceAuthorSection'));
const SliceTableOfContents = loadable(() =>
  import('./slices/SliceTableOfContents/SliceTableOfContents')
);
const SliceChapterInfo = loadable(() => import('./slices/SliceChapterInfo/SliceChapterInfo'));
const SliceRichText = loadable(() => import('./slices/SliceRichText/SliceRichText'));
const SliceQuote = loadable(() => import('./slices/SliceQuote/SliceQuote'));
const SliceImage = loadable(() => import('./slices/SliceImage/SliceImage'));
const SliceTextWithIcon = loadable(() => import('./slices/SliceTextWithIcon/SliceTextWithIcon'));
const SliceTableTwoCols = loadable(() => import('./slices/SliceTableTwoCols/SliceTableTwoCols'));
const SliceSectionTitle = loadable(() => import('./slices/SliceSectionTitle/SliceSectionTitle'));
const SliceStoryCards = loadable(() => import('./slices/SliceStoryCards/SliceStoryCards'));
const SliceSpacing = loadable(() => import('./slices/SliceSpacing/SliceSpacing'));
const SliceStoryCardLink = loadable(() => import('./slices/SliceStoryCardLink/SliceStoryCardLink'));
const SliceCodeHighlight = loadable(() => import('./slices/SliceCodeHighlight/SliceCodeHighlight'));
const SliceGridCardList = loadable(() => import('./slices/SliceGridCardList/SliceGridCardList'));
const SliceImageContent = loadable(() => import('./slices/SliceImageContent/SliceImageContent'));

const SliceZoneResolver = ({ slices }) => {
  return (
    <>
      {console.log(slices)}
      <SliceZone
        slices={slices}
        components={{
          cta_section: SliceCTASection,
          ktp_hero_section: SliceKtpHeroSection,
          author_section: SliceAuthorSection,
          table_of_contents: SliceTableOfContents,
          chapter_info: SliceChapterInfo,
          rich_text: SliceRichText,
          quote: SliceQuote,
          image: SliceImage,
          text_with_icon: SliceTextWithIcon,
          table_2col: SliceTableTwoCols,
          section_title: SliceSectionTitle,
          story_cards: SliceStoryCards,
          spacing: SliceSpacing,
          carousel: SliceCarousel,
          story_card_link: SliceStoryCardLink,
          code_highlight: SliceCodeHighlight,
          grid_card_list: SliceGridCardList,
          image_content: SliceImageContent,
        }}
      />
    </>
  );
};

console.log(slices) renders the content in the correct order, however they don't appear in the same order in the browser
I'm getting several warnings in the console.
react-dom.development.js:67 Warning: Encountered two children with the same key, `{"slice_type":"spacing","slice_label":null,"__typename":"PrismicHowToBuildPageDataBodySpacing","id":"261d00221efe0426cb32c3df30de147a","primary":{"spacing":"medium"},"items":[{}]}`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.

That's odd. It sounds like the component keys are causing ordering issues when the preview data replaces the static data.
I'll investigate and get back to you.
Since you are using Gatsby (correct me if I'm wrong), you have access to an id field for each Slice. This is Gatsby-specific, but with that, we could add a prop that lets you use that ID as the Slice's component key. We would still need to find a way to support non-Gatsby usage, however.

@angeloashmore Yes, I think that will be a nice solution for this. We need to make sure to mention in the docs that it's advisable to query the ID as part of the graphql query. Myself I usually just query slice_label and slice_type and often omit the ID.
I just had a look at the source code. The way that you generate the slice is using const key = JSON.stringify(slice);
This means that if I have 2 slices with the exact same info and I don't query the ID, then they would have the same key. For example, a simple Spacing slice. I assume the problem would be solved if we include ID in all of our Slice queries.
A potential solution would be to create the key logic using slice-${slice.slice_type}-${index} -> this is the logic I'm currently using for my custom SliceZone and it's been working quite well for me.

@kb1995 Could you try v2.0.0-beta.7 and let me know if that fixes your issue?
I was able to reproduce the same issue. To fix it, I prepended the Slice's index to the key and kept JSON.stringify, similar to what you suggested. Using the full object in the key makes sure Slices with the same type and index won't have the same key.
(Imagine, for example, you have two Slices with the same type but different content in the fields. If we didn't account for the content fields, the components may not be correctly identified since the keys could overlap.)
I think using this strategy should work for all cases. I did not expose a getKey prop that lets you give a function since that could cause confusion for some users. If we come across this issue again, however, then adding an explicit prop to define your own key may be required.

@angeloashmore I finally came around upgrading the package and from the looks of it, the bug is fixed. Thanks!
I agree - even my case is already an edge case, so I doubt this will be a common case.

Awesome, thanks for testing it out! I'll keep this issue in mind as others start to try out the updated library.


Add second Node CI task to pass on looser update (vs install)

Human made PRs with changed NPM versions should run rush update to update the shrinkwrap.yaml
Renovate and bot made PRs won't have run rush update but should still pass CI
In Github the new nodeUpdate can be a required check, while nodeInstall can be left optional but be a sign to humans that their PRs should be fixed before merging

Spoke offline and found this wouldn't work since master would break as a result of the unchecked in updated shrinkwrap.yaml.


Update for Azure Devops and the new navigation experience?

For example, It seems that it is possible to create a new icon on the vertical navigation bar, as that what Azure DevOps Packages does, but this is not in the docs.

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

ID: 56437af3-75da-d219-5364-9b7927298ece
Version Independent ID: ca01655a-9195-cf92-14b4-77ef66053dcf
Content: Extension Points
Content Source: docs/extend/reference/targets/overview.md
Product: devops
GitHub Login: @elbatk
Microsoft Alias: elbatk

+1 Please update this for new navigation experience

Hi everyone, this is definitely a pain point/area that we need to update. Adding @matthewisabel to add it to his radar. Sorry for the delay here, we know that this doc is out of date and hopefully can get a work item in place.

+1 Please update this for new navigation experience

+1 Please update the with the new information

+1 Please udpate for new vertical navigation!

Any updates?

Please do this, it's a PITA cross-referencing what these mean vs the area I'm actually trying to extend.

Looping through this now, will keep updating in the following PR or another one as I get through the rest of the screenshots: https://github.com/MicrosoftDocs/vsts-docs/pull/4350

Badly need this documentation updated..

@warren2k and shayki5, here's the duplicate issue.
Work is in progress, my friends. Thank you.

Hello all! We've got the ball rolling on these updates! I'll be publishing the first phase of updates to this article today, which includes versioning (with new nav) for Azure DevOps. The first phase includes new content for the "Hubs and hub groups" section. This includes a new section on [adding an icon](https:// docs.microsoft.com/en-us/azure/devops/extend/reference/targets/overview?view=azure-devops#add-an-icon), @j-windsor. This issue is linked to this initial PR, so when I publish, it will automatically close this issue. I've created 4 additional user stories for updated images (for each sub-section that remains within the "Menus and toolbars section": Azure Pipelines, Azure Repos, Azure Test Plans, and Azure Boards) slated for completion by end of January. If you have any questions or concerns, please @mention me. Thank you!


⚠ Avatar API Endpoint has degraded performance

In 2820be4, Avatar API Endpoint (https://avatar.roblox.com/v1/avatar-rules) experienced degraded performance:

HTTP code: 200
Response time: 5202 ms

Resolved: Avatar API Endpoint performance has improved in 66b2b36 after 11 minutes.


Add screenshot field to clean-issue-filters feature

From https://github.com/sindresorhus/refined-github/commit/f19e54bf195cafd375f071636055a95b7a44cfb8#r34246594.

Thanks 🙂


python: add lookup path for flake8 config

Adds additional config path which is fairly common.

Cheers! :beers:


⚠ Bofrost.lu has degraded performance

In 8821aa6, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2507 ms

Resolved: Bofrost.lu performance has improved in 131625d.


Add dims ndims and ndiags to timeqarray

https://linear.app/dynamiqs/issue/DYN-256/qarray-next
TODO ?

[ ] addscalar
[ ] asdense
[ ] assparsedia
[ ] block_until_ready
[ ] elmul
[ ] elpow
[ ] expm
[ ] isbra
[ ] isdm
[ ] isherm
[ ] isket
[ ] isop
[ ] norm
[ ] powm
[ ] proj
[ ] ptrace
[ ] sinm
[ ] sum
[ ] to_jax
[ ] to_numpy
[ ] to_qutip
[ ] tobra
[ ] todm
[ ] toket
[ ] trace
[ ] unit
[ ] vectorized

So I think you're right we probably only want:

[x] dims
[x] ndim
[x] ndiags (as you did is perfect)
[ ] vectorized

And then in another PR we can make a __repr__ that is more aligned with the one of QArray (except for summed time-qarrays where we need to bake smthg nice).

@pierreguilmin I don't think we should support ndiags actually, unless we support it on the whole QArray class. Right now, it is only defined on SparseDIAQArray, making it ill-defined for a generic TimeQArray class.

Right, in practice we should only have it appear when the underlying qarray is sparse. Funnily linked to our discussion on Slack on TimeTree. 😋 I just foresee the __repr__ for which it would be nice to have ndiags for sparse TimeQArrays.

Ok let's keep ndiags for now then, and we can remove it later if we realize it's raising too many bugs.

@abocquet can we add vectorized as well?


entoblastic, distemperment

This pull request was generated by the 'mq' tool
[test]
flake rate: 0.4
logical conflict every: 5
sleep for: 300s
[pullrequest]
requests per hour: 30
deps=[d,e]

/trunk merge


Compare SAPBert type determinations with Nemo-Serve type determinations

Thanks for reporting on this at our Monday meeting, @hyi! I wanted to note that we had some follow-up questions that Chris had:

How do Nemo-Serve type predictions split between these three types? E.g. are all the chemicals ending up in no-biolink-type category?
A SAPBert types vs Biolink types table would be useful
How many NamedThings did BioMegatron return?

I think it's probably worth testing this while we work on #2 and #3, after which it might be worth re-running this comparison to see if the newly trained SapBERT model does a better job than the off-the-shelf model that you've been working with so far.


Use ui5.sap.com instead of sapui5.hana.ondemand.com

Hi @geert-janklaps,
I would suggest to follow Short and Powerful: Convenient URLs for SAPUI5/OpenUI5 CDN and use ui5.sap.com instead of sapui5.hana.ondemand.com.
Best Regards
Gregor

Hi @gregorwolf,
Sounds like a good idea, I'll do the change somewhere around the weekend. (I have limited availability today & tomorrow)
Cheers,
Geert-Jan


Multiple choice aggregate not being normalized to sum to 100%

After the rewite the CP on this multiple choice question no longer sums to 100%, it's been as low as around 93.5% total in the past week as of posting it. https://www.metaculus.com/questions/22303/additional-human-bird-flu-cases-in-us-2024/

Thanks for spotting this.
Closing as complete.

for the record, the issue was introduced last week because I failed to QA a PR well enough.
This is a better fix than before the bug was introduced though.


[DSA]: <IP_ADDRESS> Differnece between searching and sorting algorithms.

Description
Description
Give an introduction and write about differences between searching and sorting alogorithms
Task

[ ] Audio

Note

While requesting the issue to be assigned, please mention your NAME & BATCH NUMBER.
Kindly refer to Issue Guidelines.
In case you see that the issue has already been assigned, try to request for a different task within the same issue.
Changes should be made inside the DSA/directory & DSA branch.
Name of the file should be same as the issue.
This issue is only for 'GWOC' contributors of 'DSA' Domain.

Domain
DSA
Type of Contribution
Audio
Code of Conduct

[X] I follow Contributing Guidelines & Code of conduct of this project.

/assign

/assign

@Muskan-creator Should I unassign this issue to me as there is a limit of 3 so that I can work on more issues?


Add support for SHOW setting_name | ALL

Summary of the changes / Why this improves CrateDB
Added support for SHOW parameter_name | ALL to retrieve one or all session setting value(s).
Checklist

[x] User relevant changes are recorded in CHANGES.txt
[x] Touched code is covered by tests
[x] Documentation has been updated if necessary
[x] CLA is signed

retest this please


attribute created_at missing from Channel response type

Channels don't actually carry a value for created_at in the API.

Okay, then perhaps a bug in the documentation?
https://pnut.io/docs/api/resources/channels

Yes. :)


[QST] deserializeStream() will acquire gpu semaphore，but why serializeStream() do not release the gpu semaphore explicitly ?

https://github.com/NVIDIA/spark-rapids/blob/1a2b17e02f8b39cc34aadbcc43cbfff6a7724e87/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuColumnarBatchSerializer.scala#L49
https://github.com/NVIDIA/spark-rapids/blob/1a2b17e02f8b39cc34aadbcc43cbfff6a7724e87/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuColumnarBatchSerializer.scala#L132
deserializeStream() will acquire gpu semaphore，but why serializeStream() do not release the gpu semaphore explicitly ?
I think release the gpu semaphore explicitly will help increase cpu concurrenty for loading the next batches.
@jlowe @revans2

That is because it is already released.
https://github.com/NVIDIA/spark-rapids/blob/1a2b17e02f8b39cc34aadbcc43cbfff6a7724e87/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuPartitioning.scala#L85
We should document it better and if you want to turn this into a documentation bug I would be happy to fix it. The shuffle code went through a number of iterations to get it to be performant.  Sadly there is a lot of coupling between the serializer and the shuffle code and we need to document it better.
https://github.com/NVIDIA/spark-rapids/blob/1a2b17e02f8b39cc34aadbcc43cbfff6a7724e87/sql-plugin/src/main/scala/com/nvidia/spark/rapids/GpuColumnarBatchSerializer.scala#L73-L76
is the only code in the serializer that works with data still on the GPU.  That code is likely dead code.  I believe I left it in there just as a precaution, but it should be cleaned up a lot.
I hope that this helps.


adatar.io to cardano's developer showcase

Name: ADATAR
Description: Your self-created Avatar on the Cardano Blockchain as a non fungible token (NFT)
Link: https://adatar.io
Source: -
Tags:

game
nft

Thank you for your contribution and for building on Cardano. This PR has been open for quite a while and I would like to give you a little feedback. Projects need 3 reviewer approvals and it seems the project didn't get enough "traction" among the reviewers.
Please note that showcase projects need to provide a unique value from existing showcase items - which is especially difficult with many tokens and NFT or NFT platforms. Feel free to join the discussion here: #243 (or in case you prefer to discuss this not in GitHub please join https://discord.gg/Exe6XmqKDx)
Suggestion: you can add your project to https://github.com/input-output-hk/essential-cardano

Thank you, i added the project to the essential-cardano list now.
Since I haven't seen a project that allows users to generate an NFT themselves without using an image, I thought it would be a good inspiration for developers. In addition, the generated NFTs do not use IPFS and the SVG data are completely in the metadata.


Fix reported bytes

Bytes were not properly reported (it reported absurdly high numbers). It seems that the cause was that the eBPF C structs weren't properly packed at binary level and they were not properly decoded.

Codecov Report

Merging #14 (e25c10d) into main (6b3bf13) will increase coverage by 0.88%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main      #14      +/-   ##
==========================================
+ Coverage   40.04%   40.92%   +0.88%
==========================================
  Files           8        8
  Lines         452      452
==========================================
+ Hits          181      185       +4
+ Misses        258      254       -4
  Partials       13       13

Flag
Coverage Δ

unittests
40.92% <ø> (+0.88%)
:arrow_up:

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

Impacted Files
Coverage Δ

pkg/flow/record.go
12.50% <0.00%> (+5.55%)
:arrow_up:

Continue to review full report at Codecov.

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