High Memory usage for DelegatingHandler.init/1

Hello! I'm using bandit as my websocket adapter for a phoenix project where I'm streaming data from a server to the client and I'm noticing incredibly high memory usage. When i look at the dashboard's process tab I can see it's caused by the DelegatingHandler.init/1...

I would expect init to only be called once, so I'm surprised to see it present here

FWIW, i am streaming a HUGE amount of data from the server to the client, but I would expect the socket to transfer it and then drop it.

Interesting! Versions of Bandit and Thousand Island?

https://github.com/jaronoff97/tails/blob/main/mix.exs#L54 :)
also, it's totally possible this is expected btw for a very high load socket but wanted a gut check because this seemed really high

It's not expected that Bandit's memory usage grows long-term based on the volume of data sent (either by HTTP or WebSocket). There may be places in the lower networking stack that are keeping some buffers around, but they should not be growing without bound. Part of me wonders if it isn't in Phoenix's channels code.
A couple things that would help:

Can you try with Cowboy? Does the same issue occur?
Can you run :sys.get_state/2 (or your observer equivalent) on the Bandit process in question (the same one you highlight in your screenshot) and dump here (note that there may be session info in there, so redact / send to me privately if needed)
Can you try disabling websocket compression to see if that makes a difference?

i will attempt all this when i get a chance :) pretty slammed rn. FWIW i swapped from cowboy to bandit because the bandit performance was noticeably better, but I did see similar issues there. Maybe it is something in phoenix... are there traces i can emit from the system?

If you think you've seen similar issues in Cowboy that's the first thing to validate. Given the relative complexity of Phoenix compared to Bandit/Cowboy I think it's much more likely the issue is there.

I also deployed bandit yesterday and saw memory usage triple compared to running cowboy a week ago (the dotted line)

I looked in LiveDashboard and saw the DelegatingHandler.init/1 processes with 60+ mb of memory. These processes used to use 20mb of memory with cowboy.

I can tell they're tied to websockets because they're either linked to absinthe or phoenix channel processes:

I'm running the following versions:

bandit: 1.5.0
thousand_island: 1.3.5

I haven't disabled compression yet, but I'll try that next.

I disabled websocket compression with the following configuration and it did cause a little dip in memory usage, but not much.
config :my_app_web, MyAppWeb.Endpoint,
  adapter: Bandit.PhoenixAdapter,
  http: [
    websocket_options: [
      compress: false
    ]
  ]

The dotted line is the cowboy memory usage from a week ago.

Other than the increased memory usage on web sockets, bandit has been performing well for us.

Sorry for the late response!
I think this may rhyme with #313 and #322. I've pushed up a branch that does a GC pass before switching the handler from HTTP/1 to WebSocket; would you be able to test
{:bandit, "~> 1.0", github: "mtrudel/bandit", branch: "gc_on_websocket"}

and see if that improves matters?

Thanks @mtrudel. That helped significantly.

You can see where I deployed and how it settled at 3.2gb of memory instead of 6.5gb. The top line is the memory usage from the same time yesterday and the bottom line is memory usage from a month ago when we were still running cowboy. I'm also still running with websocket compression off.

Good news, but it seems like we still have work to do! Now that I know this line is producing good results, let me try adding a few more things to this branch for experimentation. We should be able to get well below the Cowboy line, all else being equal.

Actually, could you switch back to cowboy for a spell just to make sure that all things are equal? It's not impossible that that growth in memory usage is due to something other than Bandit/Cowboy.

It'd also be useful to know what things look like with compression re-enabled

Here's the difference in memory usage going from Bandit back to cowboy.

In our case it's still about 1Gb difference.

This is all / predominantly websocket load?

These servers are handling websocket + graphql requests. The majority of the load is graphQL requests, but when I look at LiveDashboard, all of the processes with high memory usage are websockets.

@aaronrenner try the
{:bandit, "~> 1.0", github: "mtrudel/bandit", branch: "gc_on_websocket"}
branch again? I've added pict filtering between requests

@jaronoff97 would you be able to take a look at phoenix 1.5.2 and see to what extent this resolves your issues? I've been working with @aaronrenner on Slack and think we've solved his issues (at least these ones), and I'd like get this issue moved along for your original query

I have a lead on the remaining performance deficit that @aaronrenner identifies in his most recent post above; working it over on #345

@mtrudel sure! I'll give that a try and run a load test and get back to you by tomorrow!

My hunch is that you'll see the same gain @aaronrenner did, but that there will still be a ~20-25% deficit vs Cowboy (that's what I'm working on now).
If you have any similarly comparative graphs for CPU & scheduler utilization that would also be appreciated.

@jaronoff97 would you be able to take a look at phoenix 1.5.2

phoenix bandit 1.5.2

@mtrudel I just confirmed that compression was disabled for both cowboy (I believe this is the default) and bandit. The web server was changed via an environment variable in config/runtime.exs so here is the difference in the settings:
 case System.get_env("WEB_SERVER", "cowboy") do
    "bandit" ->
      config :my_app, MyAppWeb.Endpoint,
        adapter: Bandit.PhoenixAdapter,
        http: [
          websocket_options: [
            compress: false
          ]
        ]

    "cowboy" ->
      config :my_app, MyAppWeb.Endpoint, adapter: Phoenix.Endpoint.Cowboy2Adapter
  end

Closing due to inactivity


Avoid an unnecessary copy of the frame data

The callback that handles sensor data, which starts here:
https://github.com/IntelRealSense/librealsense/blob/fc007cef1b9bb4f68dfdb540fcbea70aac46ebaa/src/sensor.cpp#L318
... calls generate_frame_from_data() on its platform::frame_object parameter. This function makes a copy of the frame data here:
https://github.com/IntelRealSense/librealsense/blob/fc007cef1b9bb4f68dfdb540fcbea70aac46ebaa/src/sensor.cpp#L249
As far as I can tell, the only place where this copy of the frame data is subsequently used is to make another copy of the frame data, here:
https://github.com/IntelRealSense/librealsense/blob/fc007cef1b9bb4f68dfdb540fcbea70aac46ebaa/src/sensor.cpp#L362
... in uvc_sensor::open(), and here:
https://github.com/IntelRealSense/librealsense/blob/fc007cef1b9bb4f68dfdb540fcbea70aac46ebaa/src/sensor.cpp#L846
... in hid_sensor::start().
This PR proposes to remove the first copy to improve performance. Instead of copying the data from the platform::frame_object into the temporary frame and from there on into the frame_holder's frame, it can be directly copied from the platform::frame_object into the frame_holder's frame, which should give a performance improvement that is especially relevant on slow platforms such as the Raspberry PI 4 that I currently work with.
The temporary frame object "fr" still seems to be necessary to be able to use it to call _timestamp_reader->get_frame_timestamp_domain(fr) (which I assumed does not try to access the frame's content; otherwise, this PR would need to be adapted). Aside from that, the code only seems to access fr->additional_data as far as I can tell.
Since generate_frame_from_data() does not create a valid frame anymore then, it should probably be renamed; maybe there are better ideas than generate_empty_frame_from_data() what I used.

Seems like this eventually got implemented in #10573.


Move to Haskell2010

Not sure if there's any deeper reason why this was written in Haskell '98...
Also not sure if this pull request will look like I want it to look (I just intended to PR 26c70980dc9168c75c79623eaad9994aa1f52363, but it only accepts this PR with #18 included).

Maybe you can rebase this now that I merged the other pull request?

Hm. Here it shows the PR as acceptable ("This branch is up-to-date with the base branch"). What happens if you just try to pull this?

Ah, yes, git is smart enough to figure out what to do. I've merged this now, thanks for contributing.


Sidekick always encourages sign in

Regression from #271: now that isAuthenticated() no longer returns true in case of nonauthenticated sites, the sidekick always unfolds the sign in menu item.

:tada: This issue has been resolved in version 6.8.4 :tada:
The release is available on:

GitHub release
v6.8.4

Your semantic-release bot :package::rocket:


python311Packages.thumbor-pexif: rename from thumborPexif

Description of changes
part of #245383
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 279356 run on x86_64-linux 1

Please remove this package instead. It is only compatible with Python 2, and not referenced by anything in-tree.

Per the contributing guidelines, the commit message should hold the motivation.


differences between shadow and shady dom when styling stamped content

Hi,
There is a discrepancy when trying to style a particular type of elements. Consider the following "pseudo" component:
<component-boilerplate>
   ...
   <inner-component>
     <template>
       test
     </template>
  </inner-component>
</component-boilerplate>

<inner...>
    ...

        <content></content>

</...>

When the contents of the template are inserted into the container of the inner component by it (it uses the templatizer behavior to stamp the content), it appears that you can't style the inner elements (the .title in this case) via a single selector. Polymer acts as if the stamped content is still in the content element, whereas SD correctly finds the new elements under #container itself.

Hi, can you provide a JSBin containing a set of reproducible steps? See CONTRIBUTING.md for details.
In particular, I think your styles are not being processed by the Polymer style mechanisms for Shady DOM. A working reproduction would be very helpful to see if this is a bug or user error. Thanks!

Closing per above comment.


add jbang-catalog

with this catalog you can run:
jbang jarkanoid@hansolo/jarkanoid
draft for now as needs 0.103.2 of jbang released to work magically on M1 macs + it currently uses a macos release jar but since I add the proper OS deps first it works (but would be nicer with the general jar published under releases or available in maven)
wdyt?
alternatively you can make a HanSolo/jbang-catalog repo and it can be shortened to jbang jarkanoid@hansoloe

@HanSolo thoughts?

Already moved on to another pet project but whatever you need is fine for me…create a PR and I will merge it 😁

If you make hansolo/jbang-catalog then the name gets to be shorter and can be used for any others :)

So I create a repo hansolo/jbang-catalog and what’s next? Sorry for not knowing… 🤷🏼♂😁

Then I make a pr in that repo with similar content to this pr and we can then close this pr and apply the other instead.
Result is the Alias to use with jbang gets to be shorter :)

repository created

excellent - but its emtpy so I can't fork/open pull-request.
Either init the repo and I'll make a PR or take the jbang-catalog.json from this PR and put into the new jbang-catalog repo.

Yep sorry…was dragged away from my machine…will do asap

Now it's initialized...sorry for the delay...

opened https://github.com/HanSolo/jbang-catalog/pull/1 will close this one.


add MCP server badge

This PR adds a badge for the mcp-tool-builder server listing in Glama MCP server directory.

Glama performs regular codebase and documentation scans to:

Confirm that the MCP server is working as expected
Confirm that there are no obvious security issues with dependencies of the server
Extract server characteristics such as tools, resources, prompts, and required parameters.

This badge helps your users to quickly asses that the MCP server is safe, server capabilities, and instructions for installing the server.

Thanks! are you on the MCP Discord?
Let me know your Discord username and I will give you a special flair that's only for MCP server authors.


Use ErrKeyUnableToVerify if fail to calc fingerprint in ssh-keygen

Fix #3985
Signed-off-by: Andrew Thornton<EMAIL_ADDRESS>

unfortunately I don't have an example otherwise I'd have done the tests

I found one in https://github.com/Ganapati/RsaCtfTool/blob/master/examples/weak_public.pub#L1

@zeripath I have created a rsa 1023 bit public key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgFSbX7pXBc5xW5ByF4RB6Lr8HbfW0/LXq90UjWpRSR6z+HEfN/4m8jRF5Vl/GCtu86YSi9au1TeZ0kHgTTCgQIv5vc+zZJkx4mbzpQ+WzEYB9SET4W3AZBv3diJVXQX6KuMICgq30PeVB4PsZoyBasjSS422pCCgFDpH/l6JgYlJ

I have just seen your message and you can use either.
I have tested the key I provided with ssh-keygen:
ssh-keygen -lf rsa_test.pub
rsa_test.pub is not a public key file.

Codecov Report

Merging #10863 into master will increase coverage by 0.01%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##           master   #10863      +/-   ##
==========================================
+ Coverage   43.42%   43.43%   +0.01%
==========================================
  Files         593      593
  Lines       83262    83268       +6
==========================================
+ Hits        36155    36168      +13
+ Misses      42615    42614       -1
+ Partials     4492     4486       -6

Impacted Files
Coverage Δ

models/ssh_key.go
50.64% <0.00%> (-0.22%)
:arrow_down:

routers/user/setting/keys.go
12.38% <0.00%> (-0.34%)
:arrow_down:

modules/queue/workerpool.go
56.93% <0.00%> (-2.14%)
:arrow_down:

modules/git/repo.go
48.11% <0.00%> (+0.83%)
:arrow_up:

modules/git/command.go
89.56% <0.00%> (+2.60%)
:arrow_up:

services/pull/check.go
53.04% <0.00%> (+3.04%)
:arrow_up:

modules/process/manager.go
78.31% <0.00%> (+3.61%)
:arrow_up:

modules/git/utils.go
70.14% <0.00%> (+4.47%)
:arrow_up:

modules/indexer/stats/db.go
59.37% <0.00%> (+9.37%)
: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 f9f2c16...b5d799f. Read the comment docs.

OK so the issue is that calcFingerprintNative will happily parse both of those keys but calcFingerprintSSHKeygen will not.

Happily however, testing with both those keys has shown to me that I missed passing up the error upstream.

So I've discovered that CheckPublicKeyString doesn't seem actually checking the length correctly.

Ah, if we have Native SSH key gen we should probably have the minimum key sizes set by default to at least what they are in ssh keygen

@zeripath yes the standard go lib for rsa is not restricting size (we should check it).
That how I generate the rsa for the test.


[REQUEST] Do a tutorial series on this tool + Create forum

Hi @jerosoler , your tool can do wonders! I did not realize that until I hit the issues page. I would like to request you to do a full coverage of the capabilities of this tool in a tutorial series and also create a community where we can help each other on related issues.
Thank you, just my two-sense.

Hello,
Thanks.
I don't have the necessary time.
I already spend time responding to issues, emails, maintaining, creating other libraries.
On the other hand I think it's a small library and you don't need it.
Of the node editor libs, I think it's one of the simplest to use and easiest.
There are also no sponsors.
Jero


Processes being cleaned up

I use derry to alias my Firebase Emulators command. Something along the lines of:
firebase emulators:start --import ./emulator_data
The problem is that when I terminate the emulators (with Ctrl/Cmd+C), they still continue to run. Next time I run the same derry command I get an error from Firebase about port conflicts.
Is there anything I'm doing wrong or is it possible for derry to terminate the underlying process as well as its own?

This does not seem to be an issue anymore. Possibly because of an update to firebase-tools.


Custom button execution does not appear in Tasks

Split off from #22806
When a user presses a custom button (in this case on a Service), there's no indication of it actually running anywhere.  I'm not sure if the bug is that it's not in Tasks at all, or just not visible to the end user.

Hi All,
I am facing the same problem. Does anyone know where to look for execution logs for custom buttons?
In my case I have a custom button to run a ansible playbook to install httpd. When I click the button and submit with inputs, I see request created successfully. But when I click on my services I do not find that.

@RADHIKA500 The logs should exist.  This issue is more about a place in the UI to see background automation task execution, which we don't have yet.


Read through the Daml Finance 2.5.0 pre-release docs

Available here: https://docs.daml.com/2.5.0/

https://github.com/digital-asset/daml-finance/pull/458

The Overview landing page is empty on docs.daml.com, but not on GitHub pages (or locally):
https://docs.daml.com/2.5.0/daml-finance/overview/index.html
vs
https://digital-asset.github.io/daml-finance/overview/index.html
http://localhost:8000/overview/index.html
Same problem here:
https://docs.daml.com/2.5.0/daml-finance/tutorials/index.html
https://docs.daml.com/2.5.0/daml-finance/reference/index.html
But these work:
https://docs.daml.com/2.5.0/daml-finance/concepts/index.html
https://docs.daml.com/2.5.0/daml-finance/packages/index.html
One thing these two have in common is that they have some text in addition to the toctree, whereas the ones that don't work only have the toctree.

The pre-release contains the old Bond Lifecycling tutorial:
https://docs.daml.com/2.5.0/daml-finance/tutorials/instrument-modeling/bond-lifecycling.html
This has been replaced by the Intermediated Lifecycling tutorial in the Daml Finance repo:
http://localhost:8000/tutorials/instrument-modeling/intermediated-lifecycling.html
Hence, it would be good if they would use a newer Daml Finance doc snapshot for the official 2.5.0 doc version.


Type Instability in Pair Potentials

I think the pair potentials implementation has a type instability due to the fact that the function to be called is declared as f::Function

fixed in #22


Can't compile if the file content is too large

Description:
I have a large json structure which is an open API definition. When build my project I get the following error
`Compiling source
wso2/rajiNew:0.1.0
Creating balos
target/balo/rajiNew-2019r3-any-0.1.0.balo
error: wso2:rajiNew:rajiNew:1:1: method is too large: 'wso2/rajiNew:0.1.0.'`
Steps to reproduce:
Please find the file attached here.
openAPIJsonConstants.bal.zip
Affected Versions:
1.0.0
OS, DB, other environment details and versions:
Related Issues (optional):

Suggested Labels (optional):

Suggested Assignees (optional):

As per the JVM spec (https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) the maximum size of a method is 65535 bytes. Since jBallerina compiles down to java-byte-code and runs on top of JVM above method size limit also applies to ballerina methods (only for jballerina. This will not be applicable to other implementations such as native implementations - i.e: nballerina).
However, since how jballerina generates byte code is different to how java generates the byte code this method size limit is different for java method and ballerina methods. With future byte-code optimizations, this limit will be increased, however, it is not possible to completely remove it as its enforced by the underlying JVM.
The solution is to split the methods into much more compact methods.

We need to read a json/yaml file of unknown size (can be 1-5MB) for a feature implementation in wso2 microgateway. However right now with jballerina (1.1.x) it looks like its not packing project resources to the final jar file. Which makes it harder for us to implement read from file solution. Is there any other workarounds or ways to pack resource files to the ballerina jar file.

The method size allowed will be increased to a great extent with the local variable optimization done using liveness analysis in the PR: https://github.com/ballerina-platform/ballerina-lang/pull/25049

The following code will help to reproduce this issue. This is giving the **Error: Method is too large
function insertOpportunities(sfdc:SoqlResult opportunities) returns int|error{
    //io:println(opportunities);
    io:println("Start inserting Opportunities...");
    azureMysql:Client dbClient = check createAzureMySQLClient();

    sql:ParameterizedQuery updateQuery = `UPDATE chanuka_test SET IsInSF = 0`;
    sql:ExecutionResult result = check dbClient->execute(updateQuery);
    io:println("IsInSF Updated Row count: ", result?.affectedRowCount);

    sql:ParameterizedQuery[] insertQueries = [];
    int i = 0;

    // Creates a batch-parameterized query.
    foreach var opportunity in opportunities.records {
        string Id = opportunity["Id"].toString();
        string Name = opportunity["Name"].toString();
        string AccountId = opportunity["AccountId"].toString();
        string BANT_Chanel__c = opportunity["BANT_Chanel__c"].toString();
        string Closed_QTR__c = opportunity["Closed_QTR__c"].toString();
        string CurrencyIsoCode = opportunity["CurrencyIsoCode"].toString();
        string Development_Support_Account_Key__c = opportunity["Development_Support_Account_Key__c"].toString();
        string Engagement_Code__c = opportunity["Engagement_Code__c"].toString();

        string Account_Address__c = opportunity["Account_Address__c"].toString();
        string Pre_Sales_Code__c = opportunity["Pre_Sales_Code__c"].toString();
        string OwnerId = opportunity["OwnerId"].toString();
        string Owner_ID__c = opportunity["Owner_ID__c"].toString();
        string Technical_Owner__c = opportunity["Technical_Owner__c"].toString();
        string Region__c = opportunity["Region__c"].toString();
        string Entry_Vector__c = opportunity["Entry_Vector__c"].toString();
        string StageName = opportunity["StageName"].toString();
        string Account_Classification__c = opportunity["Account_Classification__c"].toString();
        string Account_Sub_Category__c = opportunity["Account_Sub_Category__c"].toString();

        int IsClosed = convertBooleanToBit(<boolean>opportunity["IsClosed"]);
        int IsWon = convertBooleanToBit(<boolean>opportunity["IsWon"]);
        int Reached_Proposal_Stage__c = convertBooleanToBit(<boolean>opportunity["Reached_Proposal_Stage__c"]);
        int IsInSF = 1;

        string? CL_End_Date_Roll_Up__c = dateConvert(opportunity["CL_End_Date_Roll_Up__c"]);
        string? BANT_Qualified_First_Sale_Date__c = dateConvert(opportunity["BANT_Qualified_First_Sale_Date__c"]);
        string? CloseDate = dateConvert(opportunity["CloseDate"]);
        string? Opp_End_Date__c = dateConvert(opportunity["Opp_End_Date__c"]);
        string? Opp_Start_Date__c = dateConvert(opportunity["Opp_Start_Date__c"]);
        string? CreatedDate = dateConvert(opportunity["CreatedDate"]);
        string? PS_Support_Account_End_Date_Roll_Up__c = dateConvert(opportunity["PS_Support_Account_End_Date_Roll_Up__c"]);
        string? PS_Support_Account_Start_Date_Roll_Up__c = dateConvert(opportunity["PS_Support_Account_Start_Date_Roll_Up__c"]);
        string? Proposal_Stage_Date__c = dateConvert(opportunity["Proposal_Stage_Date__c"]);

        decimal ARR__C =  <decimal>opportunity["ARR__c"];
        decimal Amount =  <decimal>opportunity["Amount"];
        decimal Closed_Month__c =  <decimal>opportunity["Closed_Month__c"];
        decimal Development_Support_Hours__c =  <decimal>opportunity["Development_Support_Hours__c"];

       insertQueries[i] =  `INSERT INTO chanuka_test
                  (Id, Name, Amount,ARR__C, CL_End_Date_Roll_Up__c, AccountId, BANT_Chanel__c, BANT_Qualified_First_Sale_Date__c, CloseDate, Closed_Month__c, Closed_QTR__c,
                  CurrencyIsoCode, Development_Support_Account_Key__c, Development_Support_Hours__c,Engagement_Code__c,IsClosed,IsWon,Opp_End_Date__c,Opp_Start_Date__c,CreatedDate,
                  Account_Address__c,Pre_Sales_Code__c,OwnerId,Owner_ID__c,Technical_Owner__c,Region__c,Entry_Vector__c,StageName,PS_Support_Account_End_Date_Roll_Up__c,
                  PS_Support_Account_Start_Date_Roll_Up__c,Account_Classification__c,Reached_Proposal_Stage__c,Account_Sub_Category__c,Proposal_Stage_Date__c,IsInSF)
                  VALUES (${Id}, ${Name},${Amount},${ARR__C},${CL_End_Date_Roll_Up__c},${AccountId},${BANT_Chanel__c},${BANT_Qualified_First_Sale_Date__c},
                  ${CloseDate},${Closed_Month__c},${Closed_QTR__c},${CurrencyIsoCode},${Development_Support_Account_Key__c},${Development_Support_Hours__c},${Engagement_Code__c},${IsClosed},${IsWon},
                  ${Opp_End_Date__c},${Opp_Start_Date__c},${CreatedDate},${Account_Address__c},${Pre_Sales_Code__c},${OwnerId},${Owner_ID__c},${Technical_Owner__c},${Region__c},${Entry_Vector__c},${StageName},${PS_Support_Account_End_Date_Roll_Up__c},${PS_Support_Account_Start_Date_Roll_Up__c},${Account_Classification__c},
                  ${Reached_Proposal_Stage__c},${Account_Sub_Category__c},${Proposal_Stage_Date__c},${IsInSF}) ON DUPLICATE KEY UPDATE
                  Name = ${Name}, Amount = ${Amount},ARR__C = ${ARR__C},CL_End_Date_Roll_Up__c = ${CL_End_Date_Roll_Up__c}, AccountId = ${AccountId},
                  BANT_Chanel__c = ${BANT_Chanel__c}, BANT_Qualified_First_Sale_Date__c = ${BANT_Qualified_First_Sale_Date__c},CloseDate = ${CloseDate}, Closed_Month__c = ${Closed_Month__c},
                  Closed_QTR__c = ${Closed_QTR__c}, CurrencyIsoCode = ${CurrencyIsoCode},Development_Support_Account_Key__c = ${Development_Support_Account_Key__c},
                  Development_Support_Hours__c = ${Development_Support_Hours__c},Engagement_Code__c = ${Engagement_Code__c}, IsClosed = ${IsClosed},IsWon = ${IsWon},Opp_End_Date__c = ${Opp_End_Date__c},Opp_Start_Date__c = ${Opp_Start_Date__c},
                  CreatedDate = ${CreatedDate},Account_Address__c = ${Account_Address__c},Pre_Sales_Code__c = ${Pre_Sales_Code__c},OwnerId = ${OwnerId},Owner_ID__c = ${Owner_ID__c},Technical_Owner__c = ${Technical_Owner__c},Region__c = ${Region__c},Entry_Vector__c = ${Entry_Vector__c},
                  StageName = ${StageName},PS_Support_Account_End_Date_Roll_Up__c = ${PS_Support_Account_End_Date_Roll_Up__c},PS_Support_Account_Start_Date_Roll_Up__c = ${PS_Support_Account_Start_Date_Roll_Up__c},Account_Classification__c = ${Account_Classification__c},Reached_Proposal_Stage__c = ${Reached_Proposal_Stage__c},
                  Account_Sub_Category__c = ${Account_Sub_Category__c},Proposal_Stage_Date__c = ${Proposal_Stage_Date__c},IsInSF = ${IsInSF}`;

        i = i + 1;
    }

    // Inserts the records with the auto-generated ID.
    sql:ExecutionResult[] resultInsert = check dbClient->batchExecute(insertQueries);
    io:println(resultInsert);
    int numberOfRowsInserted = 0;
    foreach var summary in resultInsert {
        numberOfRowsInserted = numberOfRowsInserted + <int> summary.affectedRowCount;
    }
    io:println ("Number of rows inserted: " + numberOfRowsInserted.toString());
    return numberOfRowsInserted;
}

This issue happen due to sql:ParameterizedQuery which is using raw templates. Internally raw templates use type alias with union types.
public type Value string|int|boolean|float|decimal|byte[]|xml|DateTimeType|ArrayValueType|TypedValue?;
For each template value runtime creates union of above types which generates consider amount of code. But for each value we should be able to reuse same union type. ATM those type alias names are not passed to codegen from compiler Front end due to  https://github.com/ballerina-platform/ballerina-lang/issues/26284.
Fixing https://github.com/ballerina-platform/ballerina-lang/issues/26284 will solve above issue.
We also working on optmizing union type creation logic as well. https://github.com/ballerina-platform/ballerina-lang/issues/32019


Add "sub" type and allow scopes to support sub(feat)

@jthomerson I wasn't sure what types we should support for the scopes used in sub(type) so I went ahead and allowed them all. That means that sub(feat) and sub(fix) are supported, but so are less obviously-useful combinations like sub(revert) and sub(style). I didn't want to limit us arbitrarily, but maybe it makes sense to only support a subset? I'm not sure.

LGTM. @jimjenkins5 you want to take a look at it?
@yokuze I think feat/fix would be the two most likely sub(scope) uses, but it's probably right not to limit them arbitrarily right now ... or, OTOH, if we were worried about it being a "breaking change" to remove some sub scopes later, we could limit to just feat/fix and then it'd be a minor "enhancement" to add them later. Hmmm... thoughts?

This looks good to me.
FWIW, I agree with the decision to allow all types in the scope. Although I can't see any reason to use sub(build) or similar, I can't see any obvious problems using them would cause. IMHO, we should only enforce standards that solve a problem. I don't see what problem limiting the scope to feat and fix would solve.

Ok - that's a good consideration about not introducing a breaking change if we want to narrow the set of acceptable "sub" types down later, but I think I'm still in favor of keeping it open to all types because it lets us create smaller, more focused commits with any type of thing we're implementing, and I don't see a big downside to it.


Add JobType.set_task_started_now() method

Coverage decreased (-0.88%) to 73.18% when pulling 57f30e463246b4d871678dd71b1ca1259578ef60 on guidow:task_time_started_now into f97fd8e4e0793155acf9bd11780de07afc54e673 on pyfarm:master.

Coverage decreased (-0.84%) to 73.22% when pulling 7ea66f70f5b0c786ef26ffd10f49268b46909791 on guidow:task_time_started_now into f97fd8e4e0793155acf9bd11780de07afc54e673 on pyfarm:master.

Coverage decreased (-0.84%) to 73.22% when pulling 7ea66f70f5b0c786ef26ffd10f49268b46909791 on guidow:task_time_started_now into f97fd8e4e0793155acf9bd11780de07afc54e673 on pyfarm:master.

Coverage decreased (-0.84%) to 73.22% when pulling 7ea66f70f5b0c786ef26ffd10f49268b46909791 on guidow:task_time_started_now into f97fd8e4e0793155acf9bd11780de07afc54e673 on pyfarm:master.

Coverage decreased (-0.84%) to 73.22% when pulling 2d8506c92377cbba09a3f11c5039e4f5453b1779 on guidow:task_time_started_now into f97fd8e4e0793155acf9bd11780de07afc54e673 on pyfarm:master.

Alright I think we can go ahead and merge this.


Add a new method item.

Add a new method to return the current item.

I'm going to squash this branch.


Debugging and qa & app publishing nodes updated

Guidelines
Describe the big picture of your changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue.
Debugging node updated

===============================================================================
QA & App publishing  node updated

Types of changes
What types of changes does your code introduce?

[ ] Bugfix (non-breaking change which fixes an issue)
[X] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Preparing a pull request for review
Ensure your change is properly formatted by running:
$ ./gradlew spotlessApply

Please correct any failures before requesting a review.

Hey, @UrielTovar!
The new nodes are looks great! Could you update the conflicts against the recent commit before merging this? Thanks :)


Reset: not rely on timeout for cleanup history

As a safer way, we have implemented history scanner to cleanup in background job

Coverage increased (+0.01%) to 69.448% when pulling 36ae79488deac9280ae8827d50ab6cf6b759821a on longquanzheng:reset-history into 5606e0f6c7785317f8e60cc42b559dbc574166ad on uber:master.


Fix health check AlertNotification

Describe the bug
AlertNotification has "Try again" button which doesn't do anything, the potential reason could be that some of the dependencies in useEffect are not updated or badly composed registerSetInterval function with some closure complexity.
To Reproduce
Steps to reproduce the bug:

Go to any page with possible AlertNotification
Mock error behaviour
Click try again button, so that immediately after clicking the "healthz" request must be triggered instantly and AlertNotification must disappear, but actually nothing happens.

So with my mocking the scenario was:

I see error, because counter === 0, I don't see any "healthz" requests.
I click "Try again" and check browser network tab
I see new "healthz" request instantly and AlertNotification disappears
I see new "healthz" requests each 5 secs after

For testing purposes
As I didn't know how to mock server healthz response, I just setup [counter, setCounter] state, added condition "if counter % 2 === 0" inside performHealthCheck with setting error if true, else "return checkerFunction()...", also I added click handler which increments counter and invokes performHealthCheck with new counter value.
`export function PureAlertNotification({ checkerFunction }: PureAlertNotificationProps) {
const [networkStatusCheckTimeFactor, setNetworkStatusCheckTimeFactor] = React.useState(0);
const [error, setError] = React.useState<null | string | boolean>(null);
const { t } = useTranslation();
const { pathname } = useLocation();
const [counter, setCounter] = React.useState(0);
const performHealthCheck = React.useCallback((counter: number) => {
if (!window.navigator.onLine) {
setError('Offline');
return;
}
// Don't check for the cluster health if we are not on a cluster route.
if (!getCluster()) {
  setError(null);
  return;
}

if (counter % 2 === 0) {
  setError('Counter error');
} else {
  return checkerFunction()
    .then(() => setError(false))
    .catch(err => {
      setError(err.message);
      setNetworkStatusCheckTimeFactor(prev => prev + 1);
    });
}

}, []);
React.useEffect(() => {
const interval = setInterval(
() => performHealthCheck(counter),
(networkStatusCheckTimeFactor + 1) * NETWORK_STATUS_CHECK_TIME
);
return () => clearInterval(interval);
}, [performHealthCheck, networkStatusCheckTimeFactor, counter]);
// Make sure we do not show the alert notification if we are not on a cluster route.
React.useEffect(() => {
if (!getCluster()) {
setError(null);
}
}, [pathname]);
const showOnRoute = React.useMemo(() => {
for (const route of ROUTES_WITHOUT_ALERT) {
const routePath = getRoutePath(getRoute(route));
if (matchPath(pathname, routePath)?.isExact) {
return false;
}
}
return true;
}, [pathname]);
if (!error || !showOnRoute) {
return null;
}
const handleClick = () => {
setCounter(prev => {
const newValue = prev + 1;
performHealthCheck(newValue);
return newValue;
});
};
return (
<Alert
variant="filled"
severity="error"
sx={theme => ({
color: theme.palette.common.white,
background: theme.palette.error.main,
textAlign: 'center',
display: 'flex',
paddingTop: theme.spacing(0.5),
paddingBottom: theme.spacing(1),
paddingRight: theme.spacing(3),
justifyContent: 'center',
position: 'fixed',
zIndex: theme.zIndex.snackbar + 1,
top: '0',
alignItems: 'center',
left: '50%',
width: 'auto',
transform: 'translateX(-50%)',
})}
action={
<Button
sx={theme => ({
color: theme.palette.error.main,
borderColor: theme.palette.error.main,
background: theme.palette.common.white,
lineHeight: theme.typography.body2.lineHeight,
'&:hover': {
color: theme.palette.common.white,
borderColor: theme.palette.common.white,
background: theme.palette.error.dark,
},
})}
onClick={handleClick}
size="small"
>
{t('translation|Try Again')}

}
>
<Typography
variant="body2"
sx={theme => ({
paddingTop: theme.spacing(0.5),
fontWeight: 'bold',
fontSize: '16px',
})}
>
{t('translation|Lost connection to the cluster.')}

);
}`

Hi, thanks for opening this PR! Regarding the issue here, it would be best to log it in the repo here

And then you can link the issue to this PR and avoid having a super long PR description. This should generally be reserved for a short description of the changes, along with any helpful instructions to test the changes for anyone reviewing.
Feel free to reference our contribution guidelines and reach out if you have any questions :)

Hi @callmevladik
thanks for this fix! Appreciate it.
A few notes about the CI build errors:

The DCO check can be fixed by adding a sign off with git commit --amend -s
The test plugins failure looks to be unrelated to this PR (Please ignore, it will be fixed in another PR)
The frontend test failure is because of i18n. Please run make frontend-i18n-check from repo root to check it. I think if you added any translations you can run npm run i18n from within frontend/ which will generate empty translations for the other locales.


NoneType' object has no attribute 'ray_aabb_intersect' when run demo img and video

after step by step follow your guide.cuda12.0,py39

and two package installed not in the readme is pytorch_lightning-2.2.1 and nerfacc

For that issue, please make sure your nerfacc version is 0.5.3, I will also post a better environment setup guide.

Updated, please check out the new environment setup guide. 🚀

after I try then AttributeError: 'NoneType' object has no attribute 'ray_aabb_intersect'

follow the updated guide demo

NerfAcc: No CUDA toolkit found. NerfAcc will be disabled.

python inference.py -r ./checkpoints/one_model.ckpt --driver ./demos/drivers/pdriver --input ./demos/examples/real1
Namespace(driver='./demos/drivers/pdriver', input='./demos/examples/real1', resume='./checkpoints/one_model.ckpt', frame_num=150, rotate=0, if_video=False)
TASK:
MODEL_LIST:                 OneShotAvatar
BUILD_TIME:                 2023.07.23
MODEL:
MODEL_NAME:                 OneModel
ENGINE_NAME:                LightningEngine
CAMERA:
CAMERA_TYPE:                cubic
DATASET_AUGMENT:
RESIZE:                     512
RANGE:                      [0, 1]
SAMPLE_NUMBER:              2
TRAIN:
GENERAL:
MONTE_CARLO:            False
TRAIN_ITER:             200000
SHOW_STAT_ITER:         100
BATCH_SIZE_PER_GPU:     2
MODEL_DUMP_INTERVAL:    5000
EXP_STR:                OneModel_VFHQ
TIME_STR:               Feb01_0116_qhpnt
OPTIMIZER:
LR:                     0.0001
SCHEDULER:
TYPE:                   MultiStepLR
DECAY_RATE:             0.2
DECAY_STEP:             [130000, 160000]
DATASET:
DATASET_NAME:               VFHQ
DATASET_LOADER:             MVLightningPoints
DATASET_PATH:               ./Data/VFHQ/img_lmdb
RECORDS_PATH:               ./Data/VFHQ/dataset.pkl
METADATA_PATH:              ./Data/VFHQ/camera.json
BACKGROUND_VALUE:           0.0
DEVICES:                        [0, 1, 2, 3]
flame_scale:        5.0
focal_length:       12.0
principal_point:    [0.0, 0.0]
libpng warning: iCCP: known incorrect sRGB profile
Total frames: 500
Run with tracked data: ./demos/examples/real1/tracked_result.pth
Tri-Planes built.
NerfAcc: No CUDA toolkit found. NerfAcc will be disabled.
Traceback (most recent call last):
File "/data2/stephen/GPAvatar/inference.py", line 259, in
test_engine.run_images(args.input)
File "/data2/stephen/GPAvatar/inference.py", line 189, in run_images
val_results = self.model.forward_inference(**batch_data)
File "/data2/stephen/miniconda3/envs/GPAvatar/lib/python3.9/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/data2/stephen/GPAvatar/core/model/OneModel/one_model.py", line 160, in forward_inference
_, gen_fine, params_dict = self.nerf_camera.render(
File "/data2/stephen/GPAvatar/core/libs/nerf_camera/camera.py", line 101, in two_path_render
coarse_rays = self.ray_sampling(noise=noise)
File "/data2/stephen/GPAvatar/core/libs/nerf_camera/camera.py", line 237, in ray_sampling
ray_start, ray_end, hit = nerfacc.ray_aabb_intersect(
File "/data2/stephen/miniconda3/envs/GPAvatar/lib/python3.9/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/data2/stephen/miniconda3/envs/GPAvatar/lib/python3.9/site-packages/nerfacc/grid.py", line 43, in ray_aabb_intersect
t_mins, t_maxs, hits = _C.ray_aabb_intersect(
File "/data2/stephen/miniconda3/envs/GPAvatar/lib/python3.9/site-packages/nerfacc/cuda/init.py", line 13, in call_cuda
return getattr(_C, name)(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'ray_aabb_intersect'

I will try docker to see whether it will work

sorry.After I uninstall nerfacc and then run pip3 install nerfacc==0.5.3 -f https://nerfacc-bucket.s3.us-west-2.amazonaws.com/whl/torch-2.0.0_cu118.html
The problem has been solved.Thanks for your excellent work


Android integration for Cheeeeeevos

I may not want these anymore. If nothing is naturally a cheesement, don't make any.


[CARBONDATA-1781] Fix EOFException in StreamBlockletReader

Fix EOFException in StreamBlockletReader
In StreamBlockletReader.readBytesFromStream method, if the length of the reading is not enough, continue to read more data.

[x] Any interfaces changed?
no

[x] Any backward compatibility impacted?
no

[x] Document update required?
no

[x] Testing done
Please provide details on
- Whether new unit test cases have been added or why no new tests are required?
add sdv test
- How it is tested? Please attach test report.
sdv test
- Is it a performance related change? Please attach the performance test report.
no
- Any additional information to help reviewers in testing this change.
already add java doc

[x] For large changes, please consider breaking it into sub-tasks under an umbrella JIRA.
small change

Build Success with Spark 2.2.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder/493/

Build Success with Spark 2.1.0, Please check CI http://<IP_ADDRESS>:8080/job/ApacheCarbonPRBuilder1/1756/

SDV Build Success , Please check CI http://<IP_ADDRESS>:8080/job/ApacheSDVTests/2139/

LGTM


Playground: Add toggle to enable downlevelIteration flag

When I click "Options" there are a few compiler flags that the user can check to enable. Adding "downlevelIteration" as one of the options would let me try out custom generators when transpiling to ES5.
Currently when trying to run the fibonacci generator code sample from the for...of docs:

function* fibonacci() { // a generator function
  let [prev, curr] = [0, 1];
  while (true) {
    [prev, curr] = [curr, prev + curr];
    yield curr;
  }
}

for (let n of fibonacci()) {
  console.log(n);
  // truncate the sequence at 1000
  if (n >= 1000) {
    break;
  }
}

the playground shows this error:
Type 'IterableIterator<number>' is not an array type or a string type.

As a workaround you can use: https://typescript-play.js.org
E.g. for (const a of [1,2]) {}

This should be working now that we've integrated typescript-play 👍


Changing Object.spec.forProvider.manifest.metadata.name orphans previous resource

What happened?
After changing the Object.spec.forProvider.manifest.metadata.name the resource with the previous name does not get deleted.
How can we reproduce it?
Create a Resource:
apiVersion: kubernetes.crossplane.io/v1alpha2
kind: Object
metadata:
  name: foo
spec:
  forProvider:
    manifest:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        namespace: default
        name: test1

Change the Resource
apiVersion: kubernetes.crossplane.io/v1alpha2
kind: Object
metadata:
  name: foo
spec:
  forProvider:
    manifest:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        namespace: default
        name: test2

run kubectl get cm -n default and observe both test1 and test2 are present.
What environment did it happen in?
Provider Kubernetes: v0.14.1
Crossplane version: v1.16.0
Kubernetes: v1.28.8

I believe this is the expected behavior, at least for the current implementation. metadata.name is a "special" field since it defines the "key" to the object and the operator does not expect the key to change.  That would require deleting the old Object and creating a new one with a new name.

It seems Crossplane itself deals with a similar problem for composed resources, controlling them via spec.resourceRefs. Current behavior there ensures that resources that are no longer part of the desired state get deleted.
Would it make sense for a similar control to be implemented here?
Chiming in with a use-case: we want to control Jobs, whose pod template is (unfortunately) immutable. We thought of working around this by ensuring the resource name changes when we change something we'd like to trigger a new Job for.
I believe the same can be said for anything that's immutable, and we're ok with creating a new one.


Document API stability

Currently, our reference documentation includes some private APIs, for example, many methods of DataSet may need to change in the future. On the other hand, Slice and Shape are in the "Internal API" section, and are used as part of UDFMeta, so are quasi-public. We need to make this more clear!

See also: https://github.com/Carreau/frappuccino to enforce API stability, used for example by scikit-image


Address Issue #2

Implemented function that allows for dynamic conversion of memory types.
Definitely was a challenge implementing, but this should work.

@dblitt Any updates on if this PR will be accepted soon?

@dellzer sorry I am very busy right now, should have more time in a few days. On first glance, it seems none of your code is being called. is this intended?

@dellzer sorry I am very busy right now, should have more time in a few days. On first glance, it seems none of your code is being called. is this intended?

Created a new commit to call the function and replace code in cpuusage_main.c.

There seem to be many errors in your code. Please see https://github.com/dblitt/sysmonitor/actions/runs/12341948532/job/34614020654?pr=5 for the emitted warnings.
Additionally, to solve this issue, I was thinking of a dynamic formatter, where for example if RAM usage was < 1GB, it would show as XXX.X MB, but > 1 GB, it would be XX.XX GB, etc.

@dblitt I've added the dynamic formatter, and tested it to ensure that there are no compile time errors.

Updates on the status of this PR?


fix: Added ARIA attributes in Multiple Form Sections

Related Issue

Closes: #300
Description of Changes

Added Suitable ARIA Attributes in change-password.php, delete-link.php, edit-profile.php nd forgot-pass.php Files

Checklist:

[ ] My code adheres to the established style guidelines of this project.
[x] I have conducted a self-review of my code.
[ ] I have included comments in areas that may be difficult to understand.
[ ] I have made corresponding updates to the project documentation.
[x] My changes have not introduced any new warnings.

Screenshots

Original
Updated

Please provide any necessary screenshots to illustrate the changes made.

Hi @apoorvaron . Please Review on this PR and add Valid Level Labels on That.

@NarendraKoya999 Its just simplest work to do. Create another PR for another issue , i will adjust the label there only


Add command to programatically run all on-window-detected callbacks

Hi,
It's possible to have a command that runs all the on-window-detected callbacks?
Use-case:
I have the apps <> workspaces affinities setup like:
# apps to workspaces
[[on-window-detected]]
if.app-id = 'com.microsoft.VSCode'
run = ['move-node-to-workspace 1']

[[on-window-detected]]
if.app-id = 'com.vivaldi.Vivaldi'
run = ['move-node-to-workspace 2']

...

Sometimes I move apps between workspaces and then have the need to reposition them back to the initial workspaces. So it would be useful to have a command like aerospace force-window-detected to run all the rules the move the windows back to their original workspace.
Also a different request/question, it's possible to assign layouts to workspaces in the config file? e.g workspace 1 to start with the h_accordion layout.

So it would be useful to have a command like aerospace force-window-detected to run all the rules the move the windows back to their original workspace.

Nice. I like the suggestion. The hardest part here is to come up with a good name for the command
Brainstorming:

force-window-detected (the suggested name)
run-on-window-detected-callbacks
force-run-on-window-detected-callbacks
redetect-windows

Right now, 2 and 3 are my favorite. IMO, they are the most clear. Ideas are welcome

Also a different request/question, it's possible to assign layouts to workspaces in the config file? e.g workspace 1 to start with the h_accordion layout.

Right now. it's not possible, but probably it'd be nice to have. What is your use case?
I'm curious if it were possible to run layout command in on-window-detected callback, would it resolve your issue? (this way you will apply the layout only if the specific window is detected, but maybe it's exactly what you want to, I don't know your use cases)
The hardest part is to come up with a good syntax
Brainstorming:
(1)
default-root-container-layout = 'tiles'
workspace.1.default-root-container-layout = 'tiles'

(2)
[default-root-container-layout]
workspace.1 = 'tiles'
workspace.2 = 'accordion'
workspace.all = 'tiles' # 'all' will be a reserved name for workspaces since 0.8.0, anyway

(3)
[default-root-container-layout]
workspace.1 = 'tiles'
workspace.2 = 'accordion'
other = 'tiles'

Regarding the command name, I think the second option is good: run-on-window-detected-callbacks!

Right now. it's not possible, but probably it'd be nice to have. What is your use case?

The use case is to fast switch maximised apps in the same workspace. E.g I like to have a workspace for IDEs where I have multiple instances (different folders/projects opened) and I like a stacked/accordion layout for that.

I'm curious if it were possible to run layout command in on-window-detected callback, would it resolve your issue?

Yes sort of, but when using different apps I would need a rule for each of them to set the layout. It feels more natural to set the layout at the workspace configuration level.
Regarding the syntax, I like your options (a) and (b).
Another approach would be to set the layout also in callback style on-workspace-changed (https://github.com/nikitabobko/AeroSpace/issues/87):
[[on-workspace-changed]]
if.workspace-id = '1'
if.during-aerospace-startup = true  # only run this once
run = ['layout h_accordion']

+1 for this feature request

Also a different request/question, it's possible to assign layouts to workspaces in the config file? e.g workspace 1 to start with the h_accordion layout.

I just realized that it's already possible with after-startup-command
after-startup-command = [
    'workspace 1', 'layout h_accordion',
    'workspace 2', 'layout h_accordion'
]

@nikitabobko yeah nice catch. Just tested and works well :). Could be useful to have an example in the docs as a reminder.

I'm guessing this combined with after-startup-command might help with the issues I'm having with startup order.
Aerospace, among many other apps, starts automatically. Depending on the order, and I think when Aerospace starts up last, it won't move apps to workspaces nor tile time automatically.
I have to restart many of the applications that end up sadly floating around.

it won't move apps to workspaces nor tile them automatically.

@quulah No, it shouldn't matter. Do you have if.during-aerospace-startup = false in your config by any chance?

Hmm. No, I don't have that. 🤔
My intention is to have a few workspaces with tiling and specific applications assigned to those, and then one without as a dump for everything else.
The config looks like this for (hopefully) the relevant bits:
start-at-login = true
after-startup-command = []
after-login-command = []
default-root-container-layout = 'tiles'
...
# Default - 1
[[on-window-detected]]
if.workspace = '1:default'
check-further-callbacks = true
run = 'layout floating'

[[on-window-detected]]
check-further-callbacks = true
run = 'move-node-to-workspace 1:default'

...

# Messaging - 4
[[on-window-detected]]
if.workspace = '4:messaging'
check-further-callbacks = true
run = 'layout tiling'

[[on-window-detected]]
if.app-id = 'com.tinyspeck.slackmacgap'
run = 'move-node-to-workspace 4:messaging'

[[on-window-detected]]
if.app-id = 'com.microsoft.teams2'
run = 'move-node-to-workspace 4:messaging'

And it sort of works, except for the startup problem. Not sure if I'm doing something too funky. :)
If this seems like something that should work I can open another issue to track that.


Splat operators lead to invalid type

Using an input file such as:
output "sometest" { value = {
  name = module.instance.*.tags.Name
  id   = module.instance.*.id
} }

When attempting to read it, will lead to this error:
Error: invalid type: string ".*", expected unit

The splat operator is used heavily in our terraform configuration for outputs.

As a follow-up this is also an issue with the [*] splat variant:
output "sometest" { value = {
  name = module.instance[*].tags.Name
  id   = module.instance[*].id
} }

Unable to process: invalid type: string "[*]", expected unit

Hi, this looks like a bug in the deserializer implementation for the traversal operator. It should be fairly easy to fix, i'll try to provide a fix later today.
This should not happen if you use hcl::parse instead of hcl::from_str though.

@archoversight  I just published https://crates.io/crates/hcl-rs/0.8.4 which includes the fix.

@martinohmann thank you!
I was using hcl::from_reader() so that I can pass it a file that was opened. Is there a better pattern to use?


Adding OneSignal Push Adapter

This OneSignalPushAdapter builds upon the swappable push adapter functionality built into Parse Server for developers who wish to use OneSignal.
This also fixes incorrect error checking in src/RestWrite.js that prevented Installations from being created for Android devices when a device token is present.
Some wiki modifications will also be required to guide users on how to use and configure OneSignal and other possible push adapters.

Cool. :+1:

Any docs on how to actually use this?

Thanks! We'll add that to the docs.


How can set some formula/calculation ?

Are you requesting a feature, reporting a bug or ask a question?
What is the current behavior?
What is the expected behavior?
How would you reproduce the current behavior (if this is a bug)?
Provide the test code and the tested page URL (if applicable)
Tested page URL:
Test code
your_code_here

Specify your

browser:
browser version:
surveyjs platform (angular or react or jquery or knockout or vue):
surveyjs version:

@lalitkhanna Could you please describe your task? It is unclear now, what you are trying to achieve.
Thank you,
Andrew

@andrewtelnov , Lets say you've ans based on that you want to do some calculation .i.e.
Question1 : Did you go London ?
Ans : Yes or No ( If yes then your score 5 if No then 0)
Next Question2 : Did you English ?
Ans : Yes or No (If Yes then score 5 if No then 0)
Based on inputs, we will calculate the score after finish the survey.i.e. Your total score is ...
Hope this will help you.
Thanks
Lalit

You can process survey results on onComplete event:
survey.onComplete.add(function(survey) {
        // survey.data contains survey results
        // here you can place your code to make necessary calculations, e.g. score
});

Thanks, What about if I want to calculate on run time means whenever user is choosing option, he/she is getting his/her result.
Thanks
Lalit

You can use onValueChanged event. The event is fired when the question value is changed. It can be done via UI by a user or programmatically on calling setValue method.

@lalitkhanna if I'm not wrong you may use onValueChanged event just like so:
survey.onValueChanged.add(function (sender, options) {

var questionName = options.name;
var newValue = options.value;

//console.log("ON VALUE CHANGED CALLED - QUESTION_NAME - " + questionName);
//console.log("ON VALUE CHANGED CALLED - NEW_VALUE - " + newValue);

});

Good shot, @Kuhax !

Great!! Coming on Survey Editor.. Can we create a control in Editor which can be simply use for this purpose ?
Thanks
Lalit

Or Create a property in existing control, which can calculate this ?
Thanks
Lalit

@lalitkhanna What do you mean by creating a control? You may add a new property and it will be in the editor and you will be able to use it in run-time:
//add a property to the base question class and as result to all questions
Survey.JsonObject.metaData.addProperty("questionbase", {name: "score:number", default: 0});

Here is the full docs about adding a property: http://editor.surveyjs.io/examples/addproperties.html#code
Thank you,
Andrew

I beleive we can show score in any place of the survey. But this will require some coding. We'll help you to implement it.

Thanks @andrewtelnov , @tsv2013,@Kuhax
This is great help for me.
I got an idea to implement my solution & will come back if I'll have any challenges.
Thanks
Lalit

Good luck, Lalit! Please feel free to contact us in case of any further questions!

Thank!!

I didn't find Survey.JsonObject (object) in JS file,Can you please let me how we need to create this object  &
which section I need to initialize ?
Thanks
Lalit

You should add to your html page link to the Survey.JS library. This is described in the library documentation.
For instance if you are using jQuery platform, you should add the following line:
<script src="https://surveyjs.azureedge.net/0.12.17/survey.jquery.min.js"></script>

You can open any example on the surveyjs.org site, lets say Product Feedback survey and click "Edit in Plunker" button. You will be redirected to the Plunker playground where you can play with our code.

Trying hard to reach Plunker, not sure right now some issue is running on site.

Thanks
Lalit

@lalitkhanna plnkr.co is ok now, could ypu check it please?

No reply for several months. I am closing the issue.

Regarding this quote:

@lalitkhanna What do you mean by creating a control? You may add a new property and it will be in the editor and you will be able to use it in run-time:
//add a property to the base question class and as result to all questions
Survey.JsonObject.metaData.addProperty("questionbase", {name: "score:number", default: 0});
Here is the full docs about adding a property: http://editor.surveyjs.io/examples/addproperties.html#code
Thank you,
Andrew

… it would appear the linked-to example is broken. When I try to change item values using the embedded surveyjs editor on that page, a JavaScript error is logged to the console:
Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_1_survey_knockout__.Base.isValueEmpty is not a function
    at SurveyNumberPropertyEditor.SurveyPropertyEditorBase.onkoValueChanged (propertyEditorBase.ts:178)
    at a.vc.gb (propertyEditorBase.ts:39)
    at Function.notifySubscribers (knockout.js:37)
    at Function.fa (knockout.js:40)
    at c (knockout.js:40)
    at Object.Ea (knockout.js:61)
    at HTMLInputElement.l (knockout.js:101)
    at HTMLInputElement.dispatch (jquery?v=FVs3ACwOLIVInrAl5sdzR2jrCDmVOWFbZMY6g6Q0ulE1:1)
    at HTMLInputElement.y.handle (jquery?v=FVs3ACwOLIVInrAl5sdzR2jrCDmVOWFbZMY6g6Q0ulE1:1)

I'm assuming this is merely an issue with that particular example page, and I'm not sure if this warrants a separate ticket or not.

@avium Yes, there was a bug in v0.12.29.. We have fixed it. The current version is 0.12.30
Thank you,
Andrew


Adding plate position analysis and figures

These look so pretty!
The scales vary across the plots – was that by design (because you only care about variation across wells within each plot?)

That is correct!


[DOC] Add an example for _binned_statistic_dd

follow up #10113

@tylerjereddy Anything else to implement? Please tell me.

@rgommers  Amended. Please tell me if you have anything else to implement.

Merged, thanks @makbigc!

Please tell me if you have anything else to implement.

there's lots, happy to get more of your help:) for example, this issue is similar: https://github.com/scipy/scipy/issues/9947


Where is the "2.0.x-dev" branch?

Some code was merged in the "2.0.x-dev" branch, but I can't find it now. Deleted?
i.e: https://github.com/silexphp/Silex-Skeleton/commit/d129ef4e4b32ff93cd80907fa413a586a213d142

That asset function was removed in this commit since the asset service provider was added in this one

It's "master".
The commit message says "2.0" because it's use the branch alias of composer and because master mean nothing

@madebydavid, @lyrixx thanks a lot guys!


Bluetooth adapter is unknown

i take an example code of flutter_blue package. sometimes when i open app its show me Bluetooth adapters is unknown even the bluetooth is on.

Also getting this issue.
Just on Iphone 10 so far.
Restarting the app solves this issue....
Any ideas ?

I am using flutter_blue_plus. It is happening to me. I need reinstall, or re-run on flutter for working.

Did the issue get resolved? For Android, I'm getting the following error:

We can see that Bluetooth is on, yet I'm getting the error. I just used the example code in the flutter_blue_plus package. For the device off state, I used the following code:
class BluetoothOffScreen extends StatelessWidget {
  final BluetoothAdapterState bluetoothAdapterState;

  const BluetoothOffScreen({super.key, required this.bluetoothAdapterState});

  @override
  Widget build(BuildContext context) {
    String message;
    IconData icon;
    Color iconColor;

    switch (bluetoothAdapterState) {
      case BluetoothAdapterState.unknown:
        message = 'Bluetooth Status Unknown';
        icon = Icons.help_outline;
        iconColor = Colors.amber;
        break;
      case BluetoothAdapterState.off:
        message = 'Bluetooth is Disabled';
        icon = Icons.bluetooth_disabled;
        iconColor = Colors.white;
        break;
      case BluetoothAdapterState.on:
        // This shouldn't reach this screen, you can navigate elsewhere.
        Navigator.of(context).pop(); // Remove from navigation stack
        return Container(); // Empty container to prevent rendering issues
      default:
        message = 'Unexpected State';
        icon = Icons.error_outline;
        iconColor = Colors.red;
    }

    return Scaffold(
      backgroundColor: Theme.of(context).colorScheme.error,
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            Icon(
              icon,
              size: 72.0,
              color: iconColor,
            ),
            const Padding(padding: EdgeInsets.all(16.0)),
            Text(
              message,
              style: const TextStyle(
                fontFamily: 'Alatsi',
                color: Colors.white,
                fontSize: 30,
              ),
            ),
            const Padding(padding: EdgeInsets.all(8.0)),
            const Text(
              'Please enable Bluetooth to connect to devices.',
              style: TextStyle(
                fontFamily: 'Alatsi',
                color: ColorConstants.darkColor,
              ),
            ),
            const Padding(padding: EdgeInsets.all(16.0)),
            ReusableButton(
              onPressed: () async {
                await requestBluetoothPermission();
              },
              buttonText: 'Turn on Bluetooth',
            ),
          ],
        ),
      ),
    );
  }

  Future<void> requestBluetoothPermission() async {
    try {
      if (Platform.isAndroid) {
        await FlutterBluePlus.turnOn();
      }
    } catch (e) {
      CustomToast.showToast("Error Turning On: $e");
    }
  }
}

The below code is my main.dart. It's exactly as the example code, but still, I'm sending it if it helps:
void main() {
  FlutterBluePlus.setLogLevel(LogLevel.verbose, color: true);
  WidgetsFlutterBinding.ensureInitialized();
  runApp(
    const ProviderScope(
      child: FlutterBlueApp(),
    ),
  );
}

class FlutterBlueApp extends StatefulWidget {
  const FlutterBlueApp({Key? key}) : super(key: key);

  @override
  State<FlutterBlueApp> createState() => _FlutterBlueAppState();
}

class _FlutterBlueAppState extends State<FlutterBlueApp> {
  BluetoothAdapterState _adapterState = BluetoothAdapterState.unknown;

  late StreamSubscription<BluetoothAdapterState> _adapterStateStateSubscription;

  @override
  void initState() {
    super.initState();
    _adapterStateStateSubscription =
        FlutterBluePlus.adapterState.listen((state) {
      _adapterState = state;

      if (mounted) {
        setState(() {});
      }
      if (!mounted) return;
    });
  }

  @override
  void dispose() {
    _adapterStateStateSubscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    Widget screen;
    if (_adapterState == BluetoothAdapterState.on
        // || _adapterState == BluetoothAdapterState.turningOn
        // || _adapterState == BluetoothAdapterState.unknown
        ) {
      screen = const ScanPage();
    } else {
      screen = BluetoothOffScreen(
        bluetoothAdapterState: _adapterState,
      );
    }

    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: screen,
      navigatorObservers: [BluetoothAdapterStateObserver()],
    );
  }
}

Below is my flutter doctor output if it helps:
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.22.2, on Microsoft Windows [Version
10.0.22621.3007], locale en-IN)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version
34.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.8.4)
[√] Android Studio (version 2024.1)
[√] VS Code (version 1.91.0)
[√] Connected device (4 available)
[√] Network resources
• No issues found!
One interesting thing is that in Moto Edge 40, it's working, but in Vivo Z1 and Redmi 10 Prime, I'm getting the issue.


Group chat titles with emoticons include the name of the emoticon

See:

This is also true for notifications (they include the name of the emoticon), and is quite annoying!

Looks like a regression of #137.

fixed in f709427


Azure storage typo

I think in the section "Create Azure Cosmos DB trigger", step number 4, should be Cosmos DB trigger extension instead of Azure Storage extension

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

ID: 490a08fe-c26e-6cae-5495-0b4f4e71e35d
Version Independent ID: 79432f02-5059-2627-11e3-eccaf1109665
Content: Create a function triggered by Azure Cosmos DB
Content Source: articles/azure-functions/functions-create-cosmos-db-triggered-function.md
Service: azure-functions
GitHub Login: @ggailey777
Microsoft Alias: glenga

Hi @Eltavo Thank you for your feedback! We will review and update as appropriate.

@Eltavo The referenced PR will update the document with fix. Thanks for your inputs.

Thanks for finding and fixing this doc bug!


Webpack 3 breaks at runtime when using import *

Do you want to request a feature or report a bug?
This is a bug report with a reproduction at https://github.com/STRML/webpack-3-scope-hoisting-bug.
Node 6.11, Webpack 3. The bug can be easily reproduced.
When using module.strictThisContextOnImports (required to work around #5135 and others),
imported consts from other modules are not properly referenced when calling a function on a namespace
referred to by an import *.
This bug only seems to manifest under these conditions:

module.strictThisContextOnImports: true,
A constant must be imported from another file,
That constant must be used in a function referenced on an import * from.

The output:
"use strict";
Object.defineProperty(__webpack_exports__, "__esModule", { value: true });

// CONCATENATED MODULE: ./constants.js
const constants_FOO = 'BAR';

// CONCATENATED MODULE: ./functions.js
function print(str) {
  console.log(str);
}

// CONCATENATED MODULE: ./index.js
function init() {
  console.log(constants_FOO)
  print(FOO);
}

Notice that the print call is referring to FOO, not constants_FOO.
If we are using the CommonsChunkPlugin or split in such a way that constants becomes another module,
the console.log() line will properly use the imported constant, but the print() will not, e.g.:
console.log(__WEBPACK_IMPORTED_MODULE_10_constants__["f" /* FOO */]);
print(FOO);

FOO is of course not defined in this instance and this will fail at runtime.
See the reproduction at https://github.com/STRML/webpack-3-scope-hoisting-bug.

I have also seen this issue when using a default import as well as named imports, if it's any help.
Example:
import App from "core/app";
import * as WidgetService from "components/widget-service";

export function f() {
    WidgetService.fetchWidgets((err, data) => {
        const foo = App.someProperty;
    });
}

The reference to App.someProperty in the output is left as App.someProperty instead of  __WEBPACK_IMPORTED_MODULE_4_core_app__.default.someProperty.

This should be fixed


Client Credentials Flow complains "No redirect URI configured" when also allowing Authorization Code Flow

I create a client and allow it both Client Credentials and Authorization Code flows.
I try to get a token issued from the token endpoint using grant_type=client_credentials.
I receive the error "invalid_client" with Identity Server complaining that "No redirect URI configured", even though it should not be required for Client Credentials Flow.
Removing Authorization Code will make it work again.

I have tried both using IdentityModel and making a raw POST request, with the same result.
I have made a minimal repo to reproduce the problem:
https://github.com/tedchirvasiu/identity-server-4-client-credentials-issue

I am using .Net Core 2.1, IdentityServer4 2.3.0, IdentityModel 3.10.1.
Thank you!

Yes - we turned on config validation in 2.3.
Your client is configured for using code flow - but you have not configured a redirect URI - this is required. Any reason you haven't configured one?

Hold on a minute,
My client is configured for using either code flow or client credentials.

However, the request i'm making is client credentials:

Why is a redirect URI required when trying to use client credentials flow explicitly? Shouldn't a client be able to use both client credentials and code? Maybe I'm missing something?
Thanks.

It is not about which flow you are using - when the client gets loaded, the configuration gets validated. And according to our default validator, the config is invalid.
So my question again - why do you have code flow configured without a redirect URI?

Oh, alright, I see now... Then it's my bad. I was just setting it up, added all the future supported grant types, but I was implementing them one by one. I started with client credentials so I haven't fully configured the rest, I wasn't expecting it to validate code flow when only requesting client credentials.


Improve plugin related names

This is the continuing saga of Django 1.9 vs. cmsplugin_ptr. The changes in this PR were initially contributed by @yakky's #5032.

why cms/tests/test_frontend.py → cms/tests/DISABLED_test_frontend.py ?

Coverage increased (+0.006%) to 88.489% when pulling d56aba65a63d9ef152c01a1a189c6c5e8e91d6f6 on mkoistinen:feature/improve_plugin_related_names into 7077b7cbd2c9b437b5610a5f23b1222dd334ee5f on divio:develop.

Currently there is an issue with MTI: the plugins that inherit for a parent plugin overwrites the related_name, which must be kept to the parent one.
I'll send a PR with a test for this, and eventally a solution

@mkoistinen @czpython I opened a PR to your branch https://github.com/mkoistinen/django-cms/pull/2

Coverage increased (+0.001%) to 88.484% when pulling 027782fe7025be17fe6b6a63f1a47fc11ac7357f on mkoistinen:feature/improve_plugin_related_names into 7077b7cbd2c9b437b5610a5f23b1222dd334ee5f on divio:develop.

This is failing integration tests inside of the call to Django's get_deleted_objects():
https://gist.github.com/mkoistinen/028dd9690d19f6ac1f86a6f791fa4545
Any ideas how to make this work?

Django 1.8 and Python 3.4


circleci artman image v0.16.4

Let's re-run tests once the 0.16.4 artman docker image shows up on DockerHub.

All tests are passing except for the Go lang job.

Codecov Report

Merging #2489 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #2489   +/-   ##
=========================================
  Coverage     86.78%   86.78%
  Complexity     5374     5374
=========================================
  Files           459      459
  Lines         21217    21217
  Branches       2311     2311
=========================================
  Hits          18413    18413
  Misses         1974     1974
  Partials        830      830

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 28dde74...405de3b. Read the comment docs.


This is truly an inspiring project. May I ask how the progress is going and if there is an estimated release date?

Looking forward to your outstanding work.

Oct 31st or Nov 9th :)

@zhouxian Now we are definitely waiting for Nov 9!

Unfortunately, as much as we want to release it soon, we are still packing up all the demos we have, and there's just too many things we want to show... so it might take some more time


Add codedeploy

Description
Fixes #454
This PR introduces the ability to nuke CodeDeploy applications.
TODOs

[ ] Add tests, I found myself writing a mock for AWS APIs, and had to step back as it was getting complex. I know you like to provision resources and delete them as integration testing, so let me know how you would like me to proceed with testing here.

Read the Gruntwork contribution guidelines.

[x] Update the docs.
[ ] Run the relevant tests successfully, including pre-commit checks.
[ ] Ensure any 3rd party code adheres with our license policy or delete this line if its not applicable.
[ ] Include release notes. If this PR is backward incompatible, include a migration guide.
[ ] Attention Grunts - if this PR adds support for a new resource, ensure the nuke_sandbox and nuke_phxdevops jobs in .circleci/config.yml have been updated with appropriate exclusions (either directly in the job or via the .circleci/nuke_config.yml file) to prevent nuking IAM roles, groups, resources, etc that are important for the test accounts.

Release Notes (draft)

Adds CodeDeploy support

Hey @robpickerill, thanks for raising the PR. Would you be able to write unit test for the aws/codedeploy_application.go file you created?

The overall code LGTM. Once you have the unit test, I can trigger the CI test pipeline. Thanks! :)

The overall code LGTM. Once you have the unit test, I can trigger the CI test pipeline. Thanks! :)

Thanks, tests added, running locally all was working well. Your welcome to kick CI off now and I'll check for any problems.

It seems like there's some build failure, not sure if you were able to fix it with new commits
aws/aws.go:1698:39: cannot use applications (variable of type []string) as type []*string in assignment
aws/codedeploy_application_types.go:20:9: undefined: awsgo

It seems like there's some build failure, not sure if you were able to fix it with new commits

Can you retry for me?

Triggered the test pipeline again

Test pipeline seems to be good. LGTM

Hey @robpickerill, are you making further changes or this is ready for final review?

Good to go, thanks!


Remove MAMP recommendation from docs

MAMP is no longer a viable option for running SS4 in a dev environment due to the lack of php-intl extension. We should remove this from the documentation and recommend something else. Vagrant? Homestead?

Given @lerni's comment is this ticket still valid?

I asked MAMP Support about it and I got the following response which I haven't attempted yet. Hopefully it's helpful to others using MAMP Pro 4 and SS4.

The command line PHP uses a different php.ini file.
If you are using PHP 7.2 command line in MAMP PRO, then it will be using this php.ini
/Applications/MAMP/bin/php/php7.2.2/conf
—
Try the following,

Rename this file to php7.2.2.ini_bak
2 Run MAMP PRO, this will create a php.ini file in /Library/Application Support/appsolute/MAMP PRO/conf/php.7.2.2.ini file. Take this php7.2.2.ini file and copy it to /Applications/MAMP/bin/php/php7.2.2/conf

Now try running your command line PHP.

Bear in mind you may also need to create/update your symlinks in /usr/local/bin. I believe OS X ships with a pre-installed copy of PHP, and I don’t think MAMP automatically overrides that when installing different PHP versions.
You can test that by running /Applications/MAMP/bin/php/php7.2.2/bin/php -m and checking if intl is in that list. If it is, then intl is set up as expected but Composer and PHP CLI are using a different PHP installation.

I think you're right I'm using two PHPs at the moment!
In MAMP Pro 4 on the Languages > PHP screen you can tick "Make this version available on the command line" and it'll use the version selected as the CLI PHP, overriding whatever you've got set on macOS. Currently I have my upgraded macOS PHP as the CLI because it's working but I can flick the switch in MAMP to have that one, which I'll try setting up again with php-intl when I have time. Wasted too much already.
I like using MAMP Pro because it boxes off the Dev environment from the System so when the time comes to change Macs or for disaster recovery/backup it's a lot easier to get back set-up. It's worked for me for many years reliably and MAMP Pro itself handles updates quite well.

I think I may have a similar post here:
https://forum.silverstripe.org/t/proper-setup-of-bash-profile-for-mamp/764
Is the intl.so issue mamp and not .bash_profile? I tried uncle cheese's link above and it gave me a similar error.
Is MAMP the best local dev software to develop SS on?

For today I've set my CLI PHP to this:
PHP_VERSION=ls /Applications/MAMP/bin/php/php7.1.12/bin/php
and when you run php -m to see the modules list, intl is there so I'm hoping that's all there is to it.
Unless Composer also needs to be made aware of that PHP.

Is MAMP the best local dev software to develop SS on?

No - hence this issue saying we should remove MAMP from recommendations. Use Vagrant to build a native dev environment that reflects your production servers

I disagree that MAMP is necessarily a bad one. IMO It certainly should not be removed from the SS setup notes because it's so popular. The guys at MAMP have great support and are receptive to making changes to support apps and I'm sure they'd make SS4 setups easier if someone from SS got in touch?
Lots of people need to use Shared Hosting providers as well which simply don't have access to any of the dev commands your local machine might have and still want to use a high quality CMS like SilverStripe. MAMP is perfect for this.
Vagrant or the like is great if you're working on a high budget site with a VPS you can re-create the condition of locally.
IMHO the very simplicity of setting up a great site quickly with SilverStripe is being overshadowed by the complexity of getting a dev environment setup. It used to be easier in the SS2/3 days.

We are removing the recommendation of MAMP because we can't provide support for it when people raise tickets. MAMP allows far too many variations and by saying "hey, install with MAMP like this..." when something goes wrong people come to us to debug their MAMP install. That's not something we can do effectively.
People are free to use MAMP, but they should be aware of it's "gotchas" and limitations which apply to all PHP projects, not just SS
Whilst a Vagrant box (and even a MAMP install) gives you access to commands that you wouldn't have with shared hosting, they aren't commands you have to use... Once you get your software dependencies installed (correct PHP version, etc) then don't use any server side commands you can't in your shared hosting.
In my mind, Vagrant is not exclusively for high budget work, it's just a simple way to set up a dev environment that isn't polluted by any other project. It's a sandbox to work in so you know that the software you needed for project x doesn't conflict with your new project y. There is no project too small to be run on a Vagrant box.
There should be absolutely nothing special or custom required to get SilverStripe running on a *AMP set-up. The fact you say that we should contact the MAMP maintainers to make it play nicely with SS only goes to show that it is not an easy solution.
For example, give me any linux box and I can install the required PHP deps, mysql and apache and I'll have SS running for you in 5 mins; it sounds like MAMP is much more complicated.

IMHO the very simplicity of setting up a great site quickly with SilverStripe is being overshadowed by the complexity of getting a dev environment setup. It used to be easier in the SS2/3 days.

If you have any particular pain points regarding the set up of hosting (that aren't specific to a 3rd party piece of software you use to run it), we'd love to hear it so we can address those problems.
It really should be a simple as installing php and the required modules, apache and mysql, then composer create-project and you're away.

I am going to try the Vegrant Workflow after looking it up. It does sound like a big leap forward. I'll go look up the SS install documentation for using it. Thanks for the info.
As for pain points it's not necessarily new projects with SS4 that are the problem. They're actually easy to setup. One line and then you can begin coding. That's actually just perfect and fine.
I'm probably projecting my frustration with the SS3 to SS4 upgrade process more. As a long time SS user I am struggling with it. Some part might have been dev box setup as well. I think I'm going to have to do a from scratch project first then I might understand the upgrade more. Lots of lost time so far.

@aledbrown have you tried using the upgrade tool? https://github.com/silverstripe/silverstripe-upgrader
We've had really good feedback on it helping internal and external teams upgrade their projects. We also want feedback on the upgrade process and how we can make that better too; a lot of time has gone into the upgrader and if there's anything it's not doing for you, open an issue and we'll take it on board.

I am going to try the Vegrant Workflow after looking it up. It does sound like a big leap forward. I'll go look up the SS install documentation for using it. Thanks for the info.

With Vagrant I'd recommend finding a SS box to use rather than provisioning one yourself (unless you're confident doing that). I maintain this one: https://github.com/betterbrief/vagrant-skeleton but there are others (here's one: https://www.twistedbytes.nl/en/blog/php-vagrant-box/)

Yeah I was using the upgrader tool and tying myself in knots with different upgrade to SS4 documentation pages. Some were referencing the old mysite directory and then others with the new app directory structure. I got to displaying my theme in SS4 and the CMS admin but the database content would not load into either after one upgrader command did something and lost the link between classes, I never recovered from there on. I need to start that upgrade from the top. I ended up having to continue with SS3 and getting the job done. I was also battling the php intl issue while doing the SS4 upgrade so it might have been a contributing factor.
Thanks for the Vagrant SS Box links, that looks really great. I'm going to follow that through and use it on an SS project.

Ok great. Certainly not on your guys level of understanding but I'll give vagrant a shot. Just had a lot of issues with MAMP and the pathing using the .bash_profile. Much appreciated!

@aledbrown sorry to hear the pain you were having. Perhaps that was an older version of the upgrader; it's come on a lot recently.
The docs consistency is a problem, and wherever you see an issue like you've described it would be hugely appreciated if you could submit a fix to them, though I appreciate that can be difficult when you're short on time.

It was just week or two ago with SS 4.1.2 jumping form SS 3.5 ish (been able to run it on SS 3.7.1 no problem - job completed). I will have to get time to try SS4 again but time is critical for all projects and I lost more than half a day to it. I was really enjoying the new file path structures and the beefed up security that will bring. I hope I just made a mistake somewhere.
I couldn't find a fan site for SS4. There used to be loads back in the SS2 days. SS3 had less but wasn't a difficult upgrade. Missing the old community.

Vagrant is great, and I'd agree it should be the default recommendation. I use it for a few sites but I do notice a performance hit compared to running a local server which can be frustrating. I use a homebrew AMP stack for most local development, and this tutorial has been very helpful over the years, particularly after MacOS updates as the guide is routinely updated: https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions Perhaps a link to that could be included for any homebrew fans.

I can confirm that the recent MAMP Pro 5 paid update fixes all the SS4 issues I had. I am now up and running with an updated SS3 website to SS4.2.1 and update-code and composer are both working completely as expected under PHP 7.1.19 and MySQL 5.7.
I've also repaired all my "failed" SS4 upgrades that I'd started and abandoned and picked up loads of tips and tricks for the upgrades. It's still a lot of work but at least I've finally got myself some working instances to compare and work from. Hopefully I can progress from here now.

The docs this issue refers to have been removed.


Force 1 codegen unit on windows

Workaround for https://github.com/rust-lang/rust/issues/85461
See also https://github.com/microsoft/windows-rs/issues/1006#issuecomment-887789950

bors r+

bors r+


Postgrex -- tcp connect (localhost:5432): connection refused

Deploying the docker app locally seems to have port 5432 closed because after doing
../../py27env/bin/ansible-playbook -i apps/build/inventory apps/build/build.yml -vvv
docker attach ansible_phoenix_build_build_server
cd build/_build/prod/rel/ansible_phoenix_build
bin/ansible_phoenix_build foreground

Then repeatedly:
03:15:55.984 [error] Postgrex.Protocol (#PID<0.1316.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused
Any suggestions?

You'll need to have postgres running in your docker container. The prepare-deploy-docker script does this for you when you want to test that the app release works locally (sh bin/prepare-deploy-docker). By default, postgres is not installed as you won't need it for the build process.

Thanks, I'm running into other issues at the moment(psql not found) but could be from something else I did so will close this for now.


$oauth action

This is Jasonette OAuth action for Android.
It currently supports:

OAuth 1

Standard protocol
Basic authentication

OAuth 2

Code grant
Direct access token grant
Password grant (needs testing)
Refresh tokens

Some samples working:
Tumblr (OAuth 1):

Reddit (OAuth 2 - scopes, state and refresh tokens):

Facebook (OAuth 2, direct access token in auth phase and normal flow)

About the password grant: I'm working on a Ruby on Rails repo with a Doorkeeper OAuth provider to test this feature out.
If someone has a public api that we can use to fully test this feature would be awesome!

@snada i've been looking through the code and I think it's mostly safe to merge this in soon (the conflict looks trivial so that's easy to resolve), but just had one question: this may be just a trivial change but was there a reason for the switch from model.url to url as seen here? =>  https://github.com/Jasonette/JASONETTE-Android/pull/77/files#diff-0fc016fcc32589180bd1c088216105edR284
Just trying to minimize code change and was wondering if there is some reason behind this, and if there is, I think it would be nice to discuss it for the record.

@snada finally....!. 🏆🥇
I'm verrrry excited about this.
But first, now for the most tedious part of all...gonna work on the docs! Will write a rough draft and share with you when ready, just to make sure :D


fix: set private field true in package.json

yarn is showing much of this warning when generating app:
warning package.json: No license field
we can to set private field true in package.json to prevent the warnings

Thank you! Will go out with the next version.


mod: run go.mod tidy

Please take a look.

Codecov Report

Merging #1782 (7ada68d) into master (414f00f) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #1782      +/-   ##
==========================================
- Coverage   73.43%   73.42%   -0.02%
==========================================
  Files         520      523       +3
  Lines       61605    61719     +114
==========================================
+ Hits        45240    45315      +75
- Misses      13820    13848      +28
- Partials     2545     2556      +11

Impacted Files
Coverage Δ

graph/layout/eades.go
65.33% <0.00%> (ø)

graph/layout/optimizer.go
69.56% <0.00%> (ø)

graph/layout/isomap.go
62.50% <0.00%> (ø)

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 414f00f...7ada68d. Read the comment docs.

We could also perhaps bump gonum/tool to v0.10.x ?
(This should remove a few of the 'indirects)

That sounds reasonable.


Open tickets-sold summary on long pressing Event list item

Fixes #1059
Changes:

Long pressing Event List items shows tickets sold summary

Screenshots for the change:

@Masquerade0097 @sridharjajoo
The value for event.analytics.freeTickets.get() is coming out to be 0 in my fragment, but it comes out to be 100 when used in dashboard. The event.name comes out correct. Any idea why analytics isn't working?

@sridharjajoo @Masquerade0097 @iamareebjamal Please review

This is to make it consistent with the EventBrite App, which has it vertical in both.
Besides that, in the last meeting Mario had pointed out that EventBrite has already worked on, and spent money on designs, and we don't need to redo that.
And what happens if people say that: "EventBrite has it better, it doesn't look good" ? Then we'd have to change it again.
So I am trying to stick with Mario's advice and not tinker with the designs, so as to put total efforts in developing.

@mishuvs It's fine, if Mario says so. I was just giving my opinion.
Also, you haven't mentioned that changing Dashboard layout was also part of this issue neither in Issue tracker nor in this PR description. Please write the complete description of the issue in the issue tracker so that everyone knows what changes are expected for the issue.

@sridharjajoo @Masquerade0097 @iamareebjamal Please review

Sorry for pushing again.. only added "Ticekts Sold" TextView to fragment_sales_summary.xml. Screenshot updated.


Fixing the braking TS001X quirk

Reversing the braking zha.DeviceType.ON_OFF_PLUG_IN_UNIT to original zha.DeviceType.ON_OFF_LIGHT that was braking automations in HA.
Also adding the TS0012 the 2 gang version (usr have trying the new quirk changes)
Fix #1209

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.01%

Covered Lines:
4558

Relevant Lines:
5668

💛  - Coveralls

Codecov Report

Merging #1210 (77a1d18) into dev (a4c6cdb) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##              dev    #1210      +/-   ##
==========================================
+ Coverage   80.40%   80.41%   +0.01%
==========================================
  Files         207      207
  Lines        5665     5668       +3
==========================================
+ Hits         4555     4558       +3
  Misses       1110     1110

Impacted Files
Coverage Δ

zhaquirks/tuya/ts000x.py
100.00% <100.00%> (ø)

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 a4c6cdb...77a1d18. Read the comment docs.

The TS001X quirk was added for getting more functions in the device https://github.com/zigpy/zha-device-handlers/pull/1152 but changing the DeviceType was one braking thing for user that have making automations then the old entries was deleted and one new not linked to the automation.
If its possible getting it in HA fast as possible so user is not getting  problems.
Sorry for making problems and thanks in advance !!

After fixing the small typo in the model name, it is working correctly in my HA installation.

Thanks for feedback and testing !!!
The good thing is your system is not braking more automations as long you have the local quirk installed and updating to next HA release with or without this fix.

Thanks David !!


[Candidate 1v1 Abandoned Farms ZH v1] Are map.ini changes safe?

Issue Description
Are map.ini changes safe?
WaterSet MORNING
SkyTexture = TSsunny_s.dds
WaterTexture = TSWater.dds
UScrollPerMS = 15.00
VScrollPerMS = 15.00
SkyTexelsPerUnit = 3.2
WaterRepeatCount = 32
End

WaterTransparency
TransparentWaterMinOpacity = 0.6 ;opacity of water at maximum depth - 1.0 is opaque, 0 transparent.
TransparentWaterDepth = 4.0 ;depth below water surface at which it becomes opaque (unless clipped by TransparentWaterMinOpacity)
StandingWaterColor = R:207 G:200 B:243 ;material color used to tint the water surface.
StandingWaterTexture = TWWater01.tga ; main texture used for water (usually something blue that looks like water).
AdditiveBlending = YES; use additive blending instead of alpha blending?
RadarWaterColor = R:107 G:200 B:243 ; color of water on radar display.

SkyboxTextureN = TSSunny_N.dds
SkyboxTextureE = TSSunny_E.dds
SkyboxTextureS = TSSunny_S.dds
SkyboxTextureW = TSSunny_W.dds
SkyboxTextureT = TSSunny_T.dds
End

Expected behavior
Map.ini changes do no carry over to other maps.

It's all about water colours and transperency which slightly changed to fit to the map. All fine to me.


Enable durable option for target

Currently we are successfully using the library with rabbitmq and it's AMQP 1.0 plugin.
Issue #133 talked about adding an option for durability. This was then implemented for the source https://github.com/vcabbage/amqp/issues/133#issuecomment-431618107
The same option for target would be very welcome.
Reasoning:
The same precondition_failed issue (see below) that was solved with https://github.com/vcabbage/amqp/pull/137 also exists with the target.
*Error{Condition: amqp:precondition-failed, Description: PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'processed' in vhost '/': received 'false' but current is 'true', Info: map[]}
If need be i'm willing to add the new option.
I think adding a LinkTargetDurability function should do it unless a different approach is required.

Hi @inosus, thanks for opening this issue!
This seems like a reasonable addition. You're on the right track, it should be nearly identical to the LinkSourceDurability implementation. A PR would be very welcome!

@vcabbage hi! we have been using your project and noticed this open issue, which is something we are in need of, I created #189 to hopefully help with this.

@carlosmaersk Thanks! The addition has been tagged as v0.12.4.