Add execution details to config outputs

Draft at the moment due to issue described below, but would like review/input
Closes #384
Outputs look like this currently
action:
https://nyc3.digitaloceanspaces.com/edm-recipes/datasets/doitt_buildingfootprints/20230414/config.json
"execution_details": {
    "type": "ci",
    "dispatch_event": "workflow_dispatch",
    "url": "https://github.com/NYCPlanning/db-data-library/actions/runs/4702034994/",
    "job": "dataloading",
    "timestamp": "2023-04-14 12:13:14"
}

job refers to specific job within the workflow run. Theoretically this has a url too, which I wanted to have originally rather than the overall run url (like https://github.com/NYCPlanning/db-data-library/actions/runs/4702034994/jobs/12345), but the job_id is not actually exposed as a variable, only the job name. So went with above.
manual
"execution_details": {
    "type": "manual",
    "user": "Finn van Krieken",
    "timestamp": "2023-04-14 12:13:14"
}

This "manual" one is grabbing the git username, since dev container requires that we add an ssh key to authenticate with git, I think this shouldn't fail. It also turned out to be fairly non-trivial to get some sort of username of the actual user in the dev container, this seemed like the simplest solution. But now that I write this, maybe I should add a try/catch, where on a failure to find any of this info we could maybe fail the job, or save the execution_details as "could not resolve"/"unknown" or something like that.
Currently have edit to single-runner.yml so that it uses the scripts in the repo to do archiving rather than using action-library-archive. Don't know if I should merge as is, but we certainly need to discuss. My gut is that this project should never use the published action, since current repo should be 1. most up to date on master and 2. only way to test development.
My vote would be actions in this repo never use the published action, but each commit/push to main should re-publish image to make sure they stay in sync
So to summarize, would love input on

format/naming of fields being added to config files
thoughts around the ci workflows and where they're pulling their logic from

There's a bit of ugliness in the single-runner file as written as well - duplicated logic from both dockerfile and the entrypoint script in https://github.com/NYCPlanning/action-library-archive. Need to think about a slightly more elegant solution

And before merging I'm gonna go ahead and fix these test failures, though I have not touched anything related to them

LGTM - one note/thought is whether it is worthwhile to update some of our regularly used actions?

Makes sense to me


Settings command is sent along with machine variables

When machine variables are monitored via BCP, MPF will send a message with the command settings and a JSON string.
settings?json={"settings":[["brightness","Brightness",100,"brightness",1.0,{"0.25":"25%","0.5":"50%","0.75":"75%","1.0":"100% (default)"},"standard"],["flipper_power","Flipper power",1000,"flipper_power",1.0,{"0.8":"Weak","1.0":"Normal (default)","1.2":"Strong"},"standard"]]}

The settings command is not described in the BCP specification. I am not sure it this is intended, but undocumented behavior or a bug. Maybe it was meant to be a machine variable that is sent with settings as the message command instead of the name parameter? It definitely doesn't seem right to send a settings message, when machine_variable messages were requested by the server.

If this is missing from the documentation that's an oversight, but settings are a subset of machine variables that can be adjusted by the operator so (1) they are stored and tracked with machine variables internally and (2) they should be exposed to the media controller for service menu purposes.
There's a case to be made for sending them separately, but the media controller will need to know them all regardless so this is just a shortcut.

Why aren't the settings sent with the machine_variable command then?

The data structure of settings is different than machine variables, so it's sent in a separate payload which includes the various settings options, default values, current values, et cetera. Machine variables are simple key/value pairs without the additional settings options.
When a BCP client connects to MPF and requests all of the machine variables, the settings are sent as well because functionally both settings and machine variables are necessary to properly configure the game's state. So when a BCP client asks for variables it gets both, but in separate responses due to the different data shapes.
Hope that helps! If you'd like to update the documentation to include information about the settings, all contributions are most welcome! :D

Machine variables are not always simple key/value pairs. Two examples:

machine_variable?json={"name":"audits_player_score","value":{"average":4520,"top":[8300,5900,5200,4500,4400,3800,3700,3500,2800],"total":9}}
machine_variable?name=mpf_extended_version&value=Mission Pinball Framework v0.57.3, Config version:6, Show version: 6, BCP version:1.1

I think a message like this for settings would be more reasonable, especially if the settings are technically a machine variable, as you say:
machine_variable?json={"name":"settings","value":[["brightness","Brightness",100,"brightness",1.0,{"0.25":"25%","0.5":"50%","0.75":"75%","1.0":"100% (default)"},"standard"],["flipper_power","Flipper power",1000,"flipper_power",1.0,{"0.8":"Weak","1.0":"Normal (default)","1.2":"Strong"},"standard"]]}
It's not really important though, so if you think it's just not worth making this change for the sake of backwards compatibility, that's fine by me.

I created a separate issue (#1850 ) to talk about documenting the settings command.


[3.3.3] eslint: Unable to resolve path to module @storybook/react

Issue details
After update to 3.3.3 see eslint error: Unable to resolve path to module @storybook/react. (import/no-unresolved)
Please specify which version of Storybook and optionally any affected addons that you're running

@storybook/react 3.3.3

Screenshots / Screencast / Code Snippets (Optional)
import * as storybook from '@storybook/react';

eslintrc.js:
  ...
  parserOptions: {
    ecmaVersion: 8,
    sourceType: 'module',
    ecmaFeatures: {
      impliedStrict: true,
      jsx: true,
    },
  },
  ...

Probably related to adding jsnext:main in #2589

seems like eslint try to use jsnext:main but src folder not published.


[Errno 121] Remote I/O error

Hello,
I have been trying to use this driver on the sgp40 but I/O error occurs. tested the example script with different sensors.  sudo i2cdetect -y 1 only shows up the address after running the script(error still occurs) if I run it again the device is no longer detected.
Using STEMMAQT wires. The device is wired to 3.3V
Any help is apperciated as I have been struggling with this issue for the past three days

ok looks like we fixed this bug but it did not get released
i just published a release, try updating the library in an hour to get 1.3.15!
https://github.com/adafruit/Adafruit_CircuitPython_SGP40/releases


Tacos with deep fried cauliflower

Tacos with deep fried cauliflower, pickled red onion and aioli

Sounds great! Thx for your contribution.


Enhancements for CDC Templates , Automated Dag Dependency Handling and TMP files removal in reporting layer

The changes as a part of this PR contains the following
1. CDC Template Enhancement to include partitioning pruning
Description : Enhancement added and tested to provide users an option to use an alternate template to generate the cdc merge script if their raw and cdc tables are partitioned by recordstamp field.
Impact : enabling and using this option, especially for performing cdc on large tables like acdoca, konv etc can significantly lower the data scans and slots used, thereby helping the customer to reduce the cost by leveraging performance optimization techniques used by bigquery
How to use: the users need to just mark the option partition_flg as Y to use it in their cdc settings. If this option is included with Y then this template will be used, else it will use the existing out of the box templates
Files changed:

src/SAP/SAP_CDC/cdc_settings.yaml
src/SAP/SAP_CDC/src/config_reader.py
src/SAP/SAP_CDC/src/generate_query.py
src/SAP/SAP_CDC/src/template_sql/cdc_partition_sql_template.sql (new template created)

2. Automated Dynamic Dag Dependency Handling in Reporting Layer Dags
Problem statement : 1:1 dags are generated for cortex semantic data models. For some data models that have dependencies, these dependencies are not captured in the dags resulting in the data loads not running as per the desired sequence that respects the parent child relationships.
Description: Enhancement added to automatically include the dynamic dag dependency handling using external task sensor in the generated dags using the dag template.
Impact: Saves significant efforts for the users to manually make changes to dags to include the dependencies with varying frequencies.
How to use :

make changes to the dag-set.json temaplate to change the frequencies and dag names as per your requirement. the frequencies here should match with the frequency in reporting settings yaml file
add any other custom dags in the exception list in the reporting template
execute cloud build
upload the dag-set.json file in data folder in composer's dag bucket
copy composer dag and data files in composer's bucket
monitor the loads -> airflow logs for every parent task will give you the dependencies details in airflow ui

Files changed:

src/SAP/SAP_REPORTING/common/materializer/create_bq_object.py
src/SAP/SAP_REPORTING/common/materializer/templates/airflow_dag_template_reporting.py
src/SAP/SAP_REPORTING/common/materializer/templates/dag-set.json

3. Remove tmp files generated for k9 during reporting layer execution
Description : It is a known issue in cortex framework that temporary folders are created during cortex deployments especially for the local k9 data models
Description of changes : changes made to not allow creation of temporary files
Impact : temporary folders are not created and users do not need to manually delete the folders

Thanks for your submission, @naitik1995. We have analyzed this as a team and have the following conclusions:

Partition pruning is not universally applicable across our customer base so this is best left as a customer specific customization.

DAG dependency handling is being addressed in future improvements.

This will be handled in a future release.


Changed update workflow to run hourly

This changes the update workflow to run hourly. Steam automatically updates within minutes after an update is released. The server only pushing new images once a day renders the game unplayable for half a day (on average) after an update is released.
I don't want to manually downgrade every time Re-Logic is pushing updates, i.e. twice a month at the moment...

Since currently the version numbers are updated manually this isnt going to help. I'm working on autodetecting the new version and providing a build but its going to be a while.


conn: deprecate Halt()

Move the blocking operation context from the driver to the individual function call.
See https://docs.google.com/document/d/1vQdZdoOMaIan7dKwcAzqHbfM_LCnnSMUQvqypRkjohM for more information.
As such, Halt() will not be needed anymore.

Ported to https://github.com/periph/conn/issues/29.


TestCafe cannot start Firefox due to the browser's sandbox malfunction

What is your Test Scenario?
Use Firefox with CCNet
What is the Current behavior?
TestCafe opens an empty Firefox window and cannot open the test page

What is the Expected behavior?
TestCafe should start the browser and open the test page.
WORKAROUND: The MOZ_FORCE_DISABLE_E10S environment variable can be set to the full browser version (e.g. env:MOZ_FORCE_DISABLE_E10S=82.0.2) to prevent the browser from spawning additional process and conflicting with CCNet.
For the team: we can programmatically get the browser version with firefox -v and add this variable to environment.
What is your web application and your TestCafe test code?

Execute this command...
See the error...

Your Environment details:

testcafe version:                   testcafe v1.9.4
node.js version:
command-line arguments:
browser name and version: Firefox 82
platform and version:          Windows 10
other:                                   CCNet

We decided to not implement this enhancement because the issue was found on a custom fork of CCNet CI. If somebody encounters the same issue, use a workaround from the description.


Missing getters on some fields

Suggested enhancement
We need access to some of the fields that are now private since version 3.0.0:
mbedtls_pk_context
pk_ctx
mbedtls_ecp_keypair
d
###Justification
mbedtls_pk_context: We have to configure a pk_ctx in order to be able to implement ecdsa_alt functionality
mbedtls_ecp_keypair: Same, for ecdsa_alt functionality we need to provide the key information inside d field

Hi! Any update on this?

Hi! Thanks for your report. Could you clarify if you need read or write access to these fields?
Also, it's not clear to me if what you mean exactly by ecdsa_alt functionality. Are you talking about MBEDTLS_ECDSA_SIGN_ALT, MBEDTLS_ECDSA_VERIFY_ALT and/or MBEDTLS_ECDSA_GENKEY_ALT? If so:

I think it's quite normal for implementors of this function to use the MBEDTLS_PRIVATE macro in order to get access to private fields, and that doesn't mean these fields should be made public to everyone.
It's not clear to me why you need access to pk_ctx in mbedtls_pk_context_t for that, can you clarify?

Hello!
i will try to explain our use case. We use ecdsa_alt functionality. But we don't need the private fields for the function itself, it is for the configuration steps.
In order to use it, we need some information that needs to be recovered in the sign method, this information is basically a key handle. We use the method mbedtls_mpi_read_binary((*mbedtls_ecp_keypair)keyPair->d, ourKeyHandle, ..); to do it.
That's why we need access to d field.
After this call we reassign the value:
(*mbedtls_pk_context_t).pk_ctx = keyPair;
If I am honest, looking at the mbedtls code, this last part is not required, as the method mbedtls_pk_ec is sending the same pointer we assign afterwards. But we need to get access to the d field for sure.
Thanks!


Unable to Run Android Emulator in MacOs 14 Github Runner based On M1

Description
I am Unable to Start any Android Emulator in My M1 based Macos 14 Github Runner
Platforms affected

[ ] Azure DevOps
[X] GitHub Actions - Standard Runners
[ ] GitHub Actions - Larger Runners

Runner images affected

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[ ] macOS 11
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[ ] macOS 14
[X] macOS 14 Arm64
[ ] Windows Server 2019
[ ] Windows Server 2022

Image version and build link
Emulator Required in Workflow
Is it regression?
no
Expected behavior
A working Android Emulator , as i want to run some adb commands
Actual behavior
Unable to Start Emulator
Repro steps

Uncomment the Emulator Part in Workflow
Repo Link
Uncomment and Run Workflow

Hey @mg3994!
Unfortunately it's a platform related issue which we cannot solve on our side. It was firstly mentioned some time ago.
Take a look here, please: https://docs.veertu.com/anka/anka-virtualization-cli/nested-virtualization/#android-emulators
Closing as a clone of https://github.com/actions/runner-images/issues/9199 and https://github.com/actions/runner-images/issues/9194.


Config ideas

This removes the Configuration concept. Instead of using a single keyword type Configuration and dispatching on the type of this for boundary conditions, source terms, boundary flows for the roots, etc, we are making things more explicit, and creating boundary_conditions, source, transpiration attributes that live inside Soil and Roots model, as makes sense for that model.  Then, for example, on the soil RHS, we could call compute_source(source), rather than compute_source(config).
Our main motivation for this change is that it was unclear what "Configurations" was buying us, and it had the potential to be confusing, as it lumped a lot of related concepts together.
Our goal is that the LSM constructor can than make the necessary source, boundary conditions, transpiration, and root extraction structs when it makes the soil model and root model. This could be using info the user passes in as needed.
In a way, this emphasizing a design based on standalone models - the LSM just constructs a version of the standalone model that is appropriate for running in LSM mode, and then runs many of these (snow, rivers, soil, etc) all together (and defines the appropriate methods, etc, to capture interaction exchanges). The alternative - based on Configurations - emphasizes the LSM mode (and a few "configurations" that are relevant for that). We can go back to that, as needed.

@jb-mackay let's talk about this more - if it seems reasonable to you, maybe the first step is to update main for the standalone models to incoporate this.

bors r+


Hackage release

Is there a roadmap for a Hackage release?
I’m using this library in another library I’m developing that integrates polysemy’s free monad architecture with distributed tracing.
I’d love to help out in any way that I can to get this ready for release. It’s a really great project that I think a lot of people will benefit from!

Sounds like a plan.
I’d expect setting up a proper integration test harness will be the biggest chunk of work, so  I’d personally prioritise generated types. But either is good for getting things out there :)

I cannot say that I'm actively maintaining this, in particular I haven't been
following the OpenTelemetry initiative. I'm also not using any tracer
day-to-day, so am unlikely to notice changes or opportunities for improvement.
I'd be okay with publishing and subsequently maintaining the core lib, but am
definitely lacking time to make sure all the different backends continue to
work.
From the occasional contributions and comments here I can tell that someone
must be using this library. Maybe people could chime in here and share which
backend(s) they're using? Perhaps there's even interest in (co-)maintainership?

SimSpace is probably the most active on this repo so far. We've also built some middleware on top of this that we should probably open source some point soon. Maybe we would be a good co-maintainer? @jship, @peterbecich, and myself all have contributions to this library and we are quite happy with it at SimSpace

@benweitzman also seems pretty interested having started the issue and laid out a plan so I don't want to steal his thunder!

Maybe people could chime in here and share which
backend(s) they're using?

I'm interested in opentracing and opentracing-wai with Jaeger backend and ot- propagators in particular, having the packages on Hackage would simplify Nix pipelines.

I'm putting in a bit of time to prep things up. A few questions for y'all:

Is stack still a thing?
Would anyone mind dropping Zipkin V1 support? Thrift is a bit of a gnarly dependency.
Would anyone mind dropping Google CloudTrace support? I don't really have ways to test it, and pinning to an old version of both the API and gogol seems to be a pain in the neck.

dropping Zipkin V1 support

Ah nevermind, jaeger also wants thrift

We're almost there, but Hackage complains that the package already exists. Yet https://hackage.haskell.org/package/opentracing returns 404.
Anyone a clue what is going on?

The package indeed already exists: someone uploaded a candidate for it and thus became the owner of the name:
https://hackage.haskell.org/package/opentracing-<IP_ADDRESS>/candidate
I believe the only thing that can be done now is contacting this person and asking them to make you a maintainer: https://hackage.haskell.org/package/opentracing/maintainers/.

Ok, I believe that was @emilypi.

Looks like ownership has been transferred! 🎉

Version <IP_ADDRESS> uploaded to hackage :rocket:
Thanks everyone for your patience and persistent nagging :) Thanks @emilypi for transferring ownership.


DataDog Error 413 'Payload too large'

I've configured DataDog using the supplied documentation and left the default stepInSeconds to 30s.
However, I've started getting some 'Payload too large' errors in Orca:
2022-12-02 20:41:22.224 ERROR 1 --- [trics-publisher] i.m.datadog.DatadogMeterRegistry         : [] failed to send metrics to datadog: {"status":"error","code":413,"errors":["Payload too<EMAIL_ADDRESS>2022-12-02 20:42:22.208 ERROR 1 --- [trics-publisher] i.m.datadog.DatadogMeterRegistry         : [] failed to send metrics to datadog: {"status":"error","code":413,"errors":["Payload too<EMAIL_ADDRESS>2022-12-02 20:43:22.214 ERROR 1 --- [trics-publisher] i.m.datadog.DatadogMeterRegistry         : [] failed to send metrics to datadog: {"status":"error","code":413,"errors":["Payload too<EMAIL_ADDRESS>
A few things I've noticed:

Attempting to send metrics every 60s instead of 30s, as default suggests
Does batch size play a factor, or is the size of the batch determined by timing?
stepInSeconds is not referenced by the RegistryConfig, and Step is not configured

There will be a new version comming that implements the batchSize configuration. There is no way to limit the payload by size but sending the metrics on separate batches can help.

New version https://github.com/armory-plugins/armory-observability-plugin/releases/tag/v1.4.2 provides the ability to configure batchSize


NFS-Based Lease Management

Given that NFS provides file locking, we could build a lease system around it that can be shared by multiple LiteFS instances. AWS, GCP & Azure all provide hosted NFS mounts so it could be a simple way to run an HA cluster rather than relying on Consul.

agree, it would be much simpler.
BTW, is there any public roadmap for litefs?

We don't currently have a public roadmap available. Our two main focuses right now are getting LiteFS working better on non-Fly deployments (e.g. AWS, GCP, etc) and to get LiteFS working on ephemeral deployments (e.g. Vercel).

@benbjohnson
that's great, we are on GCP, daily pages views is ~1 million and growing, we are considering litefs on our production, the most concerning thing is we need to kill or start a few node(only read from database) randomly because load changes frequently( we are on advertising industry so the load change fast), however transfer a few GBs data to new replica maybe slow from US to EU.
it would be great to bring some kind of snapshot into litefs, for instance, the primary take the snapshop periodically and upload it to s3, when starting a new replica, it download the lastest snapshot from s3, and then connect to primary to sync the rest data. this can start replica much faster (don't know if it can achieved by "export" and "import" command with a few bash script, we are testing it)
the primary changeing also seems not predictable even with consul, we need to bring up a new primary and shutdown old primary a few times a week(deploy new minor version by blue/green deployment), we thinking about take primary node isolated from cluster and bring a http proxy in frond of primary node, so we are write to primary via http and never have to bring it down (also testing)
please let me know what do you think, I appreciate your time and this project :)

This might be tangential - I can open a separate issue if what I ask about makes sense and it is - but would it be possible to run on fly using the NFS protocol instead of FUSE to provide the custom file system?
For context: I'm asking because Fly is planning to charge more for storing the starting FS state of stopped machines. Some languages can create perfectly OK images with just copying a few files into the scratch base image - but having C dependencies (which might have C dependencies of their own! the terror!) complicates that picture, and FUSE is a C dependency.


Fixes AssetCell + Refactors Currency Settings and fixes Title

I was exploring the code on the wallet and noticed this:

Therefore, I tried to fix that issue.
While I was doing this, and exploring the code I have also had trouble compiling and running, and added those fixes as well. The only thing that I wasn't able to fix was the Info.plist. Xcode says that Info.plist is in the wrong format in the current master branch. I added one of my own so I was able to work.
Since I was fixing the issue I made a small refactor in CurrencyTableViewController.
Improvements
As a side note I believe that selecting + going back is an unnecessary step, it would be more simple for the user to simply select and go back automatically (he would see that he selected correctly since it appears in the settings)

Hi @saltyskip, thanks for the reply. I have updated from the master. Indeed this was fixed in master, but  my solution improves a bit.
In master every time you wanted to use this localised string you would need to append the current currency. This behaviour is hard to guarantee its consistency along the code. I have added a closure that basically ensures that every time this string is used it must come with an extra string.


Support Monorepositories

I am using runme in a monorepository. The challenge is that runme scans my entire repository for tasks.
The default behavior should likely be the current directory, and down; rather than up to .git.
There should be a flag to support the entire repository: runme --git

Any chance your mono-repo is public? Could you point me to it, @rawkode?
Fwiw, you can use runme --project ./subdir or runme --project . to hard restrict it's discovery to a subdir.

It is, but I was only going through every service yesterday adding all my runme tasks. I'll push them up today
https://github.com/rawkodeacademy/rawkodeacademy
My feeling is that the current directory and down should be the default scope for tasks, this is what I and hopefully others would expect
I feel the flag should be to used to expand that scope, not restrict it
Hopefully others can share their thoughts


examples/search error

while running the examples/search.re code it throws the following error, which I would like to understand how to fix:
  We've found a bug for you!
  /Users/prisc_000/Downloads/bs-puppeteer/examples/src/search.re 27:16-73

  25 ┆ /* Wait for suggestion overlay to show up then click "all results". */
  26 ┆ |> then_(_ => page->Page.waitForSelector(allResultsSelector, ()))
  27 ┆ |> then_(elmt => Js.Null.getExn(elmt)->ElementHandle.click())
  28 ┆ /* Wait for load of results page. */
  29 ┆ |> then_(() => {

  This has type:
    Js.Promise.t(Js.Null.t(BsPuppeteer.ElementHandle.t('a))) =>
    Js.Promise.t(unit)
  But somewhere wanted:
    Js.Promise.t(unit) => 'b

  The incompatible parts:
    Js.Promise.t(Js.Null.t(BsPuppeteer.ElementHandle.t('a))) (defined as
      Js.Promise.t(Js.Null.t(BsPuppeteer.ElementHandle.t('a))))
    vs
    Js.Promise.t(unit) (defined as Js.Promise.t(unit))

    Further expanded:
      Js.Null.t(BsPuppeteer.ElementHandle.t('a)) (defined as
        Js.null(BsPuppeteer.ElementHandle.t('a)))
      vs
      unit

FAILED: subcommand failed.
>>>> Finish compiling(exit: 1)

Thank you.

code works when install from git, not from npm. Also, the search.re example doesnt work here or in original repo search.js so i guess that will get corrected. Thanks for sharing your work, sir. Closing...


Remove option for Z=Up export?

A recent PR (KhronosGroup/glTF-Blender-Exporter#130) contributed this, I just wanted to check that this should be supported? In other words, should we have options that are technically invalid according to the spec, and/or should it be named something other than Convert Z up to Y up?

we should probably move the option to only be visible when experimental/developer features are enabled in the addon settings...

Yes, please leave this option around. It's fine that by default Blender's Z-up is transformed to Y-up when exporting to GLTF, but not every model has a natural up direction and you sometimes want to directly export X,Y,Z vertex coordinates without any transformation happening on them. Or actually, it would be best if Blender added general coordinate transforms options (including no transformation) to all exporters, but that's not something that's going to happen soon I think.
By the way, I don't understand the notion that the option being discussed here can produce "invalid GLTF files". Yes, the GLTF spec "defines +Y as up", but you can only judge if a model is correctly oriented when you know the actual purpose and usage of that model, no 3D specification can dictate what is the natural up direction. Example: suppose you're modeling the Space Shuttle, including it's fuel tank and booster rockets. When the purpose of the model is to show the launch pad "up" for the SS might very well mean "it's nose pointed in +Y direction" in the GLTF model, while a 3D scene of it landing on a runway then up might be with the cargo doors upwards. Plus, in many situations there is no natural "up" direction or it is merely defined by the camera orientation used, e.g. the same space shuttle model flying around Earth or an abstract scientific simulation of 3D blood cells.

In general, I agree that there are types of 3D data that lack a natural "up", and that there's no guarantee that the user has correctly oriented their content within Blender to start with.
In the case of aerospace models like the Shuttle, I work on desktop software (STK) that has well-established conventions for how such models are oriented (long story short it's "runway" configuration, and it gets pitched up to 90 deg when sitting on a launch pad, with the "forward" vector facing the sky at the start of launch.  This works even for non-Shuttle rockets, as once they start moving in space it quickly becomes clear that the nose is "forward" not "up").  But I get your point, if you were making a Shuttle with the full stack sitting on the launch pad for Sketchfab or something like that, you wouldn't be following the STK convention, and instead would have the nose pointed at the up vector.
Ultimately I'm OK with leaving this in as long as there are some users who want it.  I don't see the glTF ecosystem becoming polluted by models that confuse which way is up.  I do, however, see lots of models where the forward vector is confused, but I don't think this option itself is responsible.  Blender is nearly ambiguous if you're not paying attention to the orthographic view names.  The default Blender light source is behind the default cube when viewed from "front", and your default view is the port (left) side of the cube, which blender calls a "right" view.  So I have to agree that keeping or removing this option doesn't make the orientation any more or less enforceable or consistent.  Generally it's up to users to make sure their models are aligned as best they can.

Well, can this ticket be closed?

Ultimately I'm OK with leaving this in as long as there are some users who want it. I don't see the glTF ecosystem becoming polluted by models that confuse which way is up.

Sounds good to me.


Highlight visible range of time series plot in timeline

Similarly to how visible history highlights a range on the timeline, interacting with a time series plot should do the same for its range.

I think this needs a more general treatment:

we want to ALWAYS display the visible time range in the time panel WHEN it makes sense
since the visible time range can be different on a per-view-entity (aka data result) basis, it actually quite rarely makes sense (because typically lots of views and entities are displayed at the same time)

There is at least one occurence when it makes sense: when we hover over a data result (anywhere in the UI). In that case we have enough context to figure out what the visible time range is, and so we should highlight it in the time panel. This would partially address the original issue: when you hover on a curve, it corresponds to a dataresult, so we should highlight its range.
This feature would be very useful in the context of the data table too.
cc @gavrelina

Side note: we could also display the View-level visible time range when hovering the view, but I'm not sure that this would be a good idea, since that particular time range might not be used by anything since each entity can override.


Guard against trying to transform along size 0 axes

The cython function dwt_axis did not have a guard against zero-length inputs. This could result in PyWavelets getting stuck in an infinite loop as reported in #505 for datasets with more than 1 dimension where a transform along an axis with size zero was performed. The fix applied here applies to all dwt and wavedec functions except.
The SWT functions did not suffer from the same infinite loop issue, but I have added similar checks there with the same error type for consistency with the DWT case.
closes #505

LGTM, merged. Thanks @grlee77

The fix applied here applies to all dwt and wavedec functions except.

incomplete sentence, want to edit that?


feat: add support for mjs files when finding apps

Refs: https://github.com/paketo-buildpacks/node-start/issues/225

Summary

Add support for .mjs files when looking for Node.js applications. Node.js added support for mjs a while ago.
Use Cases

An application where the main script file is an .mjs file
Checklist

[X] I have viewed, signed, and submitted the Contributor License Agreement.
[X] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[X] I have added an integration test, if necessary.
[X] I have reviewed the styleguide for guidance on my code quality.
[X] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

@pacostas if you can take a look when you get back.

@mhdawson Looks good. Should we also add support for .cjs files?

@pacostas adding .cjs probably makes sense as well. I'm away on holiday next week so maybe we can land this and I'll add another PR to add that once I'm back.


Redeclaration of const should throw SyntaxError

You can do attempt to change a const variable without any error. For example, it should throw an error SyntaxError: redeclaration of const y instead of silently not reassigning y in this code
const y = 2;
y = 4;
print(y); // prints 2

I see an error is thrown when strict mode is enabled.
Is there a reason why you're checking for strict mode before throwing an error for const?


Can sharding strategy configuration files support Java？

What else does this fragmentation strategy support besides expressions? Does java code support it? If so, what should I pay attention to

Can you change title for search friendly?

您可以更改标题以方便搜索吗？

ok

fragmentation policy should be sharding strategy, is it? Can you fix the title again?

fragmentation policy should be sharding strategy, is it? Can you fix the title again?

Oh, sorry, English is not very good. I tried to use hint to segment, but I implemented hintshardingalgorithm interface in API and rewritten doshading (), but I found that he didn't execute my implemented doshading (). What's the problem? Thank you

Inline expressions use Groovy syntax.If you want futher information,please see
https://shardingsphere.apache.org/document/current/en/features/sharding/other-features/inline-expression/  or
https://shardingsphere.apache.org/document/current/cn/features/sharding/other-features/inline-expression/

@lirengui, Hi, can we close this issue?

@lirengui, Hi, can we close this issue?

sure,thanks!


[tutorial-kore branch] data race on field org.kframework.kompile.Kompile.parsedBubbles

@bmmoore I ran kompile --kore imp.k on your tutorial-kore branch and got the following race report:
Data race on field org.kframework.kompile.Kompile.parsedBubbles: {{{
    Concurrent write in thread T14 (locks held: {})
 ---->  at org.kframework.kompile.Kompile.performParse(Kompile.java:407)
        at org.kframework.kompile.Kompile.lambda$resolveBubbles$101(Kompile.java:315)
        at org.kframework.kompile.Kompile$$Lambda$161.apply(Unknown:n/a)
    T14 is created by n/a

    Concurrent read in thread T13 (locks held: {})
 ---->  at org.kframework.kompile.Kompile.performParse(Kompile.java:407)
        at org.kframework.kompile.Kompile.lambda$resolveBubbles$101(Kompile.java:315)
        at org.kframework.kompile.Kompile$$Lambda$161.apply(Unknown:n/a)
    T13 is created by n/a
}}}

I took a quick look at the source code: https://github.com/kframework/k/blob/e2d6df353dfa237443139b1f95d8d912305817d9/kernel/src/main/java/org/kframework/kompile/Kompile.java
It looks like a real race to me.

@dwightguth it looks like parallelism in Kompile is entirely from your commits, starting with 446d2335cabea4e6f220305b008ba6d0376af94f. Did you have a plan for the caching?

This is actually Radu's code. The precise count is not used for anything except debugging output so it's not terribly high priority. Adding a lock would introduce contention. @yilongli do you have a recommendation for how to remove the race without lock contention?

AtomicInteger should be enough for the count, I'm worried more about the chace. Maybe oncurrentHashMap.computeIfAbsent or a guava MapMaker.makeComputingMap would work, but the map creation is currently fairly distant from this parsing method so it might take a bit of refactoring.

Sorry I have no idea what a "chace" is, can you explain what you're referring to?

That was supposed to be "cache".

@dwightguth For this specific race, just make parsedBubbles an atomic integer.
I don't follow the discussion about cache. Is it related to this race report?

Brandon's concern is over the cache map, but that map is synchronized so it should be fine.

Yeah, I didn't follow the source of the parser cache back far enough to see that it's wrapped in synchronizedMap.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target/pull/935 is merged into live branch.
Auto archive content to https://github.com/opstest2/docs-archive-test-target.git

Docs Build status updates of commit 060ae8f:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-RuningBuildFailed] Some unexpected errors happened when running build, please open a ticket in https://aka.ms/SiteHelp and include the error report for our team to troubleshoot

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Peer feedback - Julia

Hi! Great work on this :) A few points of feedback:

It would be really helpful to add a description at the top of the dashboard under the title. I found it a bit confusing to figure out which plots were interactive and what the intended workflow is at first
I like the layout of the app and how nicely it fits onto the screen with well-placed whitespace
App functionality is well suited to the target audience, very informative
The axis labels on median household income are too close together to read for me, would be good to adjust the ticks

done


CSP new Array to []

CSP new Array to []

I got it fixed by this [0,0,0,0] and it works you can check it here:
https://mytokenwallet.com/


What happened to #line x  "duk_***.h" in duktape.c?

When generating duktape.c via tools/configure.py for duktape.c with 2.0.* (right now using master), now #line directives are generated anymore as in previous versions. This was useful when debugging, as Visual Studio would redirect to the original source file instead of duktape.c. I checked if there was any option for configure.py for them but, didn't seem to find any. Is there a way to enable them again?

You can use --line-directives as a configure.py option to get them to be emitted.

duktape@keppihevonen:~/duktape$ python tools/configure.py --help
Usage: configure.py [options]
[...]
  --line-directives     Output #line directives in combined source (default is
                        false)
[...]

You can use --line-directives as a configure.py option to get them to be emitted.
Perfect, thanks!

I checked only on duk-config.rst, so I didn't find anything there. Perhaps mention of the --help command should be made there, to let the user know of further options?
Thanks again, closing as this solves it :yum:

@harold-b Good idea, I'll add a note about --help into duk-config.rst. The tool documentation isn't intended to cover all options as keeping them fully in sync is a bit of work :-)
The Wiki documentation does mention --help: http://wiki.duktape.org/Configuring2x.html. There's some unfortunate overlap between the Wiki documentation and duk-config.rst now (the duk-config.rst documentation came first).


[kilo] Correct ansible-role-requirements

The openstack-ansible ansible-role-requirements.yml file
is specified in galaxy format and no longer works. In this
patch we ensure that the same role is specified using the
git format so that it's always retrievable. This ensures
that the ansible bootstrap works properly.
Also, the ceph roles which were specified in this file are
removed as this file is never used. The ceph roles are
instead included using submodules.
Connects https://github.com/rcbops/u-suk-dev/issues/1515

3 birds one stone:

Fixing the inconsistency of a-r-r with in tree submodule
Fix the absence of sshd role by default (by adding it in a-r-r and using this in the bootstrap process by exporting)
Fixing the absence of sshd role SHA (absence of role version in openstack-ansible a-r-r).

Good job.

Verified sha, var name, all that jazz. Should be good.


Let's add a suggested_num_workers() method?

V1 could be:
import subprocess

def suggest_num_workers(num_accelerators):
    num_cpus = multiprocessing.cpu_count()
    return num_cpus * num_accelerators

@PyTorchLightning/core-contributors
Any other heuristics you guys use?

@williamFalcon I tend to do some stress testing. E.g. I try to repeatedly load samples from my dataset with increasing number of workers and monitor disk I/O. Especially while loading large files (e.g. medical DICOMs) the cpu is not the bottleneck but disk io is

but there’s some upper bound on num_workers based on the num_cpus no?
maybe we can do something like the learning rate finder but for num_workers?
@SkafteNicki

Technically there isn't. If you got to many workers/threads they will be scheduled by your OS, but there is no such thing as a limit. Even if you have more workers, it may sometimes be easier to just load another process context and have inter-process communication in the background, since this sometimes takes a while.
I'm also not sure, if cpu count gives you logical or physical cores

@williamFalcon I had the same idea when saw your PR yesterday.
We could iteratively try to increase the number of workers and log the training time over a few batches. I guess that when we reach a certain amount of workers, the training time will plateau (no decrease any further) and we could suggest n_workers just before this happens.

exactly. that would be ideal.
More of a reason to get this Tuner object separated @tullie

Yeah that’d be awesome. I often do a small benchmark on this when I create a new data loader.

So I guess first step is to get the v1 of tuner merge to master (PR: https://github.com/PyTorchLightning/pytorch-lightning/pull/1998).
Then we can extend with this functionality (I will be happy to do it but if you have some code @tullie to get me started it would be more than welcome)

Yep that sounds good. BTW a related PR to the Tuner is this one I sent out last week https://github.com/PyTorchLightning/pytorch-lightning/pull/2107. It shows another potential way of decomposing the trainer and having shared arguments.

@SkafteNicki still relevant?

Lets keep it alive, I already have a partial implementation ready

we already show a warning no? is the implementation different than that?

I'd be keen to try to improve this a bit if no one's got code they're happy to contribute already.

@GeorgePearse feel free to give it a try. This obviously hasn't been a priority for us.
Just remember that you want to have one cpu-core/thread free for the main process so this doesn't get scheduled too bad.
Ideally you'd also consider RAM as it usually scales linearly with number of workers (each gets a copy of the dataset and loads stuff at the same time). However, this is something that can also come later on.
Also make sure to open a draft PR as soon aa you have something to discuss to get feedback as early as possible.


ImportError: Module use of python27.dll conflicts with this version of Python

Hi, I used Python 3.5 to install all the things. However, when I try to run baseline file, there is such an error.

Hi @Haishion,
If you installed precompiled Malmo package (downloading the zip, or using the install scripts) you'll have such inconsistency as Malmo precompiled package is provided only for python2.7
If you want to use Malmo for python 3.5 you will need to compile everything on your side, following :

Build for Windows
Build for Linux
Build for Mac

The easiest workaround would be to use Python2.7.
I'm closing this issue, as it's more related to Malmo and not the challenge directly.
Feel free to reopen in any case.
Morgan


operator/v1: fix pattern for managementState

Follow-up of https://github.com/openshift/api/pull/264.

/lgtm

/retest


Allow re-rendering after the data in a prompt becomes stale (maybe by allowing cancellation?)

Is your feature request related to a problem? Please describe.
I have a Select to let the user - well - select items and toggle some state based on that. Occasionally some items on the list change or new items are added - but that isn't reflected in the Select prompt of course.
Describe the solution you'd like
I would like to be able to ideally cancel (or otherwise: timeout) a prompt to be able to "refresh" the TUI. Basically abort the prompt and re-render/re-prompt with an updated state. A "Christmas came early" cherry on top solution could re-render lists while keeping state (search, maybe even 'selected item' using PartialEq or Hash?), but let's not get carried away.
Describe alternatives you've considered
I've tried emulating pressing an escape key and going from there, but am stuck so far

Hey, sorry for the delay, just got back from vacation. This is a really important feature and allowing list refreshes on the fly is certainly something i want to implement before v1

I tried solving a similar problem by using the AutoComplete Trait that is available on the Text Prompt.
I was trying to make a Query builder for JQL(Jira Query Language) where the options would be completions provided by the Jira API, Which was possible, but I was querying the Jira API on any input that changed due to how get_suggestions and get_completion are called on any change to the input.
Which I attempted to solve by adding debounce logic, but that proved quite diffuctult.
My initial idea is a new Prompt named Query which show options similar to Select but allows to refresh the options similar to Text and it's AutoComplete trait.

This feature would also be useful for me. Right now, one of my menu options is a "Refresh List (Last Updated: [datetime])" menu option as a workaround.


Military time alternative

How about an option to display Military time? :)

Yes, can do!
But if we're not careful, the Europeans will get hip to this project and then I'll have to support C instead of F ;)


net::ERR_CONTENT_LENGTH_MISMATCH when serving large static files via HTTPS since 1.8.5

Describe the bug
Since drogon version 1.8.5, when serving static files over HTTPS larger than Content-Length: 63865 bytes the server will only transmit 328 bytes of the request and then hang indefinitely. The request never finishes and the browser will eventually cancel with net::ERR_CONTENT_LENGTH_MISMATCH. I believe this error was introduced with the trantor TLS refactoring. drogon 1.8.4 doesn't seem to suffer from this problem.
To Reproduce
Steps to reproduce the behavior:

Configure a self signed certificate
Use drogon 1.8.5
Serve static file with 63865 bytes (content type javascript) to some third unrelated PC (localhost seems to work always for some reason)
See error

Browser:

Chrome 115.0.5790.173
Firefox 116.0.3

Webserver:

drogon 1.8.4
Running on Linux ARM v7a

This issue maybe introduced by the new TLS implement. I'll figure it out.

@tripleslash I can't reproduce this issue, can you provide more details please? thanks so much.

Hm I'm unsure what other info I can provide here... The problem happens every time for me when I try it with drogon 1.8.5 but somehow it loads if I load it from https://localhost on the respective devices. But when I serve the file to another client it only ever gets 328 bytes and then nothing more will be sent and the browser eventually kills the connection and reports content length mismatch. On drogon 1.8.4 the file is fully served

Hi,
I can't replicate this issue on my AArch64 development machine. I can also verify that the hash of the transmitted file is the same as the original. However, I don't have a ARMv7 environment I can test on. Do you have a 64bit ARM machine? So far this looks like a bit-ness issue. Or ARMv7 specific.
❯ curl -k https://localhost:8800/libdrogon.txt -v --tlsv1.3 > /dev/null
....
 GET /libdrogon.txt HTTP/1.1
> Host: localhost:8800
> User-Agent: curl/8.2.1
> Accept: */*
>
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [233 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [233 bytes data]
* old SSL session ID is stale, removing
{ [5 bytes data]
< HTTP/1.1 200 OK
< content-length: 49939026
< content-type: text/plain; charset=utf-8
< server: drogon/1.8.4
< accept-range: bytes
< expires: Thu, 01 Jan 1970 00:00:00 GMT
< last-modified: Sun, 20 Aug 2023 16:31:07 GMT
< date: Sun, 20 Aug 2023 16:32:32 GMT
<
{ [5 bytes data]
100 47.6M  100 47.6M    0     0   208M      0 --:--:-- --:--:-- --:--:--  208M
* Connection #0 to host localhost left intact

Here is a screenshot showing the issue in chrome. This is with drogon v1.8.5

You can see that the javascript file is cut off in the middle in a string literal "syntax"
curl for Windows reports everything to be working however...:
* processing: https://<IP_ADDRESS>/ui/js/common-vendor-angular.js.b335f9159dc537db6a6a.bundle.js
*   Trying [::1]:12345...
* Connected to localhost (::1) port 12345
* SOCKS5 connect to <IP_ADDRESS>:443 (remotely resolved)
* SOCKS5 request granted.
* Connected to localhost (::1) port 12345
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
*  subject: <snip>
*  start date: Aug 18 14:30:00 2023 GMT
*  expire date: Jul 25 14:30:00 2123 GMT
*  issuer: <snip>
*  SSL certificate verify result: self-signed certificate in certificate chain (19), continuing anyway.
* using HTTP/1.x
> GET /ui/js/common-vendor-angular.js.b335f9159dc537db6a6a.bundle.js HTTP/1.1
> Host: <IP_ADDRESS>
> User-Agent: curl/8.2.1
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/1.1 200 OK
< content-length: 185286
< content-type: text/javascript; charset=utf-8
< server: washtec-backend-api/<IP_ADDRESS>19
< access-control-allow-origin: *
< accept-range: bytes
< expires: Thu, 01 Jan 1970 00:00:00 GMT
< last-modified: Sat, 19 Aug 2023 12:54:53 GMT
< date: Sun, 20 Aug 2023 20:39:00 GMT
<
/*! For license information please see common-vendor-angular.js.b335f9159dc537db6a6a.bundle.js.LICENSE.txt */

@tripleslash I see. I'll try with a browser when I got back home. Can you try Firefox (based on Gecko) on your end? I want to know if this is a browser engine depending issue

I tested it with Chrome 115.0.5790.173 and Firefox 116.0.3 and the issue happens in both browsers. It is not just a rendering issue because my website also doesn't load. It fails to interpret the javascript code because of the unterminated string literal (because webserver doesn't transmit the rest of the content).
Latest master doesn't contain any new commits from 1.8.5 tag so I am not sure what you want me to test? The bug report was created using drogon commit 83e08f4b2732e9f3d58f71379d3f7e117cb9180e

Oops. I should have read more clearly. Can you share the file in question? I am having a very hard time replicating the issue on my end.

@tripleslash What occurs when you utilize HTTP instead of HTTPS to load the JavaScript file? thanks.

With HTTP everything loads correctly @an-tao
Sorry I can not share the javascript file (contains some proprietary code that I have no permission to) @marty1885 but it is exactly 63865 bytes long

@tripleslash This will make it slightly harder for us to investigate. Did you try to serve another file over HTTPS that is slightly bigger? Do you also have this issue? If yes, can you then share this, less sensitive, file?

Did you set the server_header_field in config.json? @tripleslash

@tripleslash This will make it slightly harder for us to investigate. Did you try to serve another file over HTTPS that is slightly bigger? Do you also have this issue? If yes, can you then share this, less sensitive, file?

It also happens if I change the content in the file arbitrarily (but I kept the size the same 63865 bytes)

Did you set the server_header_field in config.json? @tripleslash

Yes I did change the Server: header field

Did you set the server_header_field in config.json? @tripleslash

Yes I did change the Server: header field via drogon::app().setServerHeaderField(...)

Note that the header you set cannot contain the "\r\n" suffix.

Did you set the server_header_field in config.json? @tripleslash

Yes I did change the Server: header field via drogon::app().setServerHeaderField(...)

Note that the header you set cannot contain the "\r\n" suffix.

It only contains [a-zA-Z0-9] and -

I borrowed a Raspberry Pi 4 from my friend. Running a 32bit userspace. And created a dummy ASCII file of size 63865 bytes. Still can't replicate the issue.
For reference. This is the how I did the experiment.
First, a simple C program that creates 63865 byte sized file called dummy.txt
#include <stdio.h>
#include <stdlib.h>

int main()
{
        FILE* f = fopen("dummy.txt", "w");
        const char* alphabet = "abcdefghijklmnopqrstuvwxyz";
        int sz = 26;
        for(int i=0;i<63865;i++) {
                fputc(alphabet[i%sz], f);
        }
        fflush(f);
        fclose(f);
}

I compiled and ran this script to generate dummy.txt. Confirming it has the exact size.
❯ cc mkfile.c -o mkfile
❯ ./mkfile
❯ ls dummy.txt  -l
-rw-r--r-- 1 marty1885 marty1885 63865 Aug 21 15:16 dummy.txt

Then I copied trantor's test certs to cwd and modify the helloworld server to act as a HTTPS server.
❯ pwd
/home/marty1885/drogon/build
❯ cp ../trantor/trantor/tests/server.* .
❯ vim ../examples/helloworld/main.cc
❯ git diff
diff --git a/examples/helloworld/main.cc b/examples/helloworld/main.cc
index 7b92827b..ba40245f 100644
--- a/examples/helloworld/main.cc
+++ b/examples/helloworld/main.cc
@@ -66,5 +66,8 @@ int main()
     // you want the server also listen on <IP_ADDRESS> port 5555. Just add another
     // line of addListener("<IP_ADDRESS>", 5555)
     LOG_INFO << "Server running on <IP_ADDRESS>:8848";
-    app().addListener("<IP_ADDRESS>", 8848).run();
+    app().addListener("<IP_ADDRESS>", 8848)
+           .setDocumentRoot(".")
+           .addListener("<IP_ADDRESS>", 8800, true, "server.crt", "server.key")
+           .run();
 }

Finally compile and run. Then access /dummy.txt. Firefox can display it perfectly.

The system info
❯  uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux
❯  file ./examples/helloworld
./examples/helloworld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=662ef6573659a8833852abc48cca02f8548aa90b, for GNU/Linux 3.2.0, not stripped

I also tried enabling/disabling all compression. Same.
===
Next step. I'll try brute-forcing file sizes from 1 bytes to 10M. See if I can find an edge case.

I borrowed a Raspberry Pi 4 from my friend. Running a 32bit userspace. And created a dummy ASCII file of size 63865 bytes. Still can't replicate the issue.
For reference. This is the how I did the experiment.
First, a simple C program that creates 63865 byte sized file called dummy.txt
#include <stdio.h>
#include <stdlib.h>

int main()
{
        FILE* f = fopen("dummy.txt", "w");
        const char* alphabet = "abcdefghijklmnopqrstuvwxyz";
        int sz = 26;
        for(int i=0;i<63865;i++) {
                fputc(alphabet[i%sz], f);
        }
        fflush(f);
        fclose(f);
}

I compiled and ran this script to generate dummy.txt. Confirming it has the exact size.
❯ cc mkfile.c -o mkfile
❯ ./mkfile
❯ ls dummy.txt  -l
-rw-r--r-- 1 marty1885 marty1885 63865 Aug 21 15:16 dummy.txt

Then I copied trantor's test certs to cwd and modify the helloworld server to act as a HTTPS server.
❯ pwd
/home/marty1885/drogon/build
❯ cp ../trantor/trantor/tests/server.* .
❯ vim ../examples/helloworld/main.cc
❯ git diff
diff --git a/examples/helloworld/main.cc b/examples/helloworld/main.cc
index 7b92827b..ba40245f 100644
--- a/examples/helloworld/main.cc
+++ b/examples/helloworld/main.cc
@@ -66,5 +66,8 @@ int main()
     // you want the server also listen on <IP_ADDRESS> port 5555. Just add another
     // line of addListener("<IP_ADDRESS>", 5555)
     LOG_INFO << "Server running on <IP_ADDRESS>:8848";
-    app().addListener("<IP_ADDRESS>", 8848).run();
+    app().addListener("<IP_ADDRESS>", 8848)
+           .setDocumentRoot(".")
+           .addListener("<IP_ADDRESS>", 8800, true, "server.crt", "server.key")
+           .run();
 }

Finally compile and run. Then access /dummy.txt. Firefox can display it perfectly.

The system info
❯  uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux
❯  file ./examples/helloworld
./examples/helloworld: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, BuildID[sha1]=662ef6573659a8833852abc48cca02f8548aa90b, for GNU/Linux 3.2.0, not stripped

I also tried enabling/disabling all compression. Same.
===
Next step. I'll try brute-forcing file sizes from 1 bytes to 10M. See if I can find an edge case.

Your Browser says it transferred 486 bytes, are you sure you didnt encounter the exact same issue as me in that screenshot of yours there?

Your Browser says it transferred 486 bytes, are you sure you didnt encounter the exact same issue as me in that screenshot of yours there?

Yes. As I mentioned I can still load the file if I turn gzip off and actually transmit 63865 bytes.

I figured out the cause of the issue. Drogon in version 1.8.5 is actually crashing on my machine and then is restarting because I run it as service. Analyzing the logs now.

Did you update the trantor submodule?

Yes, I updated both

Can you build it in debug mode (both drogon and your application) and use gdb to run it?

I just completely rebuilt the whole BSP + application and drogon+trantor in Debug mode. This is the stacktrace with debug symbols.
Thread 9 "DrogonIoLoop" received signal SIGABRT, Aborted.
[Switching to Thread 0x71af9d20 (LWP 10775)]
0x7614add6 in ?? () from /lib/libc.so.6
(gdb) bt
#0  0x7614add6 in ?? () from /lib/libc.so.6
#1  0x7618acc8 in ?? () from /lib/libc.so.6
#2  0x76159b36 in raise () from /lib/libc.so.6
#3  0x7614a86c in abort () from /lib/libc.so.6
#4  0x7632a516 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) () from /lib/libstdc++.so.6
#5  0x76af3a2a in std::vector<char, std::allocator<char> >::operator[](unsigned int) () from /lib/libdrogon.so.1
#6  0x76651052 in trantor::TcpConnectionImpl::sendFileInLoop(std::shared_ptr<trantor::TcpConnectionImpl::BufferNode> const&) () from /lib/libtrantor.so.1
#7  0x7664f78a in trantor::TcpConnectionImpl::sendFile(int, unsigned int, unsigned int) () from /lib/libtrantor.so.1
#8  0x7664f1b8 in trantor::TcpConnectionImpl::sendFile(char const*, unsigned int, unsigned int) () from /lib/libtrantor.so.1
#9  0x76b11460 in drogon::HttpServer::sendResponse(std::shared_ptr<trantor::TcpConnection> const&, std::shared_ptr<drogon::HttpResponse> const&, bool) () from /lib/libdrogon.so.1
#10 0x76b11670 in drogon::HttpServer::sendResponses(std::shared_ptr<trantor::TcpConnection> const&, std::vector<std::pair<std::shared_ptr<drogon::HttpResponse>, bool>, std::allocator<std::pair<std::shared_ptr<drogon::HttpResponse>, bool> > > const&, trantor::MsgBuffer&) () from /lib/libdrogon.so.1
#11 0x76b1025a in drogon::HttpServer::onRequests(std::shared_ptr<trantor::TcpConnection> const&, std::vector<std::shared_ptr<drogon::HttpRequestImpl>, std::allocator<std::shared_ptr<drogon::HttpRequestImpl> > > const&, std::shared_ptr<drogon::HttpRequestParser> const&) () from /lib/libdrogon.so.1
#12 0x76b0fd66 in drogon::HttpServer::onMessage(std::shared_ptr<trantor::TcpConnection> const&, trantor::MsgBuffer*) () from /lib/libdrogon.so.1
#13 0x76b0f1f0 in ?? () from /lib/libdrogon.so.1
#14 0x76b13f2e in ?? () from /lib/libdrogon.so.1
#15 0x76b13508 in ?? () from /lib/libdrogon.so.1
#16 0x76b12dda in ?? () from /lib/libdrogon.so.1
#17 0x7665a528 in std::function<void (std::shared_ptr<trantor::TcpConnection> const&, trantor::MsgBuffer*)>::operator()(std::shared_ptr<trantor::TcpConnection> const&, trantor::MsgBuffer*) const () from /lib/libtrantor.so.1
#18 0x76651e52 in trantor::TcpConnectionImpl::onSslMessage(trantor::TcpConnection*, trantor::MsgBuffer*) () from /lib/libtrantor.so.1
#19 0x76673b54 in OpenSSLProvider::processApplicationData() () from /lib/libtrantor.so.1
#20 0x76672bda in OpenSSLProvider::recvData(trantor::MsgBuffer*) () from /lib/libtrantor.so.1
#21 0x7664ab8c in trantor::TcpConnectionImpl::readCallback() () from /lib/libtrantor.so.1
#22 0x7665f7c8 in void std::__invoke_impl<void, void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>(std::__invoke_memfun_deref, void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&) ()
   from /lib/libtrantor.so.1
#23 0x7665f25a in std::__invoke_result<void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>::type std::__invoke<void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>(void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&) () from /lib/libtrantor.so.1
#24 0x7665ec04 in void std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>::__call<void, , 0u>(std::tuple<>&&, std::_Index_tuple<0u>) () from /lib/libtrantor.so.1
#25 0x7665e33a in void std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>::operator()<, void>() () from /lib/libtrantor.so.1
#26 0x7665d870 in void std::__invoke_impl<void, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&>(std::__invoke_other, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&)
    () from /lib/libtrantor.so.1
#27 0x7665ccf6 in std::enable_if<std::__and_<std::is_void<void>, std::__is_invocable<std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&> >::value, void>::type std::__invoke_r<void, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&>(std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&) () from /lib/libtrantor.so.1
#28 0x7665bbbe in std::_Function_handler<void (), std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()> >::_M_invoke(std::_Any_data const&) () from /lib/libtrantor.so.1
#29 0x76a47a76 in std::function<void ()>::operator()() const () from /lib/libdrogon.so.1
#30 0x76643f64 in trantor::Channel::handleEventSafely() () from /lib/libtrantor.so.1
#31 0x76643e66 in trantor::Channel::handleEvent() () from /lib/libtrantor.so.1
#32 0x76624400 in trantor::EventLoop::loop() () from /lib/libtrantor.so.1
#33 0x76628050 in trantor::EventLoopThread::loopFuncs() () from /lib/libtrantor.so.1
#34 0x76627c34 in ?? () from /lib/libtrantor.so.1
#35 0x76628c44 in ?? () from /lib/libtrantor.so.1
#36 0x76628bf4 in ?? () from /lib/libtrantor.so.1
#37 0x76628b84 in ?? () from /lib/libtrantor.so.1
#38 0x76628b4e in ?? () from /lib/libtrantor.so.1
#39 0x76628b2a in ?? () from /lib/libtrantor.so.1
#40 0x7632cce2 in ?? () from /lib/libstdc++.so.6
#41 0x76189596 in ?? () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Please use the "bt" command to trace the call stack and examine the exact crash location, especially the specific positions of the 5th and 6th layers (note the line numbers in the source code).

@an-tao @tripleslash  Sorry for interrupt you. Stack log shows assertion in standard library in vector operator[], called from sendFileInLoop (usually assertion in that place is range check exception). sendFileInLoop is in TcpConnectionImpl.cc and has only one [] operator in line 1150 (for linux):
auto n = fread(&(*fileBufferPtr_)[0], ...
It assert only if it cannot take address of the 1st element (0 index). Ff there is no 1st element, size() of fileBufferPtr_ equal 0. Size of the vector was not checked directly before, it was checked indirectly by while (filePtr->fileBytesToSend_ > 0). Likely filePtr->fileBytesToSend_ does not equal to fileBufferPtr_->size().

Off topic - two days ago views Cppcon 2020 video, a speaker said, that std::vector [] operator together with std::map [] operator one of the dangerous things in the current C++. Easy make error, and no exception and information (for better program performance)

@tripleslash sendFileInLoop function logs all variation of own error to log file. you could activate log file in configuration and look inside.
It will not log anything in Debug mode , because it will be terminated by assertion before error message, but it will log all error in release mode.

@an-tao @tripleslash Sorry for interrupt you. Stack log shows assertion in standard library in vector operator[], called from sendFileInLoop (usually assertion in that place is range check exception). sendFileInLoop is in TcpConnectionImpl.cc and has only one [] operator in line 1150 (for linux): auto n = fread(&(*fileBufferPtr_)[0], ... It assert only if it cannot take address of the 1st element (0 index). Ff there is no 1st element, size() of fileBufferPtr_ equal 0. Size of the vector was not checked directly before, it was checked indirectly by while (filePtr->fileBytesToSend_ > 0). Likely filePtr->fileBytesToSend_ does not equal to fileBufferPtr_->size().

it's wired, because on line 1132 we ensure that the vector pointed to by fileBufferPtr is not empty.

it's wired, because on line 1132 we ensure that the vector pointed to by fileBufferPtr is not empty.
In line 1130 checked, that pointer is not nullptr, but it can point to empty vector. Some lines above is code:
 fileBufferPtr_->resize(0);
                continue;

I do not know, is it reason, but it is only one place to cause assert - line 1150 and later line 1158

Most likely this is the problem, his app may be calling newStreamResponse(), triggering the code here, and then sending the file on the same connection causing the assertion to fail.
I made a patch for this, https://github.com/an-tao/trantor/pull/286, @tripleslash , please check it out.

it's wired, because on line 1132 we ensure that the vector pointed to by fileBufferPtr is not empty. In line 1130 checked, that pointer is not nullptr, but it can point to empty vector. Some lines above is code:
 fileBufferPtr_->resize(0);
                continue;

I do not know, is it reason, but it is only one place to cause assert - line 1150 and later line 1158

Most likely this is the problem, his app may be calling newStreamResponse(), triggering the code here, and then sending the file on the same connection causing the assertion to fail.
I made a patch for this, https://github.com/an-tao/trantor/pull/286, @tripleslash , please check it out.
@VladlenPopolitov thanks so much for your reminder.

it's wired, because on line 1132 we ensure that the vector pointed to by fileBufferPtr is not empty. In line 1130 checked, that pointer is not nullptr, but it can point to empty vector. Some lines above is code:
 fileBufferPtr_->resize(0);
                continue;

I do not know, is it reason, but it is only one place to cause assert - line 1150 and later line 1158

Most likely this is the problem, his app may be calling newStreamResponse(), triggering the code here, and then sending the file on the same connection causing the assertion to fail. I made a patch for this, an-tao/trantor#286, @tripleslash , please check it out. @VladlenPopolitov thanks so much for your reminder.

The patch works and the original error seems gone. However after putting some load on the server and serving about 200 requests I got this following crash:
Thread 10 "DrogonIoLoop" received signal SIGPIPE, Broken pipe.
[Switching to Thread 0x713f8d20 (LWP 22373)]
0x761e6dd6 in ?? () from /lib/libc.so.6
(gdb) bt
#0  0x761e6dd6 in ?? () from /lib/libc.so.6
#1  0x7626d940 in write () from /lib/libc.so.6
#2  0x766ed92c in trantor::TcpConnectionImpl::writeRaw(void const*, unsigned int) () from /lib/libtrantor.so.1
#3  0x766edf16 in trantor::TcpConnectionImpl::onSslWrite(trantor::TcpConnection*, void const*, unsigned int) () from /lib/libtrantor.so.1
#4  0x7670fce4 in OpenSSLProvider::sendTLSData() () from /lib/libtrantor.so.1
#5  0x7670ed70 in OpenSSLProvider::sendData(char const*, unsigned int) () from /lib/libtrantor.so.1
#6  0x766ed996 in trantor::TcpConnectionImpl::writeInLoop(void const*, unsigned int) () from /lib/libtrantor.so.1
#7  0x766e715a in trantor::TcpConnectionImpl::writeCallback() () from /lib/libtrantor.so.1
#8  0x766fb820 in void std::__invoke_impl<void, void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>(std::__invoke_memfun_deref, void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&) ()
   from /lib/libtrantor.so.1
#9  0x766fb2b2 in std::__invoke_result<void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>::type std::__invoke<void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&>(void (trantor::TcpConnectionImpl::*&)(), trantor::TcpConnectionImpl*&) () from /lib/libtrantor.so.1
#10 0x766fac5c in void std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>::__call<void, , 0u>(std::tuple<>&&, std::_Index_tuple<0u>) () from /lib/libtrantor.so.1
#11 0x766fa392 in void std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>::operator()<, void>() () from /lib/libtrantor.so.1
#12 0x766f98c8 in void std::__invoke_impl<void, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&>(std::__invoke_other, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&)
    () from /lib/libtrantor.so.1
#13 0x766f8d4e in std::enable_if<std::__and_<std::is_void<void>, std::__is_invocable<std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&> >::value, void>::type std::__invoke_r<void, std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&>(std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()>&) () from /lib/libtrantor.so.1
#14 0x766f7c02 in std::_Function_handler<void (), std::_Bind<void (trantor::TcpConnectionImpl::*(trantor::TcpConnectionImpl*))()> >::_M_invoke(std::_Any_data const&) () from /lib/libtrantor.so.1
#15 0x76ae3a76 in std::function<void ()>::operator()() const () from /lib/libdrogon.so.1
#16 0x766dff8a in trantor::Channel::handleEventSafely() () from /lib/libtrantor.so.1
#17 0x766dfe66 in trantor::Channel::handleEvent() () from /lib/libtrantor.so.1
#18 0x766c0400 in trantor::EventLoop::loop() () from /lib/libtrantor.so.1
#19 0x766c4050 in trantor::EventLoopThread::loopFuncs() () from /lib/libtrantor.so.1
#20 0x766c3c34 in ?? () from /lib/libtrantor.so.1
#21 0x766c4c44 in ?? () from /lib/libtrantor.so.1
#22 0x766c4bf4 in ?? () from /lib/libtrantor.so.1
#23 0x766c4b84 in ?? () from /lib/libtrantor.so.1
#24 0x766c4b4e in ?? () from /lib/libtrantor.so.1
#25 0x766c4b2a in ?? () from /lib/libtrantor.so.1
#26 0x763c8ce2 in ?? () from /lib/libstdc++.so.6
#27 0x76225596 in ?? () from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Then I can confirm the fix https://github.com/an-tao/trantor/pull/286 does work

If you run drogon under gdb, you can try to disable the handling of SIGPIPE by gdb:
(gdb) handle SIGPIPE nostop


Drop dependence on the unicode crate

This commit pulls in the script to generate tables.rs in the main distribution
and strips it down to just the bare bones necessary for regexes (which is still
quite a lot!). The script was used to generate a unicode.rs file which
contains all the data needed from the libunicode crate.
Eventually we hope to provide libunicode in some form on crates.io or perhaps
stabilize it in the distribution itself, but for now it's not so bad to vendor
the dependency (which doesn't change much) and it's required to get libregex
building on stable Rust.

r? @BurntSushi

r? @huonw
(rust_highfive has picked a reviewer for you, use r? to override)

LGTM. :D thanks!


docs update env

Add a section on the FAQ docs with steps on how to update/edit a conda environment on an existing QHub instance.
The question was originally asked on #242 and it was answered by Tyler.
Closes #266.

@kcpevey so happy to have you in the team! :) To celebrate, I've just requested your review on this Docs PR
Like the good welcomer that I am  🗡

The content of this issue was added to the new documentation PR and merged into the dev branch already.
Hence, I will close this issue now.


[FLINK-1981] add support for GZIP files

register decompression algorithms with file extensions for extensibility
fit deflate decompression into this scheme
add support for GZIP files
test support for deflate and GZIP files with the CsvInputFormat

I exchanged that part with the Validate with Preconditions.

:+1: This has been requested multiple times now. I would merge your pull request. Can you add some documentation?

Sure, I can do that. Do you talk about a user documentation or more Java docs. And if the former applies, where would I put that documentation preferrably?

I'm talking about the user documentation. You could mention support for gzip and add an example here: http://ci.apache.org/projects/flink/flink-docs-master/apis/programming_guide.html#data-sources

You can modify the documentation in the docs/apis/programming_guide.md file.

Okay, I did not further explain the internals but only how to employ the deflate and GZip support. I think, to make compression extensible or customizable (which would be worthwhile in my opinion), we should make small changes to the code wrt. to its usability. That however does not match the contents of the associated JIRA.

Thanks for the documentation. Could you open a JIRA to account for the necessary changes in terms of extensibility?

Thank you for your contribution.

Okay, will do that.


Test Conda environment installation using Pixi for pre-course setup

One alternative for making pre-course setup simpler for students is to use multi-environment Pixi with a lockfile, which are then interacted with during the course using Conda rather than Pixi. This would possibly simplify the pre-course setup for the students (with the addition that they would need to install Pixi), as compared to (1) the current setup with one Conda environment per tutorial, and (2) using platform-specific Conda lockfiles (see #284). Our goals are to have a simple pre-course setup that students can run without needing to understand everything (as they'll learn it during the course), but keep to using Conda (as that is still the most common tool both used and integrated into other tools and workflows existing).

A problem would be that all environments would be installed in .pixi/envs, which would be counter to how Conda does things.

Be aware that unlike conda, multiple environments in Pixi are a two step process. You define features in which dependencies are defined, and then the env enables those features. I.e. when you do pixi add for example, you add to a feature, rather than an env. I've not tried this though and if it helps with conflicts or makes them because two features for example are incompatible.

A problem would be that all environments would be installed in .pixi/envs, which would be counter to how Conda does things.

Note, that pixi supports detached environments


Feauture/ptp3 7 python3 compatibility

JIRA URL
https://spothero.atlassian.net/browse/PTP3-7
Description
In this pr, I update the code for python 3 compatibility.

Oops, I meant to open this against our fork.


TextParameter lost

Describe the bug
Text parameter selection lost when changeing in other module.
To Reproduce
Steps to reproduce the behavior:

Create a new project with at least 2 modules
Set text parameter for top block in module1
Select module2 and set text parameter there for top block
When trying to create an output, module1 has no TextParameter selected anymore

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots

Desktop (please complete the following information):

OS: Windows 11
Version: v1.7.3

Thank you for reposting this bug.
I fixed it in this commit https://github.com/OpenKNX/Kaenx-Creator-Share/commit/393c5fcf29b4fc26d554f1666ead3439de4ddae3
I will release a new version.


List explicitly what the 'reserved prefix' is for packages

NuGet Product(s) Involved
Other/NA
The Elevator Pitch
If we try to validate the suitability of certain nuget packages through the 'prefix reserved' flag, there doesn't appear to be a way to check which prefix has actually been reserved.
For example:
https://www.nuget.org/packages/dotnet-ef
Is the prefix dotnet-? If so we could trust all dotnet-, but if it's just dotnet-ef, then we can't.
Additional Context and Details
No response

Running into this issue as well. In order to whitelist packages within an organization it is necessary to know the actual reserved prefix value.


expose fetchcargo in rustPlatform?

When building my external Rust projects for embedded systems using Nix, I find myself having to copy-paste the fetchcargo.nix file from nixpkgs into every project's repository.
I could import it with <nixpkgs/pkgs/build-support/rust/fetchcargo.nix>, but this does not play nice with the common coding pattern pkgs ? import <nixpkgs> which allows overriding pkgs.
Is there opposition to making it accessible e.g. as pkgs.rustPlatform.fetchcargo?

Still important to me

Still relevant

Now exposed as rustPlatform.fetchCargoTarball.


New mechanism of scroller data custom processing (with usage sample)

A new parameter 'processing' is introduced. It's a name of object in ctrl which will get insert-update-delete methods after ui-scroll compiles.
See the demo http://rawgit.com/dhilt/NGScroller/insert-update-delete/src/examples/twoUpdatableLists.html of two scroller lists which are using the same datasource and the different processing objects.
A minimal changes with backward compatibility.

Canceled due to https://github.com/Hill30/NGScroller/pull/66 PR.


Nothing happen using python 3.8

What version of Python are u using? Using 3.8 trying to open nothing

happen.

Yes, it won't work. You will only see the basic modules of codes, I mentioned that in order to anti-cheat, I didn't release the main part of the code.

Nice Captain American picture btw

If you want to experiment, I can sent it to you.

Of course ! how can u send me?

i was testing so much with yolo and could be good test it could help to improve and test!

<EMAIL_ADDRESS>if u can send it.

Can you send for me either<EMAIL_ADDRESS>Thanks :D


better error message when CRIU is missing

In the case of migration, you get the following when you don't have CRIU
installed:
error: Error transferring container data: checkpoint failed:
Problem accessing CRIU log: open /tmp/lxd_migration_899480871/dump.log: no such file or directory
Which, while correct, is ugly. Let's give people a better error.
Signed-off-by: Tycho Andersen<EMAIL_ADDRESS>

And the busybox issue again...
Jenkins: test this please


allow testing environment functions

This is probably the wrong way to achieve the outcome, it's just what I did to get it working and figured it should be shared.
Scenario
As per https://puppet.com/docs/puppet/5.3/functions_ruby_overview.html#location I have an "environment function" named environment::upcase and I want to test it.  My test code looks like
require 'spec_helper'

describe 'environment::upcase' do
 it {
   should run.with_params("a").and_return("A")
 }
end

Issue
Running the tests as-is fails with
     NoMethodError:
       undefined method `func_name' for nil:NilClass
     # ./vendor/gems/ruby/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/run.rb:109:in `func_name'
     # ./vendor/gems/ruby/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/run.rb:135:in `failure_message_generic'
     # ./vendor/gems/ruby/gems/rspec-puppet-2.6.11/lib/rspec-puppet/matchers/run.rb:92:in `failure_message'
     # ./spec/functions/environment__upcase_spec.rb:25:in `block (2 levels) in <top (required)>'

Workaround
This MR allows the test to succeed
# bundle exec rspec
....

Finished in 0.51518 seconds (files took 8.41 seconds to load)
1 examples, 0 failures

Coverage increased (+0.01%) to 91.721% when pulling fbb849a13ec45391a34e8f460516df30976a5b40 on asharpe:environment-functions into e44b43e59432583fd7cca7139add1f0d536c3b75 on rodjek:master.

Given the pain this is causing to test, and that I see no good reason for environment functions that could not also be addressed by having an environment module for this, I'll bring up the topic of deprecating/removing environment functions with the puppet coremunity team.

After tracing through the tickets and code changes, I'm still not 100% clear on the history of "environment functions". The best I could determine is they were probably introduced as a side-effect to loader changes for the Puppet 4 function API (see https://github.com/puppetlabs/puppet/pull/2546 https://github.com/puppetlabs/puppet/pull/5455) and then someone decided to document it.
My suggestion of moving those functions to a module called environment is not workable, since that is a keyword in the puppet language, and thus the module can't be called that.
I'm still having a hard time coming up with a use-case where this capability is useful for a production server/agent setup in a way that couldn't also be addressed by having said functions in a module (even if it is not called "environment"). Therefore I'm still in the camp of "it's not worth jumping through all the hoops for getting the test moons aligned just right".

Bumping this from the 2.8.x release since it sounds like it may just not get implemented.

I was having a similar issue with a namespace function.  It appears that testing a function only works when the function is in a directory with the module name.  Which in this case is:  /lib/puppet/functions/environment/upcase.rb


Too big gaps in non-minute candles chart

Bug Report
Issue: When drawing non-minute candlestick charts - the gap in between candles is too big
Reproducing:
target.Plot.AddCandlesticks(candles);
target.Plot.XAxis.DateTimeFormat(true);

System Details

ScottPlot Version: 4.1.59
Operating System: Windows 10
Application Type: WinForms
.NET Version: .NET 5.0

Examples
When 1 minute chart is drawn candles look like this:

When you draw a 1 hour chart (candles are evenly distributed 60 minutes apart), the graph looks like this:

and if zoomed

I think it makes no sense to display such huge space gaps in between hourly candles.. It makes the graph impossible to use, unless zoomed in. (Actually, even if you zoom it-in it is still hard to use it because candles are too far apart)

I haven't tried this myself, but can you set the minimum spacing to be 1 hr and see if that helps?

@Xerxes004 it says that date-time ticks are not supported

Ah, makes sense. You may need to set your own labels using ManualTickSpacing for now.

Hi @pavlexander and the group, I'm just now getting to this - sorry for the delay (#2304)
Your only contains two lines of code and is not enough for me to reproduce the issue you describe.
If I write code like this, it looks good
public Form1()
{
    InitializeComponent();

    DateTime candleStart = new(2023, 1, 1);
    TimeSpan candleWidth = TimeSpan.FromHours(1);

    List<OHLC> candles = new();
    for (int i = 0; i < 20; i++)
    {
        OHLC ohlc = new(10, 15, 5, 12, candleStart, candleWidth);
        candles.Add(ohlc);
        candleStart += candleWidth;
    }

    formsPlot1.Plot.AddCandlesticks(candles.ToArray());
    formsPlot1.Plot.XAxis.DateTimeFormat(true);

    formsPlot1.Refresh();
}

Hopefully that's enough to get you un-stuck!


[BUG] Load More Button for Comments

Mention what part of the design system the bug is related to
Missed Component
Describe the bug
Could you confirm if using a "Load More" button to load the comments section on the blog details page is better than using a pagination component? It seems that this method would provide a more intuitive user experience.

@Sa7aR-Kassem
This is not a bug. I request you to report issues, where there is an issue - such as a component is not reacting the way it is described.
To answer your question - yes, in many cases a "Load more" is useful, and provides a better experience to a user. However, If a user had to share the page URL, after hitting "Load More" 3 times, will the shared URL provide the same content?
As an experiment try this:

Go to the blog page - by default it has 10 posts loaded, and then click on Load More 2 times.
On the 2nd time the content is loaded - which means, now there are 30 items on the page. Now, imagine you found something interesting. So you copy the page URL and share it with a friend, saying .. "look what I found on this page"
Now imagine, your friend opens the link - but see's only 10 posts loaded

So the point I'm trying to make is .. if you want to implement a "load more", you must add a parameter to the URL that stores the count of items or the total articles loaded, and when such parameter is passed - the page must react to show the same.


[FEATURE] Adding minstrobe_hash.hpp and its test.

Codecov Report

Merging #24 (d454aad) into master (e198317) will increase coverage by 0.15%.
The diff coverage is 97.67%.

@@            Coverage Diff             @@
##           master      #24      +/-   ##
==========================================
+ Coverage   96.26%   96.42%   +0.15%
==========================================
  Files          10       12       +2
  Lines         697      783      +86
==========================================
+ Hits          671      755      +84
- Misses         26       28       +2

Impacted Files
Coverage Δ

include/minstrobe.hpp
97.40% <97.40%> (ø)

include/minstrobe_hash.hpp
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 e198317...d454aad. Read the comment docs.


Support Pandas 2.1

Resolves #124
Don't know how big of a fan I am of the fix for recursion error, but it is a start.

The test failures turn out to not be related but are instead #126. I'll fix that before returning to this PR.

This is now passing CI.
I agree that it does not feel like an excellent solution but I don't have a better one to hand and this is a blocker for other holoviz projects, so I am going to merge it as it is. We can return to it in future if/when we have a better solution.


Crash when saving data using datastore

Describe the bug
We are saving data to data store with predicate. I am getting crash when predicate is not nil. But when predicate set to nil, everything works fine.
Fatal error: SWIFT TASK CONTINUATION MISUSE: save(_:modelSchema:where:) tried to resume its continuation more than once, throwing DataStoreError: Cannot apply a condition on model which does not exist.
Recovery suggestion: Save the model instance without a condition first.!
But we want to add predicate for all the queries
Steps To Reproduce
1. Save the data using predicate

Expected behavior
App should save data to dynamodb
Amplify Framework Version
2.28.0
Amplify Categories
DataStore
Dependency manager
Swift PM
Swift version
5.0
CLI version
NA
Xcode version
15.2
Relevant log output
Fatal error: SWIFT TASK CONTINUATION MISUSE: save(_:modelSchema:where:) tried to resume its continuation more than once, throwing DataStoreError: Cannot apply a condition on model which does not exist.
Recovery suggestion: Save the model instance without a condition first.!

Is this a regression?
No
Regression additional context
No response
Platforms
iOS
OS Version
iOS 17.4
Device
iPhone 15 Plus
Specific to simulators
No response
Additional context
No response

Hi @amruth-movano , thanks for opening this issue. We will try to reproduce and post any updates here.
To help us root cause, could you please enable verbose logging by adding Amplify.Logging.logLevel = .verbose before calling Amplify.configure() and share with us the logs up until the crash?
If you can add some code snippets on how you're using the API, that's also helpful.
Thanks!

@ruisebas please see the attached file with verbose output.
amplify_verbose.txt

Hi @amruth-movano, thank for all the information. I was able to reproduce the crash and I'm working on a fix for it.
However, please note that setting a predicate condition on a create operation (i.e. calling save with a model that does not exist) is not supported and it will result in a failure. You can only set conditions on update operations (i.e. calling save with a model that already exist).

The DataStore feature is designed to enable data accessibility even when the device is not connected to the internet or has limited connectivity. When you create model instances using DataStore.save, it does not directly create the item in the DynamoDB table. Instead, it saves the data to a local SQLite database first, and then synchronizes it with the DynamoDB table later.
If you want to apply conditional checks while creating items directly in the DynamoDB table, you can use the API plugin provided by Amplify.
Amplify.API.mutate(.mutation(...))


Prevent creation of a connectivity rule if no vector/pattern parameter is provided

Currently user can create a connectivity rule by providing only the name and without defining any vector or pattern.

this is fixed


Rename the Core module to CKB module

I'd be great if this keeps some certain of back compatibility. For example, if the module is renamed to ckb, could we have an alias (or example) to map core to ckb so existing codebase using JavaScript SDK could just update one line to upgrade?

I'd be great if this keeps some certain of back compatibility. For example, if the module is renamed to ckb, could we have an alias (or example) to map core to ckb so existing codebase using JavaScript SDK could just update one line to upgrade?

In fact, the name Core is defined by user in the following ways:
import Core from '@nervosnetwork/ckb-sdk-core'
const { default: Core } = require('@nervosnetwork/ckb-sdk-core')
const Core = require('@nervosnetwork/ckb-sdk-core')

They can use any name they like:
import CKB from '@nervosnetwork/ckb-sdk-core'
const { default: CKB } = require('@nervosnetwork/ckb-sdk-core')
const CKB = require('@nervosnetwork/ckb-sdk-core')

This issue only reminds me of renaming the class name from Core to CKB, while it's a default export, which doesn't have any effects on usage.

https://github.com/nervosnetwork/ckb-sdk-js/pull/407


What's the color theme you use in your demo gif?

I like it, could you please share the theme name?

I just customized these colors myself. You can copy it from this image. Or I can share ~/Library/Preferences/com.googlecode.iterm2.plist with you.

Thanks for sharing~

For anyone else that might come looking, I exported these colors from iTerm. You can download them here. https://www.dropbox.com/s/gbnmaxgr291qabz/Passion.itermcolors?dl=0
Thanks @ChesterYue for such a killer ZSH theme!


Double quotes in double-quoted values not handled correctly

Double quotes inside double-quoted values cause the parser to stop parsing at the row containing the double quote. When I run this:
printf 'name,age\njoe,40\n"will"iam",30\n"sam",35\n"jan",25' | csv-parser
-------------------------------^ there's a double quote in here
I get this:
{"name":"joe","age":"40"}
{"name":"will\"iam","age":"30\n\"sam\""}

It escaped the double quote nicely, but the "age" field is wrong, and the third and fourth rows were never parsed at all.

I've tried creating a fix for this: https://github.com/czaefferer/csv-parser/tree/patch-issue-70
With the files I've tested it seems to work, however this should be double-checked. I've modified the rules to start/stop quoted text: To start an unescaped quote must be found either at the very first character in the record, or directly after the separator. To stop quoted text an unescaped quote must either be the very last character in the record or it must be followed by a separator. All other quotes are handled like regular characters. But this also means a row like a; "b" would result in the values 'a' and ' \"b\"', since a space is the first character in the second cell, so the following quote won't be used to start a quoted text. So I'm not completely sure, what/how bad the side effects of this change are...

It's probably related, here's another bug when parsing twice the same content, very surprisingly the data is not the same: https://repl.it/@caub/tsv
fast-csv works fine on this example

even for following data, it is not working as expected
I/P Data:
email
"mathi@sf.com,mathi<EMAIL_ADDRESS><EMAIL_ADDRESS>
expecting three rows, but getting only two rows with option {headers:false}
O/P Data:
email
mathi@sf.com,mathi@ki.com,mathi<EMAIL_ADDRESS>

Similar issue here:
<tag attr="val"/>a</tag>,b,c

@bittlingmayer your situation is an easy fix, quote the field, escape the inner quotes.

Just for information, my fix doesn't work correctly in streaming mode. I guess sometimes the \r\n gets split into two chunks and the line break isn't detected, and two rows get merged into one again (or something like that). I won't investigate further though, I'm using "csv-parse" now, which is slightly slower, but appears to be much more resilient.

The issue seems to be with this line... but if we change this condition we break other test cases. Will probably attempt to fix it
if (!this.state.quoted) { //Line no 239       }

.pipe(csv({
separator: ',',
quote: '"',
escape: '\',
newline: '\n',
strict: true,
skipLines: 0,
skipRows: 0,
}))

we have the below code snippet
`const stream = require('stream');
const csv = require('csv-parser');
const HIGHEWATERMARK = 20 * 1024 * 1024;
// eslint-disable-next-line no-underscore-dangle
async function streamFileOnDockerFS(inputStream, fileName) {
    inputStream.pipe(csv().on('data',data=>{
        console.log('in file 1');
        console.log(data);
}));

}
async function streamFileOnDockerFS2(inputStream, fileName) {
    inputStream.pipe(csv().on('data',data=>{
        console.log('in file 2');
        console.log(data);

}));

}
(async () => {
const currentCSVStream = new stream.PassThrough({ highWaterMark: HIGHEWATERMARK });
// eslint-disable-next-line no-underscore-dangle
const header = '"promoname"';
const outRow = '"dummy""promo,name""dummy"';
currentCSVStream.push(${header}\n);
for(let i=0;i<=5;i+=1)
currentCSVStream.push(${outRow}\n);
currentCSVStream.push(null);
const prm1 =  streamFileOnDockerFS(currentCSVStream);
const prm2 =  streamFileOnDockerFS2(currentCSVStream);
const promises = [prm1,prm2];
await Promise.allSettled(promises);
})();
`
The output for the above snippet is as following
in file 1
{ promoname: 'dummy"promo,name"dummy' }
in file 2
{ promoname: 'dummy"promo,name"dummymy' }
in file 1
{ promoname: 'dummy"promo,name"dummy' }
in file 2
repetitions...
The output seems to be incorrect for file2


Address effect debounce sendability

Address effect cancellation sendability #3326
Address Effect.throttle sendability #3325
I see that you are working on similar tasks in the above PRs.
It seems likely that effect cancellation sendability is processed, these PR will be affected as well.
I apologise if this PR has caused any inconvenience to your flow that you are already working on (you can just close it).
I sent the PR because I wanted to make a small contribution to the community.
Thank you.

@qwerty3345 Thanks for taking the time to PR! We actually don't think this API needs the sendable constraint, though, and there are no warnings in it currently. The throttle API requires sendable actions because it captures them to emit later, but debounce does not have this same requirement. So I think we'll keep things as is, but thanks all the same for taking the time.