PBot Users, People Nodes, Groups

When Ellen goes to enter people in a group, she sees a big list of people who did not attend the Hack-a-Thon and are unlikely to have PBot accounts. Example: Scott Wing. Interestingly, Dori does not see Scott Wing as an option to add to groups.
From Andrew: One possible source of bugs is when I created the very very first pilot version of the database, I put in emails for Persons (well BEFORE we had an account system). So Scott may have an email even though he doesn’t have an account? Or maybe that was cleaned up at some point already.

There is currently no filtering of Person nodes in Person select lists. If there's a node, that name will show up in the list, registered or not.
I'm not sure there's a need for filtering. I don't see a problem with adding a Person who is not registered to a Group. A person setting up a Group can add the people they want without worrying about getting them registered. Later, when somebody previously unregistered then registers, they will already be in the Group.

That said, if we decide we'd rather only show registered users, that's certainly possible.

IMO I think it's fine how it is now (all person nodes are possible). Doug makes a good point that this will help make it smoother for if someone hasn't registered yet and you need to put them in a group.


Added verb in path for filters

Hi...
I'm sorry, I know I'm bothering you every day and after the last one I promised myself I wouldn't annoy you anymore with these small changes but then I realized that the Filter implementation was still not right.
I didn't realize it at first but the way it was previously done before and after filters would be called for all the methods which matched one path, for example:
before "/hello" do
  puts "before hello"
end

Would be called before:

GET /hello
POST /hello
PUT /hello
DELETE /hello
etc...

I don't think this was intended, but if I'm mistaken just close it. Again the changes are very small but I added the verb for each before and after, now you would define it like this:
before "GET", "/hello" do
  puts "before hello"
end

PS: I know you must be busy, I'm sorry.
PPS: I just realized this could be done with macros, and instead of before "GET", "/hello" we would have something like before_get "/hello"

No need to be sorry there :+1:
Good job. Actually this makes a lot of sense.

Aahh cool then :smile: So about the macros ?

Wow, that's a nice catch. I totally agree.
I would make it a bit simpler with macros:
before get "/hello" do
  "hello world"
end

I have never used them before, only read them how should this be written ? I suppose it should go inside dsl.cr ?
Could you help me with the macro ? @f

@sdogruyol says it's kinda wrong syntax, it's better making a function call :)

Having something like before_get before_post or before for every would be ok.

Would this work then?
{% for type in ["before", "after"]%}
  {% for method in HTTP_METHODS %}
    def {{type.id}}_{{method.id}}(path, &block : HTTP::Server::Context -> _)
     Kemal::RouteHandler::INSTANCE.add_route({{method}}.upcase, path, &block)
    end
  {% end %}
{% end %}

Branch is ok.
Could you please add specs for these?

I modified the previous specs, I'm going to add another one, also I'm working on adding the simple before and after which will be called for all.

Now that I think about it isn't before_all a bit more explicit than simply before that would match all the methods ?

Yeah
On Feb 15, 2016 5:52 PM, "jmoriau"<EMAIL_ADDRESS>wrote:

Now that I think about it isn't before_all a bit more explicit than
simply before that would match all the methods ?
—
Reply to this email directly or view it on GitHub
https://github.com/sdogruyol/kemal/pull/96#issuecomment-184267563.

I added a spec, but I couldn't make the before_all and after_all efficiently, it would have meant for each request checking if the route is defined (even though the route handler does it already but route handler is the last middleware) then check if there is an all block then check if there is a block specific for this verb then the route handler would check again if the route exist then all the before checks would have to be done for the after ones, in the end even if I didn't use any all blocks the route would be still checked 3 times and there would also be 2 unecessary checks for all.
So I chose to leave it for now everything works fine but you have to use a verb like before_get, before_post etc...
Maybe someone will find a better way, but for a performant framework this just seemed like too many wasted redundant checks.

That's why we explicitly enable filter with add_filters helper.

I don't know it felt like too much overhead for all those who dont want to use the before_all and after_all but I can add them back if you really like them :/
BTW the add filters doesn't need to be called it's lazily called by before and after

I have a few ideas of how to mitigate the penalty for before_all and after_all I'll try tomorrow if you really want them.

The problem is that it's a trade-off for convenience. If someone wants to use before filters then they need to pay for it.
add_filters is disabled by default so meaning that the normal users won't pay for these convenience.

Let's go for it :+1:
P.S: These needs really good documentation :smile:

Would it be ok if before_all was renamed before_each and had an array of verb like this ?
before_all(["GET", "POST", "PUT"], "/hello") do
   puts "before get/post/put"
end

That way there would be no penalty this would add 3 before_X.

The documentation is on gh-pages branch. Also these methods need some documentation in the code that's what i meant :+1:

Let's prefer simplicity over performance for this. I prefer before_all :+1:

Ok sure, then I'll add the documentation in code/gh-pages and finish this tomorrow afternoon, I gotta go for tonight!

Sure, thanks and good job :+1:

Im gonna close this one and open up a new one with a new branch because it doesn't let me rebase or at least I don't know how.


hasAnagrams servise

Student, group: Ivashkin Artyom, 3530901/90203
URL: https://github.com/Ivashkin-aa/hasAnagrams
Git approach: TBD

There are very confusing problem statements.


Line order reversed in output

The attached diff gets the 2 new lines output in the reverse order of reality.
bad-order-diff.txt
(Tested on the latest git version.)

I just noticed that the "Fix inserted lines to flush" pull request fixes this issue.


Unable to debug extensions when being offline

VSCode Version: 1.6.0
OS Version: windows7

Steps to Reproduce:

Create a vscode extension project.
Pull off the cable to keep offine.
Launch Extension (F5)

I can`t set breakpoint in my source file.
And I find some warn information in Extension Development Host Window :
[Extension Host] Could not find a free port for debugging

I change the code in https://github.com/Microsoft/vscode/blob/master/src/vs/base/node/ports.ts#L61
client.connect(startPort, '<IP_ADDRESS>');
It`s works.   fyi  @vscodeteam.

Sounds like a potential PR
fyi @weinand

Yeah, PR welcome.

@bpasero  https://github.com/Microsoft/vscode/pull/13739

@f111fei can you elaborate why your change is fixing this? If I look at the docs of client.connect I can see that host per default is localhost.  https://nodejs.org/docs/v6.3.0/api/net.html#net_socket_connect_options_connectlistener

localhost can`t be resolved when being offline.  And fyi
https://github.com/daaku/nodejs-freeport/blob/master/lib/freeport.js

@f111fei thanks


Does not work correctly when updating the apex (host @)

The getRecord function loops through the domain_records array and returns the first record it finds where the 'name' field matches, without checking that the 'type' field is 'A'.
This is a problem when attempting to update the @ host, because the Digital Ocean API returns the NS records before the A records for the @ host in the domain_records array. (The @ host is a self-reference to the apex domain, so it's used to update the A record for the domain itself, i.e. example.com.)
Therefore, attempting to update the A record for the @ host results in clobbering the first NS record.
This is fixed in the PHP by simply adding a check on the record type:
if ($record['name'] === RECORD && $record['type'] === 'A') {

Thanks @benjaminblack apologies for the lack of action.


TAudioTranscription size limit

When trying to post a large file, an error triggers "Maximum content size limit (26214400) exceeded (26405554 bytes read)". Is there a way to send the file (and also receive the data back) asynchronously to keep track of the upload/received data? (and not lock the thread while waiting for the response). Thanks

The library is stupid, so you can perform requests in a separate stream, via TThread or via TTask
TTask.Run(
  procedure
  begin
    var Response := OpenAI.Audio.CreateSpeech(
      procedure(Params: TAudioSpeechParams)
      begin
        ...
      end, StreamData);
  end);


Add start command to docker.mk

Is your feature request related to a problem? Please describe.
It is not always needed to update to never versions of containers, you are working without internet connection. Option to start from where you left off would be nice feature to have.
Describe the solution you'd like
Implement Makefile command like this:
## start	:	Start containers without updating.
start:
	@echo "Starting containers for $(PROJECT_NAME) from where you left off..."
	@docker-compose start

Describe alternatives you've considered
At the moment, none, as I already add it to all of my setups.
Additional context

Merged


Disable error throw

Can you remove any changes to dist, yarn.lock, etc. and just include code changes?
Also, can you please make this guarded by a global, like if (__ZOID__.ALLOW_PARENT_CHILD_VERSION_MISMATCH)

I'm thinking we should still validate the major version no matter what. This may require some additional thought...
The problem I want to avoid here is compatibility issues between parent and child, without a clear error message. This is a really easy situation to end up in if zoid adds a new parameter to the interface between parent and child...

The problem in reality is that parent site and children site may be
deployed separately and might be cached, also some changes are really minor
that owner is fully aware of what happening, however the error is a blocker
On Tue, Sep 3, 2019 at 01:20 Daniel Brain<EMAIL_ADDRESS>wrote:

I'm thinking we should still validate the major version no matter what.
This may require some additional thought...
The problem I want to avoid here is compatibility issues between parent
and child, without a clear error message. This is a really easy situation
to end up in if zoid adds a new parameter to the interface between parent
and child...
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/krakenjs/zoid/pull/226?email_source=notifications&email_token=ABF6UMECCZFHS37EGEFVXP3QHVDPDA5CNFSM4HEIKIDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5WJHJI#issuecomment-527209381,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABF6UMCC2Q5IQAWSP5XI7R3QHVDPDANCNFSM4HEIKIDA
.

--
Thangnt


Unexpected component destroyed trigger by sibling component

Version
2.5.17
Reproduction link
https://jsfiddle.net/teddy_scmp/2m6kv3rn/
Steps to reproduce

Open console
click the TOGGLE bottom

What is expected?
It is weird that the component between the two v-if will destroy and mount again
What is actually happening?

AComponent is destroyed which is unexpected
BComponent will keep, which I only added a class there.

In addition, I find that DIV will cause this issue, if I added a class / change it to a tag / button, it won't destroy.

it's because the div is being reused by Vue to create the TOP div.
You can get around it by adding a key to the div wrapping the component a or the TOP div.

@posva 🙏 thanks a lot. The workaround works, it help to prevent the bug in my project.


License For Super-Json

Hi Taruda,
Good day to you.
If i need to use this library for my project, what is the license for this?
Please advise.
Thanks

I forgot to add licensing information, but feel free to send a PR with MIT boilerplate

Hi,
I have sent the Pull Request for license file. can you help to confirm it.
Thanks


Add workflow duplication; don't allow edits of foreign workflows

Related to: https://cccs.atlassian.net/jira/software/c/projects/AL/issues/AL-1988

Please review FR localization 😅


Heroku deployment with its corresponding how-to

Hmmm, I understand the concept. But correct me if I'm wrong, I'm meant to only squash my commits, so I can only squash the last 18 commits, since they're all mine, the older ones can't be squashed since in between more commits have been added from other sources, correct?

True that, you've got some merges in between, it can be solved from your side but it would be more tedious, please be more cautious about it in the future. I believe @fjlopez mentioned he could squash the commits from the PR.
@fjlopez can you confirm you can squash the commits in the PR cleanly? If so, please wait for the PR to be approved before squashing it.

I mean at least I could solve the last 18 commits, not the previous ones though...

I know, those commits were brought to your forked repo by merging the upstream to it. You can squash them, but it is more tedious:

Interactively rebase (rebase -i {{commit-hash}}) to the commit previous to your first commit on this PR.
Reorder the lines so your commits are on the bottom.
Squash them all together.

I'd wait for @fjlopez to see if this PR can be squashed cleanly from Github.
Please take notice that squashing isn't a required task before opening a pull request, committing constantly is a good practice but squashing is also a good practice. To get back to the main point, if you get to implement a feature like integrating the app with Heroku by trial and error, it will only pollute the commit history.

I wasn't aware that you could squash commits, but I understand that it indeed isn't very "clean" to have so many commits, specially when I'm doing trial and error. I'll wait for a definitive answer from @fjlopez. Thanks for the help!

As admin GitHub allows me to do a merge and squash of your previous 25 commits. So I will do it.


[pentest] Cherry-pick Configure extclk

This commit manually cherry picks PR lowRISC/opentitan#22310 and lowRISC/opentitan#22416 as the automatic cherry pick failed.

I was expecting to find 2 commits on this PR as it is cherry-picking two PRs. Were the commits squashed?

I've split the squashed commit back to two separate commits.


Upgrade eks-blueprints to latest 1.1.0 failed

Describe the bug
Got following error when running cdk deploy
The stack named DevEksClusterselvcd1eksblueprintF8115751 failed to deploy: UPDATE_ROLLBACK_COMPLETE: Received response status [FAILED] from custom resource. Message returned: Error: b'Error from server (AlreadyExists): error when creating "/tmp/manifest.yaml": serviceaccounts "ebs-csi-controller-sa" already exists\n'

Check the differences before deploy see that it tried to upgrade EBS CSI and VPC CNI AddOns version
[~] AWS::EKS::Addon sel-vc-d1-eks-blueprint/vpc-cni-addOn vpccniaddOn
 └─ [~] AddonVersion
     ├─ [-] v1.10.2-eksbuild.1
     └─ [+] v1.11.2-eksbuild.1
[~] AWS::EKS::Addon sel-vc-d1-eks-blueprint/aws-ebs-csi-driver-addOn awsebscsidriveraddOn
 ├─ [~] AddonVersion
 │   ├─ [-] v1.4.0-eksbuild.preview
 │   └─ [+] v1.8.0-eksbuild.0

Expected Behavior
Run deploy successfully
Current Behavior
Run cdk deploy failed after set eks-blueprints version 1.1.0
Reproduction Steps
Old eks-blueprints version: 1.0.4 includes addOns VpcCniAddOn and EbsCsiDriverAddOn
Upgrade eks-blueprints version: 1.1.0 with same addOns  VpcCniAddOn and EbsCsiDriverAddOn
Run cdk deploy and get error
Possible Solution
Delete the SA before deploying works
Additional Information/Context
No response
CDK CLI Version
2.33.0
EKS Blueprints Version
1.1.0
Node.js Version
v16.13.0
Environment details (OS name and version, etc.)
Ubuntu
Other information
No response

@vumdao With recent releases and recent updates to VPC CNI and Blueprints, Appreciate if you can try again and let us know if you see this issue again and close it if its resolved.

@vumdao Closing this issue as we didnt hear back and issue is fixed already with latest blueprints.


Display 'nothing' for the empty union type

With this PR we display the name 'nothing' for empty union types. Empty union types can occur when control flow type analysis concludes that there is no possible type for a variable that matches the preceding type guards in a particular code path. For example:
function foo(x: string | number) {
    if (typeof x === "string") {
        x;  // x is of type string here
    }
    else if (typeof x === "number") {
        x;  // x is of type number here
    }
    else {
        x;  // x is of type nothing here
    }
}

The 'nothing' type cannot be explicitly named, it has no members, and no other types are compatible with it.

:+1:


FPS Cap at runtime

Issue details
I would like to request a feature that allows for dynamic adjustments to the FPS cap at runtime in LibGDX applications. This functionality would enable developers to offer users the option to select their preferred FPS cap within the game's options menu, enhancing user experience by accommodating a wider range of preferences and hardware capabilities.
Reproduction steps/code
As this is a feature request rather than a bug report, there are no specific reproduction steps or code. However, the desired functionality would allow developers to use code similar to the following to adjust the FPS cap based on user input:
// Example method call to adjust FPS cap dynamically
Gdx.graphics.setFrameRateLimit(targetFPS);

Version of libGDX and/or relevant dependencies
This feature request is relevant for all current versions of libGDX as of the last version available.
Stacktrace
N/A - This is a feature request.
Please select the affected platforms

[x] Android
[x] iOS
[x] HTML/GWT
[x] Windows
[x] Linux
[x] macOS

I think this is so simple to implement by ourself the consumer coders that consume this libgdx library.
First, you declare a function that takes in the elapsed time between the two frames. So that, later you can pass delta time to the function.
in the render() method of Game class or Screen class.
Let's take one example if you want to limit it to 60FPS, then each elapsed time in between two frames should be 1/60 second or 0.01667. Then, you check if the elapsed time is less than that, you need to add that up so it becomes 0.01667. To get how much you need to add is 0.01667 - elapsedTime, and store it as temporary variable. Meaning, you add the elapsedTime with this temporary variable so it becomes 0.01667 second every frame.
If it is higher you substract by that amount.
I.e elapsedTime-= (elapsedTime-0.01667).
Hopefully, you get the idea.
Then, you just return that number.
Then, you can use that return value in the render() method.

How about Gdx.graphics.setForegroundFPS(int)?


Add initial rust-toolchain.toml schema

First part of #228.
I am hoping to get to .cargo/config.toml next, but it has lots of fields so may take a bit longer.
Please let me know if there's anything you'd like added or changed, I think I got most of the docs (pulled from the rustup book), but may have overlooked or typoed something.

Thanks, looks good to me!

Please let me know if there's anything you'd like added or changed, I think I got most of the docs (pulled from the rustup book), but may have overlooked or typoed something

Ufortunately I don't really have time so I'd rather not review the schema itself. So it's up to you when you think it's ready to be merged, it can always be refined later as well.

Thanks, looks good to me!

Please let me know if there's anything you'd like added or changed, I think I got most of the docs (pulled from the rustup book), but may have overlooked or typoed something

Ufortunately I don't really have time so I'd rather not review the schema itself. So it's up to you when you think it's ready to be merged, it can always be refined later as well.

Understood, I will address your comment about x-taplo docs and give it a once-over. Btw, it looks like there was a CI failure, but it seems unrelated to my change? Just want to verify in case I need to push some change to pass CI.
Related note:

Btw, it looks like there was a CI failure, but it seems unrelated to my change? Just want to verify in case I need to push some change to pass CI.

No, sorry, the CI has been broken for a while, I'm trying to push the new version out today and fix it along with it.

Related note: are there any test cases I should add to actually use the new schema? Even if it's just a basic toolchain file to make sure the schema isn't broken (I've only done manual testing thus far).

The schema should be verified by a JSON schema validator, but other than that there aren't any more specific tests yet.

Ok, I think this should be good to go now. Merge at your convenience I guess?


MM-18356: Update for newly-added ability to paginate channel searches.

Summary
Adds ability to paginate channel search results.
Ticket Link
https://mattermost.atlassian.net/browse/MM-18356
Checklist

[x] Ran make check-style to check for style errors (required for all pull requests)
[x] Ran make test to ensure unit tests passed
[x] Added or updated unit tests (required for all new features)
[x] All new/modified APIs include changes to the JavaScript driver

Test Information
Chrome browser, macOS

Hi @mkraft
Quick dumb question. The ticket MM-18356 is for including the search and pagination on the System Console. Not sure why it would affect the RN app?

Hi @mkraft
Quick dumb question. The ticket MM-18356 is for including the search and pagination on the System Console. Not sure why it would affect the RN app?

Is it affecting it somehow that I'm not aware of?


explanation of spark.hadoop.hive.llap.daemon.service.hosts parameter

> Set spark.hadoop.hive.llap.daemon.service.hosts to the same value as the property LLAP app name under Advanced hive-interactive-env. For example, llap0
It didn't work well. It worked by copying value from Advanced hive-interactive-site > hive.llap.daemon.service.hosts instead of above setting. For example, @llap0

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

ID: f4c331d3-c2cd-977d-b253-07dc0b3672a1
Version Independent ID: d38338d5-aad7-1e6d-4a4f-89c73623e1fc
Content: Integrate Apache Spark and Apache Hive with the Hive Warehouse Connector
Content Source: articles/hdinsight/interactive-query/apache-hive-warehouse-connector.md
Service: hdinsight
GitHub Login: @nakhanha
Microsoft Alias: nakhanha

@hidwatanabe Thanks for the feedback and bringing this to our notice. At this time we are reviewing the feedback and will provide an update as appropriate.

@nakhanha Could you please review further and update the document as appropriate.

Doc is updated. Thanks @hidwatanabe

Fixed in: https://github.com/MicrosoftDocs/azure-docs-pr/pull/86309

#please-close


Missing __EXPORT in px4fmu_can.c ?

Hi all
I noticed that src/drivers/boards/px4fmu-v2/px4fmu_can.c in the current stable tree is missing an __EXPORT for int can_devinit(void). This is the case also for the px4fmu-v1 and px4fmu-v4 boards.
Is this on purpose? It leads to trouble compiling CAN-examples...
Thanks for a comment on this issue.

PX4 uses UAVCAN that provides it's own stm32 CAN driver, therefore the startup code does not init Nuttx's CAN driver.

We should still fix it for the NuttX CAN examples I guess?

That would be great, I think there are also usecases which use the plain CAN driver (I do).
I found it confusing that it gave me a compile error and I could not tell if this was some design decision or if I was doing something wrong...
Thanks!

Ok I will ensure it is linkable when the NuttX example is enabled.

@LorenzMeier - Done in https://github.com/PX4/Firmware/pull/5613


fixing problem where initial conditions are reperturbed

Earth-2 MIP Pull Request
Description
Fixes #164
This pull request changes earth2mip/inference_ensemble to avoid x from getting reperturbed during each loop's rank over ensemble members.  Previously, x would be perturbed, and then the perturbed x would get perturbed again, and then the perturbed x would get perturbed again.  This could make the magnitude of perturbations very large if many ensemble members are run per rank.
This MR prevents x from being overwritten during the loop over ensemble members.
Checklist

[ x] I am familiar with the Contributing Guidelines.
[ ] New or existing tests cover these changes.
[ x] The documentation is up to date with these changes.
[ x] The CHANGELOG.md is up to date with these changes.
[ x] An issue is linked to this pull request.

/blossom-ci

/blossom-ci

just a btw, but I didn't understand that += modified the actually contents of a torch or numpy array rather than making a new array and reusing the name "x". Seems this is the typical behavior for += on stateful objects.
[ins] In [5]: x = torch.tensor([2.0])

[ins] In [6]: y = x = torch.tensor([2.0])

[ins] In [7]: x +=1

[ins] In [8]: y
Out[8]: tensor([3.])

[ins] In [9]: import numpy as np

[ins] In [10]: x = np.array([2.0])

[ins] In [11]: y = x

[ins] In [12]: x +=1

[ins] In [13]: y
Out[13]: array([3.])

[ins] In [14]: x = y = []

[ins] In [15]: x += [1]

[ins] In [16]: y
Out[16]: [1]

[ins] In [17]: x =y =1

[ins] In [18]: x += 1

[ins] In [19]: y
Out[19]: 1


fix: geth flag pattern

What does it do?
This pr encloses datadir in quotes, so if the field is left blank, it does not take the following flag as a parameter.
Fixes use case described below:

Within geth config, empty dataDir field and try to start it.

Please try it in current grid then on this PR.
Closes https://github.com/ethereum/grid/issues/237

@evertonfraga may need to revert this - I'm getting concatenated dir values now:
Found IPC path:  "/Users/mg/projects/mist-projects/grid/\"~/Library/Ethereum\"/geth.ipc"
I'm less convinced the original 'bug' was a bug at all. If someone starts the node after deleting the directory, I believe they deserve the error that the terminal gives them.


Add docs

This is amazing, thanks a lot for doing this.
i'm a neovim user myself and used shell syntax so far, but this is so much better.
how about doing a PR in duckscript and modifying the readme to add a section on editor support and point to this repo?

Haha I hadn't checked my notifications before opening sagiegurari/duckscript#117 😄. Glad you like it!


Apps breaks with Webpack Uglify

Hi there,
I try to launch the build of my application, but I have an error when I display my app on the browser
materialize.js:235 Uncaught TypeError: Cannot convert undefined or null to object(…)
I just read issue #42 and #40. The problem seemed to come from the fact that materialize.js is already minified. But I tried to include exclude and except instructions in my webpack.prod.js, without success...  I also tried to set dead_code to true, same thing. Here is my Uglify option :
new webpack.optimize.UglifyJsPlugin({
  mangle: {
    keep_fnames: true,
    except: ['Materialize']
  },
    exclude: ['/materialize.js/g'],
    dead_code: true
})

Still this error...
I use Webpack v1.13.3. The build is ok when I don't use the Uglify plugin.
Thanks for help

I just tried to copy the sample code from https://github.com/InfomediaLtd/angular2-webpack-starter/blob/master/config/webpack.prod.js
new UglifyJsPlugin({
      // beautify: true, //debug
      // mangle: false, //debug
      // dead_code: false, //debug
      // unused: false, //debug
      // deadCode: false, //debug
      // compress: {
      //   screw_ie8: true,
      //   keep_fnames: true,
      //   drop_debugger: false,
      //   dead_code: false,
      //   unused: false
      // }, // debug
      // comments: true, //debug

      beautify: false, //prod
      mangle: { screw_ie8 : true }, //prod
      compress: { screw_ie8: true }, //prod
      comments: false //prod
    })

And it works...
The difference is the "keep_fnames" option of mangle. I'm not very familiar with Uglify, but setting it to true tells Uglify to not mangle function names. I don't get clearly why it could cause app to crash ?

@supertino7 is this still an issue with the latest versions?


Cannot fill the Open Lock tab

Hello !
I have been trying to use this module with version 0.8.8 of Foundry VTT. I don't know if it is related to this specific version, but I cannot fill any field of the open lock tab.
The tab is re-rendered on the onchange event, and all modifications are lost.
After I commented the render call in the onchange event listener, I managed to have a lock working properly, but I am still facing a second issue : the trap isn't triggering when a check fails.
Do you have any insights of this issue ?
Kind regards.

I am not sure yet how it works (I started using Foundry VTT a few days ago...) but it seems to me that the tab is rendered, but the value from the input in not binded to the openlock attribute of the tab (see screenshot). I hope it helps...

this is usually because you are editing an actor inside a token that already has a padlock item in it.
Foundry has some issues when editing an item within a scene actor.
Ideally, you should configure the item OUTSIDE the actor's sheet.


Responsiveness

Description
The website is completely responsive but the UI breaks due to the go-to top icon, I want to solve this issue
Assign this to me!
Screenshots

Additional information
No response

@Rohitchaudhary13 Go for it!


Confd doesn't work with yaml list

I have a yaml file format like:
sshd:
  pubkeys:
    user1:
      - key1
      - key2
    user2:
      - key1

Then I would like to use confd template to generate a config file based on it.
Looks like confd doesn't like the formate, I tried the following template:
{{range gets "/sshd/pubkeys/*"}}
{{.}}
{{end}}

But it returned nothing.
Could someone take a look?
Thank you

Also I tried:
{{range $pub_key := gets "/sshd/pubkeys/user1"}}
{{$pub_key}}
{{end}}

I expected it will return key1 and key2 to me, but instead, I got value 0 and 1, so the index.
How could I get the value?

Yeah, I think it's a bug since ls to a yaml list returned the index instead of actually value.
{{range $pub_key := ls "/sshd/pubkeys/user1"}}
{{$pub_key}}
{{end}}

Returned:
0

1

Hi there, I was having the same problem trying to print a string list, it saved the values comma separated and I  tried with
{{ range $user := split (getv "/vars/users") "," }}
- {{ $user }}
{{end}}
and it worked :)
other approach I tried and worked with other kind of variables was
{{ range gets "/users/*" }}
- {{ base  .Key  }}: '{{ .Value }}'
{{ end }}
I think your problem solutions is more or less related to those solutions but i dont know how is your variable being saved into ssm or another format  :3

I had a similar issue (tried to work with Kubernetes YAMLs) and, indeed, the lists do not seem to work as expected. I get empty objects.
I was able to work around the issue by doing, essentially, this:
{{ range ls "/items" }}
{{ $index := (atoi . )}}
{{ $ip_key := (print "/items/" $index "/status/podIP") }}
{{ if exists $ip_key }}
{{ getv $ip_key }}
{{ end }}
...
{{ end }}
Of course, I needed more than one field and some conditional processing too, so this just demonstrates the idea. Getting the list of available indexes and then building the path expressions using the index for building the full path names of the values I am interested in.
By the way, turns out that ./resource/template/template_funcs.go contains some good stuff that does not seem to be included in the docs ;)


Refine page streaming

fixes #60

Current coverage is 93.07% (diff: 92.72%)

Merging #63 into master will increase coverage by 0.31%

@@             master        #63   diff @@
==========================================
  Files             9          9
  Lines           980        996    +16
  Methods         147        149     +2
  Messages          0          0
  Branches        206        208     +2
==========================================
+ Hits            909        927    +18
+ Misses           71         69     -2
  Partials          0          0

Powered by Codecov. Last update cb52529...67e91a6

So this would end up working like this right? One concern I have is that listTopics needs to have the same return value type (passed to the callback or resolved in the Promise), regardless of whether autoPaginate is true or false. Looking through the code it seems the value of autoPaginate changes the type of the return value.
All topics (callback):
api.listTopics((err, topics) => {
  console.log(topics); // [{...}, {...}, ...]
});

All topics (promise):
// ??? Do you collapse multiple return values into an array?
api.listTopics().then(([topics]) => {
  console.log(topics); // [{...}, {...}, ...]
});

Paged topics (callback):
api.listTopics({ autoPaginate: false }, (err, topics, nextPageToken) => {
  console.log(topics); // [{...}, {...}, ...]
});

Paged topics (promise):
// ??? Do you collapse multiple return values into an array?
api.listTopics({ autoPaginate: false }).then(([topics, nextPageToken]) => {
  console.log(topics); // [{...}, {...}, ...]
});

Stream topics:
// Is there a way to configure pageSize when streaming?
var stream = api.listTopics()
  .on('data', (topics) => {
    console.log(topics); // [{...}, {...}, ...]
  });

Right, and the first four sample code is exactly same as what I'm thinking.
For the last thing, I'm thinking to add a new method with a different name by adding -Stream suffix at the end. However, I was also thinking this emits on each topic instead of the array, so
var stream = api.listTopicsStream()
  .on('data', (topic) => {
    console.log(topic); // {...}
  });

pageSize matters, although it just configures the underlying API calls -- no effects on the result.
// same interface, but internally responses are in pagesize=5
var stream = api.listTopicsStream({pageSize: 5})
  .on('data', (topic) => {
    console.log(topic);
  });

This is because I'm not so sure how many users want to use stream with paged (bundled) elements. Please let me know if something would be wrong or weird in this case.
See https://github.com/googleapis/toolkit/pull/713/files#diff-f1e0f817f64103b465a58afedde061c6R742 which is the result of our baseline test (for sample API definition) of the codegen.

I'm thinking to add a new method with a different name by adding -Stream suffix at the end.

Ah yes that's what I expected, was a typo in my comment.
I think just passing a single topic to each invocation of the data event handler is fine.
Looking at the code you linked to, the type of the value passed to the callback for listBooks() vs listBooks({ autoPaginate: false }) is different for the two calls. Do we really want to change the argument type/structure based on the value of an option? What do you think @callmehiphap @stephenplusplus ?

// @callmehiphop

@jmdobry so I'm not sure if we're actually changing the arguments per se, I think in the case of { autoPaginate: true } then the nextQuery and apiResponse values would just be null?

It's looking to me like the first return value will actually have a different type based on the value of autoPaginate: https://github.com/googleapis/toolkit/pull/713/files#diff-f1e0f817f64103b465a58afedde061c6R435

Oh, I missed that. Yes, I agree we should be consistently returning an array of objects. I like the way we handle it on the veneer side of things
list(function(err, things, nextQuery, rawResponse) {
  // things is always an array
  // nextQuery may be null if there are no more results or autoPaginate is true
  // rawResponse may be null if autoPaginate is true
});

In the code example, I use Promise pattern primarily, but using the callback pattern for {autoPaginate: false}. Did you mean that this combination is confusing?
For the callback with {autoPaginate: false}, the callback params are Error, the raw gRPC response object, and the next page token. I can change it to things, nextQuery, and the rawResponse, but I want to make sure what is the best. In this scheme, here's the code example I would do, does that look correct?
var project = ...;
var api = pubsubV2.publisherApi();
function callback(err, elements, nextQuery, rawResponse) {
  if (err) {
    console.error(err);
    return;
  }
  for (var i = 0; i < elements.length; ++i) {
    // doThingsWith(elements[i]);
  }
  if (nextQuery) {
    api.listTopics(nextQuery, {autoPaginate: false}, callback);
  }
}
api.listTopics({project: project}, {autoPaginate: false}, callback);

Here,

err: Error if it fails. or null.
elements: list of Topic.
nextQuery: the request object (ListTopicsRequest) used for next query, or null if no more pages.
rawResponse: ListTopicsResponse (containing elements in it).

I would expect:
var project = ...;
var api = pubsubV2.publisherApi();
function callback(err, elements, nextQuery, rawResponse) {
  if (err) {
    console.error(err);
    return;
  }
  for (var i = 0; i < elements.length; ++i) {
    // doThingsWith(elements[i]);
  }
  if (nextQuery) {
    api.listTopics({ project: project }, { autoPaginate: false, pageToken: nextQuery }, callback);
  }
}
api.listTopics({ project: project }, { autoPaginate: false }, callback);

I believe this is how it is done in google-cloud-node

Ah, I see. I'd prefer to name it as nextPageToken instead of nextQuery -- but either way, the point is to settings elements (or whatever it's named) as the primary result. I'll do that.

Just to explain nextQuery, it's an object that can be passed directly back to the method, i.e.:
method({
  autoPaginate: false,
  pageSize: 3
}, function(err, elements, nextQuery) {
  if (nextQuery) {
    // nextQuery === { autoPaginate: false, pageSize: 3, pageToken: '...' }
    method(nextQuery, ...)
  }
})

// vs when just a nextPageToken is returned:

var options = {
  autoPaginate: false,
  pageSize: 3
}

method(options, function(err, elements, nextPageToken) {
  if (nextPageToken) {
    options.pageToken = nextPageToken
    method(options, ...)
  }
})

This just makes it easier for the user, but either way is fine.

That's slightly different from what @jmdobry explained. Also, usually a method will take a request object. So what you're explaining would look like:
var request = ...;
function callback(err, elements, nextQuery, rawResponse) {
  if (err) {
    console.error(err);
    return;
  }
  for (var i = 0; i < elements.length; ++i) {
    // doThings;
  }
  if (nextQuery) {
    api.method(request, nextQuery, callback);
  }
}
api.method(request, {autoPaginate: false}, callback);

Does that look good?

Sorry, I was just explaining it in terms of how google-cloud-node does it.
autoPaginate is a library option, so I see why it goes in the second object. But isn't pageToken a request option?

In other words, to modify your example:
var opts = { autoPaginate: false };
var request = { pageSize: 2, filter: 'name="my-name"' };

function callback(err, elements, nextQuery, rawResponse) {
  if (nextQuery) {
    // nextQuery = { pageSize: 2, filter: 'name="my-name"', pageToken: '...' }
    api.method(nextQuery, opts, callback);
  }
}

api.method(request, opts, callback);

Got it. Let's do that.

var opts = { autoPaginate: false };
var request = { pageSize: 2, filter: 'name="my-name"' };
...
api.method(request, opts, callback);

I am confused. As far as I can tell, this is different than how google-cloud-node does it. For example,   with PubSub#getTopics it appears that autoPaginate and pageSize do not go on separate object arguments, rather both would be properties of a single object argument passed to the method. The "paginator" code in google-cloud-node's utils appears to look for maxResults, pageSize, maxApiCalls, and autoPaginate all on the same argument.

Yes, we're kinda bouncing around showing gcn code and gax. gcn is as you say, but for this lib, I believe two separate object arguments are used for request options that the gRPC API expects and another for gax options.

Okay. Did we settle on the types and number of arguments passed to the callback in the case of autoPaginate: true and autoPaginate: false? Also, how would each of those two cases look if the user is using Promises instead?
If I recall, I haven't seen gax code collapse multiple arguments into an array (like gcn does), I've only ever seen one return value.

Hmm, right. I just gave up about the returning multiple items on promise. And I wasn't careful about reviewing code snippet in https://github.com/googleapis/gax-nodejs/pull/63#issuecomment-258303015.
Are there cases where we want to return an array for {autoPaginate: true} case?  If not, here's what I'm currently thinking about promises:
// elements is the full list of items of all pages.
api.method(request).then(function(elements) {
  for (var i = 0; i < elements.length; ++i) {
    // doThings(elements[i]);
  }
});

// autoPaginate: false, elements is the items in the page.
var opts = {autoPaginate: false};
api.method(request, opts).then(function(args) {
  var elements = args[0];
  var nextQuery = args[1];
  var rawResponse = args[2];
  for (var i = 0; i < elements.length; ++i) {
    // doThingsWith(elements);
  }
  if (nextQuery) {
    api.method(nextQuery, opts).then(function(args) {
       ...
    }
  }
});

The latter part can be rewritten as follows if the user runtime is new enough (but I feel the code sample in the generated files should be conservative, so not seen there):
var opts = {autoPaginate: false};
api.method(request, opts).then(function([elements, nextQuery, rawResponse]) {
   ...
});

This is what I would expect:
Auto-pagination:
// Callback
api.method(request, (err, elements) => {
  // ...
});

// Promise, note the use of array-destructuring
api.method(request)
  .then(([elements]) => {
    // ...
  });

Manual pagination:
// Callback
var opts = { autoPaginate: false };
api.method(request, opts, (err, elements, nextQuery, rawResponse) => {
  // ...
});

// Promise, note the use of array-destructuring
api.method(request, opts)
  .then(([elements, nextQuery, rawResponse]) => {
    // ...
  });

The key here is that the value of the autoPaginate option does not change the type of the return value that the promise resolves with. Whether autoPaginate: true or autoPaginate: false, the promise is resolved with an array of one or more return values.

To be clear, non-paged methods will return a single result. Is that right?
api.normalMethod(request, opts).then(function(response) {
   // response is the object.
});
api.pagedMethod(request, opts).then(function(args) {
  // elements (= args[0]) is the list.
});

The point I'm trying to get at is that the gax API when using promises needs to be totally consistent. Sometimes getting a non-array value and sometimes getting an array of multiple arguments is a bad user experience. When using callbacks with gax it is more consistent, it doesn't vary the types of the  arguments, it varies how many arguments are given, which easier to work with. As this PR stands, users of gax promises will have to remember to flip between receiving an object or an array depending on whether autoPaginate is true or false. That's a code smell.
When google-cloud-node added promises support, it was decided that across the board the promises would always resolve with an array of the arguments that would have been passed to the callback (minus the err argument).
Here's some pseudo-code used by all google-cloud-node methods that support promises:
if (callback) {
  callback(null, arg1, arg2, arg3);
} else {
  return Promise.resolve([arg1, arg2, arg3]);
}

and when there's only a single arg, it still gets placed into an array when using promises:
if (callback) {
  callback(null, arg1);
} else {
  return Promise.resolve([arg1]); // still an array for consistency
}

Here's some exampes of how I think google-cloud-node should compare with gapic code:
autoPaginate: true
// google-cloud-node     //  // gapic
const opts = {};         //  const request = { project: 'project' };
pubsub.getTopics(opts)   //  publisherApi.listTopics(request)
  .then((args) => {      //    .then((args) => {
    args.length; // 1    //      args.length; // 1
    args[0]; // topics   //      args[0]; // topics
  });                    //    });

autoPaginate: false
// google-cloud-node                  //  // gapic
const opts = { autoPaginate: false }; //  const request = { project: 'project' };
pubsub.getTopics(opts)                //  const opts = { autoPaginate: false };
  .then((args) => {                   //  publisherApi.listTopics(request, opts)
    args.length; // 3                 //    .then((args) => {
    args[0]; // topics                //      args.length; // 3
    args[1]; // nextQuery             //      args[0]; // topics
    args[2]; // rawResponse           //      args[1]; // nextQuery
  });                                 //      args[2]; // rawResponse
                                      //    });

A non-listing method:
// google-cloud-node            //  // gapic
pubsub.topic('topic').get()     //  const formattedName = publisherApi.topicPath('project', 'topic');
  .then((args) => {             //  publisherApi.getTopic(formattedName)
    args.length; // 2           //    .then((args) => {
    args[0]; // Topic instance  //      args.length; // 1
    args[1]; // rawResponse     //      args[0]; // response (raw topic object)
  });                           //    });

Updated everything. Now it follows what @jmdobry said. PTAL (or probably ask @landrito again to review the internal code).

Added the test case. operations_api.js will be updated after we make sure the new codegen is okay.


Add Ability to Reorder Labels ?

Providing a way to reorder labels would facilitate faster and more efficient selection (for example if users want to reassign keyboard shortcuts or place frequently used labels at the top).

Nice idea, I will look how to do it

I added this feature, thanks (for the moment, it is not recorded if you change page, but it is a start). Tell me if you like it.


Clarify audio, video and light needs with supplier

Webcall together with @erikauer and @henrikrexed and Video company confirmed for 19th April


Generating from existing pdf and into buffer?

Very cool library thanks @Rogerrrrrrrs for creating this. I've got a question though:

Is it possible to generate into a buffer instead of a file?
Is it possible to generate based on an existing pdf that gets loaded instead of creating a new one?
Will the addQRBill automatically discover if there's enough space left on current pdf and attach to new page if not?

Thank you @alpfactory-alex

Not yet, but I am currently working on browser support which works with buffers. I can also add this functionality for node.
At the moment, this is not possible because the underlaying PDFKit does not support this feature. You could use SwissQRBill to only generate the QR Part and use a third party module to merge the two PDF files. To keep this library as lightweight as possible, I would rather not inegrate this approach into the library.
Yes, the addQRBill checks if enough space is left on the current page, otherwise it will add a new page in the size of A6/5 which is only the QR part.

@Rogerrrrrrrs Yeah I just tried your browser implementation really cool. Though I am wrapping it myself now to support browser-blob stream on browser and regular streams running within jest so its the best of both worlds :)
any idea when you'll push the browser based implementation on npmjs?
may I ask your initial reason for creating this library?

What I mean is that your generic class now actually is exactly what I was looking for (in your browser branch):
import * as SwissQRBill from 'swissqrbill/lib/swissqrbill'

const pdf = new SwissQRBill.PDF(data, {
        size: 'A4',
        autoGenerate: false,
    })

// do some more work here

pdf.end()

const file = require('fs').createWriteStream('./test.pdf')
    const stream = pdf.pipe(file)

    stream.on('finish', ev => {
        console.log('DONE!!!')
        pdf.emit('finish', ev)
        done()
    })

doing so we have full control over it. Will it stay this way? Its perfect ;)

Will it stay this way? Its perfect ;)

I did not actually spend much time for browser support yet, and I don't think my implementation does work yet. But the splitted approach with a generic class will stay.

any idea when you'll push the browser based implementation on npmjs?

Probably within the next 2 weeks.

may I ask your initial reason for creating this library?

I needed a way to autogenerate bills based of online orders, so the new QR bill came just in time :)

Cool. I tried it and it actually seems to work fine so far.
By enabling to directly use your main class I think it might even not be necessary to provide dedicated implementations for node and browser as everyone could simply provide a stream implementation to pipe into.
Eager to see it released if you need any help let me know happy to help out!

@alpfactory-alex I have updated the experimental-browser-support branch. Now everything should be properly bundled and ready to use in browser.

By enabling to directly use your main class I think it might even not be necessary to provide dedicated implementations for node and browser as everyone could simply provide a stream implementation to pipe into.

This is true, but I want this library to be as easy to use as possible and I also want to avoid breaking API changes.
With my updated code you can either pass the output path as before or you can pass a writeable stream. This way you should be able to achieve to same result without having to access the generic class directly (even though you can still do this) and while still having not too much API changes.
I have created a working browser example which should be pretty easy to use: https://github.com/Rogerrrrrrrs/SwissQRBill-browser-example/blob/master/src/index.ts
Please let me know what you think :)

Its really good thanks :) Now it just need to be on NPM ;-)) Though it is now bundling everything together including pdf-kit into the browser module right? I think there should be a regular, lightweight es6 module too no? As we, for example, already use pdf-kit and as of now with this build tree shaking would be extremely hard.

Ok I think looking at the transpiled code here: https://github.com/Rogerrrrrrrs/SwissQRBill/blob/experimental-browser-support/lib/swissqrbill.js we could simply use this one instead of the browser one to get proper tree shaking :)

That's right, only browser.js is bundled. If you want to do the bundling and stream handling yourself, I think it is best to just use lib/swissqrbill directly. This way I can provide an easy to use way while the more advanced users can still do their own thing.
I will release the new version this evening on npm.

SwissQRBill v2.0.0 is now released on npm


Copy Alice/Bob server from ledgerloops-cabal

I think I want to run the agents from the terminal (with deno), not from browser windows.
So I can use src/server/sync_test.ts as a starting point. Have to work out how to send/receive messages there, maybe I can copy that from src/client/chat.js

I should use new Earthstar.ReplicaDriverMemory(shareKeypair.shareAddress) instead of new Earthstar.ReplicaDriverWeb(shareKeypair.shareAddress)

I can now write message from src/server/sync_test.ts to src/client/chat.js but not yet in the other direction

I need to decide whether to plug LedgerLoops into an Earthstar node or plug Earthstar into a LedgerLoops node.

Given that I was already using the BasicMessageForwarder and BatchedMessageForwarder in Strategy Pit, it might make a lot of sense to plug in there.
Also, I want to have code where Earthstar is easily pluggable/replaceable with e.g. Cabal, SSB, etc.

At the same time, moving beyond proof-of-concept with this, I want the strategies to be pluggable. So I think what I need is a base object where you plug in a messager and a strategist.

I think this repo should export an implementation of MessageForwarder.
For now, I'll also implement the simulator in it, since that is just like 20 lines of code.
And I'll use Saiga from the local checkout next to it, the factory makes it too complicated.

I eventually want to run this in separate processes but as a first step I'll just have a single MessageForwarder object, like I did in Strategy Pit, just going over Earthstar each time instead of directly delivering messages through in-process memory.

Trouble is the MessageForwarder from Strategy Pit wants to deal with Node objects, maybe it should just emit events instead?


Dynamic load

Dynamically load contest info
Dynamically load register page
User object is not passed to template

+1, @bruce3557 please check

+1

going to merge


Implement selector argument type for scores/advancements

Added in v0.3.0

Making it marked red makes it seem there’s something wrong, perhaps mark it blue?

See #11 ; the red is not intended but should be an easy fix. We'll have to wait for the next release of linguist which will auto-update to the most recent release of language-mcfunction.


"External pledges sum" in csv export: field values are no longer all numerical

What are we trying to do?
Can we fix the "External pledges sum" field in the .csv export so that all the values are numerical and are summing correctly? See attached screenshot from a BAF export. I think it's been going on for a few months - I hadn't had time to look more closely last November/December when I first ran into the issue.

What feature or behavior is this required for?

It's helpful to have all of these values be numbers when we're reporting out. I have a little R script that I run and it's been breaking because the values in this column aren't all numerical.

How could we solve this issue? (Not knowing is okay!)

I feel like folks who are smarter than me might be able to pinpoint this as a small tweak, but I have no clear clues as to where this is broken :)

Anything else?

I wouldn't confuse knowing some esoteric programming stuff for smarts! but yeah, definitely see the problem. We'll give it an eyeball at the next hacknight.


MAINT: moves skbio methods to separate subdir with copyright info

this PR moves the work that @hagenjp and @cherman2 did in #63 into a separate subdir to clarify that these methods are taken directly from skbio. license file is also included for full attribution.

okay @gregcaporaso @ebolyen here's a proposed update with the skbio code (methods and testing) all housed under a subdir along with their license. lmk what you think!

This is perfect, thanks @lizgehret!


Atom cannot input Chinese in Ubuntu64 16.04

Environment:
Ubuntu64 16.04
My language setting:

My input setting :

& perference:

atom source ver: 1.12.0-dev-44c0fe5
Description:

I can input Chinese in other application,
but atom can not.Although the Chinese can show.
When i wanna input some word(Chinese)
It is always the letter, rather than the Chinese candidate word!
I have tried to modify font family , but it doesn't work.
My English is poor..
Please, help me

I do not have the issue to input Chinese character in Atom 1.9.8.


[apis/Google.Cloud.CloudBuild.V1] docs: Add a new build phase SETUPBUILD for timing information

This PR was generated using Autosynth. :rainbow:
Synth log will be available here:
https://source.cloud.google.com/results/invocations/7a4217b2-94d4-4abb-a0e6-e4ce77c5a616/targets

[ ] To automatically regenerate this PR, check this box. (May take up to 24 hours.)

PiperOrigin-RevId: 387362210
Source-Link: https://github.com/googleapis/googleapis/commit/760b5d8bfd6687c49f03b7619e063e2e361ba32c

Breaking change was in an earlier PR. We'll do a release so we don't get this warning again.


Code quality issues in the Rust SDK

Hi, team. After examining the eventlog parsing code of the Rust version of this library, I think there are several areas that might need attention.
Unchecked input data slicing may lead to panics
As shown below:
        // Parse EFI Spec Id Event structure
        let spec_id_signature = data[index..index + 16].try_into().unwrap();
        index += 16;
        let spec_id_platform_cls = get_u32(data[index..index + 4].to_vec());
        index += 4;
        let spec_id_version_minor = get_u8(data[index..index + 1].to_vec());
        index += 1;
        ...

All of the parsing logic directly slice the input data without a length check. If a user inputs malformed or incomplete data, the parser would panic. "Panicking" is not a valid error handling choice in a Rust library; it should return Err if there is any problem with the input data.
I suggest using a data decoding library rather than hand-rolling the parsing code from scratch. By using a library, you might get an input reader for free to get rid of manually managing the input data cursor. For example, the above code might become:
        // Parse EFI Spec Id Event structure
        let spec_id_signature = <[u8; 16]>::decode(input_reader)?;
        let spec_id_platform_cls = u32::decode(input_reader)?;
        let spec_id_version_minor = u8::decode(input_reader)?;
        ...

I'll send a PR to demonstrate the details of how to use a library to handle it.
.unwrap() might cause panic
.unwrap() should never be used in Rust except in unit tests or examples. The same applies to .expect("the reason") unless it is known that it would never fail. For example:
let hash: [u8; 32] = data.get(..32).context("insufficient data")?.try_into().expect("convert should never fail");

Unsafe enum transmutation could result in Undefined Behavior
There are some uses of unsafe transmute in the code. When using unsafe in Rust, you should be very careful, because unsafe Rust is harder than C/C++ to use correctly.
Take an example from this repo:
impl TdxQuote {
    pub fn parse_tdx_quote(quote: Vec<u8>) -> Result<TdxQuote, anyhow::Error> {
        let tdx_quote_header: TdxQuoteHeader = unsafe {
            transmute::<[u8; 48], TdxQuoteHeader>(
                quote[0..48]
                    .try_into()
                    .expect("slice with incorrect length"),
            )
        };
        ...
   }
}

// where the definition of TdxQuoteHeader is:
#[repr(C)]
#[derive(Clone)]
pub struct TdxQuoteHeader {
    pub version: u16,
    pub ak_type: AttestationKeyType,
    ...
}

#[repr(u16)]
#[derive(Clone, PartialEq, Debug)]
pub enum AttestationKeyType {
    ECDSA_P256 = 2,
    ECDSA_P384 = 3,
}

As you can see, there is at least one enum field ak_type in the transmuted struct. If the input data of the field ak_type is a value not in [2, 3], (for example, if some future platform got a third AttestationKeyType == 4), the code behavior becomes undefined.
The Rust compiler always optimizes the code based on the assumption that the ak_type never gets an invalid value.
See here for the demonstration code.
Additional areas for enhancement

Prefer using &[u8] rather than Vec<u8> as function parameters.

For example, the following definition will cause unnecessary call-site heap allocation.
pub fn get_u16(data: Vec<u8>) -> u16 { ... }
// Call-site, the to_vec() will allocate a new heap memory.
fn foo() { let algo_id = get_u16(data[index..index + 2].to_vec()); }

Better:
pub fn get_u16(data: &[u8]) -> u16 { ... }
// Call-site:
fn foo() { let algo_id = get_u16(&data[index..index + 2]); } // Without extra heap allocation.

More agnostic error handling

       match self.parse() {
            Ok(_) => (),
            Err(e) => {
                return Err(anyhow!("[select] error in parse function {:?}", e));
            }
        }

A shorter equivalent could be:
       _ = self.parse().context("[select] error in parse function")?;

And also return Err(anyhow!("...")); could be shortened to anyhow::bail!("...");.

Prefer match on enum vars over if else
Using match, the compiler forces you to update your logic when you add variants to the enum.
Some other minor style issues may be found using cargo clippy.

Hi @kvinwang , thanks a lot for the comments and the demonstration, these are very helpful in improving the quality! We will update the code later.


runelite-client: Prevent recursion when chat notifier notifies to chat

Wouldnt this disable notifications for player named "RuneLite"?

Only if they send things on the GAME channel.


Question - GLTF Recorder & animation clips

Hello,
I'm currently working on a animation system in unity to record and modify animation at runtime and save them in gltf format. I have several questions concerning the gltf recorder component and gltf animations.
First, is it possible to record a first animation for an object(or group) then record an other one for the same object and add it to the first glb file ?  I tried to achieve this by using the OnBeforeAddAnimationData delegate to catch recorded data of the second animation then I used the OnPostExport delegate to add the animation data to the first recorded animation glb. The problem with this approach is that it's generating many errors in the glb gltf making it unreadable.
Second, is it possible to unbind animation clip from their orignal transform ? I would like to retrieve an animation clip that can be applied to any gameobject transform.
Finally, is it possible to play an animation clip of a glb file without instanciating the all scene if the orginal transform is already in hierarchy ?
This the first time I'm working with animations and gltf, any help/idea is welcome !

Hey, would you be able to

test on the latest release
put together a small zip that reproduces your issue?
Thanks!

Hey!
to 1.: Do you want to combine the two animation? Or do you want 2 animation clips in the first glb?
to 2.: I'm not sure what exactly do you mean. An unity animation clip is not directly bound to an game object and can also assigned to another Animation/Animator component.
to 3.: Only importing an animation clip is currently not supported. But should not be a problem to implement this. I would add this to my ToDo :)


Made Alarm's constructor a template for deadline

Solves #5262

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Green!

Comments addressed. PTAL.

Merged with head and comments addressed. PTAL.

Sorry, please clang-format....

Done.


Doesn't work in bootstrap modal

It seems that the fragment of the menu isn't appended in its container "div.wysiwyg-menu", when the directive is called in a modal window.
TypeError: Cannot read property 'appendChild' of null     at Object.createMenu (http://localhost:1337/lib/angular-wysiwyg.min.js:313:14)     at Object.compile (http://localhost:1337/lib/angular-wysiwyg.min.js:54:17)     at applyDirectivesToNode (http://localhost:1337/lib/angular.js:7459:32)     at compileNodes (http://localhost:1337/lib/angular.js:7000:15)     at compileNodes (http://localhost:1337/lib/angular.js:7012:15)     at compileNodes (http://localhost:1337/lib/angular.js:7012:15)     at compile (http://localhost:1337/lib/angular.js:6907:15)     at applyDirectivesToNode (http://localhost:1337/lib/angular.js:7386:33)     at compileNodes (http://localhost:1337/lib/angular.js:7000:15)     at compile (http://localhost:1337/lib/angular.js:6907:15) <div textarea-id="inputText" textarea-class="form-control" textarea-height="120px" textarea-name="inputText" textarea-required="" ng-model="message.text" enable-bootstrap-title="false">

For me, the menu shows up but when i click on one of the buttons, the page reloads.
This seems to only happen when using it in a modal.

@thonythony Which version of are you currently using?  I have never tested in a modal but I will and let you know what I find out.

I seemed to have the same problem @mohammedJ had, the solution for me was to replace the ng-submit="submit()" from the form element.
Replaced that with a ng-click attribute on the submit button and all is working fine for me right now.

I believe I have this issue fixed with Fix #38.  Reopen this ticket if you are still having issues with the latest version


Change the dragging marker offset

Question
I'm not sure how this is called, so I don't know if it's already documented, but I haven't found anything in the docs.
When you start dragging a marker the map moves to make the marker point visible under your finger.
See this example GIF:

Is there a way to change how much the marker moves from origin point?

You will want to look a the the MarkerProps check the anchor and centerOffset I believe those are what you are looking for.

You will want to look a the the MarkerProps check the anchor and centerOffset I believe those are what you are looking for.

@lardissone Have you had a chance to try the suggestion posted above?

@MacMeDan thanks will try when I get a chance
@christopherdro not yet, project is on hold for now

Hei @lardissone ! Any progress on this? I'm facing the same issue... Changing anchor and centerOffset as @MacMeDan told doesn't fixed the problem... The map still moves on start dragging...

@Cleversou1983 didn't had the chance to try that.


Add XDG_STATE_HOME support

Not released yet, but it's already part of the spec: $XDG_STATE_HOME.
I added support for it in this crate by copy-pasting and following existing patterns as much as possible. As it's not officially released yet, maybe it should be hidden behind a feature flag?

I added support for it in this crate by copy-pasting and following existing patterns as much as possible.

Code looks pretty much perfect.

As it's not officially released yet, maybe it should be hidden behind a feature flag?

I'm honestly not sure. Is it possible to emit a warning when someone uses a function in your crate?

Code looks pretty much perfect.

Awww, thank you 🥰

Is it possible to emit a warning when someone uses a function in your crate?

Quick Google says no. There is an #[unstable()] attribute, but it looks like it's meant to be used by std / rustc internally. I've seen people do clever hacks around #[must_use] and #[deprecated] to generated custom compile warnings.
I've seen crates (namely async_std) guard their unstable code behind a feature called unstable. The docs show those methods, but with a shiny blue badge that warn users.

On the other hand, I don't see much harm in merging this before the official release. Given the recent development pace of the XDG basedir specification, I a) don't think there will be any change to this part between now and the release and b) don't expect a new release anytime soon (the official web site is still from 2010).


added contig ploidy priors table

Needed for gatk4/determinegermlinecontigploidy

What do you mean with that? :)

I hadn't see that there was the per-species READMEs now (rather than the main README file).


CodexiaItemsIntegrationTest.java:11: Implement...

The puzzle 66-331f2e6f from #66 has to be resolved:
https://github.com/iakunin/codexia-bot/blob/a5dba50052a57c6ff4208221b9c9e8fa4a9f8748/src/test/java/dev/iakunin/codexiabot/hackernews/cron/healthcheck/CodexiaItemsIntegrationTest.java#L11-L11
The puzzle was created by Maksim Iakunin on 23-Apr-20.
role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

The puzzle 66-331f2e6f has disappeared from the source code, that's why I closed this issue.


Update android player to 3.55.0+jason

Automated android player version update to 3.55.0+jason

Closing in favour of https://github.com/bitmovin/bitmovin-player-react-native/pull/370


PETSc/Cython not working when not installed from source

See:
https://gitlab.com/petsc/petsc/-/issues/1359
https://github.com/cython/cython/pull/5383
We need to wait for a new Cython release (0.29.x) to make the current workflow in the Dockerfile work.
Temporary pin of Cython is proposed in: https://github.com/FEniCS/dolfinx/pull/2620/files

So we need to add a
python3 -m pip install Cython==0.29.32

before this line https://github.com/scientificcomputing/packages/blob/0a405fa3f60802a2f6497baf5a19b1cc4908d668/fenics/Dockerfile#L134, right?

So we need to add a
python3 -m pip install Cython==0.29.32

before this line
https://github.com/scientificcomputing/packages/blob/0a405fa3f60802a2f6497baf5a19b1cc4908d668/fenics/Dockerfile#L134
, right?

Yes. I just didnt have time before calling it a day tomorrow to add it.

@jorgensd I guess this issue was fixed in https://github.com/scientificcomputing/packages/pull/11 ?


Tests: Move Update from stable to master to update.go

Fix issue on https://jenkins.cilium.io/job/Ginkgo-CI-Tests-Pipeline/1702/

/home/jenkins/workspace/Ginkgo-CI-Tests-Pipeline/src/github.com/cilium/cilium/test/k8sT/Nightly.go:478
Cannot curl app1-service
Expected
    <bool>: false
to be true
/home/jenkins/workspace/Ginkgo-CI-Tests-Pipeline/src/github.com/cilium/cilium/test/k8sT/Nightly.go:500

Signed-off-by: Eloy Coto<EMAIL_ADDRESS>

test-me-please


Refactor CSS for modals

All modals should have a padding and consistent styles for headings and paragraphs so that we don't have to add weird margins for elements inside the modals.
Follow-up to #305


e(), date() and localtime() functions

This PR adds the following functions:

[x] e()
[x] localtime_c()
[x] date()

The function localtime() is renamed as localtime_c() due to naming conflicts with the default functions present in Postgres.

It's a good idea to write tests together so that you can communicate to the other person that the code is working the way you want it to and that this is what you intended.

Alright, that means to bundle certain testcases at the top of the respective functions as comments?

Nope. refer here.
https://github.com/apache/age/tree/GDBMS_cypher/src/test/regress

Added tests for the e() function [b383661]. Need assistance for writing tests for localtime_c() and date() functions.


Cherrypicks

Cherrypicks

Please don't do multiple cherrypicks in the same PR as it will be harder to bisect if the build breaks


[CI] Add e2e tests to Settings > Service Meshes / consul

Signed-off-by: Rodolfo Martínez Vega<EMAIL_ADDRESS>Description
This PR adds e2e tests to Settings > Service Meshes to configure the meshery-consul adapter
This PR is related to #1037
Notes for Reviewers
Signed commits

[X] Yes, I signed my commits.

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

Sure, sounds good. Where can I see those service/robot accounts? Also, is there a previous example to use them?

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

Sure, sounds good. Where can I see those service/robot accounts? Also, is there a previous example to use them?

@ramrodo there is a little bit of cleanup needed in this doc, but it'll be a core resource to work with - Meshery Build & Release Strategy.

@ramrodo there is a little bit of cleanup needed in this doc, but it'll be a core resource to work with - Meshery Build & Release Strategy.

The Meshery Cloud Build & Release Strategy is more up-to-date. It speaks only to the "Meshery" Remote Provider, though.

The Meshery Cloud Build & Release Strategy is more up-to-date. It speaks only to the "Meshery" Remote Provider, though.

@leecalcote Finally, the tests passed! Thanks for the Cypress Dashboard, it was very helpful to debug the errors.
And talking about your comment:

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

I think we can implement an authentication flow using service/robot account but in another PR. This changes only set up the meshery adapter for consul in a KinD cluster.

@leecalcote Finally, the tests passed! Thanks for the Cypress Dashboard, it was very helpful to debug the errors.
And talking about your comment:

I wonder if we might be able to have an authentication flow included to invoke the Meshery remote provider. There are service/robot accounts we can use to authenticate, if so.

I think we can implement an authentication flow using service/robot account but in another PR. This changes only set up the meshery adapter for consul in a KinD cluster.

@leecalcote Do you have something else to add? If not, I think we can merge this PR :)

@leecalcote Do you have something else to add? If not, I think we can merge this PR :)


Fastlane ios build fails, but xCode Product Archive succeeds

New Issue Checklist

[x] Updated fastlane to the latest version (updating didn't fix the problem)
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Issue Description
Running a fastlane build fails, but doing a product archive through xCode succeeds.
Command executed
gym(
  workspace: "wind_chime_mobile.xcworkspace",       # Path to your Xcode workspace
  scheme: "wind_chime_mobile",                # The scheme defined in Xcode
  configuration: "Release",               # The build configuration to use
  export_method: "app-store",             # Export method: app-store, ad-hoc, enterprise, development
  output_directory: "build",              # Directory where the IPA file should be stored
  output_name: "wind_chime_mobile.ipa",             # Name of the generated IPA file
  silent: false,                            # Suppress Fastlane output
  clean: true                             # Clean the build directory
)

I'm using "xxx" to replace project and user specific values.
xcodebuild -workspace xxx.xcworkspace -scheme xxx -configuration Release -destination 'generic/platform=iOS' -archivePath /Users/xxx/Library/Developer/Xcode/Archives/2024-07-01/xxx\ 2024-07-01\ 14.09.55.xcarchive clean archive
Complete output when running fastlane, including the stack trace and command used
The following build commands failed:
PhaseScriptExecution Bundle\ React\ Native\ code\ and\ images /Users/xxx/Library/Developer/Xcode/DerivedData/xxx-dtwcfqsxojgnoofhmqmlihlokpwp/Build/Intermediates.noindex/ArchiveIntermediates/xxx/IntermediateBuildFilesPath/xxx.build/Release-iphoneos/xxx.build/Script-00DD1BFF1BD5951E006B06BC.sh (in target 'xxx' from project 'xxx')
(1 failure)
[14:49:12]: Exit status: 65
[14:49:13]: Called from Fastfile at line 35
[14:49:13]: [14:49:13]:     33:	    end [14:49:13]:     34:	 [14:49:13]:  => 35:	    gym( [14:49:13]:     36:	      workspace: "xxx.xcworkspace",       # Path to your Xcode workspace [14:49:13]:     37:	      scheme: "xxx",                # The scheme defined in Xcode [14:49:13]:
[14:49:13]: Error building the application - see the log above

/Users/bobdevereux/.nvm/versions/node/v20.15.0/bin/node /Users/bobdevereux/src/windChime/Wind-Chime-Mobile/node_modules/react-native/cli.js bundle --entry-file index.js --platform ios --dev false --reset-cache --bundle-output /Users/bobdevereux/Library/Developer/Xcode/DerivedData/wind_chime_mobile-dtwcfqsxojgnoofhmqmlihlokpwp/Build/Intermediates.noindex/ArchiveIntermediates/wind_chime_mobile/BuildProductsPath/Release-iphoneos/main.jsbundle --assets-dest /Users/bobdevereux/Library/Developer/Xcode/DerivedData/wind_chime_mobile-dtwcfqsxojgnoofhmqmlihlokpwp/Build/Intermediates.noindex/ArchiveIntermediates/wind_chime_mobile/BuildProductsPath/Release-iphoneos/WindChime.app --minify false
warning: the transform cache was reset.
Welcome to Metro v0.76.8
Fast - Scalable - Integrated

error SHA-1 for file /Users/xxx/src/xxx/xxx/node_modules/metro-runtime/src/polyfills/require.js (/Users/xxx/src/xxx/xxx/node_modules/metro-runtime/src/polyfills/require.js) is not computed.
Potential causes:
1) You have symlinks in your project - watchman does not follow symlinks.
2) Check blockList in your metro.config.js and make sure it isn't excluding the file path.
ReferenceError: SHA-1 for file /Users/xxx/src/windChime/xxx/node_modules/metro-runtime/src/polyfills/require.js (/Users/xxx/src/windChime/xxx/node_modules/metro-runtime/src/polyfills/require.js) is not computed.
Potential causes:
1) You have symlinks in your project - watchman does not follow symlinks.
2) Check blockList in your metro.config.js and make sure it isn't excluding the file path.
Environment
🚫 fastlane environment 🚫
Stack

Key
Value

OS
14.5

Ruby
3.3.0

Bundler?
true

Git
git version 2.44.0

Installation Source
~/.gem/bin/fastlane

Host
macOS 14.5 (23F79)

Ruby Lib Dir
/opt/homebrew/Cellar/ruby/3.3.0/lib

OpenSSL Version
OpenSSL 3.2.0 23 Nov 2023

Is contained
false

Is homebrew
false

Is installed via Fabric.app
false

Xcode Path
/Applications/Xcode.app/Contents/Developer/

Xcode Version
15.2

Swift Version
5.9.2

System Locale

Variable
Value

LANG
en_US.UTF-8
✅

LC_ALL
en_US.UTF-8
✅

LANGUAGE

fastlane files:
`./fastlane/Fastfile`
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
#     https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
#     https://docs.fastlane.tools/plugins/available-plugins
#

# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane

default_platform(:ios)

platform :ios do
  desc "Release build to the App Store"
  lane :release do
    sh "if [ -f ../../.env ]; then rm ../../.env; fi"
    sh "cp ../../.env.prod ../../.env"

    # increment_version_number_in_xcodeproj(
    #   bump_type: "patch"
    # )

    # increment_build_number

    sh "rm -rf ../build/*"
    if File.exist?("../main.jsbundle")
      sh "rm -fn ../main.jsbundle"
    end

    gym(
      workspace: "wind_chime_mobile.xcworkspace",       # Path to your Xcode workspace
      scheme: "wind_chime_mobile",                # The scheme defined in Xcode
      configuration: "Release",               # The build configuration to use
      export_method: "app-store",             # Export method: app-store, ad-hoc, enterprise, development
      output_directory: "build",              # Directory where the IPA file should be stored
      output_name: "wind_chime_mobile.ipa",             # Name of the generated IPA file
      silent: false,                            # Suppress Fastlane output
      clean: true                             # Clean the build directory
    )

    # if File.exist?("../build/wind_chime_mobile.ipa")
    #   deliver(
    #     submit_for_review: true,
    #     automatic_release: true,
    #     force: true, # Skip HTMl report verification
    #     ipa: "build/wind_chime_mobile.ipa",
    #     # meta data would have test username and passwords in cleartext.
    #     skip_metadata: false,
    #     skip_screenshots: true,
    #     submission_information: {
    #       add_id_info_uses_idfa: false,
    #       add_id_info_serves_ads: false,
    #     },
    #     release_notes: {
    #       'default' => "Release notes for this version are not available.",
    #       'en-US' => "Release notes for this version are not available."
    #     },
    #   )
    # else
    #   UI.user_error!("IPA file not found. Build failed.")
    # end

    sh "if [ -f ../../.env ]; then rm ../../.env; fi"
    sh "cp ../../.env.staging ../../.env"
  end
end

`./fastlane/Appfile`
app_identifier("wind-chime.app") # The bundle identifier of your app

itc_team_id("126725348") # App Store Connect Team ID

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

fastlane gems

Gem
Version
Update-Status

fastlane
2.221.0
🚫 Update available

Loaded fastlane plugins:

Plugin
Version
Update-Status

fastlane-plugin-versioning
0.5.2
✅ Up-To-Date

Loaded gems

Gem
Version

error_highlight
0.6.0

did_you_mean
1.6.3

syntax_suggest
2.0.0

bundler
2.5.10

pathname
0.3.0

rake
13.2.1

base64
0.2.0

nkf
0.2.0

strscan
3.1.0

rexml
3.2.9

CFPropertyList
3.0.7

public_suffix
5.1.1

addressable
2.8.6

artifactory
3.0.17

atomos
0.1.3

aws-eventstream
1.3.0

aws-partitions
1.944.0

aws-sigv4
1.8.0

jmespath
1.6.2

aws-sdk-core
3.197.0

aws-sdk-kms
1.85.0

aws-sdk-s3
1.152.3

babosa
1.0.4

claide
1.1.0

colored
1.2

colored2
3.1.2

highline
2.0.3

commander
4.6.0

declarative
0.0.20

digest-crc
0.6.5

domain_name
0.6.20240107

dotenv
2.8.1

emoji_regex
3.2.3

excon
0.110.0

faraday-em_http
1.0.0

faraday-em_synchrony
1.0.0

faraday-excon
1.1.0

faraday-httpclient
1.0.1

multipart-post
2.4.1

faraday-multipart
1.0.4

faraday-net_http
1.0.1

faraday-net_http_persistent
1.2.0

faraday-patron
1.0.0

faraday-rack
1.0.0

faraday-retry
1.0.3

ruby2_keywords
0.0.5

faraday
1.10.3

http-cookie
1.0.6

faraday-cookie_jar
0.0.7

faraday_middleware
1.2.0

fastimage
2.3.1

gh_inspector
1.1.3

jwt
2.8.2

multi_json
1.15.0

os
1.1.4

signet
0.19.0

googleauth
1.8.1

httpclient
2.8.3

mini_mime
1.1.5

trailblazer-option
0.1.2

uber
0.1.0

representable
3.2.0

retriable
3.1.2

google-apis-core
0.11.3

google-apis-androidpublisher_v3
0.54.0

google-apis-playcustomapp_v1
0.13.0

google-cloud-env
1.6.0

google-apis-iamcredentials_v1
0.17.0

google-apis-storage_v1
0.31.0

google-cloud-errors
1.4.0

google-cloud-core
1.7.0

google-cloud-storage
1.47.0

json
2.7.2

mini_magick
4.13.1

naturally
2.2.1

optparse
0.5.0

plist
3.7.1

rubyzip
2.3.2

security
0.1.5

simctl
1.6.10

terminal-notifier
2.0.0

unicode-display_width
2.5.0

terminal-table
3.0.2

tty-screen
0.8.2

tty-cursor
0.7.1

tty-spinner
0.9.3

word_wrap
1.0.0

nanaimo
0.3.0

xcodeproj
1.24.0

rouge
2.0.7

xcpretty
0.3.0

xcpretty-travis-formatter
1.0.1

fastlane-plugin-versioning
0.5.2

generated on: 2024-07-01

This information is really helpful for who really needs this. I hope you will many more write post like this.


[Improvement] Scroll on the homepage is janky

Scrolling the home page on list of games seems to have degraded performance as the scroll is very laggy.
A quick test with chrome's performance profiler reveals a lot of dropped frames due to GPU work taking too ling

should be fixed now


mac-20, mac-3 machines need recovery

Both iOS devices are failing tests that are otherwise passing locally. Unexpected exit code 1005 usually means the device is out of memory. Unclear what is happening with the cull perf test either.

If the phone is out of memory rebooting the phone may be enough. I'll verify the logs and reboot phones

From mac-20 seems like the problem is different:
2020-09-17T11:48:23.648849: INFO [task runner] [hot_mode_dev_cycle_macos_target__benchmark] stderr: [   +7 ms] Warning: CocoaPods not installed. Skipping pod install.
stderr:              CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
stderr:              Without CocoaPods, plugins will not work on iOS or macOS.
stderr:              For more info, see https://flutter.dev/platform-plugins
stderr:            To install:
stderr:              sudo gem install cocoapods
stderr:

2020-09-17T11:48:35.416896: INFO [task runner] [hot_mode_dev_cycle_macos_target__benchmark] stderr: [+11768 ms] Exception: CocoaPods not installed or not in valid state.

Phones were cleaned and rebooted and the host machines rebooted. Please let me know if the problem persists.

Mac 20 references cocoapods which should be only used in mac ios, we need to investigate


redux-persist implementation?

Hello,
Can anybody please share their experience with implementing the package in correlation with redux-persist?
The background job is running just fine, but the store changes done while the app is killed are later not persisted to the store. Using AsyncStorage to track the changes is ok but not ideal.
Thank you

Hi,
This is what I'm planning to try.
constructor () {
  let { store, persistor } = configureStore()
  this.store = store
  this.persistor = persistor
  this.state = store.getState()
}

fetchState () {
  return new Promise((resolve, reject) => {
    let unsubscribe = this.store.subscribe(() => {
      const { app } = this.store.getState()
      unsubscribe()

      this.state = app
      resolve(app)
    })
  })
}

// Some modifications in the middle

await this.persistor.persist()

Still unclear how to notify the main thread that should rehydrate its state...

Hi,
Changes made to the store with the background job are persisted but the component is not reacting to them. They are reflected on the next app refresh/load.
const backgroundRedux = {
	jobKey: 'backgroundRedux',
	job: async () => {
		console.log('Running background job...');
		if (AppState.currentState != 'active' && AppState.currentState != 'background') {
			store.dispatch(setFirstName('Background'));
			store.dispatch(setLastName('Job'));
			asyncStoreKey('bgupdate', true);
		}
	}
};
BackgroundJob.register(backgroundRedux);

async componentWillMount() {
    let reduxStore = store.getState().name;
    await asyncGetKey('bgupdate').then(bool => {
        if (bool) {
            this.props.refreshStore(reduxStore);
        }
    });
    asyncStoreKey('bgupdate', false);
}

Dispatching a refresh action does the trick but I'm sure there is a better way to deal with the issue.