New Plugin:  SAPBTP cli

Summary
Provides support for a new plugin for SAP's BTP CLI.
NOTE: Plugin name is SAPBTP, but the CLI command is btp.
Setup

Setup an SAP BTP account - (trial, free or paid)
Provision user - standard using SAP's Account IDP
Download and setup the SAP BTP Command Line Interface (btp CLI)
Build and test the SAPBTP plugin locally according to these instructions.

$ make sapbtp/validate
$ make sapbtp/build

Importer
The BTP CLI config file maintains the current setting and the refresh token created on the initial credentialed login.  This is not particularly useful for populating credentials, and an importer is not currently implemented.
Provisioner
The BTP CLI authentication is done with an explicit login using the login command.  The current plugin will only trigger on that CLI command and adds the --user and --password arguments to the command line.  Additional login arguments such as --url and --subdomain can still be provided or entered as per the standard flow.
Example
$ btp login --url https://cpcli.cf.eu10.hana.ondemand.com --subdomain t5822952trial-ga

###############################################################################
# WARNING: 'sapbtp' is not from the official registry.                        #
# Only proceed if you are the developer of 'sapbtp'.                          #
# Otherwise, delete the file at /Users/username/.op/plugins/local/sapbtp. #
###############################################################################
Connecting to CLI server at https://cpcli.cf.eu10.hana.ondemand.com...
Autocomplete script has been updated to include the latest commands. Restart your terminal session to load the newest autocomplete information.

Authentication successful

Current target:
  t5822952trial (global account, subdomain: t5822952trial-ga)

We stored your configuration file at: /Users/username/Library/Application Support/.btp/config.json

Tips:
    Commands are executed in the target, unless specified otherwise using a parameter. To change the target, use 'btp target'.
    To provide feedback about the btp CLI, use 'btp feedback' to open our survey.

OK

@AndyTitu this file does contain the refresh token that is created during the btp login command.  The plugin should only pass the username and password parameters on the login command, as the other authenticated commands do not accept specifying login parameters and rely on the generated config file and refresh token.

Is this file by any chance used for authentication via the refresh token? My understanding is that the --username --password approach is only to be used once for getting this config file, while all subsequent requests should rely on the persisted file for authentication. In this case, we should find a way of provisioning this file, rather than using the username and password for each and every command.

@derekvincent oh I see! This also explains needsauth.ForCommand("login"). This makes sense.
An additional question:

other authenticated commands do not accept specifying login parameters and rely on the generated config file and refresh token
So this means that the refresh token could be used by someone else to authenticate on your behalf. In this case, is it safe to store this in plain-text on disk in the config file? This is indeed a temporary credential so the risk decreases a bit. Would it be worth looking into a file-provisioner approach together with using the encrypted plugin cache for serving the temporary refresh token to the config file, while using the login (username + password) logic only when needing to refresh the temporary config file, from a security perspective @DCKcode ?

@AndyTitu Based on the description here I think the file provisioner approach would be well suited here 🙂

If the risk of that temporary token is not perceived to be too high, I am okay to ship this as is.

My understanding here is that that token is your actual authorization, so we should avoid storing it to disk (as a real file at least, a temporary file would be okay). But if we can leverage the file provisioner approach for that, we should be fine to do that 🙂

@DCKcode and @AndyTitu, thanks for the feedback I am been thinking it over and want to make sure I am clear on the process and have some thoughts on it.
Potential process flow:

Use the plugin to fill in the --user and --password on the btp login command
BTP cli will login and create/modify its config state json file
The plugin will then read the file back in, store the contents in the cache and remove the config file
When issuing another authenticated btp cli command, use the cached file contents to create a temporary config file and then remove the file after the command is run

Going over the plugin structure I do not see how to make that work but it could simply be my understanding. Also, the config file is more than just for auth/credentials but also a state file with values populated during the login from the server, certain cli commands will also change values in the file. I really like the idea of the file not being persistent on disk, I am not sure it is a great idea.
Thoughts?

Use the plugin to fill in the --user and --password on the btp login command

BTP cli will login and create/modify its config state json file
The plugin will then read the file back in, store the contents in the cache and remove the config file
When issuing another authenticated btp cli command, use the cached file contents to create a temporary config file and then remove the file after the command is run

@derekvincent Thanks for looking into this! I would suggest the following workflow which addresses your concerns (we also used this approach when dealing with AWS MFA temporary credentials):
0. Research time: Identify which fields in the config file are actually used for the auth. Refresh token is more for refreshing the session when needed, there should also exist and auth token of some sort there, and that's what we are mainly interested in.

Also, the config file is more than just for auth/credentials but also a state file with values populated during the login from the server, certain cli commands will also change values in the file

The ideal scenario would be that there exists a SAP supported environment variable that you can specify with that auth token. This would nicely separate the responsibility of authentication from the one of settings, as we could solely focus on provisioning that env var.

use the plugin to fetch username/password from 1Password. Take these credentials and use a SAP SDK for fetching the temporary auth credentials, by providing these username/password credentials.

Provision the required env var/ file with the temporary credentials. If there is no env var we could use, things become more difficult to handle with the in-memory file provisioning method that we are using, as you also noted:

the config file is more than just for auth/credentials but also a state file with values populated during the login from the server, certain cli commands will also change values in the file

so if that is the only alternative, there ought to to be some more discussion around what we are going to do, so please do return here 😄

Store these temporary credentials in cache so we do not retrieve them from remote all the time. We should start retrieving them only after they expire.

Hope this helps a bit!

@AndyTitu, thanks for the response and guidance. I have been having some fun digging into this.
I explored more into what is going on, and the CLI service API that is used is not documented, and we should only be using the btp cli command line tool.  Using the fs_usgae command, I do not see any additional files that the application is creating that may store additional data.  I also used a tool to log the web API service calls the cli was using and have been able to sort out what is going on and replicate the calls with curl commands.
The btp cli is calling a cli-specific login service with the provided authentication credentials, and the only thing returned is the refresh token. The next call will use the refresh token and return a new refresh token in the return header. This new token is then used for the next call, and so on.
I suspect, based on the cli design, the approaches above won't work as the cli returns a new refresh token (not sure it is a refresh token).
Thoughts or suggestions on how to proceed?
Derek

@AndyTitu, thanks for the response and guidance. I have been having some fun digging into this.
I explored more into what is going on, and the CLI service API that is used is not documented, and we should only be using the btp cli command line tool.  Using the fs_usgae command, I do not see any additional files that the application is creating that may store additional data.  I also used a tool to log the web API service calls the cli was using and have been able to sort out what is going on and replicate the calls with curl commands.
The btp cli is calling a cli-specific login service with the provided authentication credentials, and the only thing returned is the refresh token. The next call will use the refresh token and return a new refresh token in the return header. This new token is then used for the next call, and so on.
I suspect, based on the cli design, the approaches above won't work as the cli returns a new refresh token (not sure it is a refresh token).
Derek

@derekvincent thanks for investigating this further and I'm glad you had some fun while at it! Did you double check that the refresh token is used for authentication in this case, by trying to edit your config and removing the refresh token? Then if following commands would keep working without saying you are not authorized, this would be mean that the Auth Token exists somewhere else. Otherwise, if commands that worked when the refresh token was there stop working when the refresh token is not there, we have pinpointed with certainty that the refresh token is the secret we are looking to provision. However, I personally don't believe this to be the case, because usually refresh tokens are used to refresh the session. If the refresh token would act as an authentication credential at the same time, it would mean that with each cli command you are doing, a call to SAP BTP server is made, and this would not be too good for their server load, nor the speed of the command. I also saw there is an Authentication section in the config file.
This is awesome work you are doing! I am just trying to make sure we are following the right lead.

Hi @derekvincent , sorry for the delayed response, but after some internal analysis, we've realised that because the refresh token gets refreshed and written back to the file with each call, the file provisioning approach will not be suitable here. The file we are provisioning is an in-memory FIFO which blocks for all reads and writes. When we write to it, it's okay because we have the control over the file, but when another process (in this case the sap btp cli) writes to it, that cannot be predicted in a deterministic way, so the process will just remain blocked.
The only way around this would be to provision an environment variable using the env var provisioner, but I'm not sure if such an env var exists. Pursuing this, for now, would mean looking into what environment variables are out there for the sap btp cli and maybe trying to find one called REFRESH_TOKEN. If this does not exist, a long shot would be to ask the developer/support team of SAP to expose one. Apologies for the hardships encountered with the plugin for this specific tool.

Hi @derekvincent , sorry for the delayed response, but after some internal analysis, we've realised that because the refresh token gets refreshed and written back to the file with each call, the file provisioning approach will not be suitable here. The file we are provisioning is an in-memory FIFO which blocks for all reads and writes. When we write to it, it's okay because we have the control over the file, but when another process (in this case the sap btp cli) writes to it, that cannot be predicted in a deterministic way, so the process will just remain blocked.
The only way around this would be to provision an environment variable using the env var provisioner, but I'm not sure if such an env var exists. Pursuing this, for now, would mean looking into what environment variables are out there for the sap btp cli and maybe trying to find one called REFRESH_TOKEN. If this does not exist, a long shot would be to ask the developer/support team of SAP to expose one. Apologies for the hardships encountered with the plugin for this specific tool.

@AndyTitu, sorry for the delay; I did some digging and do not see anything around an env variable to support this. I sent an enhancement request to SAP, but because of the size that SAP is, I am unsure when or if this would be addressed.
Also, no concerns about hardship; it is a great learning exercise. That being said, I don't know where to go from here. Do we kill off the PR or allow the sign-in as designed as a help service to use a password manager for logins?
Derek

Hi @derekvincent , sorry for the delayed response, but after some internal analysis, we've realised that because the refresh token gets refreshed and written back to the file with each call, the file provisioning approach will not be suitable here. The file we are provisioning is an in-memory FIFO which blocks for all reads and writes. When we write to it, it's okay because we have the control over the file, but when another process (in this case the sap btp cli) writes to it, that cannot be predicted in a deterministic way, so the process will just remain blocked.
The only way around this would be to provision an environment variable using the env var provisioner, but I'm not sure if such an env var exists. Pursuing this, for now, would mean looking into what environment variables are out there for the sap btp cli and maybe trying to find one called REFRESH_TOKEN. If this does not exist, a long shot would be to ask the developer/support team of SAP to expose one. Apologies for the hardships encountered with the plugin for this specific tool.

@AndyTitu, sorry for the delay; I did some digging and do not see anything around an env variable to support this. I sent an enhancement request to SAP, but because of the size that SAP is, I am unsure when or if this would be addressed.
Also, no concerns about hardship; it is a great learning exercise. That being said, I don't know where to go from here. Do we kill off the PR or allow the sign-in as designed as a help service to use a password manager for logins?
Derek

I have raised the case of this PR internally and we'll come up with a direction asap.

I will be closing this for the time being, as the ecosystem is not yet equipped for provisioning regular files.


Update JWK public key format in protocol

Fixes #107

This requires https://github.com/confidential-containers/attestation-service/pull/119 to be merged first, and the as-types and attestation-service version to be updated.
Also requires https://github.com/confidential-containers/guest-components/pull/177 to be merged first, and kbs_protocol version to be updated.


Mock S3 trigger functions fails to execute

Before opening, please confirm:
I have installed the latest version of the Amplify CLI (see above), and confirmed that the issue still persists.
I have searched for duplicate or closed issues.
I have read the guide for submitting bug reports.
I have done my best to include a minimal, self-contained set of instructions for consistently reproducing the issue.
How did you install the Amplify CLI?
npm install -g @aws-amplify/cli
If applicable, what version of Node.js are you using?
12+
Amplify CLI Version
4.46.1
What operating system are you using?
Mac
Amplify Categories
Not applicable
Amplify Commands
Not applicable
Describe the bug
When using amplify mock storage if a trigger function is attached to S3 to be triggered on file upload and  a file is uploaded, the mock server crashes when it tries to invoke the trigger function.
Expected behavior
The attached function should be triggered locally when a file is uploaded to the storage
Reproduction steps

Setup an amplify project
Add storage with amplify add storage and create/attach a simple trigger function to S3
Start the server with amplify mock storage
Upload a file to the S3 mock storage

The storage mock server will crash
GraphQL schema(s)

# Put schemas below this line

Log output

mock, storage], rss=360427520, heapTotal=300437504, heapUsed=288633992, external=12350793, arrayBuffers=10327490, loadavg=[1.5, 1.85205078125, 1.94482421875], uptime=705328, trace=[column=11, file=internal/validators.js, function=validateString, line=120, method=null, native=false, column=7, file=path.js, function=Object.join, line=1039, method=join, native=false, column=29<EMAIL_ADDRESS>function=Object.loadLambdaConfig, line=27, method=loadLambdaConfig, native=false, column=5, file=internal/process/task_queues.js, function=processTicksAndRejections, line=97, method=null, native=false, column=20<EMAIL_ADDRESS>function=null, line=112, method=null, native=false], stack=[TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received an instance of Object,     at validateString (internal/validators.js:120:11),     at Object.join (path.js:1039:7),     at Object.loadLambdaConfig

Additional information
The bug is related to how the mock storage tries to load the lambda configuration.
L111 src/storage/storage.ts
const config = await loadLambdaConfig(triggerName, context.print);

L21  src/utils/lambda/load-lambda-config.ts
but the function signature is
export const loadLambdaConfig = async (context: $TSContext, resourceName: string, overrideApiToLocal: boolean = false,
): Promise< ProcessedLambdaFunction>

See
https://github.com/aws-amplify/amplify-cli/blob/ebdaa5981004b86e2f84b94d25fc84b25325ee18/packages/amplify-util-mock/src/storage/storage.ts#L111
See src/utils/lambda/load-lambda-config.ts
https://github.com/aws-amplify/amplify-cli/blob/ebdaa5981004b86e2f84b94d25fc84b25325ee18/packages/amplify-util-mock/src/utils/lambda/load-lambda-config.ts#L21

This has been addressed in the latest version of the CLI


TST: increase scipy.optimize test coverage for disp=True

This includes a new decorator in _lib._testutils for silencing output of specific tests, inspired by https://github.com/numpy/numpy/blob/master/numpy/testing/decorators.py and https://github.com/numpy/numpy/blob/maintenance/1.9.x/numpy/lib/tests/test_regression.py#L171, and it reorganizes the optimization tests by adding an object oriented hierarchy inspired by the scipy.sparse test framework, replacing
    def test_minimize(self):
        # Tests for the minimize wrapper.
        self.setUp()
        self.test_bfgs(True)
        self.setUp()
        self.test_bfgs_infinite(True)
        self.setUp()
        self.test_cg(True)
        self.setUp()
        self.test_ncg(True)
        self.setUp()
        self.test_ncg_hess(True)
        self.setUp()
        self.test_ncg_hessp(True)
        self.setUp()
        self.test_neldermead(True)
        self.setUp()
        self.test_powell(True)
        self.setUp()
        self.test_custom()

closes https://github.com/scipy/scipy/issues/4804

os.devnull on windows?

os.devnull should be fine on windows.
On Mon, May 4, 2015 at 12:49 PM, Pauli Virtanen<EMAIL_ADDRESS>wrote:

os.devnull on windows?
—
Reply to this email directly or view it on GitHub
https://github.com/scipy/scipy/pull/4805#issuecomment-98776668.

os.devnull on windows?

numpy uses it...

@dlax Thanks for your comment, I've simplified the decorator. I was afraid that if I didn't make it look like an airport then planes wouldn't land with cargo.

This is tricky to get right. I think stdout.close() doesn't do what you'd expect, see https://github.com/numpy/numpy/commit/3fd6b62c1db915
Also see this context manager for redirecting stdout which may somehow be useful/informative: https://github.com/numpy/numpy/pull/3128

+1 for this idea though. We may want to add this decorator to numpy.testing once it's been proven to be robust (i.e. no complaints for a month or so after this has been merged).

I don't know how to progress further with this PR, but I've opened a numpy issue https://github.com/numpy/numpy/issues/5891.

It's late and I haven't thought about this very hard, but I think your code is actually OK. sys.stdout.close() doesn't work for the original sys.stdout, but you're only doing this on your dummy stdout so should work.

If my comment above makes sense, and this PR works without generating any noise, maybe just merge it. Any issues have about 5 months until the next release to surface.

OK I've merged it!


feat: Make base resource classes accept generic key types

SYNC=metadata-models_102.0.0
Locally tested by running ./docker/dev.sh to bring up Docker containers. Then used ./docker/ingestion/ingestion.sh to ingest some sample data. Did monkey tests on DataHub UI and confirmed no functionality is affected.
Checklist

[X] The PR conforms to DataHub's Contributing Guideline (particularly Commit Message Format)
[ ] Links to related issues (if applicable)
[X] Tests for the changes have been added/updated (if applicable)
[ ] Docs related to the changes have been added/updated (if applicable)

Is this breaking or harmless refactoring?

Is this breaking or harmless refactoring?

Is this breaking or harmless refactoring?

It's breaking in the sense that if any fork of DataHub does have its own entity (with a complex key) other than we provide.

Is this breaking or harmless refactoring?

It's breaking in the sense that if any fork of DataHub does have its own entity (with a complex key) other than we provide.

In that case we should mark it as breaking. The bigger question is that shouldn't the base classes go to datahub-gma instead, @jplaisted?

Is this breaking or harmless refactoring?

It's breaking in the sense that if any fork of DataHub does have its own entity (with a complex key) other than we provide.

In that case we should mark it as breaking. The bigger question is that shouldn't the base classes go to datahub-gma instead, @jplaisted?

Sorry for my ignorance. What's the suggested way of marking PR as breaking?
For the other: @jplaisted knows the best but I guess right now, we're doing 3-way sync. metadata-models is being synced both to linkedin/datahub & linkedin/datahub-gma until datahub-gma is ready for public consumption.

Yeah, we are doing something of a 3 way sync right now. Should we stop syncing datahub? We still need to finish publishing jars in datahub-gma to start using it.

@keremsahin1 shall we move some of these to https://github.com/linkedin/datahub-gma instead?

@keremsahin1 shall we move some of these to https://github.com/linkedin/datahub-gma instead?

That's the plan. From our last discussion, I heard that we will soon start using the jars from datahub-gma. When that happens, I assume the diff regarding base classes will already be part of datahub-gma jars (because it's synced). Therefore, I assume all I need will be to do rebase at that point. Is my understanding correct @jplaisted ?


Add a protocolNetwork field to Rules, Actions, POI Disputes and Allocations

Built on top of #654.
Resolves #650 , resolves #651

This PR refactors changes from #654, most notably the input validation.
Reviewing this PR instead of #654 for the latest refactorings is advised.

Adds a protocolNetworkfield to multiple types across packages:

IndexingRule
POIDispute
Action
Allocation

Updates cover:

database: a new migration:

introduces the new protocolNetwork,
populates it with the value of the configured network identifier column, and
alters primary keys of the IndexingRules and POIDispute tables

Indexer Management GraphQL API has new identifier types to accommodate the composite primary keys.
CLI, which now requires a mandatory --network option for most of its subcommand.

Changes not introduced in this PR:
Although affected components now have a protocolNetwork value, the program has no awareness of network multiplicity. #652 will address this issue.

Closing in favor of #668


accept Y and y when asking for are you sure

Used a regex to check for Y or y
Added a ">" to the prompt for user input

I have looked at the change and its compatible. It should still work. Can you verify @grufocom

Hi DaanSelen,
the 4.0 version has an similar aaproach:
Line 449:

if [ "$up" = "Y" ] || [ "$up" = "y" ]; then

So my commit is not needed to accept y/Y at the prompt. :-)
Regards
Manfred

Would your method be better? I know that in principle that it both works, but I am willing to hear your feedback.

it's a matter of taste, both do the same thing - probably the separation into two statements is easier to understand than the one with the regex. :-)

Anyway thanks for helping! If you have more suggestions or better ways to do it, let us know! Directly through the Discord or through GitHub!


DynamicPayment formula is incorrect

Description of issue
tl;dr:  The default DynamicPayment formula should be offset = ((population / jobs) / workers) - 1 instead of offset = ((population / jobs) - workers) / 10.
The default DynamicPayment formula breaks down at large volumes, and worse is based on the wrong phenomenon.
Its goal is to adjust the equilibrium price per available supply and demand, with each player on the server providing 1 / jobs demand, and each worker in each job providing 1 supply for that job.  The default formula is offset = ((population / jobs) - workers) / 10, with workers being only for the current job, and this formula being run for each individual job on the server.
The problem is that instead of calculating the offset to the equilibrium price based on the ratio between supply and demand as it should be doing, it's calculating the offset by taking the difference between the supply and the demand and dividing it by an arbitrary 10.  While this seems at first glance to work with small population sizes, as soon as you scale up to anything large, the system completely breaks down.  Under the default system, when there is a supply of 1 item and demand for 10, the offset is 90%;  and when there is a supply of 10 items and demand for 100, the offset is 900%.  In each case, the supply:demand ratio is identical, and the resulting offset ought to be as well.  This S/D deficit-based system also produces outright nonsensical values:  if there are 200 players and 50 people in a job, the job earns -333% relative to normal.  That's insane and completely nonsensical.  There's a "fix" for this in the config with the min/max settings, but that's a band-aid solution for a fundamentally broken algorithm.
The goal is to adjust the equilibrium price per the supply and demand, not per the deficit between them.
If, rather than looking at the S/D deficit, we instead look at the ratio between supply and demand, things start to make a lot more sense.  We'll start by thinking about how much prices would intuitively/ideally change if the supply dropped and the demand stayed the same.  We'll have the price be at 100% (a 0% offset) when the demand is 1 and the supply is also 1.  If that supply goes up to 2, we have now doubled the supply without adjusting the demand.  Since there are now twice as many products available as before, the value of those products would assumably go down by half.  So at a demand of 1 and a supply of 2, the price sits at 50% (an offset of -50%).  This makes intuitive sense.  The formula for what we just did, is offset = ((population / jobs) / workers) - 1.  How does this new formula fare with the barrels example from earlier?  As desired, this new formula gets exactly the same offset for both the 1:10::S:D scenario and the 10:100::S:D scenario:  900% (This is actually a correct and reasonable value, as there is only 1/10 the normal supply -- a scenario that would drive prices up considerably.).
This new formula not only matches intuition, but it also avoids arbitrary parameters, like the / 10 of the original formula.  Even better:  this new formula has natural asymptotes at -100% and infinity, which means that the min/max band-aid is no longer necessary (although I suppose there's no harm in leaving it in).  I, too, was taken aback at first when I realized the formula could collapse into a singularity (ie, divide by zero).  However, this is only possible when the supply is 0 (ie, there are no players in that job.).  When the supply is 0, then it means that the product you are trying to buy literally does not exist.  A product that does not exist has an infinite/undefined price, because it cannot be bought.  So, in actuality, the fact that this new formula can divide by zero is a feature, not a bug.
In summary, the current default DynamicPayment formula is fundamentally broken.  It requires arbitary math, it breaks down at large volumes, and it isn't even based on the right phenomenon.
We should adopt the correct formula for what DynamicPayment wants to do, which is adjust labor prices based on the ratios of supply and demand.  The formula I have proposed here does exactly that, and only that.
offset = ((population / jobs) / workers) - 1
Relevant config
DynamicPayment:
    # Do you want to use dynamic payment dependent on how many players already working for jobs?
    # This can help automatically lift up payments for not so popular jobs and lower for most popular ones
    use: false
    equation: ((totalworkers / totaljobs) - jobstotalplayers)/10.0
    MaxPenalty: 25.0
    MaxBonus: 100.0

The above should be the below.
DynamicPayment:
    # Do you want to dynamically adjust pay according to supply and demand?
    # This will increase pay for unpopular jobs and decrease it for popular jobs,
    # in order to balance the two and prevent a single meta from winning out.
    # totalworkers:  The total number of players on the server who have jobs
    # totaljobs:  The number of jobs that are enabled
    # jobstotalplayers:  The number of people in each job
    use: false
    equation: totalworkers / totaljobs / jobstotalplayers - 1
    MaxPenalty: 100
    MaxBonus: 999

Server info
Type:  Spigot
Version:  1.14.1

Well original equation was made just to be there, as you can always change it to your own liking. Its not the best one, but it does adjust payments depending on how many workers you have in particular job. That one is linear, which is not the best one, yours is some what better one as it does change bonus/penalty in more gradual way when its reaching 0% which means that you can have less of fluctuation when you have balanced work force. Which is average worker count for each job.
having too big bonus ir too big penalty is not good ether. Tho your equation cant really get any lower then 90% penalty. So yea, we can change default equation to yours and maybe add comment with old one, in case some one needs it.

c188ec86581e189a43c6e2a7c46473d76192e89c


Adds test for websocket

Ticket
Redmine ticket: https://redmine.openinfosecfoundation.org/issues/2695
Requires suricata PR https://github.com/OISF/suricata/pull/10014 and next
#1550 with keyword websocket.flags (instead of just fin)

Merged in #1777, thanks!


Always use "Following" Tab constantly resets the scroll position to the top.

The "Always use "Following" Tab" option constantly resets the scrolling position to the top in the timeline. Reloading and deleting the cache did not help.

This issue should be closed with https://github.com/typefully/minimal-twitter/commit/4c70df8805ea8057109c40cd174d14fab0e69995


Support task selection and configuration

We have a clear approach to task declaration (#9, #10), but have not yet made decisions around how to configure existing tasks that have been created or declared elsewhere, e.g. by a plugin.
In Groovy, this is done as follows:
mytask {
    // additional configuration goes here
}

Where mytask is a task already registered with the tasks container.
In Kotlin, we want:
tasks.mytask {
     ...
}

Consider aggregating all build/project specific extensions, conventions and tasks under a my namespace:
my.artifactory {
   ...
}

my.taskContributedByPlugin {
   ...
}

We should start thinking about moving tasks off the top level namespace, so that all task definition and configuration is done via the task container (using whatever API/DSL that the containers happen to provide).

Moving this to 1.0 M3, where we'll focus on polishing syntax and making things more declarative as a theme.

I'm not sure I know the best approach for configuring these kinds of objects, especially when retrieving existing Task objects.
At least with Gradle 3.0, this is what I have tried:
Passing Closure by using closureOf call
// Example previously created task
task("myTask")

project.tasks.findByPath("myTask").configure(closureOf<Task> {
  description = "Test configuration"
})

The closureOf results in an error like this:
> Value is null
...
Caused by: java.lang.IllegalArgumentException: Value is null
        at org.gradle.internal.metaobject.BeanDynamicObject.<init>(BeanDynamicObject.java:89)
        at org.gradle.internal.metaobject.BeanDynamicObject.<init>(BeanDynamicObject.java:80)
        at org.gradle.api.internal.DynamicObjectUtil.asDynamicObject(DynamicObjectUtil.java:30)
        at org.gradle.internal.metaobject.ConfigureDelegate.<init>(ConfigureDelegate.java:35)
        at org.gradle.util.ConfigureUtil.configureSelf(ConfigureUtil.java:136)
        at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:519)
        at Build_gradle.<init>(build.gradle.kts:100)

Which looks like it comes down from either a delegate or owner not being set.
Instantiating Closure by using closureOf call and setting delegate
Insantiating KotlinClosure
Creating an instance of KotlinClosure is not too friendly either:
This code leads to an unfortunate configuration:
// Example previously created task
task("myTask")

val myTask = project.tasks.getByName("myTask")

val configureMyTask = KotlinClosure<Task, Unit>({
  description = "My Task Description"
}, owner = project, thisObject = myTask)

Results in:

It is not too bad to create and configure a KotlinClosure, but it does seem that you have to make sure that your return value is correctly typed, liked below I could be missing something with Kotlin, still new to it):
You need to return the V type, which in this case is Unit:
val configureMyTask = KotlinClosure<Task, Any>({
  description = "My Task Description"
  Unit
}, owner = project, thisObject = myTask)

You can then use it to configure the task:
myTask.configure(configureMyTask)

Using apply/with?
// Example previously created task
task("myTask")

val myTask = project.tasks.getByName("myTask")

myTask.apply {
  description = "My Task Description"
}

This seems to work, but I'm not sure if there is any Gradle-Groovy AST magic that is supposed to happen during the Configuration phase. It seems like the nicest of the above options for configuring Tasks, but doesn't help everywhere.
These are just my overall experience when trying to figure this out, hopefully it helps others until this  feature is completed!

Similar problem exists with the artifacts closure.

As of #35, it is now possible to select and configure tasks with the following patterns:
Select single task by name
Use the collection indexer.
task["jar"].dependsOn("someOtherTask")

Configure multiple tasks by name
Invoke the task container (works with any DomainObjectContainer).
tasks {
    "jar" {
         dependsOn("someOtherTask")
    }

    "clean"(Delete::class) { // specify type information so `delete` is available
         delete("someOtherDir")
    }
}

Bring a task into scope for multiple references
Declare a delegated property using the container as a delegate (works with any DomainObjectCollection).
val jar: Jar by tasks
jar.apply {
    from(sourceSets["main"].allSource)
    from(sourceSets["test"].allSource)
}

tasks["build"].dependsOn(jar)


[bug]: SendPayment fails with EOF error after successful payment

I am trying to make a payment using the SendPayment (https://lightning.engineering/api-docs/api/taproot-assets/taproot-asset-channels/send-payment/) gRPC in python where alice pays bob over a direct taproot asset channel (no routing or exchanges to sats). The payment succeeds, but after that I get an EOF error from the gRPC. I'm getting this error when using litd with commit d82cb9d275ad706207eebaa86ad68edb5ef055d3 as well as tag v0.13.993-exp . Note: this is not a problem with my python gRPC because no other calls have this error and LND's SendPaymentV2 (https://lightning.engineering/api-docs/api/lnd/router/send-payment-v2/) works fine.
payment_result {
  payment_hash: "62afeac0474399f2ca8687c2deab04b5b4aeaf7f3514ab9896ec4cb39f18e8fb"
  value: 500
  creation_date:<PHONE_NUMBER>
  payment_preimage: "765dde18d7518b67ebd7f3f2f25ae21bb12ef60bcd3438a62dd909bd07486f50"
  value_sat: 500
  value_msat: 500000
  payment_request: "lnbcrt5u1pn5vywepp5v2h74sz8gwvl9j5xslpda2cykk62atmlx522hxyka3xt88ccarasdqqcqzzsxqyz5vqrzjqwedrfsykk87jmxmy4hf93usnc3ywawqst7uclt3hz602z2965ma0aa8ecy32drt8qqqqqlgqqqqqqgq2qsp5du78r6hcay0ayklukp40d2mjyagmkxchrr40ce4vw3zktrz2ch5q9qxpqysgqx3zhe5jvssletg9a596zw06q5p687lwdzhgnddkjtsucyw8zrzdrz2ptgatj6ds0u6jqya35a4gmu65zq60rwkrzrvpp94w33ajhqycqstx4qd"
  status: SUCCEEDED
  creation_time_ns:<PHONE_NUMBER>576337406
  htlcs {
    status: SUCCEEDED
    route {
      total_time_lock: 14923
      total_amt: 500
      hops {
        chan_id:<PHONE_NUMBER>0222592
        chan_capacity: 100000
        amt_to_forward: 500
        expiry: 14923
        amt_to_forward_msat: 500000
        pub_key: "03295e89e0eb6f166f9d285b4d00409f83c3c266a5e6ceb7e20ad26fb719d65aaa"
        tlv_payload: true
        mpp_record {
          total_amt_msat: 500000
          payment_addr: "o<q\352\370\351\037\322[\374\260j\366\253r\'Q\273\033\027\030\352\374f\254tEe\214J\305\350"
        }
      }
      total_amt_msat: 500000
      first_hop_amount_msat: 354000
      custom_channel_data: "{\"balances\":[{\"asset_id\":\"7fff4ab4747999660099d73f3ecc0c21ee7087fb33b56f803d03803c91ea27a7\",\"amount\":5}],\"rfq_id\":\"797acedae5053c8085c003b6a6f037543d7ea02a29d9faacf79177a066cd2170\"}"
    }
    attempt_time_ns:<PHONE_NUMBER>595293695
    resolve_time_ns:<PHONE_NUMBER>738987028
    preimage: "v]\336\030\327Q\213g\353\327\363\362\362Z\342\033\261.\366\013\31548\246-\331\t\275\007HoP"
    attempt_id: 3
  }
  payment_index: 17
  first_hop_custom_records {
    key: 65536
    value: "\000"
  }
  first_hop_custom_records {
    key: 65538
    value: "yz\316\332\345\005<\200\205\300\003\266\246\3607T=~\240*)\331\372\254\367\221w\240f\315!p"
  }
}

Traceback (most recent call last):
  File "/mini_META/scripts/run_tests", line 15, in <module>
    SendTaprootAssetReceiveTaprootAsset('alice','bob','alice','bob',5,TheAssetID)          # 1 hop
  File "/mini_META/scripts/mini_META_lib.py", line 93, in SendTaprootAssetReceiveTaprootAsset
    for response in ThePaymentResponse:
  File "/usr/local/lib/python3.10/dist-packages/grpc/_channel.py", line 543, in __next__
    return self._next()
  File "/usr/local/lib/python3.10/dist-packages/grpc/_channel.py", line 969, in _next
    raise self
grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
	status = StatusCode.UNKNOWN
	details = "EOF"
	debug_error_string = "UNKNOWN:Error received from peer ipv4:<IP_ADDRESS>:8443 {created_time:"2024-11-26T13:22:17.750675996-05:00", grpc_status:2, grpc_message:"EOF"}"
>

Can you also give us some example code here? It could be the way you're reading the response in Python.
EOF for gRPC generally just means that the other side has hung up.
At a glance, it looks like you're iterating over a generator of the response, but this isn't a streaming call, so there's only ever one response. So perhaps on the second iteration it runs into this EOF issue?

I think I saw the same thing in litd today, so it's probably that we close the stream improperly after we're done (and not a Python specific issue). So you can ignore it in the sense that everything should work normally still. But we should fix it anyway.

Here are some functions used to reproduce the issue, highest level to lowest level

https://github.com/ZZiigguurraatt/mini_META/blob/7a8ca99e8652ee8f83a3529de404f2084cdff755/scripts/run_tests#L14-L16
https://github.com/ZZiigguurraatt/mini_META/blob/7a8ca99e8652ee8f83a3529de404f2084cdff755/scripts/mini_META_lib.py#L91
https://github.com/ZZiigguurraatt/lnd-grpc-client/blob/18f239f200e079dbc5e2f4d955e191490b5b0b38/lndgrpc/tapchannel.py#L28-L32

Looks like we have https://github.com/lightninglabs/taproot-assets/pull/1217 as a possible fix.


Getting pixel coordinates/feature relationships/building an imagemap

This is probably a pretty niche request, but I'd like to build an html imagemap for images created by plotsr so that I can use images created by plotsr as a portal into JBrowse 2 to display more details about rearrangements. Is there a way to get that info out of plotsr? Presumably at some point, plotsr knows this information while it's drawing; I'd like to get that info dumped out.
To get an idea of what I'm thinking about, I can show you this:
https://riccio.d2jjb0xowet5mr.amplifyapp.com/multiple_alignment.html
where there are partial imagemaps for chromosomes II, III, and IV, mostly for inversions. I manually created these imagemaps and then manually figured out the coordinates on each genome to create a url into JBrowse 2 to display the rearrangements. It would be really great if I could programmatically generate the imagemaps and urls!
(Also note for the future: the above url is unlikely to exist forever as it is really more of a testing tool that will end up going somewhere else once I have it all sorted out.)

Sure, I would be happy to help. So, if I understand correctly, you would need mapping between image coordinate and genomic positions of rearrangements? And the image coordinates would need to be with respect to the entire figure and not just the plotted axis?

Yes, exactly. Then I could use a script to generate client side image maps.

Cool. I will try to set it up.


Can't normally parse feed.xml for gitpages(maybe)

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed: https://github.com/GetStream/Winds/issues

Description
[Description of the issue]
Steps to Reproduce

[First Step]
add new RSS feed with https://libingchen.me/feed.xml
[Second Step]
after title properly appeared, hit submit button
[and so on...]
content of feed can't show up, but appears a page says can't parse or no post.

Expected behavior: [What you expect to happen]
all post in that website should be inside feeds
Actual behavior: [What actually happens]
Reproduces how often: [What percentage of the time does it reproduce?]
every time = 100%
Versions
2.0.244 (2.0.244) on Macbook Pro, High Sierra
You can get this information from the menu. Winds > About Winds.
Additional Information
Any additional information, configuration or data that might be necessary to reproduce the issue.
Also, is there something wrong with my blogs' feed xml page?
Thank your guys,
Best regards,
Li

Hi Li,
Thanks for reaching out. I only see 1 post here: https://libingchen.me/feed.xml is that correct?

@tschellenbach  yeah, it's created just for testing~~  there are markdown and gist blocks inside, wondering whether they're supported~

Hey @Thunderlbc, I just tested the URL and it seems to be parsing correctly. Can you try again? If you run into issues, ping me here and we'll reopen the issue. Thank you!


Validation Scenarios based on ES query / mapped fields

Because ES indexing runs before validation scenarios are run, it is possible to have Validation Scenarios that run based on mapped fields from a Job.
One form for this might be an ES query that would result in an ES set that could be matched against DB records.  Seems like the most intuitive route would be any records that are returned from the ES query would be considered valid, all others would be invalid.
However, thinking through this more, Validations need some kind of test name, which might suggest a slightly more complex JSON structure for the Validation payload.  If that's the case, users could include a flag that would determine if matched Records are valid or invalid.  Something akin to:
[
    {
      "test_name":"foo exists",
      "matches":"valid",
      "es_query":{
        "query":{
          "exists":{
            "field":"foo"
          }
        }
      }
    },
    {
      "test_name":"bar does not equal 'baz'",
      "matches":"invalid",
      "es_query":{
        "query":{
          "match":{
            "bar.keyword":"baz"
          }
        }
      }
    }
]

This would also benefit from a location to test / build ES queries:
If this location will support saving / loading ES queries, there are now two different kinds of ES queries that would need differentiation:

queries meant for creating Job subsets
queries for Validation Scenarios

Proposing removing the key matches from validation JSON, as this essentially doubles the logic in Spark.
Instead, assume that matches to queries are valid, and require users to write queries for validation tests that do or do not match.

Scratch that, proposing leaving in.  The difference is only a leftsemi vs leftanti join in Spark, and allows users writing these Validations to have that option at their disposal.  It has the semantic benefit of contextualizing the nature of the query and test message.

Working in esqueryval branch.
Todo:

handle validation when applied to published Job, or will the j# syntax work?
document

Finis!


[pixman] Update to version 0.38.4

Update to latest pixman version

Thanks for the update, @stephenjust!


Updating data of SignalConst

I did some work on updating data of SignalConst, not fully finished yet.
And i need some interface disscusion help.
At first SignalConst need new name.
Data updates more slow O(log2(n)), compare to constant O(1) for Signal, but possible and works unexpectedly fast in my tests.
Updating by data ranges goes more faster.
On source data changes need to trigger updating trees methods and told it that elements changed.
Array type hasn't any way to do it automatically. So need some interface functions to do that.
User need to be able to trigger 2 types of methods UpdateElem(index,value) and UpdateRange(from, to, newData).
Or maybe update source data manualy and trigger DataUpdated(index) and RangeUpdated(from, to).
Posible solutions:

Return by Plot.PlotSignalConst interface that contain that methods
wrap double[] to another type that can notify on data changes like BindableList<> or our own realization of wrapper. And allow user only plot that type of data like
PlotSignalConst(BindableList<> data).

I think best solution is to make all this interfaces( and all the others that you will find), and allow user to select.
If you are interested in tests i can make early pull request it already works with simple interface.

Hi @StendProg, thank you for your hard work on this project! SignalConst() has been a great improvement, and the name is good for now while we continue to develop/test it.
A primary goal for this project is to keep the code as simple and minimal as possible. Although performance improvements are good, I often struggle between wanting to add improvements and not wanting to add more complexity. The simplest solution is probably the best one.
For now, let's add functions which update data (and the trees) as methods of the PlottableSignalConst class. This will help contain experimental code (and complexity) inside the PlottableSignalConst class while we continue to develop and test it.
// this is how to access a plottable object after it's been created
plt.PlotSignalConst(tenMillionPoints);
var sig = plt.GetPlottables()[0];

// data could be updated several different ways
sig.updateData(index, value);
sig.updateData(indexFirst, indexLast, values);

What do you think about something like this?

It’s so uncomfortable to find the desired plot in the GetPlottables for me. I thinking about
IUpdateData updateData = plt.PlotSignalConst() updateData.update(index, value);
With you solution you need provide updateData implementation for all Plottables, but only SignalConst need it at now.

I have some overloads for updateRange, so if it changed to updateData() does look ok at all?
sig.updateData(int index, double value); // signle element
sig.updateData(int from, int to, double[] newValues);
sig.updateData(int from, double[] newValues); //to goes from newValues.Length
sig.updateData(double[] newValues); //update from 0 to newValues
sig.updateData(int from, int to, double[] newValues, int dataFrom) // dataFrom offset in newValues

Updates by range match typical use case and more faster.
But most users prefer
for (int i; i < n ; i++)
  updateData(i, newValue)

because it simple for them and they don't know that this not optimal.
Thats why i thinking about separating names by updateElem and updateRange()
With documentation of benefits updateRange() it teach user to prefer updateRange.
Naming all by updateData makes user to think that its all the same.

Your idea for separate updateElem() and updateRange() makes sense. Your idea is very good - by separating them it becomes difficult to use them incorrectly.
I agree the current "getPlottables()" method is very bad. I've been meaning to update all plot functions to return the object that was just created (#79) so this method can stop being used (I use it elsewhere). Doing this will make it easier to do things like adjust styling (colors, line widths, etc) and positions (for axis lines) of objects after are created by modifying their properties or calling their methods.
This change would allow you to do this:
PlottableSignalConst sig = plt.PlotSignalConst(data);
sig.updateElem(index, value);

Do you think this would work for you? I can implement this change today.

I implement the same but only for PlotSignalConst.

PR #80 implement updateData interface.

I just merged #80 - thanks @StendProg! I'll create a demo now dedicated to demonstrating advanced usage of SignalConst.

I removed all the advanced functions from the "plot types" demo (I'm trying to keep that as minimal as possible).
I created a standalone demo just for testing PlotSignalConst(). It's in the master branch (/demos/src/plottable-const). We can make this one as complex as we want!

Looks good. Plot types project has place only for 1 button. I tried to keep it unchange. May be fill PlottableConst Demo in future works.

Looks good. Plot types project has place only for 1 button. I tried to keep it unchange. May be i will fill PlottableConst Demo in future works.

That's okay! The part I wanted to keep minimal is the code of "plot types" (not just the graphical interface). Every plot type is demonstrated in examples that are about 10 lines or less in size: /demos/src/plot-types/Form1.cs
The methods you created to update PlotSignalConst data were pretty complicated (in comparison) so I moved them into /demos/src/plottable-const/Form1.cs and you can continue to develop code in that application to demonstrate as much advanced functionality as you'd like.
Thank you again for your contributions @StendProg!


Spring cleaning

I noticed we'd accumulated some cruft over time. To solve this, I found unused functions using coverage, and unused top-level variables using a simple ast script. This PR removes all these.

Delete unused functions and top-level variables
Move some bytes-specific utility functions to dask.bytes.utils (last commit only, happy to revert)

Changes are split into separate many commits, so deleted/moved things that are used in external packages or that shouldn't be moved can be reverted.

Move some bytes-specific utility functions to dask.bytes.utils (last commit only, happy to revert)

Looks like dask.utils.infer_storage_options is used in distributed.hdfs. Could add a patch there to move the import, or just revert this change. No strong opinions.

Failures are due to  ichart.yahoo.com being down, resulting in an unrelated test failure.

I hope to merge this later today. Ping @martindurant for thoughts on the move of some utils functions to dask.bytes.utils (last commit only). Afaict the only change that's needed is a patch to distributed to move the import of infer_storage_options. I like the move, as these are bytes related functions, but it's also not super important to move them.

You wouldn't want users to absolutely require to keep their distributed and dask versions in sync, even though that should be common practice; should a reference to infer_storage_options be kept (not the code itself) to make sure we don't break anything? I am totally happy with the move itself.

That's a fair point. Will add.

Hmmm, that didn't work due to circular imports (tried a few simple things to fix them with no luck). I've moved the definition back, and imported it in dask.bytes.utils. All internal references are for dask.bytes.utils. Once distributed bumps the required dask version > this commit we can move the definition over.

Sorry :|  A note should be made, then, to change this sometime later - perhaps next spring!

There are comments in the code both at the import in dask.bytes.utils and at the definition. I think that's good enough.


set subtitle min-height

This PR adds a min-height to the subtitle so that even if it's empty, space is reserved and graphs keep the same height.
Before

After

Awesome, thanks @tatchi !


Dropdown menu bug (Things 3)

In Things 3 (free trial available at their website) a particular dropdown menu doesn't work with Yabai (SIP enabled) and the problem may appear elsewhere.
To reproduce this error, go to File > New Repeating To Do. An overlaid window appears:

The two dropdown menus (currently 'after completion' and 'week') hide a fraction of a second after I click on them and I can't interact with them using the keyboard either.

I've run into similar issues in other applications, including the Hot Corners popup within macOS System Preferences > Desktop & Screen Saver > Hot Corners:

Seems like this is an issue when window_topmost setting is enabled, yeah?

For me this bug was omnipresent in Big Sur. After reading this and disabling window_topmost dropdowns are behaving normally again.

This can be resolved with rules already, it's just a matter of configuration. Yabai should not hardcode exceptions for individual applications, that's what rules and signals are for after all. Closing this.

I don't understand this decision. It was demonstrated above that one particular setting of window_topmost breaks a part of the Mac OS System Preferences app – hardly a generic individual application. (Incidentally the issue also affects Things 3, and if it were contained to that app, I'd agree with your assessment.)
I understand rules as expressions of personal taste, not hacks necessary to restore basic system functionality. Clearly no one likes the behaviour in question, so it ought to qualify as an edge case which is currently improperly handled by window_topmost on.

Similar issue, with Xcode internal dialog are pushed back window_topmost on/off same issue

How does one properly "resolve this with rules"? Also, this definitely isn't an individual application thing. I get the same issue with the options search functions in Preferences and in iTerm2's settings menu, alongside scroll-lists; I suspect Yabai is currently breaking intended MacOS UI functionality (scroll-lists and options search pop-up elements should be on top). d-miketa is right, this is an unhandled edge case.


Proposal: support external name service

I have seen some voices in the community, hoping that APISIX Ingress can proxy external services e.g: #813 #645
For these two types of requirements, it is a relatively simple requirement for #645, we only need to add the corresponding External name type service to complete.
But for #645 , I found a very interesting situation. No other Ingress controller implements similar functionality yet, and I think this would be a huge feature.
APISIX actually supports setting the domain name to nodes in the upstream. But APISIX Ingress is not yet supported.
To achieve the above function, we can set a special resolveGranularity to directly convert the record of the external name to Node.

+1, multi external url support with active health check and upstream node pass is the major block before we rollout Apisix ingress controller in all of our kubernetes clusters.
It’s quite common for an organisation to expose services internally or externally in hybrid environment without the boundaries of kubernetes cluster concept, you can easily have your apps running in serverless platform, kubernetes cluster in cloud and in bare metal server on your on-premise data center.
GCP is also actively developing managed istio control plane called traffic director, it can be deployed anywhere and utilise envoy or any xDS v3 compatible data plane to satisfy the requirement we have.
Ambassador also has a native CRD resoruce mapping to define your service with external url directly https://www.getambassador.io/docs/edge-stack/latest/topics/using/intro-mappings/#introduction-to-the-mapping-resource, the missing part if active health check no sure if it’s supported or not .https://github.com/emissary-ingress/emissary/issues/3761
Gloo Edge also supports native CRD to configure multi url with active health check and upstream node name passing feature we needed, example config could be found here https://gist.github.com/elvis-cai/d6978b1113edb10359da1358146f61aa.

I think the feature is useful,
If we can configure external name type service in ApisixUpstream resource as a node of upstream object in APISIX，we can use health check feature between external services.

In order for us to reach an agreement as soon as possible, I will give a more detailed design ASAP.

we use scenes is multi k8s cluster，A and B service not in diff k8s cluster，A mirrors-flow to B now not support.

we use scenes is multi k8s cluster，A and B service not in diff k8s cluster，A mirrors-flow to B now not support.

Could you describe you problem accurately? What is "not in diff k8s cluster"? You want to mirror traffic for service A to service B?

in different k8s cluster, A cluster、B cluster，A cluster a1 service call B cluster a2 service

OK, I see, ExternalName is useful for this scenario.

Hi, this is my proposal. Feel free to comment/review.
Background
The users' environment may be not a simple single K8s cluster, but may be multiple K8s clusters, a mix of K8s clusters and bare metal machines, or rely on third-party services. The current ApisixRoute does not support such complex environments.
It would be a useful feature if ApisixRoute supports using ExternalName Service or domain name as a backend directly.
Solution
APISIX does support setting domain names or IP addresses as upstream nodes. We can extend our CRD to support this scenario.
For external service, both the ExternalName service inside the K8s cluster and the third-party service outside the cluster will only have one node configured in the translated upstream nodes field, unlike the K8s service which may have several nodes.
This allows multiple external services to be merged into a single upstream and gain healthCheck capabilities.
Design
We add a field named upstream to ApisixRoute, which has the same level as "backends". The user must fill in at least one of upstream or backends.
The field upstream will refer to an ApisixUpstream CRD, where the external services are defined in the newly added field externalNode, indicating that the upstream node is pre-defined and does not need to resolve.
An externalNode must have a name field pointing to the final node location, which can be a service name pointing to a k8s external name service, an IP address or a domain name. If it points to a k8s external name service, the type field should be service, or it should be the default value of direct. The node can also be configured with an optional load balancing weight, which defaults to 1.
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
  name: external-example
spec:
  http:
  - name: example
    match:
      hosts:
      - external.example.com
      paths:
      - "/*"
    upstreams:
    - name: external-example # Refers to ApisixUpstream
      weight: 50
---
apiVersion: apisix.apache.org/v2
kind: ApisixUpstream
metadata:
  name: external-example
spec:
  externalNodes: # Indicates that this upstream doesn't need to resolve nodes
  - name: "httpbin.org"
    # could be "domain", "serivce"
    # if the value is `service`, the name must refers to a K8s ExternalName service
    type: domain
    weight: 1 # default value is 1
  healthCheck: # same as normal ApisixUpstream
    # ....

Using upstream and backends together
Users can use both upstream and backend. A route-level traffic-split plugin will be generated normally.
Please note that since APISIX does not support health checks between multiple upstreams, we will only support health checks within the upstream.nodes.
This means that the healthCheck section defined in ApisixUpstream is at the upstream level and its effect is limited to that upstream only, not at the Route level.

SGTM
This method can ensure good compatibility and rich functions

#1500

#1527

I think we can close this one . Thanks all.

[ ] #1306
[ ]  #1500
[ ] #1527

Is externalNodes currently compatible with IP address with port?
like:
apiVersion: apisix.apache.org/v2
kind: ApisixUpstream
metadata:
  name: test-upstream
spec:
  externalNodes:
  - type: Domain
    name: <IP_ADDRESS>:5601

@kindomLee no, you can file a new feature request issue.


Switch VerifyBamId to v1 Position objects.

The VerifyBamId pipeline requires a deterministic coder due to the CoGroupByKey, hence the change to  Proto2Coder which is deterministic and supports the v1 proto3 objects.
Note that this pipeline no longer requires GenericJsonCoder, but it does need Proto2Coder and SerializableCoder, so I just added more fallback logic to GenericJsonCoder so that we can just use it for all pipelines for the near term to keep the coder stuff simple.

LGTM Thanks!


Improved callback examples

Looking at this before I had no idea how callbacks were meant to work, but this example makes it a biiiit clearer.
Still, could do with some tutorial content here, but this is better (and still compatible).

Personally (sorry this was on my list but I have been travelling and slow to review!) I think since the incoming-request-after-previous-API-call pattern is called "callback", it is nice to use the same word throughout the spec. The additional example is useful too, so IMO this change is a net gain.


Fix GdScript Analyzier not detecting Resource subclass correctly

When using the @export annotation and optional typing, Godot detects builtin types correctly, but any Resource subclass was allowing any kind of resource to be assigned to the property:

With this patch, the inspector will realize the Resource subclass properly:

Typo Analyzier -> Analyzer.
The problem is References converts to Resources :(.

References should not be a valid export annotation


Feature Request: Configurable tick interval

There are two places where enable_steady_tick is called with a hard coded 100ms value.
Personal preference: I like 1 second re-draws for these types of things...
It would be nice to have a way to configure it:

Change the value, with default 100ms if not changed.
Ability to disable the tick (ie. it only draws when we call another method that draws like set position, inc, etc.)

I would like to add: this library is really great!

Know this was requested over a year ago, but better late than never I suppose. :D
This functionality is available as of v0.3.8.


Add core dask config file

[ ] Tests added / passed
[ ] Passes flake8 dask

cc @jcrist

See also https://github.com/dask/distributed/pull/2654

Seems fine to me. Fixes #4609.

Thanks @jcrist !
On Mon, May 6, 2019 at 12:54 PM Jim Crist<EMAIL_ADDRESS>wrote:

Merged #4774 https://github.com/dask/dask/pull/4774 into master.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/dask/dask/pull/4774#event-2321710280, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AACKZTCLL7TJO3EKSP7LWDDPUBWHDANCNFSM4HKZC6SA
.


fix: rename Slot to Amplify.Slot

Description of changes:

Renaming Slot to Amplify.Slot to follow the latest naming convention

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report

Merging #496 (5e4ced3) into tagged-release/forms-and-views (56b9731) will not change coverage.
The diff coverage is 100.00%.

@@                       Coverage Diff                       @@
##           tagged-release/forms-and-views     #496   +/-   ##
===============================================================
  Coverage                           88.65%   88.65%
===============================================================
  Files                                  66       66
  Lines                                2301     2301
  Branches                              608      608
===============================================================
  Hits                                 2040     2040
  Misses                                257      257
  Partials                                4        4

Impacted Files
Coverage Δ

packages/codegen-ui/lib/types/bindings.ts
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 56b9731...5e4ced3. Read the comment docs.


Update README.md

New entries:

#uxn on Merveilles
Uxntal opcode manual
Uxncli
Calc
Oscean
Collapse OS
Conch
Uxn-ng

Sections:

Removed the In development section from the Emulators section because everything's in development if you think about it (also I don't think Awesome lists should categorize projects like that but correct me if I'm wrong).
Added the Utilities section with the "non-creative" tools.
Moved the Network section from Development tools to Applications.
Added the Operating Systems and Demos sections.
Moved the Community section to the bottom.
Divided the Emulators section into Desktop and Other systems (non-desktop). Projects in Other systems don't have descriptions because they would be mostly the same anyway.

Added descriptions for all projects and unified the formatting.
Changed some project names to their original names (when available, except for Other systems, see above).
Every project name is now capitalized for consistency's sake.
Added the Awesome badge because we have to stay cool.
Added the webchat.esper.net link.
Got rid of the languages for projects in Assemblers & compilers because the language shouldn't really matter in my opinion.

Great PR.

Webuxn - Lightweight port of the Uxn virtual machine to the web via WebAssembly.

It's worth noting that last time I checked, webuxn was very out of date. Last commit is from Jul 2 as of now.

@makeworld-the-better-one you're right, not sure what we should do about it tho. maybe move learn-uxn in the Emulators section?

learn-uxn is an emulator, but it's not really standalone, like afaik you can't use it to deploy an application and hide source code. You could still put it there though.
As for webuxn, personally I'd suggest just adding a note to the entry, saying that it's out of date.


environment.yml takes too long to solve

I'm trying to make a conda environment from the environment.yml file, but the dependencies seem too complicated for conda to solve. I left the command running for ~24 hours and it still had not solved the environment. But let me know if this hasn't been a problem on other machines...
Are all of the dependencies in the file used for the tutorials? We could try to trim it down as much as possible.

Hi Sam, thank you for leaving this comment! Our content has actually been merged with the Neuromatch organization GitHub: https://github.com/neuromatch/climate-course-content
The fork you work on materials from should be from there (our curriculum chair has contacted all day leads today to make sure this is the cases it may have been glossed over in the many instructions).
In the environment file on the other repository you should be able to uncomment the python=3.9 line, and if you use mamba instead of conda it tends to be faster: mamba env create -f environment.yml
you may run into issues with cis and ecco_v4_py packages depending on what computer you are using. I do not believe those are used in W2D1 at all so you should be fine to comment those out. If you have any other issues please don't hesitate to open an issue over on the other GitHub repo.

Thanks Jenna! I'll try this out


pkg/bootstrap: check if there's enough space in storage volume

Before enlarging storage volume, we should first check if the additional volume size would make the whole storage volume full. If that might be the case, we should not enlarge the volume, and print warning to users.
Possibly resolves https://github.com/kinvolk/kube-spawn/issues/85

Rebased and added more comments. Tested again, it works.

I tried this with the following command...
sudo GOPATH=$GOPATH CNI_PATH=$GOPATH/bin ./kube-spawn setup --image=coreos --nodes=20
...knowing it would be too much for my VM.
2017/08/03 16:31:55 cannot get pool size: no more free space in /var/lib/. Please get more space!
2017/08/03 16:31:55 Error running node: unable to create overlayfs on "/home/chris/go/src/github.com/kinvolk/kube-spawn/.kube-spawn": overlayfs is not available. Try to pass a directory with a different filesystem (like ext4 or XFS) to --kube-spawn-dir.

The first error valid but the second is not The partition is ext4.

@blixtra I think this issue is just the same as https://github.com/kinvolk/kube-spawn/pull/100.
It probably means that the kernel module "overlay" is not loaded.
So I've rebased this PR on top of master. Now it should be fine.

And I've just found out another bug in this PR, about calculation of pool size. Pushed a fix.

I don't agree with the behaviour of this issue. Currently the check seems to just be a suggestion, the nodes are still created. I think it would be a much better user experience to do the calculation, and if we know that there is not enough space do nothing accept, report that too many nodes have been requested and print how many would be possible.
As a user, I'd rather not have to manually remove all the nodes.

@blixtra Fixed it by doing cleanup images + hard exit in the case. Now users won't have to clean them up.

@dongsupark but why even create them if we know it will be too much? For example, I assume that the .kube-spawn file is still populated from this call. Ideally that should also remain untouched if we know we can't provide a cluster of the size requested.

@blixtra I'm sure that each machine-specific directory .kube-spawn/default/kube-spawn-* will not be created with this PR included. If the unnecessary machine-specific directories are still there, that's probably just leftover from previous versions of kube-spawn.
In the long run, kube-spawn destroy command will be able to clean up any machine-specific .kube-spawn/default/kube-spawn-* directories, as well as all other files like CNI configs: TODO
On the other hand, I agree that ideally this part should be implemented somehow differently, like getting the number of to-be-created-nodes before running bootstrap.NewNode(). Doing that, we would not have to clean up images afterwards. However, currently bootstrap.NewNode() relies on only the result of machinectl clone, and machinectl clone has no --dry-run option that just tells whether the machine can be cloned or not, instead of actually cloning the machine. So at the moment running actually machinectl clone is the only way to say that the machine is to be included in []nodesToRun. Right now I just don't have a better idea.

Per offline discussions, changed it to a rough estimation before getting list of the nodes. If it fails at bootstrap.GetPoolSize(), just fail hard with a friendly error message, without running any node.


Links in notes sections are broken

[Enter feedback here]
Both links in notes sections are broken:
https://docs.microsoft.com/en-us/admin/service-premium-per-user-faq.yml
https://docs.microsoft.com/en-us/admin/service-premium-what-is.md#power-bi-premium-generation-2-preview

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

ID: 1f6e1bb7-fbc5-d0a6-5285-e4a9152902bb
Version Independent ID: ece0823b-c4c5-3acb-41bb-55e5390c0b6c
Content: Power BI service features by license type - Power BI
Content Source: powerbi-docs/fundamentals/service-features-license-type.md
Service: powerbi
Sub-service: pbi-fundamentals
GitHub Login: @kfollis
Microsoft Alias: mihart

@JTUoB - thank you so much for flagging that for us. The links have been corrected and the fix will be live this afternoon. In the meantime, you can find our content about Premium Gen2 at this location: https://docs.microsoft.com/en-us/power-bi/admin/service-premium-gen2-what-is. Thanks again for the contribution!


[PE-749] Support file attachments in the get_secret_field method

Support file attachments in the get_secret_field method
Remove the single quotes that were returned by the get_secret_field method
Replace the deprecated set-output command

@ddmisd Could you please update README to Illustrate your new update to the get secret method?


Broken link in readme

The link on your readme about syntax highlighting ( http://rouge.jayferd.us/demo ) seems to be broken. It points to a domain renewal page.
I'm not sure where it should go, otherwise I'd fix it myself.
Thanks.

Fixed in dev, thanks!


When running on iOS, an ERROR which isn't an error is printed

When I flutter run, I see a this line:
[ERROR:flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.mm(42)] Using the Impeller rendering backend.

This log comes from here.
Since Impeller is default, I don't think this message should be printed, even more so with ERROR. It's quite frightening.
Full sample
$ flutter run
Launching lib/main.dart on iPhone 14 in debug mode...
Running Xcode build...
 └─Compiling, linking and signing...                         4.2s
Xcode build done.                                           11.3s
[ERROR:flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.mm(42)] Using the Impeller rendering backend.
Syncing files to device iPhone 14...                                33ms

Flutter run key commands.
r Hot reload. 🔥🔥🔥
R Hot restart.
(omitted)

Reproduction
flutter doctor -v
$ flutter doctor -v
[✓] Flutter (Channel master, 3.16.0-23.0.pre.34, on macOS 14.1 23B74 darwin-arm64, locale en-PL)
    • Flutter version 3.16.0-23.0.pre.34 on channel master at /Users/bartek/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision daad94554b (7 hours ago), 2023-11-03 04:40:25 -0400
    • Engine revision fc7c3f70c0
    • Dart version 3.3.0 (build 3.3.0-91.0.dev)
    • DevTools version 2.29.0

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/bartek/androidsdk
    • Platform android-34, build-tools 33.0.2
    • ANDROID_HOME = /Users/bartek/androidsdk
    • Java binary at: /Users/bartek/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 15A507
    • CocoaPods version 1.14.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.3)
    • Android Studio at /Users/bartek/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b829.9-10027231)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.4)
    • IntelliJ at /Users/bartek/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 76.1.4
    • Dart plugin version 232.10072.19

[✓] VS Code (version 1.84.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.76.0

[✓] Connected device (3 available)
    • iPhone 14 (mobile) • F886368E-CF29-4ECA-BF92-CF474F60C818 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-17-0 (simulator)
    • macOS (desktop)    • macos                                • darwin-arm64   • macOS 14.1 23B74 darwin-arm64
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 119.0.6045.105

[✓] Network resources
    • All expected network resources are available.

• No issues found!

@bartekpacia
See this for your reference. Based on it, closing this as not an issue.


Security warning:  This file is potentially unsafe.  Are you sure you want to open it?

Storage Explorer Version: 1.4.2
Platform/OS Version:  Windows
Architecture: ia32
Build Number: 20180917.1
Regression From: N/A
Steps to Reproduce:
Message is displayed when a file is downloaded from Storage Explorer to a desktop/laptop PC running Windows 10.
Expected Experience:
Storage Explorer configuration setting (in Settings) to turn this message ON or OFF for all file types or perhaps selected file types.
Actual Experience:
Message requires an "Yes" or "No" response requiring an extra click to down-load file.

Every single time I get that dialog I come back here to see if there's been any progress...

Duplicate of #164.


Only remove No TP when we detect teleport

This detects whether the player teleported using the TP "shadow" effects, and only discards No TP in that case.
This detection takes advantage of several details:

We can use next_entity_uid to examine only new entities
TP shadows are created in pairs: first the "source" shadow, then the "destination" shadow
TP shadows have an idle_counter, like any Movable, which is 0 on the frame of teleporting
Combined with the above, we can use the player's velocity to extrapolate their position

There are some complications

The shadow is always grid-aligned. However, the light is at the player's position
... except if the player is on a mount. Then the mount's location is used
on active floors like Neo-Bab elevators, position and velocity are relative to the floor

False positives require something to TP into the player's predicted hitbox. I've never seen one without a telefrag.  We can get false negatives if

There's a large acceleration/deceleration
The player TPs into a wall
The player TP very close to CO borders (< 0.5 tiles)

Practically, the main way to get large deceleration is TPing just above a floor, or grabbing an edge. However, that needs to happen within the ~6 frames between polls and early in the poll cycle. If it's within a couple frames of the poll, they don't move far enough. We could mitigate this by polling more often, or increasing Y-axis tolerance; the max delta I've seen is 1 tile. OTOH, I can't imagine missing every TP in a real TP run.
The only large X-axis acceleration change I've thought of is being thrown/exploded. Those are uncommon and stun the player (i.e. they can't manually TP). I've done some testing with telepack and standing on a bomb. The detection usually works in that case.
For some context on the current tolerance tuninig... Max velocity is ~0.4 . Here's a friendly local crocman positioned 0.5 tiles above and 0.5 tiles to the right of the player.

have you tried lowering the poll to something like 16.6ms to see what the overhead is? I actually think i intended to lower it at some point in the past but due to being dumb i only updated the poll the ui thread does on the queue 💀

Polls are usually <1ms most everywhere, but they can take up to 2ms in Tiamat's Lair. That's the pathological case for this change because each forcefield tile is an entity, and tons of them spawn at once. I've spent some time profiling this change and still don't have a feel for whether what's happening... it's also just hard to tell, because my CPU stays in such a low power state.
I changed the polling time from 100ms to 50ms (3-4 simulation frames). That's small enough that I can't produce false negatives due to acceleration, and is a smaller performance risk. Even if we were purely CPU bound (and I don't think we are), we'd be around 4% usage in worst case.


[Feature] Manually clean up LoadLabel

Search before asking

[X] I had searched in the issues and found no similar issues.

Description
LOAD LABEL tasks are all pulled in batches, the name cannot be repeated, and the second pull will not work. Is it possible to clean up this pull task record, or to reuse a label
Use case
No response
Related issues
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Can you describe the situation in which the repeated label is needed.


[QUESTION] How to fix the "an empty namespace may not be set during creation" error

Please describe your quesiton here
Hi,
I saw the same error as mentioned in:
https://github.com/awslabs/crossplane-on-eks/blob/main/doc/debugging.md#composition
I noticed the document mentioned For this particular issue, we need to specify the namespace for the IRSA resource.
Could you please elaborate how can we specify the namespace in a Composite and how did you fix this?
Should this be done through a patch/parameter, something like:
Fix 1:
    - type: FromCompositeFieldPath
      fromFieldPath: spec.parameters.managedResourceNamespace
      toFieldPath: metadata.namespace

Or did you fix it by
Fix 2: Adding metadata.namespace in the base of Composition directly.
I tried both and it seems none of them worked for me.
Fix 1 is giving me a new error:
  Warning  ComposeResources         20s (x6 over 77s)  defined/compositeresourcedefinition.apiextensions.crossplane.io  cannot compose resources: cannot associate composed resources with Composition resource templates: cannot get composed resource: an empty namespace may not be set when a resource name is provided

Fix 2 is not making any difference as I suspect the namespace specified in base is discarded by crossplane controller.
Provide link to the example related to the quesiton
Additional context
More

[x] Yes, I have checked the repo for existing issues before raising this question

It's complaining about creating a namespaced resource without specifying a namespace. So you should be able to specify it via patch like this:
type: FromCompositeFieldPath
fromFieldPath: metadata.labels[crossplane.io/claim-namespace]
toFieldPath: metadata.namespace

See:
https://github.com/awslabs/crossplane-on-eks/blob/d8ff2a8e9f19d7d09a46e7c02182056abbbacc1c/compositions/aws-provider/irsa/irsa-role-only.yaml#L63
When you create a composite resource claim, the corresponding composite resource is created with few labels that contain some information about the claim. crossplane.io/claim-namespace is one of them.
You typically run into this kind of issue when you are creating claims in compositions, which you should avoid if you can.

If you have more questions regarding this, please feel free to reopen.

Thanks @nabuskey for sharing the solution!


[DUOS-877][risk=no] Remove unused dev dependencies

Addresses
https://broadinstitute.atlassian.net/browse/DUOS-877
Changes
Removed only the unused dev dependencies. Others will be addressed in other stories

Have you read Terra's Contributing Guide lately? If not, do that first.
I, the developer opening this PR, do solemnly pinky swear that:

[ ] PR is labeled with a Jira ticket number and includes a link to the ticket
[ ] PR is labeled with a security risk modifier [no, low, medium, high]
[ ] PR describes scope of changes

In all cases:

[ ] Get a minimum of one thumbs worth of review, preferably 2 if enough team members are available
[ ] Get PO sign-off for all non-trivial UI or workflow changes
[ ] Verify all tests go green
[ ] Squash and merge; you can delete your branch after this
[ ] Test this change deployed correctly and works on dev environment after deployment

Just curious, the package.json file has a comment on how handlebars and js-yaml are "security related updates for indirect dependencies". What was that about?

@JVThomas

Just curious, the package.json file has a comment on how handlebars and js-yaml are "security related updates for indirect dependencies". What was that about?

Great question ... and I missed that. I added that back in https://github.com/DataBiosphere/duos-ui/pull/168 and I am hoping they do not trigger a new security check. At the time, I think we were using source clear for these checks, but now we're pretty reliant on either dependabot or github.

Also, we run npm audit on every PR - now that we know it's passing, there is no longer a security issue with these libraries.


kubeadm: add the "config validate" command

Include the command in kubeadm-config.md.
The generated file is a placeholder and will be updated before 1.28 releases.
PR is targeting the 1.28 branch.
xref https://github.com/kubernetes/kubeadm/issues/2871

/hold
for https://github.com/kubernetes/kubernetes/pull/118013

/assign @tengqm
PTAL for approval

/sig cluster-lifecycle

I'm assuming this is a work in progress.
/retitle [WIP] kubeadm: add the "config validate" command

should be fine for a WIP targeting next release.

/hold cancel
@tengqm @sftim k/k pr merged
https://github.com/kubernetes/kubeadm/issues/2871
how to proceed here?

/approve
I'm fine having a "placeholder" so that we won't forget to add a link to it when 1.28 is out.
The generated file will be overridden, which is fine.


feat(exposition): add workflows to octets:delete

Codecov Report
Attention: 163 lines in your changes are missing coverage. Please review.

Comparison is base (a52670a) 56.13% compared to head (d5527d7) 55.19%.
Report is 43 commits behind head on dev.

Files
Patch %
Lines

...ns/exposition/source/directives/octets/Workflow.ts
0.00%
107 Missing :warning:

...ions/exposition/source/directives/octets/Delete.ts
0.00%
45 Missing :warning:

...sions/exposition/source/directives/octets/Store.ts
0.00%
9 Missing :warning:

...ons/exposition/source/directives/octets/schemas.ts
0.00%
2 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #513      +/-   ##
==========================================
- Coverage   56.13%   55.19%   -0.94%
==========================================
  Files         318      328      +10
  Lines       10405    10734     +329
  Branches     1260     1275      +15
==========================================
+ Hits         5841     5925      +84
- Misses       4564     4809     +245

Flag
Coverage Δ

unit
55.19% <0.00%> (-0.94%)
:arrow_down:

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[Request-for-External] Table 5900 Service Header - Function UpdateCurrencyFactor

Dear ALAppExtensions Team,
We would like to request the following change
local procedure UpdateCurrencyFactor()
local procedure ConfirmCurrencyFactorUpdate()

//--> change request remove local
procedure UpdateCurrencyFactor()
procedure ConfirmCurrencyFactorUpdate()
//<-- change request remove local

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


code-splitting: add new webpack 2.4.0 features

IMO those are the only changes requiring an documentation update: https://github.com/webpack/webpack/releases/tag/v2.4.0
For the badge I opened #1122.


Fix: pass release flag back to thread manager

[x] tests and linter show no problems (npm t)
[x] code is properly formatted (npm run fmt)

Landed in https://github.com/metarhia/impress/commit/e2e51999bc867bbcf1834d8037d6673dc569b50f


blueman: 2.3.4 -> 2.3.5

Changelog: https://github.com/blueman-project/blueman/releases/tag/2.3.5
Diff: https://github.com/blueman-project/blueman/compare/None...2.3.5
Description of changes
Update to 2.3.5 and link to the changelog through the meta.changelog attribute.

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

1 package built:

blueman


How to find hashes for specific platform?

What would the command be to run scraper through a specific platform, in my case SNES, and have it create a list of all known hashes and then save them to a file.  Similar to what we are doing with the flag:  -missing SNES.csv
Anything similar to identify known hashes?
Example used for -missing:
/opt/retropie/supplementary/scraper/scraper -thumb_only -missing file.csv -workers 4
Why do I ask?
I have found a few SNES No-Intro Roms where the TGBD reference is incorrect.
 I tried not to create false positive but It is possible. There isn't a scraper command, but you can download the master csv and filter it. And send updates against it.
For snes on linux it would be something like this to get all the known hashes for snes. In the early days I didn't fill in the platform for roms that didn't have a match but I do my best to sort this all out when hashes are submitted so it might not be 100%.
wget https://storage.googleapis.com/stevenselph.appspot.com/hash.csv.gz
zgrep ,6, hash.csv.gz

But in general download/extract it then search for third column being 6(for snes)

That worked!  I added the two missing hashes here:
https://drive.google.com/open?id=1bAlg3rX94vdgqWdY3XPh3dMZMQ2sL8ZlADZnb903ono

Using your .csv I also found 3 other roms for NFL Quarterback Club which should also point to TGBD ID 5707 instead of 5706.  It's all in the .csv I just posted.

Are you okay if I post that link to the Wiki?

the link to the hash.csv? Sure it is in the code.

Done and done, let's close this thread.


Update env.example

Summary
As I understand, release 7.8 has Extended Support and should be the default for a docker environment.
Ticket Link

Fixed with https://github.com/mattermost/docker/commit/e31e65ffea2e7b4d0e4cbe0cf5d3daa62c8e362e


233 retrieve pagesectorflash size from cfi

Retrieve information about flash achitecture using CFI
create static variables for storage
use getter methods to access these values

Unit tests expect methods to be passed a flashConfiguration_t. After further discussion these might have to be changed.


Unable to catch the error and watch stops while using jslint

I have tried to catch the error thrown from gulp-byo-jslint, but not working. I used .on("error", ..,) , plumber() etc. None of the solution work.
The watch is getting broken once there is error. I want to avoid it. How to do that ?

Sounds like I've made an incorrect assumption about how the event-stream library handles exceptions.
This is a bug. I'll look into it soon.

OK, not a bug per-se, but I'll leave the label. This plugin deliberately logs instead of throwing exceptions so that all violations are enumerated to the console in a typical command line scenario. It then throws a single exception at the very end to fail the gulp task. But this is within an event handler were it wont be wrapped in an error event.
I think the best course of action would be to make the plugin's error handling configurable:

All
Throw each warning instead of logging
One (default)
Log each warning, throw at the end
None
Log each warning, never throw

I'm guessing the last option would suit gulp watch scenarios best.

The actual solution ended up much simpler. Set the new noFail flag when using with gulp watch. See the readme for an example.

Thanks. That helped.
Exactly what I wanted.
On Sun, Mar 13, 2016 at 7:24 AM, Ben Quarmby<EMAIL_ADDRESS>wrote:

The actual solution ended up much simpler. Set the new noFail flag when
using with gulp watch. See the readme for an example.
—
Reply to this email directly or view it on GitHub
https://github.com/benquarmby/gulp-byo-jslint/issues/1#issuecomment-195849733
.


Add library for Criterion + trompeloeil

Add static library that demonstrates Criterion setup and basic usage.

Setup trompeloeil for mocking as well.

Added Criterion as built binaries for Linux platform.


Swagger version ?

Can you list the target Swagger version in the readme

Hi.
It was originally designed to support Swagger 2.0 but with the development of a internal project that used this library. Many non-standard features were added to the schema. This project is no longer maintained and I would not recommend to use this project for general purpose.
Sorry for the inconvenience.

Np--thanks for responding


create_connection doesn't create TCP connection if address is not tuple/list

To my surprise I've discovered that I can't create TCP connection with URI string as address.... What?
    if isinstance(address, (list, tuple)):
        host, port = address
        logger.debug("Creating tcp connection to %r", address)
        reader, writer = yield from asyncio.wait_for(asyncio.open_connection(
            host, port, ssl=ssl, loop=loop), timeout, loop=loop)
        sock = writer.transport.get_extra_info('socket')
        if sock is not None:
            sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
            address = sock.getpeername()
        address = tuple(address[:2])
    else:
        logger.debug("Creating unix connection to %r", address)
        reader, writer = yield from asyncio.wait_for(
            asyncio.open_unix_connection(address, ssl=ssl, loop=loop),
            timeout, loop=loop)
        sock = writer.transport.get_extra_info('socket')
        if sock is not None:
            address = sock.getpeername()
    conn = RedisConnection(reader, writer, encoding=encoding,
                           address=address, loop=loop)

You are using version v0.3, it does not support URI strings.
Use v1.0


Better handling of images extracted from html

Currently file2txt will store a copy of the image on the filesystem, and this is then referenced in the markdown output.
This is problematic, as user does not always have access to the filesystem (e.g. if a remote webserver)
We should expose the files in the document via an API endpoint
/api/v1/feeds/{feed_id}/posts/{post_id}/images/

The response of this endpoint will list all the images linked to the post
{
  "images" [
    "1.jpg"
    ]
}

These can then be accessed as follows
HOST/api/v1/feeds/{feed_id}/posts/{post_id}/images/1.jpg

The markwdown should be rewritten to include the full URL to the image (e.g. HOST/api/v1/feeds/{feed_id}/posts/{post_id}/images/1.jpg)

This won't work because markdown is being converted in another module. The images are actually stored on the same server as the .md file and the url is relative

So the point here is, the user must be able to access the image (if they do not have access to the server).
If we don't want to rewrite the report to include the web wrapper, we should still allow users to access the images directly from the API.

so I did this then I realized a fatal mistake with it, it's impossible for django to know what server it's on until a request is made. and because of this, we cannot just hardcode an image link into the markdown file (note, media files are not served by django)

Yes, we can do that...

@fqrious we should also do this for h4f.

I have a question...
when I run
python3 file2txt.py \
  --mode html_article \
  --file tests/files/html-real/unit42-Fighting-Ursa-Luring-Targets-With-Car-for-Sale.html \
  --output examples/unit42-Fighting-Ursa-Luring-Targets-With-Car-for-Sale \
  --defang true \
  --extract_text_from_image true

I get a copy of all images stored locally and they exist in the doc like so
![A screenshot of an HTML document code on a computer screen, displaying various script tags and a hyperlink with a detailed URL.The document includes standard HTML structure tags such as doctype, head, and body.](0_image_0.png)

However, using the test cases (one post is the same content as above) I get markdown that looks like
curl -X 'GET' \
  'http://<IP_ADDRESS>:8001/api/v1/feeds/2d6575b8-3d90-5479-bdfe-b980b753ec40/posts/df6cd9d5-8493-5908-a3a6-2ae9b38ecf28/markdown/' \
  -H 'accept: */*'

.Figure 1 below shows the HTML returned from the webhook.site URL.

![](https://muchdogesec.github.io/images/2024-08-01/0_image_0.png)

 Figure 1\.HTML code used in the attack hosted on the Webhook.site service.

 The HTML shown above

Which means no images are returned via Post image endpoint you've implemented.
Can you explain why this happens?

The image is not valid, so it's left as is

@fqrious can you explain what you mean, not valid? The file2txt and obstracts input files above are the same, so I'm not sure why one is valid, but the other is not

it's 404, just go to the link

Doh! Sorry, you're right


Add TimeSeriesClustering

Add TimeSeriesClustering.jl package to Energy System Assessment - Optimization.
The package supports time series aggregation for energy systems time series datasets. This allows for large-scale long-term planning of sustainable energy systems.
The package complies with the guideline because it is open source both in its software and provides some sample datasets, has been published in the journal of open source software, has been contributed to by authors beyond the core authors (see issues/PRs), is structured so that it can be reused and extended (including that we provide comments and documentation).

Another project that was definitely missing. Thank you so much. Another 100 trees get planted.

I only changed the description to make the connection between the project and the list clearer for people with less expertise in this area.