Branch for Rx 1.*

Do you have a branch for rx 1.*?

no

@Frederikos will you create it?

No.
You can use compile 'com.mlsdev.rximagepicker:library:1.3.1' for rx1.


[Update] Remove MainActor annotation from views

Description
This PR closes #455, #456, #457 . Since Xcode 16 is supported, views are always on main actor.
Linked Issue(s)

swift/pulls/6067

How To Test
Build and run without concurrency warnings.
Please note: this branch targets #508 so it will be merged after it.

Base branch is now merged, please approve again 🙇


Retain number of invalid/clipped derivatives in a JIT-compiled function?

I'm using custom_vjp to replace some nan derivatives, similar to the gradient clipping example in this tutorial, but in a jit-compiled function. Is it possible in JAX to somehow keep track of the number of replaced/clipped values?
I've tried playing around with value_and_grad but couldn't figure out how to put information about the gradient into the function value.
This may just be the same as #364, but I'm hoping that there's a workaround until that gets added.
Context: I'm using JAX to estimate a model with maximum likelihood, so my objective is a sum of many log likelihoods. At some parameter values there can be overflow/underflow issues. One way to deal with this is to replace any invalid log likelihoods/derivatives with reasonable values to keep estimation going.

Thanks for the question!
I think we wouldn't need quite as much as the idea in #364 because we could compute the number of nans within XLA and wouldn't need a Python callback. My understanding is this is mainly about plumbing: how do we plumb out auxiliary values from a custom vjp? So this may be related to #2574, and some effect-like things @jekbradbury has been thinking about.
Unfortunately we don't have a good solution to this plumbing problem right now. @jacobjinkelly 's clever approach in #2574 is the best idea so far, but I'm hesitant to merge that or recommend it widely because it's likely not the right long-term solution.
Let's keep thinking about this...

Aha yes! That seems like pretty much exactly the same issue. Basically returning aux information with the gradient, just like it can be returned with the primal.
The fact that a (super clever/hackish) solution does exist makes me optimistic. Thanks for taking a look.

I'm coming back to JAX after a few years and found that it now supports plenty of callbacks! For anyone else with this issue, here's some example code that I got working.
The idea is that there's some downstream f function that can sometimes produce invalid derivatives. Here I've chosen the square root function, which produces an invalid gradient at zero.
The first chunk of code defines a custom JVP wrapper around f, which replaces bad derivatives with zeros and logs these. The second chunk of code defines a custom VJP wrapper around f, which does something similar but in the backward pass.
import jax
import jax.numpy as jnp

def f(x):
    return jnp.sqrt(x)

def log(bad):
    log.count += bad

@jax.custom_jvp
def g(x):
    return f(x)

@g.defjvp
def g_jvp(x, g):
    x, g = jax.jvp(f, x, g)
    bad = ~jnp.isfinite(g)
    g = jnp.where(bad, 0, g)
    jax.debug.callback(log, bad)
    return x, g

log.count = 0
print(jax.jit(jax.jacfwd(g))(2.))
print(log.count)
print(jax.jit(jax.jacfwd(g))(0.))
print(log.count)
print()

@jax.custom_vjp
def h(x):
    return f(x)

def h_fwd(x):
    return jax.vjp(f, x)

def h_bwd(v, g):
    vg, = v(g)
    bad = ~jnp.isfinite(vg)
    vg = jnp.where(bad, 0, vg)
    jax.debug.callback(log, bad)
    return vg,

h.defvjp(h_fwd, h_bwd)

log.count = 0
print(jax.jit(jax.jacrev(h))(2.))
print(log.count)
print(jax.jit(jax.jacrev(h))(0.))
print(log.count)

This gives:
0.35355335
0
0.0
1

0.35355335
0
0.0
1

Hope this helps anyone else who tries to do something like this. And hopefully I'm not doing something too terrible here -- seems like a reasonable use of debug.callback but I'm not an expert.


[BUG] [Chapter2] ValueError when calculating the correlations in corr_matrix = housing.corr()

The following ValueError occurs when calling
corr_matrix = housing.corr()
ValueError: could not convert string to float: 'INLAND'
Obviously the DataFrame gets confused by the values in "ocean_proximity"
For me the solution was to change the 2 lines were the correlations are calculated to:
corr_matrix = housing.corr(numeric_only=True)
According to:
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.corr.html
The default value of numeric_only for DataFrame.corr() was changed to False effective as of pandas 2.0.0

I got the same problem too.
As you said numeric_only should be added.

Changed in version 2.0.0: The default value of numeric_only is now False.

Problem I got below
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[36], line 1
----> 1 corr_matrix = housing.corr()

File [c:\Users\hansu\anaconda3\envs\handson-ml2\Lib\site-packages\pandas\core\frame.py:10054](file:///C:/Users/hansu/anaconda3/envs/handson-ml2/Lib/site-packages/pandas/core/frame.py:10054), in DataFrame.corr(self, method, min_periods, numeric_only)
  10052 cols = data.columns
  10053 idx = cols.copy()
> 10054 mat = data.to_numpy(dtype=float, na_value=np.nan, copy=False)
  10056 if method == "pearson":
  10057     correl = libalgos.nancorr(mat, minp=min_periods)

File [c:\Users\hansu\anaconda3\envs\handson-ml2\Lib\site-packages\pandas\core\frame.py:1838](file:///C:/Users/hansu/anaconda3/envs/handson-ml2/Lib/site-packages/pandas/core/frame.py:1838), in DataFrame.to_numpy(self, dtype, copy, na_value)
   1836 if dtype is not None:
   1837     dtype = np.dtype(dtype)
-> 1838 result = self._mgr.as_array(dtype=dtype, copy=copy, na_value=na_value)
   1839 if result.dtype is not dtype:
   1840     result = np.array(result, dtype=dtype, copy=False)

File [c:\Users\hansu\anaconda3\envs\handson-ml2\Lib\site-packages\pandas\core\internals\managers.py:1732](file:///C:/Users/hansu/anaconda3/envs/handson-ml2/Lib/site-packages/pandas/core/internals/managers.py:1732), in BlockManager.as_array(self, dtype, copy, na_value)
   1730         arr.flags.writeable = False
   1731 else:
-> 1732     arr = self._interleave(dtype=dtype, na_value=na_value)
   1733     # The underlying data was copied within _interleave, so no need
   1734     # to further copy if copy=True or setting na_value
...
-> 1794     result[rl.indexer] = arr
   1795     itemmask[rl.indexer] = 1
   1797 if not itemmask.all():

ValueError: could not convert string to float: 'INLAND'
Output is truncated. View as a [scrollable element](command:cellOutput.enableScrolling?b1c2f400-b237-4442-b924-315adf80e9c3) or open in a [text editor](command:workbench.action.openLargeOutput?b1c2f400-b237-4442-b924-315adf80e9c3). Adjust cell output [settings](command:workbench.action.openSettings?%5B%22%40tag%3AnotebookOutputLayout%22%5D)...

this works

same with you guys.

In new version of python, numeric_only by default is set to False.

I got the same issue.


MINOR: [C++] Row wise conversion example fix

This example should print the expected rows.

Can you explain why it should print the expected rows?

@lidavidm Yep. Some check were not successful, but I think my changes is safe, could you please help merge it?

Hmm... can we instead avoid flipping rows and expected_rows to make the example less confusing?

Hmm... can we instead avoid flipping rows and expected_rows to make the example less confusing?

I did not get it, you mean just use one variable rows ?

Swap the variable names.

@pitrou DONE


Testability - introduce own odata v2 target service for integration testing

It should be possible to use this project (other than Java Olingo) - https://github.com/htammen/n-odata-server
Rationale. for V4 we will use SAP CAP framework for similar, it will never support Odata V2 and n-odata-server, even unmaintained, seems to support what is needed to have service parseable by pyodata - valid metadata etc.

[ ] Should be able to support different test case scenarios (e.g. $metadata), ideally by different URL so it is self-documented in the python part of code
[ ]  Dockerized. At the moment not sure if it is better to run as "swarm" in two containers or different testing dockerfile for python+nodejs together.

Relevant issues:

#46
Controlled randomness for entire odfuzz. It may be worth to have integration test deterministic for regression prurposes, therefore entire odfuzz must start with input for random.seed(), as currently used in unit tests (TODO new issue, #46 is not covering this requirement)

@phanak-sap  you can assign me this issue. I will block time to work on the same


Small updates

Ignite Base Change

[x] Works on iOS/Android/XDE
[x] Tests Pass (run: npm run test)
[x] Code is StandardJS compliant (run: npm run lint)

To latest API sauce and beyond.

small bump


[R-T4.3-1] Integration into IDE

ID
R-T4.3-1

Section
WP4: Modeling Environment

Type
FUNCTIONAL_SUITABILITY

User Story
As an Operations Engineer, I want to create new application blueprints using a graphical modeling tool.

Requirement
The graphical modeling tool (GMT, Winery) must provide a GUI which is integrated into the IDE.

Extended Description
For example the GUI is launched by clicking on kind of a  action in the IDE.

Affected Tools
GRAPHMODEL_TOOL

Means of Verification
Manual testing in the IDE based on case studies from T4.2.

Dependency
T2.3

GMT is integrated in IDE via Eclipse Che devfile since v.0.0.1


customize bg theme

I've copied 'stylish portfolio' theme in my @app/view folder, now for customize the home background image, how can do it ? I must make my personal asset and load it ?

@p2made every theme have different FILE.jpg name for header background, any solution to unify them all to a unique name?


Patchouli Documentation Overhaul (en_us)

Hello, all.
I have spent some time working with the documentation. I noticed the documentation was lacking, and I decided to help fix that. I have incorporated a lot of work from @sanrom, the original documentation, and my content. I have made moderate changes to the structure of the documentation and edited content throughout.
I would strongly encourage reading over the full documentation before merging this with the main repo. Of particular concern are the clarity and correctness in the general section in fission, the correctness and clarity of the turbine section in multi blocks, and sparsity throughout the machines section. Also, I cannot catch every typo that works its way into the documentation, despite my best efforts.
If there is a typo, factual error, or another issue, let me know here or in Discord (eVault). If you are brave, commit directly to fix the problem and then let me know. I am open to changing anything.
This is my first PR. Please be gentle 😅.

Awesome stuff - cheers!


Doesn't work with npm: specifiers

✘ [ERROR] [plugin deno] Failed to call 'deno info' on 'file:///.../.../index.js'

This could potentially be solved with an unstable flag. I will open a PR when my last one is merged. Please take a look.

Is there any work being done on this at the moment?

@codesculpture, @ITSDOUGES and I are looking into this problem

I made a plugin to rewrite npm:... to esm.sh before deno plugin like this:
await esbuild.build({
    plugins: [
        // ESBuild plugin to rewrite import starting "npm:" to "esm.sh" for https plugin
        {
            name: "the-npm-plugin",
            setup(build: any) {
                build.onResolve({ filter: /^npm:/ }, (args: any) => {
                    return {
                        path: args.path.replace(/^npm:/, "//esm.sh/"),
                        namespace: "https",
                    };
                });
            },
        },
        denoPlugin() as any,
    ],

However it doesn't utilize the cache, it seems to be downloading all of the files I rewrite like that on each build.
But it works for the time being.


The users that were invited as guests are migrating to another tenant.

TenantA invites users from TenantB, which creates guest accounts in State1. The users from TenantB will migrate to TenantC. At the end of the migration they will the same UPNs and passwords, but will be hosted on a different tenant.
Would it be needed to re-invite them (creating new guest accounts), or the old guest accounts will still work?
Will TenantA know send the authentication request the new TenantB and fail, or it will somehow discover TenantC and send the authentication request to TenantC?

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

ID: c6eb6697-4ace-adb6-c922-df8a9a485283
Version Independent ID: fd4ce34d-d55e-92af-d71a-625210ad3a63
Content: Properties of a B2B guest user - Azure Active Directory
Content Source: articles/active-directory/b2b/user-properties.md
Service: active-directory
Sub-service: b2b
GitHub Login: @msmimart
Microsoft Alias: mimart

@AlexanderSaad
Thanks for your feedback! We will investigate and update as appropriate.

@AlexanderSaad Yes, you need to invite the user again as the old accounts will not work for the new tenant C.

@AlexanderSaad We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.

Hi @saurabhsensharma, thank you for the reply.


Extremely lost

Hi all, I would like to integrate this API into my unity 3d environment as part of my university project. Upon reading the steps listed in the README, I'm completely lost. May I seek assistance or if there is a video guidance on the integration of this API into an external unity workspace? If no, other than importing the entire repository as a plugin into my unity work space, which is the specific line I am supposed to change (for the clientId etc)? And after which, is there additional coding required on my end in order to interact with this plugin?
In addition, I would like to know if it is feasible to use the specific parameter within the performance metrics (met) to be served as a control mechanism (ie: Focus parameter into a lighting object) to control the lighting environment. If not, would it simply meant that I can only use the entire met parameter itself to perform this interaction that I wanted?
Hope to seek any advice soon!

Hi @JunSeiichi ,
Sorry because the README can't help you. Have you tried with SimpleExample.unity (https://github.com/Emotiv/cortex-v2-example/tree/master/unity/Assets) ? In the example we tried to wrap some function for easier use.
The workflow should be:

Fill the clientId and clientSecret of your application
// Please fill clientId and clientSecret of your application before starting  private string _clientId = "";  private string _clientSecret = "";
Init EmotivUnityItf  and call start
// init EmotivUnityItf without data buffer using EmotivUnityItf _eItf = EmotivUnityItf.Instance; _eItf.Init(_clientId, _clientSecret, _appName, _appVersion, _isDataBufferUsing); // Start _eItf.Start();
Create a session with your headset( you should put the headsetId)
_eItf.CreateSessionWithHeadset(HeadsetId.text);
After create session successfully, you can subcribe data, create a record, load profile for training  etc..
Please let me know if I can help more. Thanks

Much appreciate with the response. If there's any issue I faced in the next few days, will  bring it up. May I also check if there is already a SDK approval license and Emotiv Student Subscription already been made approved, would I be able to make use of the Performance Metrics suite to control certain objects in the workspace?
As per brought up earlier, I would like to make use of the PM to control a "Lighting" object such that when the user is concentrating on the "game", the "Lighting" will be brightened up and vice versa.

Hi @tungntEmotiv , I've dropped you an email hoping for a quicker response.
Right now, I'm facing the error code of 32135 pertaining to the incorrect cortex token.
This is after my "attempt" in integrating the cortex API to my workspace.
I have also tested out the simpleexample that you had link earlier and there's no issue with it which led to me adapting the code into my environment with some removal of codes to fit my usage.
Please do assist pertaining to the error code as it is not found in the documentation.

Hi @JunSeiichi,
Sorry for late response.
The error said that the cortex token is used in generateNewToken() api is not match with the cortex token generated after authorize api . I don't know why you get the issue. So my suggestion to fix this issue as below:
In the file https://github.com/Emotiv/unity-plugin/blob/master/Src/Authorizer.cs line 363
You change as below:
// notify change sate ConnectServiceStateChanged(this, ConnectToCortexStates.Authorizing); _ctxClient.HasAccessRights(); return;
We will re-authorize each time open your application instead of call generateNewToken()
If issue still happen, please send us the the clientId which used for your application.

Hi @tungntEmotiv ,
Thanks for the response, I've managed to get through the token issue with the provided remedy but now I'm facing the issue of a session being created and not being able to allow any recording to be done.

Hi @JunSeiichi ,
I think you can use PM expression to control something. You can reference below guide
After create session with the headset as I mentioned above.  You need to subscribe "met" for performance metric
as below:
List<string> _streams = new List<string> {}; _streams.Add("met"); _eItf.SubscribeData(_streams);
You can see the output for performance metrics data kind of https://emotiv.gitbook.io/cortex-api/data-subscription/data-sample-object. You can control the light base on the focus value returned .
 Reference to https://emotiv.gitbook.io/cortex-api/bci

Hi @tungntEmotiv .
Thanks for the response. Pertaining to the subscription that you have mentioned above, I've already linked them up and getting output for the performance metrics, but with regards to the extraction of the focus value, how would I be able to extract and send this focus value feedback from the output string as stated in the documentation back to unity then? Right now, I'm only seeing it as output as an array of strings.

"met":[false,null,false,null,null,false,null,true,0.266589,false,null,true,0.098421],

Pertaining to the alternative method that you've proposed, I will not be using it as it is not the core of my project.

Hi @JunSeiichi ,
As API documentation the focus value relates to 2 last indexes. For example: "foc.isActive" =true,"foc" = 0.098421  as you mentioned as above. You might check if "foc.isActive" = true -> get the focus value.
Sorry we can not help to do some example code to extract the focus value, you might do it yourself.

Hi @tungntEmotiv,
Thanks for the suggestions, might want to check if this retrieval is only valid if we are using DataBuffer? Since if we do not use Data Buffer (_IsDataBufferUsing = false), there will be a need to getPM data prior to the checking of the "foc.isActive".


Version bump for Serde?

urlencoded depends on bodyparser 0.5, which depends on serde 0.8.  Would it be possible to cut a new release that uses bodyparser 0.6 instead (which would let us use serde 0.9 without weird type mismatches)?

bodyparser has been bumped again in #70 to pull in serde 1.0. @untitaker, are you in charge of releases?

@euclio Unfortunately I can't release this. Maybe @SkylerLipthay or @reem could.

Is this package maintained? We could release it under a new name...

@durka Yes. Myself, @reem, @untitaker, and @SkylerLipthay . However there are still some permissions issues around who can publish what on crates.io.

@Hoverbear I apologize for the flippant tone, which was unwarranted. I was just trying to make some noise since it seems like none of those with said permissions have been paying attention. It looks like @michaelsproul and @theptrk are the other two people with crates.io rights?

Hopefully one of them can help. :)

I suppose 0.6.0 is the next version? Or do we not expose this dependency?
On Wed, Aug 09, 2017 at 10:59:32AM -0700, Andrew Hobden wrote:

Hopefully one of them can help. :)
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-321333849

It's 0.7 now (for serde 1.0). Maybe a serde 0.9 version of urlencoded should be released as well though, in case anyone still needs it to harmonize their dependencies.

Hi all, I'd love to help, and although it seems I'm listed in Cargo.toml's authors field for my meagre contributions, I'm not a crate owner on crates.io and can't publish. However, it looks like everyone in the iron-dev team can publish: https://github.com/orgs/iron/teams/dev-team/members, which includes a bunch of people here :)
Cargo docs on publishing for reference: http://doc.crates.io/crates-io.html
Good luck!

Oh, we had this issue recently too in Servo. Does this org have crates.io as an approved OAuth app?
Because if it doesn't then crates.io will silently ignore the dev-team stuff.
What I suggest is you go to your settings and revoke permission from crates.io. Then log in to the site again -- at that point you see which orgs have approved it, and are given the ability to approve it for orgs you manage, or request approval for orgs which you are a part of but don't manage. If you're in the last bucket you can ask the Iron org owners to approve it from settings after you put in the request.

@Manishearth it was always approved before, I re-authed as you instructed and nothing happens. I don't understand why @Hoverbear doesn't have access to publish a new version.
the iron doesn't have any application restrictions at all, so apps wouldn't need explicit approval.
@Hoverbear please try if any of the advice by @michaelsproul and @Manishearth helps, otherwise I'll just push a new version.

@untitaker: To try to move this along, can you add some others explicitly as owners for this crate, like this?:
cargo owner --add Hoverbear
cargo owner --add michaelsproul

Then they can try to see if they have more luck with adding the whole team as owners. Maybe removing the team and adding it again helps (not sure if the name is dev-team or iron-dev?):
cargo owner --remove github:iron:dev-team
cargo owner --add github:iron:dev-team

I added @Hoverbear @michaelsproul @sfackler as owner for this crate, however, when trying your second set of commands I get an error when trying to re-add the team:
$ cargo owner --add github:iron:dev-team
    Updating registry `https://github.com/rust-lang/crates.io-index`
       Owner adding ["github:iron:dev-team"] to crate urlencoded
error: failed to add owners to crate urlencoded: api errors: only members of github:iron:dev-team can add it as an owner

An org admin will need to reauth Crates.io.
The way you do this is by removing Crates.io from your approved applications for your personal account, and then trying to log in to the site again, at which point it will ask you to authorize crates.io, and will give you the option to authorize it for organizations you have access to; or to request access from the admins.
There's probably a better way to do it, I just don't know what.

Crates.io is already authorized for the org, as i am admin
On 2 October 2017 00:43:55 GMT+02:00, Manish Goregaokar<EMAIL_ADDRESS>wrote:

An org admin will need to reauth Crates.io.
The way you do this is by removing Crates.io from your approved
applications for your personal account, and then trying to log in to
the site again, at which point it will ask you to authorize crates.io,
and will give you the option to authorize it for organizations you have
access to; or to request access from the admins.
There's probably a better way to do it, I just don't know what.
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-333412412

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

as i am admin

note that just being an admin and giving personal access to crates will not authorize it for the org as well. these are separate permissions systems.

The org doesn't have any additional protections:

@untitaker can you add @Manishearth as an admin of the iron organization so he can have a look?

done
On Mon, Oct 02, 2017 at 11:17:32PM +0000, Robin Stocker wrote:

@untitaker can you add @Manishearth as an admin of the iron organization so he can have a look?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-333692123

Hm, I can't either, since I don't have owner access on crates.io. But you're right, it should work. Perhaps try cargo owner -a iron:dev-team?

That doesn't work either, cargo rejects the format of iron:dev-team very
early.
On Tue, Oct 03, 2017 at 03:24:22PM +0000, Manish Goregaokar wrote:

Hm, I can't either, since I don't have owner access on crates.io. But you're right, it should work. Perhaps try cargo owner -a iron:dev-team?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-333877790

@untitaker can you add @Manishearth as an owner to the crate?:
cargo owner --add Manishearth

done

Interesting, I get the saem error, but not the same error when I try to add servo:cargo-publish

Turns out this is a Cargo bug wrt team ids, it's being fixed.

@Manishearth: Yay! Do you have a link to an issue/PR?

https://github.com/rust-lang/crates.io/pull/1107
(@carols10cents is amazing)

Yay! Looks like the fix was merged. @Manishearth, does adding the team work now?

I'm excited for Iron to make a comeback in the active web frameworks! This release has been delayed over 6 months already, hopefully Cargo is fixed and we won't see this happen again 😅

it worked!

Yay! So maybe also run the command on all the other iron crates, just to make sure.
Also, who wants to do the releasing now? (I'm willing to help by the way, but someone would need to add me to the list of maintainers.)

(I'm only an owner for this crate, need @untitaker to look at the others)
I tried cargo-publishing this crate, it's already published

@Manishearth the version number needs to be bumped.

Whichever crate I try, I get the error message that the GitHub
org is already an owner.
On Wed, Oct 18, 2017 at 08:44:57PM +0000, Manish Goregaokar wrote:

(I'm only an owner for this crate, need @untitaker to look at the others)
I tried cargo-publishing this crate, it's already published
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-337722339

Please ping me if a particular repo is missing.
On Wed, Oct 18, 2017 at 08:44:57PM +0000, Manish Goregaokar wrote:

(I'm only an owner for this crate, need @untitaker to look at the others)
I tried cargo-publishing this crate, it's already published
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/iron/urlencoded/issues/68#issuecomment-337722339

Cool, so maybe it fixed it for all crates :).
So, who is going to release all the things that need releasing? Seems like that is at least this crate and iron itself.

iron/params will need to bump this crate and release as well

Done!

It would be really cool if a new version could be released that includes #70 because that hasn't happened yet! I don't want to pull in pre 1.0 serde :)

Oh, I thought this was published. My bad.

@untitaker can you bump the version in this repo and republish? I can do it too but not at the moment

body-parser needs to be released first: https://github.com/iron/body-parser/pull/79
See this issue in iron for all dependencies and the order: https://github.com/iron/iron/issues/551

This refers the iron/body-parser#79 's version. https://github.com/iron/urlencoded/pull/72
The build is failed because the version is not released yet ... But I confirmed on my local test with the modification, if my memory is correct.

body-parser is now released.

urlencoded 0.6.0 has been released, which depends on bodyparser 0.8, which depends on serde 1.0. So I think we can close this now.

Thanks! Now I do need a new release of staticfile however because you also switched to iron 0.6.0...

@est31: The iron dependency has the constraints >= 0.5, <0.7, so in theory it should still work with 0.5.0. Have you tried?

Oh that's interesting... Yep it works. Thank you @robinst !


Correct URL in README to Avoid Cloning Error

The repository URL in the README file is incorrect, which results in a "Repository not found" error when trying to clone the repository.

@khushi-joshi-05
Please assign this issue to me under GSSoC'24.


chore(dep) Upgrade to late Concerto 0.82.8

Signed-off-by: Jerome Simeon<EMAIL_ADDRESS>

Coverage remained the same at 91.506% when pulling a5ae20f2a96eb1508b103572f66c7cb579a1ed0b on jeromesimeon:js-chore-concerto-0.82.8 into 5bdae91cc6a38a6803ff4c09edc9180dba68150e on accordproject:master.


Unreliable behaviour on ESP32 but reliable on ESP8266

Hello.
I have the following setup in an automation environment
Raspberry Pi 3B running Raspbian with Mosquitto MQTT broker and Node-red. This is the master hub controller (connected via ethernet cable)
I have a number of arduinos (ESP8266 / ESP32) running WiFi and MQTT PubSub client. These are the slave node/devices (connected via WiFi)
The slave devices will receive MQTT messages from Node-red to act upon and will also send MQTT messages to Node-red for processing by Node-red.
Whilst testing on a ESP32 device node, I noticed random delays in messages being received and sent by the ESP32 device node, so I set up a test scenario as follows to identify the issue
From Node-red, I set up a flow that would publish a message every second including a counter so I can also verify that no messages go missing.
On the ESP32 I publish a message every second as well including a counter so I can also verify that no messages go missing. Every time I publish such a message, I also log that to the serial console so that I can log the fact that the ESP32 has issued the publish command and has not just stalled.
On my Windows 10 desktop using MQTTBox, I set up two subscriptions side by side so that I can see all the messages published by Node-red and the ESP32.
Once I ran that scenario, I noticed on the ESP32 serial output monitor console that for random periods of time, no incoming messages are processed in the callback routine and at the same time the MQTTBOX shows no incoming messages from the ESP32.
At the end of each of those random periods, the ESP32 serial console suddenly receives all the incoming messages that it was meant to receive in a matter of milliseconds and at the same time I can see MQTTBOX receiving all the ESP32 messages it was meant to receive in a matter of milliseconds, then processing in the ESP32 resumes as normal showing the incoming messages every second and MQTTBOX
showing the incoming messages every second.
No messages are getting lost, just delayed in and out of the ESP32.
These random periods vary in length from seconds to sometimes nearly 30 seconds.
I repeated this test with just the ESP32 connected to the USB port of the Windows 10 PC (arduino IDE) so as to ensure that no circuitry is affecting anything.
I repeated this with a second identical ESP-WROOM-32.
I repeated this test with the Raspberry Pi connected via WiFi.
All tests generate the same random pattern of delayed messages as described above.
I also note periodic infrequent timeout/disconnections appearing to be MQTT which I resolve in the sketch by reconnecting the WiFi after which MQTT reconnects and everything resumes as before
If I repeat the test with a NodeMCU (ESP8266), everything runs smoothly and no messages get delayed in or out of the NodeMCU.
The only differences in the sketch as compared to the one running in the ESP32 sketch  is that I include the ESP8288WiFi library instead of the ESP32 toolset WiFi library.
The two WiFi boards used in the above testing are
==> MakerHawk 2pcs ESP8266 Serial Wireless Module CH340 NodeMcu V3 Lua WIFI Internet of Things New Version Development Board EK1677 Arduino Compatible MakerHawk
==>  Espressif ESP32 ESP32-DEVKITC inc ESP-WROOM-32 soldered dils CE FCC Rev 1 SiliconEspressif OLIMEX
To ensure that I do not have a memory leak issue, I write out the size of the free heap stack to the serial console every time I issue a publish every second, and that seems fine.
I have also include the WiFi strength every time I issue a publish every second so as to verify that I am not getting issues with a weak WiFi signal
In the ESP32 serial console output file attached you can see the regular ESP publish statements being executed every second and you can see where there are gaps where no Node-red messages appear  and then all of a sudden you can see all those messages appear as they are received within a few milliseconds
ESP serial console output.txt
I have included the ESP32 sketch used as per the above
ESP32 - test sketch.txt
I am suspecting that there is one of the following issues
==> The ESP32 boards are buggy (but having tested two identical ones, this would have to be a design fault)
==> There is an issue with the ESP32 toolset WiFi library
==> There is an incompatibility between the PubSub client  and the ESP32 toolset WiFi library
==> Some other issue that I am not aware of at this stage
I am at a loss as where to go next to resolve this issue.
I could just use NodeMCU modules, but I really need the higher number and variety of ESP32 pins, so it would be good to get this resolved
Hopefully, someone can shed some light on the above !
Many thanks

Similar issue. Please resolve!

Problem found out to be related to RPi Zero W module hosting Mosquitto Broker. I was actually using RPi0w's wifi interface for AP+STA and also hosting broker, probably that caused connection problems.


409 Blob type invalid when creating append blob for file with ".json" extension

I am trying to create an append blob with .json extension, if I change the extension to something else then it works
    remoteObject := azblob.NewAppendBlobURL(*objectUrl, azblob.NewPipeline(credential, azblob.PipelineOptions{}))
    _, createErr := remoteObject.Create(ctx, azblob.BlobHTTPHeaders{}, azblob.Metadata{}, azblob.BlobAccessConditions{}, nil)

I got this
2021/04/06 18:24:21 -> github.com/Azure/azure-storage-blob-go/azblob.newStorageError, /Users/XXXXX/go/pkg/mod/github.com/!azure/azure-storage-blob-go@v0.11.0/azblob/zc_storage_error.go:42
===== RESPONSE ERROR (ServiceCode=InvalidBlobType) =====
Description=The blob type is invalid for this operation.
RequestId:2ed179e8-Xxxxxxxx
Time:2021-04-06T16:24:19.9492962Z, Details:
   Code: InvalidBlobType
   PUT https://xxxx.blob.core.windows.net/xxx/blabla123.json?timeout=61
   Authorization: REDACTED
   Content-Length: [0]
   User-Agent: [Azure-Storage/0.11 (go1.15.7; darwin)]
   X-Ms-Blob-Cache-Control: []
   X-Ms-Blob-Content-Disposition: []
   X-Ms-Blob-Content-Encoding: []
   X-Ms-Blob-Content-Language: []
   X-Ms-Blob-Content-Type: []
   X-Ms-Blob-Type: [AppendBlob]
   X-Ms-Client-Request-Id: [b10dca44]
   X-Ms-Version: [2019-12-12]
   --------------------------------------------------------------------------------
   RESPONSE Status: 409 The blob type is invalid for this operation.
   Content-Length: [228]
   Content-Type: [application/xml]
   Date: [Tue, 06 Apr 2021 16:24:19 GMT]
   Server: [Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0]
   X-Ms-Client-Request-Id: [b10dca44]
   X-Ms-Error-Code: [InvalidBlobType]
   X-Ms-Request-Id: [2ed179e8]
   X-Ms-Version: [2019-12-12]

Hi there! I looked into this issue and I am able to create an append blob with .json extension. I would recommend taking a look at our example at (https://github.com/Azure/azure-storage-blob-go/blob/d80c8c7c7c4385e4afe4ebdaab9b31efd7d87eb1/azblob/zt_examples_test.go#L741).
Please let me know if you still have any trouble!


how to upload content of plugin to website?

I want to add a plugin of img upload,but i am confuse about the sentence 'upload content of plugin to website' at https://github.com/dangvanthanh/vue-ckeditor2/wiki/Toolbar. Is there someone could tell me the steps? thanks very much~

The button already exists,But it's hidden,Now I don't know where to configure

@huhongliang Can you show your code or your configure to display button. I will help you configure.

how to add a plugin of img upload, Is there someone could tell me the steps?

how to add a plugin of youtube, Is there someone could tell me the steps?

Hello Author,
Can you help because I still can't add extraPlugin like 'image2'? Thanks :)

Hi @quangvision
I add guide to add extraPlugin like image2: https://github.com/dangvanthanh/vue-ckeditor2/wiki/Multiple-Plugins-with-extraPlugins and with demo in http://vue-ckeditor2.surge.sh/

Hi @hpaicf
You can reference to intergrate easyimage to vue-ckeditor2
This is example I use Example.vue
<template>

    <vue-ckeditor v-model="multiplePlugins.content" :config="multiplePlugins.config" />

</template>

cloudServices_tokenUrl and cloudServices_uploadUrl you can found in Ckeditor Dashboard
You can see using easyimage plugin in  demo with Multiple Plugins


Can't copy from FUSE mount

Output of restic version
latest
How did you start restic exactly? (Include the complete command line)
restic mount -allow-other -r repolocation (on ubuntu 16.04)
What backend/server/service did you use?
samba
Expected behavior
I can mount the restic repository no problem.  I have it shared out as read only via Samba and can view all files/folders in the snapshots from a win 7 machine.  However, when I try to copy a file from the share to the local workstation I get a "Could not find this item...This is no longer located in \server\share  Verify the item location and try again".  I also cannot open any file from the samba share.
Other interesting issue is if I hit "properties" in windows on a folder on the samba share, the # of files and total file size of the folder shows incorrect in windows 7 (less than it should be).  However, if I do it a second time, it returns the correct numbers.
Actual behavior
Steps to reproduce the behavior
Do you have any idea what may have caused this?

Further Details:
Seems like folders copy fine, just files can't be accessed.  When I look at windows properties for the files on the samba share it comes back with files size zero, and on security tab of properties it shows "requested info is unavailable".

Hm, I don't have any idea how to start debugging this. Could you please create a debug logfile? Please be aware that it may contain sensitive data such as file and directory names.

Sorry, compiling stuff etc. is beyond me.  Linux noobie...
Can't you just create a restic repository on linux, back up a few files to it and then try to access from win via samba to see if you can reproduce it?
here is my smb.conf file:
global]
map to guest = bad user
log file = /var/log/samba/log.%m
passwd chat = Enter\snew\s\spassword:* %n\n Retype\snew\s\spassword:* %n\n password\supdated\ssuccessfully .
pam password change = yes
panic action = /usr/share/samba/panic-action %d
winbind trusted domains only = yes
passdb backend = tdbsam
workgroup = WORKGROUP
passwd program = /usr/bin/passwd %u
max log size = 1000
winbind use default domain = yes
os level = 20
server string = %h server
unix password sync = yes
obey pam restrictions = yes
write raw = no
syslog = 0
dns proxy = no
read raw = no
usershare allow guests = yes
server role = standalone server
hide dot files = no
server signing = auto
client signing = auto
File creation mask is set to 0700 for security reasons. If you want to
create files with group=rw permissions, set next parameter to 0775.
create mask = 0770
Directory creation mask is set to 0700 for security reasons. If you want to
create dirs. with group=rw permissions, set next parameter to 0775.
directory mask = 0770
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[restic2]
writeable = yes
public = yes
force create mode = 770
path = /mnt/restic_mnt
guest account = ed
delete readonly = yes
force user = root
create mode = 770
valid users = root,ed,@root,@ed
force group = root
directory mode = 770
force directory mode = 770

above shows file on samba share from restic mount   (note size 10K)

Same file but shows files size of "0"

shows security error

error when I try to copy

Wasn't there some issue with the inode/handles in the fuse mount not being persistent?
Can you try to copy a file from the /mnt/restic_mnt to say /tmp? (instead of going thru samba) It will make clear if it the mount itself is bad or your remounting with samba is.

I can copy on the linux machine from the mount to another folder and it works fine, so it is something to do with Samba I think.

middelink, are you talking about an issue with restic or with fuse in general in regards to the handles not being persistent?  any background on that issue?

I have the same error and i think mount a repository and share via samba should work out of the box.

@fbkopp please describe your situation and the error you're seeing.
@durcom which system user is used for samba? which is used for running restic?

@fd0 I have same situation as @durcom have described above. Using Ubuntu 16.04 and running restic and samba share as root user. As client used windows 10. I can list directories and files, this part is ok. Coping a file is the trouble. As windows special char COLON (:) are forbidden, i changed fuse code to replace with underline (samba option "mangled names" not helped) , and this was the first problem i resolved changed the code (https://github.com/restic/restic/blob/master/src/restic/fuse/snapshot.go#L127) , the second is really that cannot copy the file from samba share.
ps; sorry for my bad english.

i have create a debu log.

add user root to samba
smbpasswd -a root
enable root user on samba
smbpasswd -e root

/etc/samba/smb.conf:
[test_restic]
path = /home/test_restic
guest ok = yes
valid users = root
guest only = yes
browseable = yes
read only = yes
force user = root
force group = root
replace line src/restic/fuse/snapshot.go#L127 with: timestamp := strings.Replace(snapshot.Time.Format(time.RFC3339),":","_",-1)
restic command:
root@kopp-pc:~# restic -r /tmp/repo/ mount --allow-other /home/test_restic/mounpoint/
used gnome nautilus to browse samba share
smb://kopp-pc/test_restic/mounpoint/snapshots/2017-06-10T14_48_21-03_00/linux/zoneminder-doc_1.30.4-xenial-2017051701_all.deb
restic-debug.txt

I also ran into this problem and tried to pinpoint it a bit more.
I am using:
$ smbd -V
Version 4.5.12-Debian
$ restic version
restic 0.8.3
compiled with go1.10 on linux/amd64

and on Windows:
>restic.exe version
restic 0.8.3
compiled with go1.10 on windows/amd64

The main thing I found out is that the problem seems to only occur with backups done from a Windows host.
Here is a small restic repo (password is test) with just two snapshots, one done from Windows and one from Linux: restic_test.tar.gz
When this is mounted with restic mount --allow-other ./mount/ and shared via samba, I can access the file in the Linux snapshot fine from a Win10 machine, but the Windows snapshot gives an error ("Could not find this item") when I try to open the file.
My smb.conf looks like this:
[global]
   map to guest = bad user
   guest account = guestuser
[data]
  follow symlinks = yes
  path = /mnt/disk1/
  browseable = yes
  read only = yes
  guest ok = yes
  vfs objects = catia
  catia:mappings = 0x3a:0xf7

The rest is left default. The catia mapping is used to map the colon, as otherwise the names of the folders with the snapshot times get mangled badly. The Problem also occurs without this.
I hope that helps, if you need any more info please tell me.


playback tests

Coverage increased (+0.2%) to 72.228% when pulling b85ec043ee1d2e076bf48993391b8a2c9b59b498 on playback_tests into a5e3de39ecfca5f541f3c6c69c2698c21dc65d85 on master.

Coverage increased (+0.5%) to 72.815% when pulling b8badccf75aac0e4f1df4a839e52a5555f28bd2b on playback_tests into 20062ffc19cdf07d5eeb9fbea00c4c9b6353cf7e on master.

Coverage increased (+0.5%) to 72.815% when pulling d38f5ee69e7bf3afa521fd59eaecf9184d37bba5 on playback_tests into 20062ffc19cdf07d5eeb9fbea00c4c9b6353cf7e on master.

Coverage increased (+1.2%) to 73.521% when pulling 63344e9906a8d4b772440e1150ce288d46a2f7db on playback_tests into 20062ffc19cdf07d5eeb9fbea00c4c9b6353cf7e on master.

Coverage increased (+1.2%) to 73.513% when pulling 4655f74624b4c127e1f6dfd9adb1831f7626cbe7 on playback_tests into 20062ffc19cdf07d5eeb9fbea00c4c9b6353cf7e on master.

wow +1,2%
Sent from my iPhone

On 17 May 2017, at 21:02, Coveralls<EMAIL_ADDRESS>wrote:
Coverage increased (+1.2%) to 73.513% when pulling 4655f74 on playback_tests into 20062ff on master.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Coverage increased (+1.2%) to 73.513% when pulling 7e2e24624aa00912d8209c5a29920bb42331e236 on playback_tests into 20062ffc19cdf07d5eeb9fbea00c4c9b6353cf7e on master.


Steps for Change of license

Issue to track the following changes

[ ] change LICENSE file to Apache v2.
[ ] change license text in all source files.
[ ] change license type in BUILD files.
[ ] change copyright text from "Google Inc" to "gRPC Authors" in all files.
[ ] Add a AUTHORS file

Another item we should add is removing PATENTS file which is redundant with the Apache license. We can explain clearly why it's no longer needed in that the Apache license provides a functionally identical patent grant.

https://github.com/grpc/grpc/pull/11438
https://github.com/grpc/grpc-java/pull/3078

Q: what about CLA? The CONTRIBUTING.md refer to a CLA that says all copyright is assigned to Google.


custom dataset training

hello!
Nice work! I want to train the model with my own dataset, is there a guide on how to start with?
Thanks for your reply in advance

you can edit this file for your data
https://github.com/clovaai/ext_portrait_segmentation/blob/master/setting/ExtremeC3Net.json


Fix og:image

Currently, Logo is not displayed at Twitter card.
og:image is url, not path.
https://ogp.me/

Thanks!


Replayer, add parens

In the berkeley replayer, there's a comparison between accounts in the database and accounts in the replayer ledger. If they don't match, there's an error log issued.
But the code following, which increments an error count, or exits, was not using that comparison to guard its execution.
Add parentheses so that code uses the account comparison as a guard.
(This bug was discovered when exercising the modified replayer that populates the accounts... tables.)

!ci-build-me

!ci-build-me

!ci-build-me

!ci-build-me

!approved-for-mainnet


Integration, Public Interface, & Cleanup todos

Codecov Report
Attention: Patch coverage is 24.74227% with 73 lines in your changes missing coverage. Please review.

Project coverage is 85.40%. Comparing base (cfbf7c7) to head (400e327).

Files with missing lines
Patch %
Lines

src/mlkem.rs
14.51%
48 Missing and 5 partials :warning:

src/errors.rs
0.00%
9 Missing :warning:

src/kemeleon.rs
61.53%
5 Missing :warning:

src/kemeleon/ciphertext.rs
55.55%
2 Missing and 2 partials :warning:

src/kemeleon/encapsulation_key.rs
50.00%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main       #7      +/-   ##
==========================================
- Coverage   91.48%   85.40%   -6.09%
==========================================
  Files           9       10       +1
  Lines        1198     1274      +76
  Branches     1198     1274      +76
==========================================
- Hits         1096     1088       -8
- Misses         78      160      +82
- Partials       24       26       +2

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

Added a change to the API where certain functions will attempt to return an encodable key or ciphertext, retrying until it finds one or returns an error.
However, the encapsulate_deterministic() function doesn't attempt to force it so if an encodable ciphertext is required you will need to check it yourself.

Added a change to the API where certain functions will attempt to return an encodable key or ciphertext, retrying until it finds one or returns an error.
However, the encapsulate_deterministic() function doesn't attempt to force it so if an encodable ciphertext is required you will need to check it yourself.


Create bridge adapter contract

Problem
Too many wallet confirmations when sending XERC20s.
Impact
Decrease wallet confirmations from 4 to 2.
Proposed Solution
https://www.notion.so/xERC20-Adapter-to-Simplify-UX-681481442d7f495db50609146133f5f3
Acceptance Criteria
Adapter implemented as described in the above spec.

unit test in progress.

Adding fallbacks unregistered tokens(registry)

unit tests done


Corrupted mavlink-router data

Hello,
I was running a simulation that involved four agents and QGC and noticed that at some point the simulated aircraft on the ground station disconnected. Mavlink-router connects the serial link to the simulation on each aircraft with the command mavlink-routerd /dev/ttyUSB0:230400 -e <IP_ADDRESS>:3000, where QGC is just connected to the serial link. Each aircraft is sending a custom message at a rate of 5 Hz with a 1 Hz ping over pymavlink. The four aircraft system id's are just 1 to 4 with QGC set to 255.
Running mavlink-router with the command mavlink-routerd /dev/ttyUSB0:230400 -e <IP_ADDRESS>:3000 -v on one of the aircraft showed the output below.
It continued to output those values even after shutting down 3 simulations and only having one aircraft running. Scoping out the data on the simulations showed that values being sent to pymavlink were expected values.
I'm new to mavlink-router so I'm not sure if it is receiving corrupted data or if somehow it has desynched from the mavlink packets and is always starting the search in the middle of a packet.
Verbose Output:
Endpoint [5] got message 16645629 to -1/-1 from 253/253
Known components:
1/1
Endpoint [5] accepted message 16645629 to -1/-1 from 253/253
UDP [5] wrote 265 bytes
UART [4] got 25 bytes
UART [4] got 23 bytes
UART [4] got 23 bytes
UART [4] got 91 bytes
UART [4] got 25 bytes
UART [4] got 15 bytes
UART [4] got 31 bytes
UART [4] got 23 bytes
UART [4] got 23 bytes
No message entry for 16645558
Endpoint [4] got message 16645558 to -1/-1 from 253/253
Known components:
255/0
2/1
3/1
4/1
1/1
Endpoint [4] accepted message 16645558 to -1/-1 from 253/253
UART [4] wrote 278 bytes
Endpoint [5] got message 16645558 to -1/-1 from 253/253
Known components:
1/1
Endpoint [5] accepted message 16645558 to -1/-1 from 253/253
UDP [5] wrote 278 bytes
UART [4] got 25 bytes
UART [4] got 21 bytes
UART [4] got 25 bytes
UART [4] got 21 bytes
UART [4] got 25 bytes
UART [4] got 21 bytes
UART [4] got 23 bytes
UART [4] got 18 bytes

I think I got it sorted out. It seemed that the message I am sending fragmented. Mavlink-router interpreted this as a unknown but valid message, as the target system id was assigned to -1. Mavlink-router would then try and route the corrupted data. It seemed that mavlink-router would route the data faster than I had been sending it which started to eat up the wireless resources and caused the other units to fail.
I made a simple test patch on my system by editing the handle_read function in endpoint.cpp to be:
while ((r = read_msg(&buf, &target_sysid, &target_compid, &src_sysid, &src_compid, &msg_id)) > 0)
        if (r == 1) {
                Mainloop::get_instance().route_msg(&buf, target_sysid, target_compid, src_sysid,
                                                   src_compid, msg_id);
        }

By only routing known messages, it seemed to have fixed the issue. I know it goes against the design, but it could be useful as an option to only route known messages.

I'm not sure fragmentation is the right reason. The mavlink header contains the size of the payload. See Endpoint:read_msg(). If are not able to read the entire payload we will just buffer what we read and return 0.
IMO there is a flaw in mavlink protocol: we need to know the msg id to be able to check the crc and flags. A router/proxy may not be aware of all the messages if there are custom messages. If mavlink-router doesn't know about your custom message, then it has no way for it to check that.  It still checks the size, but it can't verify if there was corruption in the link.  If you are using a custom message, make sure mavlink_get_msg_entry() knows about it.
Also corruption is ultimately avoided by the endpoints checking the CRC.

Fair enough, I only mentioned fragmentation when looking at the buffer and it seemed to have multiple partial custom messages within it. I also noticed that it was interpreting the buffer to be a mavlink 2 message when I have only been sending mavlink 1 messages.
I'll double check to make sure that mavlink_get_msg_entry() sees the message.
Thanks for the help!


Nakama.storage with JSON column type

to use JSON feature from new Cockroach
we installed Cockroach2.0b 2018.03.05, then we migrated nakama to it with
cockroach sql --insecure
SET sql_safe_updates = false;
ALTER TABLE nakama.storage DROP COLUMN value RESTRICT;
ALTER TABLE nakama.storage ADD COLUMN value JSONB;
nakama migrate up

then we changed nakama source in core_storage.go
on lines  379, 390, 405, 547, 661 we changed $6::BYTEA to $6::JSON
and we can query JSON now like
value = {"f_money": 300"}
select value -> 'f_money' from nakama.storage;
+------------------------+
| value::JSON->'f_money' |
+------------------------+
|                    300 |
+------------------------+

Cockroach 2.0 is released!

@igavva Thanks for the reminder. We've got something in progress that relates to this - You'll hear soon ;)

@RomanZhu @igavva We've moved the schema over to use the new JSONB type with our tables. This will be part of the next release. 😉


No Star Trek Data for the First Tutorial

As the subject line states, while following the Build Your First Neural Search App tutorial, I found that I couldn't download the Star Trek data.
In fact, it downloaded the South Park data instead.

Hi @educatorsRlearners
Thanks for letting us know, do you have the latest version? I just tried and I got the star trek data.
I used the cookicutter pip install -U cookiecutter && cookiecutter gh:jina-ai/cookiecutter-jina, got the docker image docker run -p 45678:45678 jinaai/hub.app.distilbert-southpark (I see that it says south park, but it shouldn't matter) installed requierements pip install -r requirements.txt downloaded the dataset
cd ..
bash ./get_data.sh and got the star trek data. Is there something I did different from you?

Hello @theUnkownName
jina = 0.4.11
Python 3.7.7
As for if you did something different, I'm really not sure.
What I do know is I followed the tutorial step-by-step.
git clone git@github.com:alexcg1/my-first-jina-app.git
cd my-first-jina-app
pip install -U cookiecutter && cookiecutter gh:jina-ai/cookiecutter-jina
cd star_trek
 pip install -r requirements.txt
 cd ..
bash ./get_data.sh
cd star_trek
and when I ran this line:
``head data/startrek_tng.csv
I got:
head: cannot open 'data/startrek_tng.csv' for reading: No such file or directory
Like most things, I'm sure it's something small that I'm doing wrong but I just don't know what it is.
Cheers!

I found the missing data in the github repo of the author: https://github.com/alexcg1/ml-datasets
I solved the issue with
mkdir data
cd data
wget https://raw.githubusercontent.com/alexcg1/ml-datasets/master/nlp/startrek/startrek_tng.csv

I hope this helps.

Huh, that's weird. It worked okay the last time I tested it! I would fix the bug but...the tutorial is being retired since cookiecutter-jina is no longer supported. More info on that below:

Unfortunately cookiecutter-jina no longer works with Jina's latest code, so we've made the difficult decision to retire this tutorial until we have a more effective way for new users to bootstrap a simple Jina project.
When I wrote the tutorial (when Jina 0.3.0 was the latest release) it worked perfectly. Alas with the breaking changes of 0.4.0 that's no longer the case.
Please let me know if you have any other questions or feedback!


Storage API fails to copy file

Bug report
Describe the bug
In development, using the storage API to copy a file like this:
await supabase.storage
  .from("private")
  .copy(
    "master-documents/051b8395-502a-4a0c-9b4c-5fef4db3bf7d/1/contract-1.pdf",
    "documents/bd68140a-f34a-431f-9b36-7440b8817fee/1/contract-1.pdf"
  );

Results in this error:

ENOENT: no such file or directory, copyfile '/var/lib/storage/stub/stub/private/master-documents/051b8395-502a-4a0c-9b4c-5fef4db3bf7d/1/contract-1.pdf' -> '/var/lib/storage/stub/stub/private/documents/bd68140a-f34a-431f-9b36-7440b8817fee/1/contract-1.pdf'

To Reproduce

Create a new project: supabase init && supabase start
Create a bucket: supabase.storage.createBucket("example-bucket")
Add a file to the bucket: supabase.storage.from("example-bucket").upload("example-file", file)
Attempt to copy the file: supabase.storage.from("example-bucket").copy("example-file", "example-copy")

Expected Behavior
It should copy the file like it does in a production environment.
Screenshots
N/A
System information

OS: macOS
Version of CLI : 1.15.0
Version of supabase-js: 2.1.1
Version of Node.js: 16.17

Additional context
N/A

It looks like the way this failures has changed in recent versions. The copy operation will not raise an error and will create a new object, but trying to retrieve that object will return an Internal Server Error. You can hit this just trying to download or generate a URL for the object in Supabase Studio:

@sweatybridge Should this be moved to https://github.com/supabase/storage-api? I'm not sure where the problem lies, but I've only ever seen it in my development environment.

Thanks @haydn, I've pinged the storage team internally to help take a look.


Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: E0814 03:24:53.932541  138676 run.go:74] "command failed" err="failed to run Kubelet: bad --node-ip "<HIDDEN but DUAL STACK NODE IP's>": dual-stack not supported in this configuration"

I run a dual stack K8S instance (needed for the project i do) I also need to consume open stack resource - why does this config tell me that by enabling external provider i now can not have  dual stack? I am on 1.27.4
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: Flag --cloud-provider has been deprecated, will be removed in 1.25 or later, in favor of removing cloud provider code from Kubelet.
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: Flag --container-runtime-endpoint has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/>
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: Flag --pod-infra-container-image has been deprecated, will be removed in a future release. Image garbage collector will get sandbox image information from CRI.
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.919896  138676 server.go:199] "--pod-infra-container-image will not be pruned by the image garbage collector in kubelet and should also be set in the remote runtime"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.924142  138676 server.go:415] "Kubelet version" kubeletVersion="v1.27.4"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.924367  138676 server.go:417] "Golang settings" GOGC="" GOMAXPROCS="" GOTRACEBACK=""
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.924631  138676 server.go:837] "Client rotation is on, will bootstrap in background"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.926063  138676 certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-client-current.pem".
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.927063  138676 dynamic_cafile_content.go:157] "Starting controller" name="client-ca-bundle::/etc/kubernetes/pki/ca.crt"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929134  138676 server.go:662] "--cgroups-per-qos enabled, but --cgroup-root was not specified.  defaulting to /"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929423  138676 container_manager_linux.go:266] "Container manager verified user specified cgroup-root exists" cgroupRoot=[]
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929578  138676 container_manager_linux.go:271] "Creating Container Manager object based on Node Config" nodeConfig={RuntimeCgroupsName: SystemCgroupsName: KubeletCgroupsName: KubeletOOMScoreAdj:-999 Containe>
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929730  138676 topology_manager.go:136] "Creating topology manager with policy per scope" topologyPolicyName="none" topologyScopeName="container"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929830  138676 container_manager_linux.go:302] "Creating device plugin manager"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: I0814 03:24:53.929952  138676 state_mem.go:36] "Initialized new in-memory state store"
Aug 14 03:24:53 5net-k8s-master-1 kubelet[138676]: E0814 03:24:53.932541  138676 run.go:74] "command failed" err="failed to run Kubelet: bad --node-ip "<HIDDEN but DUAL STACK NODE IP's>": dual-stack not supported in this configuration"
`apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
networking:
dnsDomain: cluster.local
podSubnet: <IP_ADDRESS>/16,fc00:db8:42:0::/56
serviceSubnet: <IP_ADDRESS>/16,fc00:db8:42:1::/112
clusterName: 5Net
controllerManager:
extraArgs:
cloud-provider: "external"
apiServer:
extraArgs:
cloud-provider: "external"
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: <IP_ADDRESS>
bindPort: 6443
nodeRegistration:
kubeletExtraArgs:
node-ip: <HIDDEN but DUAL STACK NODE IP's>
cloud-provider: "external"`

@MaysaMacedo Are you able to answer?

@noelashford Looks like you might be missing setting --feature-gates=CloudDualStackNodeIPs=true in kubelet and external cloud provider. That is part of the requirements to have node-ip working with dual-stack https://kubernetes.io/docs/concepts/services-networking/dual-stack/#configure-ipv4-ipv6-dual-stack

/close

Confirmed - I added this to my config.

apiVersion: kubelet.config.k8s.io/v1beta1
cgroupDriver: systemd
featureGates:
CloudDualStackNodeIPs: true
kind: KubeletConfiguration
Worked fine


chore: Fix semantic release

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


iTop.iTopDataRecovery version <IP_ADDRESS>

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

[x] Does your manifest conform to the 1.0 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

You will need to update the file names to match the new PackageIdentifier and to fall under /manifests/i/iTop/iTopDataRecovery/<IP_ADDRESS>

done

cool


Batch merge link points to upstream prow

The batch merge link on https://origin-sq-status-ci.svc.ci.openshift.org/#/queue points to https://prow.k8s.io/?type=batch
@kargakis @stevekuznetsov I don't know what repo to open these against.

@deads2k either this one or openshift/test-infra

Fix merged in https://github.com/kubernetes/test-infra/pull/3703 - will close once we redeploy our SQ instance with it.

@kargakis do we want to rebase ?

If there are no PRs in the queue, we could do it. Otherwise, I would wait for https://github.com/kubernetes/test-infra/pull/3735 and your PR to land so we can drop the patches we carry.

our PR to land

for bot name?

Yeah, that's the other patch, right? Although I am also patching the approve no-issue thingy so we still need an additional fix to drop that one too... sigh. I guess we can redeploy but we need a card to drop the patches, I don't want to accumulate any tech-debt.

Fixed


Automatic deallocation by FinalizationRegistry does not work for fully synchronous code

Summary
This is neither a feature request nor a bug report. It is intended to share my experience with the developers of wasm-bindgen and its users.
FinalizationRegistry is an API that calls a callback when an object is deallocated.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry

wasm-bindgen has an opt-in feature to automatically deallocate WebAssembly memory using this API.

https://rustwasm.github.io/wasm-bindgen/reference/weak-references.html

FinalizationRegistry is an effective way to automatically deallocate WebAssembly memory. However, it is not perfect.
Specifically, if you write code that is completely synchronous from the beginning to the end of your program, the automatic deallocation by FinalizationRegistry will not work. And it causes memory leaks.
How to reproduce
Repository: https://github.com/mizdra/repro-wasm-bindgen-weak-ref-memory-leak
src/lib.rs:
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
#[derive(Debug)]
pub struct MyBuffer {
    data: Vec<u8>,
}

#[wasm_bindgen]
impl MyBuffer {
    pub fn new(size: usize) -> MyBuffer {
        let data = vec![0; size];
        MyBuffer { data }
    }
    pub fn get_data(&self) -> Vec<u8> {
        self.data.clone()
    }
}

sync.mjs:
import { MyBuffer } from './wasm/my-buffer.js';

for (let i = 0; i < Number.MAX_SAFE_INTEGER; i++) {
  MyBuffer.new(0xFFFF);
}

$ cargo install --force<EMAIL_ADDRESS>$ rustup target add wasm32-unknown-unknown
$ cargo build --release --target wasm32-unknown-unknown
$ wasm-bindgen --out-name my-buffer --target nodejs --out-dir wasm --weak-refs ./target/wasm32-unknown-unknown/release/my_buffer.wasm
$ npm i
$ node --wasm-max-mem-pages=3000 sync.mjs
wasm://wasm/00012936:1

RuntimeError: unreachable
    at __rg_oom (wasm://wasm/00012936:wasm-function[38]:0x37ad)
    at __rust_alloc_error_handler (wasm://wasm/00012936:wasm-function[54]:0x38e8)
    at alloc::alloc::handle_alloc_error::hcc94dbd37c0a15ab (wasm://wasm/00012936:wasm-function[59]:0x3925)
    at mybuffer_new (wasm://wasm/00012936:wasm-function[23]:0x341d)
    at MyBuffer.new (/Users/mizdra/src/github.com/mizdra/repro-wasm-bindgen-weak-ref-memory-leak/wasm/my-buffer.js:69:26)
    at file:///Users/mizdra/src/github.com/mizdra/repro-wasm-bindgen-weak-ref-memory-leak/sync.mjs:4:15
    at ModuleJob.run (node:internal/modules/esm/module_job:218:25)
    at async ModuleLoader.import (node:internal/modules/esm/loader:329:24)
    at async loadESM (node:internal/process/esm_loader:28:7)
    at async handleMainPromise (node:internal/modules/run_main:113:12)

Node.js v21.4.0

What happened?
This behavior is due to the FinalizationRegistry cleanup callback being called after the synchronous execution has completed.
For clarity, here is a simpler code.
minimum-repro/sync.mjs:
const registry = new FinalizationRegistry((i) => {
  console.log(`[i=${i}] cleanup callback is called.`);
});
class Foo {
  constructor(i) {
    console.log(`[i=${i}] Foo's constructor is called.`);
    registry.register(this, i);
  }
}
for (let i = 0; i < 3; i++) {
  new Foo(i);
  global.gc();
}

minimum-repro/async.mjs:
import { setTimeout } from 'timers/promises';

const registry = new FinalizationRegistry((i) => {
  console.log(`[i=${i}] cleanup callback is called.`);
});
class Foo {
  constructor(i) {
    console.log(`[i=${i}] Foo's constructor is called.`);
    registry.register(this, i);
  }
}
for (let i = 0; i < 3; i++) {
  new Foo(i);
  global.gc();
  await setTimeout(0);
}

$ node --expose-gc minimum-repro/sync.mjs
[i=0] Foo's constructor is called.
[i=1] Foo's constructor is called.
[i=2] Foo's constructor is called.
[i=2] cleanup callback is called.
[i=1] cleanup callback is called.
[i=0] cleanup callback is called.
$ node --expose-gc minimum-repro/async.mjs
[i=0] Foo's constructor is called.
[i=0] cleanup callback is called.
[i=1] Foo's constructor is called.
[i=1] cleanup callback is called.
[i=2] Foo's constructor is called.
[i=2] cleanup callback is called.

Calling global.gc() causes the Foo class to be garbage-collected. However, the cleanup callback is not called at that moment; the cleanup callback is called after the synchronous execution has completed. If the synchronous execution is interrupted in a loop, as in async.mjs, cleanup callback is called in the loop. However, if the synchronous execution is not interrupted in the loop, as in sync.mjs, cleanup callback is not called in the loop.
In wasm-bindgen, WebAssembly memory is deallocated in the cleanup callback. Therefore, if you write fully synchronous code like sync.mjs, the cleanup callback is not called and memory is not deallocated. And it causes memory leaks.
Why is cleanup callback called after synchronous execution?
This is based on the ECMAScript specification. The cleanup callback does not interrupt the synchronous execution.
https://262.ecma-international.org/14.0/?_gl=1*9k4t1i*_ga*MTY4NzY3NTcxOC4xNzEyMzEwNDI5*_ga_TDCK4DWEPP*MTcxMjMxMDQyOC4xLjAuMTcxMjMxMDQyOC4wLjAuMA..#sec-weakref-invariants

Neither of these actions (ClearKeptObjects or CleanupFinalizationRegistry) may interrupt synchronous ECMAScript execution. Because hosts may assemble longer, synchronous ECMAScript execution runs, this specification defers the scheduling of ClearKeptObjects and CleanupFinalizationRegistry to the host environment.

V8's test cases also support this.

https://github.com/v8/v8/blob/e7a5d434638a43d6985bedd80fa88f392d8ba02c/test/mjsunit/harmony/weakrefs/cleanup-is-not-a-microtask.js

Probably, other major JavaScript engines have the same behavior.
Workaround
There are several workarounds.
1. call the .free() method
You can free memory manually using the .free() method.
import { MyBuffer } from './wasm/my-buffer.js';

for (let i = 0; i < Number.MAX_SAFE_INTEGER; i++) {
  const buffer = MyBuffer.new(0xFFFF);
  buffer.free(); // Add this line
  global.gc();
}

2. Call other asynchronous APIs in the loop
Synchronous execution is interrupted in the loop so that cleanup callback is called.
import { MyBuffer } from './wasm/my-buffer.js';
import { setTimeout } from 'timers/promises';

for (let i = 0; i < Number.MAX_SAFE_INTEGER; i++) {
  MyBuffer.new(0xFFFF);
  await setTimeout(0); // Add this line
  global.gc();
}

Background of writing this document
I first recognized this behavior when I tried to implement automatic deallocation in @resvg/resvg-wasm (https://github.com/yisibl/resvg-js/pull/318#issuecomment-2020979793). To make sure that automatic deallocation worked, I wrote code that repeatedly called the @resvg/resvg-wasm API using a loop (https://github.com/yisibl/resvg-js/pull/318#issuecomment-2020641890). That code is completely synchronous. Therefore, it caused a memory leak.
It may be rare to write code that is completely synchronous. In addition, in my example, the code was not production code, but experimental code to check for memory leaks. However that doesn't mean it can't happen in production code. The users of wasm-bindgen may encounter this problem on rare occasions and spend a lot of time trying to figure out the cause. So I have written this document to help them.
Outro
If there is any input from maintainers on this behavior, I would like to know.

Your survey is impressive, thanks so much for such a thorough test.

Further literature review suggests that a solution to this problem was attempted by FinalizationRegistry.prototype.cleanupSome proposal.

https://github.com/tc39/proposal-cleanup-some

However, that proposal was withdrawn on 2023/9.

https://github.com/tc39/proposals/commit/9b300a2f9d5b9f8fd0f6725aa112a3641cad8335
https://github.com/tc39/notes/blob/main/meetings/2023-09/september-28.md#withdrawing-finalization-registry-cleanupsome

According to the meeting logs, it seems that it has been decided to attempt to resolve this problem with WebAssembly's JavaScript Promise Integration (JSPI).

https://github.com/WebAssembly/js-promise-integration

Perhaps this issue will be resolved in #3633?

Interesting, if the conclusion is correct, which would seem intuitive to me (its called GC after all), it seems to me that there isn't really anything wasm-bindgen can do, right?
Its not clear to me yet if and how the JS Promise integration will be implemented, especially because its just a stopgap for the context switching proposal and isn't even stable yet (and only implemented in Chrome I believe).

Thank you for your views. My gut feeling is also that there is nothing wasm-bindgen can do.

Its not clear to me yet if and how the JS Promise integration will be implemented, especially because its just a stopgap for the context switching proposal and isn't even stable yet (and only implemented in Chrome I believe).

Thanks. That answer is good enough for now. I will check after the JSPI integration is implemented to see what it is and if it can solve this problem.

It is not always feasible to use async/await, our code uses some synchronous parts and we currently inject a few awaits backed with setTimeout to let the event loop (and therefor the deallocator) some breathing room. This isn't ideal but it's the only thing we currently can do.
What can be done to help fix or reduce the impact of this issue? Appreciate it.

What can be done to help fix or reduce the impact of this issue?

The conclusion was that there isn't anything that can really be done here from wasm-bindgens side.
Let me know if this was unclear somehow or if you have an idea what could be done.
I'm gonna go ahead and close the issue as this isn't really actionable.
Though this issue has a lot of valuable information in it, I'm sure we will get back to it one day when there is something we can actually do about this.

Would like to understand whose side something can be done from then if not wasm-bindgen and where the issue could be resolved before closing. Appreciated. For us it causes memory to be over 10 times what is necessary. If you have already closed then same question.

I believe this has been sufficiently answered in the OP (see the "Workaround" section) and follow-up posts.
What part is unclear?


Login/Logout functionality

We're having trouble with travis, but this branch works fine on my local machine so I'm going to go ahead with the merge for now.


[FormRecognizer] Fix: client can now parse results with null fields

Fixes #11821.
Added a live test to validate the behavior. Changelog updated and recordings added as well.

/azp run net - formrecognizer - tests


chore: don't run eslint on test.watch

🧰  Changes

[x] Run Jest in isolation in the test.watch script.

This PR was released!
🚀 Changes included in v6.25.0-next.1

This PR was released!
🚀 Changes included in v6.25.0

This PR was released!
🚀 Changes included in v6.25.0


(FACT-1042) Allow time for EC2 to respond

Without this change, EC2 will not always respond to the metadata request
before the http session times out. Extend the session timeout to 5
seconds, and add a connection timeout of 200 ms to ensure Facter doesn't
spend too long waiting on the http request if not in EC2. Update the
error and add more detailed trace info in case EC2 is very slow to
respond.
Also extend the GCE session timeout to 5 seconds, and set a connection
timeout of 1 second to avoid long waits if GCE is unavailable.

I did a test on EC2 last night with something like this. Trying again, and checking GCE, using a new build.

Other than above, :+1:


Packaging Github actions runner

Project description
Github actions is a CI/CD service integrated with Github, and has an ability to use self-hosted runners. I currently have a dedicated Ubuntu VM to run the runner, but I'd love to migrate it to NixOS.
Metadata

homepage URL: https://github.com/features/actions
source URL: https://github.com/actions/runner
license: mit
platforms: linux, darwin (Upstream officially supports Mac, Linux, and Win)

A good start would be packaging the binary release: https://github.com/actions/runner/releases

A good start would be packaging the binary release: https://github.com/actions/runner/releases

Done! 🎉 #116775


TypeError: Cannot read property 'encode' of undefined

When using<EMAIL_ADDRESS>I get the following error:
TypeError: Cannot read property 'encode' of undefined
    at Redis.Adapter.broadcast (/var/www/test/node_modules/socket.io-redis/node_modules/socket.io-adapter/index.js:136:15)
    at Redis.broadcast (/var/www/test/node_modules/socket.io-redis/index.js:414:33)
    at Namespace.emit (/var/www/test/node_modules/socket.io/lib/namespace.js:222:18)
    at EventEmitter.emitter.on.data (/var/www/test/private/test.js:121:16)
    at emitOne (events.js:96:13)
    at EventEmitter.emit (events.js:191:7)
    at Test.handleResponse (/var/www/test/private/test.js:286:17)
    at EventRequest.request.on (/var/www/test/private/test.js:198:9)
    at emitOne (events.js:96:13)
    at EventRequest.emit (events.js:191:7)

My code:
const socketio = require('socket.io');
const express = require('express');

const app = express();
const server = require('http').Server(app);

const io = socketio(server);
const redis = require('socket.io-redis');

server.listen(3002);

io.adapter(redis({ host: 'localhost', port: 6379 }));
io.on('connection', (socket) =>{
	const room = 'test';

	socket.join(room);

	socket.on('chat message', () => {
		console.log("message");
		io.to(room).emit('chat message', 'hi');  //This is where the error starts.
	});
});

I fixed it changing this line:
this.encoder = nsp.server.encoder;
with:
this.encoder = nsp.adapter.encoder;
in socket.io-redis/node_modules/socket.io-adapter/index.js
But I really don't think I should be doing that.
Info:
OS: Ubuntu 16.04 64-bit
├─┬<EMAIL_ADDRESS>│ └──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>

I'm having the same issue

As noted in the release note<EMAIL_ADDRESS>is not compatible with<EMAIL_ADDRESS>Related: https://github.com/socketio/socket.io-adapter/pull/47

@darrachequesne Thanks, my bad for not reading the release notes.
In any case I would recommend showing a warning if socket.io version is lower than 2.

I have this issue with<EMAIL_ADDRESS>@marcosc90 's solution helped, but it's not acceptable to make such changes

but it's not acceptable to make such changes

May I ask what you do mean?

I meant to make changes inside dependent node_modules sources, nevermind.
Rolling back to<EMAIL_ADDRESS>(from 5.0.1) did the trick.

Iam rolling back to<EMAIL_ADDRESS>likve @olegmdev mentioned, but not work

{   "name": "newpubsub",   "version": "0.0.0",   "private": true,   "scripts": {     "start": "NODE_ENV=production node ./bin/www",     "start:dev": "NODE_ENV=development node ./bin/www"   },   "dependencies": {     "bcrypt": "^1.0.3",     "body-parser": "~1.14.1",     "connect-redis": "^3.0.0",     "cookie-parser": "~1.4.0",     "debug": "~2.2.0",     "ejs": "~2.3.1",     "express": "~4.13.3",     "express-session": "^1.11.1",     "express-useragent": "^1.0.8",     "faker": "^4.1.0",     "hiredis": "^0.4.1",     "lodash": "^4.17.4",     "md5": "^2.2.1",     "moment": "^2.17.1",     "morgan": "~1.6.1",     "mysql": "mysqljs/mysql",     "redis": "^2.1.0",     "request": "^2.81.0",     "serve-favicon": "~2.3.0",     "session.socket.io": "^0.2.0",     "socket.io": "^1.3.5",     "socket.io-emitter": "^3.1.1",     "socket.io-express-session": "^0.1.3",     "socket.io-redis": "5.0.0",     "sticky-session": "^1.0.1",     "uniqid": "^4.1.1"   },   "devDependencies": {     "socket-stress-test": "^0.1.0",     "socket.io-client": "^2.0.3"   } }

Worked only when i update socket.io to 2.x

@felipemarques please see https://github.com/socketio/socket.io-redis/releases/tag/5.0.0.

I'm having this problem, I'm using socket.io 2.1.1 and socket.io-redis 5.2.0

I used patch-package to make the change @marcosc90 suggested, and it works. Is this a bug? Can it be fixed?
I'm working on a legacy Sails 0.12 app and it is not feasible to upgrade at this time so this is the solution I will have to go with.


Implement Conduit endpoints

This PR implements the six new Helix endpoints for conduits.
I want to know your opinion on the conduit transport converter. I wanted to use this hacky discriminated union since it feels the nicest to use. But the JsonConverter that comes with it isn't the nicest. I know that in .NET 7 we got JsonDerivedType but since this library compiles to .NET 6 i can't use that.
Updating it should be as simple as adding this
+[JsonPolymorphic(TypeDiscriminatorPropertyName = "method")]
+[JsonDerivedType(typeof(WebSocket), typeDiscriminator: "websocket")]
+[JsonDerivedType(typeof(Webhook), typeDiscriminator: "webhook")]
-[JsonConverter(typeof(ConduitTransportConverter))]

I want to know your opinion on the conduit transport converter. I wanted to use this hacky discriminated union since it feels the nicest to use. But the JsonConverter that comes with it isn't the nicest. I know that in .NET 7 we got JsonDerivedType but since this library compiles to .NET 6 i can't use that.

Built in json has a lot of problems because of net6 support, I'm a big fan of the net7+ approach, and I'd be happy to switch to it once support is dropped for net6. Thanks for bringing this up 👍

Works as expected. Thank you for your contribution ❤


Calendar 'day selected' circle gets put on the day before

This is a (multiple allowed):

[x] bug

[ ] enhancement

[ ] feature-discussion (RFC)

Framework7 Version: Framework7 1.5.4

Platform and Target: IOS

What you did
I just selected a day on the calendar. And it puts the blue circle on the day before. Its doing it on your examples too.
https://framework7.io/docs/calendar.html
Im on a MacOS Sierra
Version 10.12.3

Same as #1413


What is the license of this repository?

I want to practice programming with Javascript and modify some code in this project (educational purpose), but I don't know what the license is. I think this repository needs a license.

@samtron1412 although I am not the owner (or related to) the development of this project, since the project's source is open to pull requests and the author himself promotes bug fixes and tweaks you may modify a copy of this project as long as you don't violate the general fair usage policy.
Also you have mentioned educational purpose. Feel free to practice on this or any other project on github 😄

I don't know which license should I choose. Anyway this repository is a bad example to learn from. Here is a better example https://github.com/TargetProcess/tauCharts


Evaluate options in regards to dealing with bitbake patch files

Currently, meta-osselot does not have a mechanism in place for dealing with patch files in bitbake layers

As an intermediate step, we are now dumping the patches to the osselot deploy directory. However, the next step is still subject of discussion.
Is it enough to have the patch files added without a separate license and copyright screening?
If not, one option could be to use the Use-Case 3 as described in https://www.osselot.org/index.php?s=presentations to identify changes applied to files by using file checksums.

Currently, we have two mechanisms in place that help dealing with source code differences between osselot curated data and openembedded source code (including patches):

OSSELOT_IGNORE_SOURCE_GLOBS variable: This variable can be used to ignore any file (globs) which are irrelevant in regards to openembbeded license compliance. This could be test files or pre-run configure steps from release packages (see https://github.com/Open-Source-Compliance/package-analysis/issues/67).
OSSELOT_HASH_EQUIVALENCE variable: This variable can be used to define equivalence (from a curation perspective) between one or more file versions. As openembedded patches usually do not add copyright holders or other license information (do validate this beforehand), this variable can be used to signal curation equivalence in these cases.

However, these two mechanisms currently do not cover cases where patches add additional, or change curation relevant data. I am yet to encounter a relevant case, but if this happens we need to deal with this. One option could be to add patches to the osselot-package-analysis-native.bb recipe, however I am not sure how well this would scale.


Track pending spends and change in pcli

This PR implements pending-spend and pending-change tracking in pcli, along the way cleaning up a couple APIs in the crypto crate. High level changes:

Note::new is now Note::from_parts
Note::generate is a new function to create a freshly random note given a destination address and a typed value (this should be preferred over Note::from_parts where possible, because it is infallible since addresses are always well-formed)
A new method on the transaction builder allows adding an output while getting the internally-generated note back as a clone. This is useful for implementing change-tracking, because when we add change outputs, we need to keep track of those notes.
Sets of pending spends and pending change have been added to the wallet state, with backwards-compatible serialization that fills in the empty set if they are not present
Pending spends and change are pruned based on their timeout whenever they are read from disk, and additionally after every wallet sync:

pending spends return to the unspent set (the transaction failed, so we should be allowed to try again with those inputs)
pending change is dropped on the floor (the outputs of the transaction never happened, so we should forget them)

Every pending spend or change is associated with an expiry time set 60 seconds in the future from when the transaction which generated those spends/change was created. The same timestamp for expiry is used for every pending piece of any given transaction, which means that both the pending spend and pending change from a transaction will drop from view atomically in the case of a transaction failure, preventing weird transient observations in pcli balance
Internally, to implement the balance display functionality of this PR, a new UnspentNote enum has been added, which wraps a &Note with a descriptor of whether it is Ready, PendingSpend, or PendingChange. This type is used in the output of the various functions that ask for lists of notes in the wallet, and because it is only holding a reference to a note, this decreases cloning. Only Ready notes are used when forming transactions, because even though we can predict the change for a pending transaction, we can't predict its position in the note commitment tree, which means we can't spend change until the transaction clears.
pcli balance has been updated to display an additional "Pending" column (which only appears when there is anything to show) that gives pending transactions in the format "+N (change) / -M (spent)"

Per discussion with @hdevalence, there's no reasonable performance justification for normalizing the timeouts by having a separate set for them, since there will at any given time be maybe 2 transactions in flight. This means we can inline the timeouts into the sets of pending notes and scan those whole sets during pruning, which means there are fewer invariants to maintain. This should be fixed before merging this PR.

Per discussion with @hdevalence, there's no reasonable performance justification for normalizing the timeouts by having a separate set for them, since there will at any given time be maybe 2 transactions in flight. This means we can inline the timeouts into the sets of pending notes and scan those whole sets during pruning, which means there are fewer invariants to maintain. This should be fixed before merging this PR.

This has now been resolved, in 1fd9391.

Did an optimistic rollup, let's see how well this works on a new "Euporie" testnet.


Improve type checking

generatePath function in React Router library supports variable names check, comparing ones from the route string and ones from the variables object.
Types: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react-router/index.d.ts#L146-L166
It would be great to implement similar type checking in this library.
I tried to do that myself and found, that the approach above works good in case of fixed prefix and suffix values. Otherwise, it is hard to handle edge cases like these:

prefix and suffix are empty strings (passed explicitly or passed interpolation options object is empty)

Either preffix or suffix is passed (the other becomes an empty string by default, see docs or implementation)

prefix and/or suffix are set in configureHydrateText and then overridden in the result function:
const routeWithCustomInterpolationOptions = "/users/(userId)";

const hydrateRoute = configureHydrateText({ prefix: ":" });

// '/users/3'
console.log(
  hydrateRoute(
    routeWithCustomInterpolationOptions,
    { userId: 3 },
    {
      prefix: "(",
      suffix: ")",
    },
  ),
);

Definition of done:

Functionality haven't suffered
Type checking has improved
Linters checks and tests are passing
Code coverage is 100%

It would be great to have some reproducible example on TypeScript Playground, so I can experiment with it and not getting myself into the context (that takes much more time). Promise nothing, but I can try to understand what you want to achieve and find the solution.

Thanks for a detailed playground, it is really helpful!
I had a quick look and from what I understood, you need to create a "parser" on type-level that operates on string type literals. For that, you can inspect into template literal types.
Unfortunately, I can't say that it is ezpz work. It is a huge epic, but it is doable. Here, for example, a simple parser to extract the name inside the curly block:
type ParseCurlyBlock<T> = T extends `{${infer N}}` ? N : never
type R = ParseCurlyBlock<'{username}'> // R = "username"

Afterwards, you can combine these parsers together with recursive types to get a list of all variables inside your template and collect it as a union of possible variables that reflects the state of "what variables can I pass in".
One drawback that I already see is that you can't configure them in runtime as you do with prefix or suffix, because you need to know what is the prefix and suffix at compile time. You can overcome that with constant values and it seems like it will work.
I will have some spare time at these weekends and could take a closer look and implement some basic implementation of typed templates. I hope this implementation will give you some insights on how to go further with it. Until then, please, make yourself comfortable with template literal types because you really need this in order to achieve what you want (unless I misunderstood something).

Thanks for a detailed playground, it is really helpful!
I had a quick look and from what I understood, you need to create a "parser" on type-level that operates on string type literals. For that, you can inspect into template literal types.
Unfortunately, I can't say that it is ezpz work. It is a huge epic, but it is doable. Here, for example, a simple parser to extract the name inside the curly block:
type ParseCurlyBlock<T> = T extends `{${infer N}}` ? N : never
type R = ParseCurlyBlock<'{username}'> // R = "username"

Afterwards, you can combine these parsers together with recursive types to get a list of all variables inside your template and collect it as a union of possible variables that reflects the state of "what variables can I pass in".
One drawback that I already see is that you can't configure them in runtime as you do with prefix or suffix, because you need to know what is the prefix and suffix at compile time. You can overcome that with constant values and it seems like it will work.
I will have some spare time at these weekends and could take a closer look and implement some basic implementation of typed templates. I hope this implementation will give you some insights on how to go further with it. Until then, please, make yourself comfortable with template literal types because you really need this in order to achieve what you want (unless I misunderstood something).

Thank you! I'm aware of template literal types, and they are used in generatePath type definition (see the very beginning of this issue's message). The problem is in the dynamic nature of the markers (prefix/suffix).

Unless you don't parametrize the type to hold prefix and suffix type literals 😉
type Parser<P extends string, S extends string, I> = I extends `${P}${infer N}${S}` ? N : never

type R0 = Parser<"{", "}", "{username}">
type R1 = Parser<"(", ")", "(username)">

What is blocking you from specifying your prefix and suffix as type parameters and Typescript will infer automatically from usage? 🙂

JFYI, I've already solved the task, but I'm wondering if you got the idea and did it yourself 😉
I'll post a solution tomorrow on my Telegram channel with step-by-step explanation. It is a good one task indeed.

@ghaiklor, yes, I did basically the same, but there are problems with the edge cases I mentioned in issue' message.
I'll try to create my implementation in an hour and share it here.

That's my best try at the moment. It works for very simple cases, but fails in a little more complex ones (especially, with prefix/suffix as empty strings).
type ValueType = string | number | boolean;

type Variables = Record<string, ValueType>;

interface InterpolationOptions<Prefix extends string = string, Suffix extends string = string> {
  prefix?: Prefix;
  suffix?: Suffix;
}

type GetVariables<
  Text extends string,
  Prefix extends string,
  Suffix extends string
> = string extends Text
  ? { [variable in string]?: ValueType }
  : Text extends `${infer _Start}${Prefix}${infer Variable}${Suffix}${infer Rest}`
    ? { [variable in Variable]: ValueType } & GetVariables<Rest, Prefix, Suffix>
    : {};

interface HydrateText {
  <
    Text extends string = string,
    Prefix extends string = "{",
    Suffix extends string = "}",
  >(
    text: Text,
    variables?: GetVariables<Text, Prefix, Suffix>,
    interpolationOptions?: InterpolationOptions<Prefix, Suffix>,
  ): string;
}

interface ConfigureHydrateText {
  <
    _Prefix extends string = "{",
    _Suffix extends string = "}"
  >(interpolationOptions?: InterpolationOptions<_Prefix, _Suffix>): <
    Text extends string = string,
    Suffix extends string = _Suffix,
    Prefix extends string = _Prefix,
  >(
    text: Text,
    variables?: GetVariables<Text, Prefix, Suffix>,
    interpolationOptions?: InterpolationOptions<Prefix, Suffix>,
  ) => string;
}

const DEFAULT_INTERPOLATION_OPTIONS: InterpolationOptions<"{", "}"> = {
  prefix: "{",
  suffix: "}",
};

const EMPTY_INTERPOLATION_OPTIONS: InterpolationOptions<"", ""> = {
  prefix: "",
  suffix: "",
};

const hydrateText: HydrateText = (
  text,
  variables,
  interpolationOptions,
) => {
  const { prefix, suffix } = interpolationOptions
    ? {
        ...EMPTY_INTERPOLATION_OPTIONS,
        ...interpolationOptions,
      }
    : DEFAULT_INTERPOLATION_OPTIONS;

  const resultText = Object.entries(variables ?? {}).reduce(
    (resultText, [name, value]) => {
      const regExpSource = escapeRegExp(`${prefix}${name}${suffix}`);
      const regExp = new RegExp(regExpSource, "g");

      return resultText.replace(regExp, String(value));
    },
    text as string,
  );

  return resultText;
};

const configureHydrateText: ConfigureHydrateText =
  interpolationOptionsFromConfigurer =>
  (text, variables, interpolationOptionsFromInnerFunction) => {
    const interpolationOptions =
      interpolationOptionsFromInnerFunction ??
      interpolationOptionsFromConfigurer;

    /*
      `interpolationOptions` throws an error:
      Argument of type 'InterpolationOptions<_Prefix, _Suffix> | InterpolationOptions<Prefix, Suffix> | undefined' is not assignable to parameter of type 'InterpolationOptions<Prefix, Suffix> | undefined'.
    */
    return hydrateText(text, variables, interpolationOptions);
  };

Playground.

prefix and suffix are empty strings (passed explicitly or passed interpolation options object is empty)
These cases need to be handled explicitly via P extends "" ? <P is empty> : <P is not empty>.

Either preffix or suffix is passed (the other becomes an empty string by default, see docs or implementation)
Why an empty string? But, anyway, if so, see ☝🏻 I'd make some char by default, not the empty string.

prefix and/or suffix are set in configureHydrateText and then overridden in the result function:
You can try to pack the P and S types in resulting function from configureHydrateText and override them later via type parameters.

Playground