bulk child trie deletion

This Pr is built upon #4827.
It implements bulk child deletion: instead of deleting every element of a child trie one by one with kill_child_storage, the deletion is done as a whole.
This means:

only a single item is stored when deleting a child trie (the identifier of the child trie).
A single change trie item is produce for the whole child trie deletion, this is done in a breaking way but I do not think change trie is currently use. I do not know if the item should appear in the digest too. cc @svyatonik
on pruning deletion is done by using the key prefix used by rocksdb to avoid key collision. This Pr is needed for this : https://github.com/paritytech/parity-common/pull/360
pruning journal an noncanonical journal need to store this change, and a different format is use. This change of format means that it may be possible to use the first approach of #4827 to gain a bit of space (pushing the rocksdb prefix to key value later in order to reduce journal key redundancy by managing changes per child trie). cc @arkpar

This PR depending on #4827 first, I put its status in progress, but it should be usable for contract testing cc @Robbepop @pepyakin .

But what does this actually achieve?
There seem to be a lot of complicated code introduced all over the place. Some abstractions start leaking. Pruning, change tries  and the low level key-value database should not have a concept of a "child". It would be a totally different architecture. Either we move subtree management entirely to the bottom layer, or keep it out of it entirely.

It implements bulk child deletion: instead of deleting every element of a child trie one by one with kill_child_storage, the deletion is done as a whole.

What's wrong with the current method and is it the new implementation really worth the additional complexity?

Thanks, for looking at it.

But what does this actually achieve?

With a db like rocksdb which manage its keys and allow iteration on it, the target was pretty clear: delete a range of keys instead of deleting all trie contents.
With parity-db, this is not doable (and I think the gain from not having key ordering/storage is better), so the goods for this approach are:

streamed child trie deletion (no need to put the whole child trie in memory).
no deathrow management and smaller journals.
fast block processing (for contract rent), with no drawback when runing archive node.

The bads are:

child trie btreemap everywhere
no recording of every child trie key in change trie (not sure it is a bad).

It is clearly different, not sure if it is worth the complexity.
Note that I struggle a bit yesterday to bring trie iteration at db level without messing with the design, but next I would probably just need to put the child trie root with the keyspace in the journals (and some usual debugging) in order to make the test pass with parity-db.

There seem to be a lot of complicated code introduced all over the place. Some abstractions start leaking. Pruning, change tries and the low level key-value database should not have a concept of a "child". It would be a totally different architecture. Either we move subtree management entirely to the bottom layer, or keep it out of it entirely.

Yes that was what I had in mind, long term, bringing child info to the db (I guess this is bottom layer).
I rollback the journalling change of #4827, but since this pr requires this change it is indeed half baked, it would be more consistent if I would restore #4827 unprefixed journals (but at this point we are considering dropping it iiuc).
So yes, it splits management per child trie (#4827) to allow operation on child trie at the db level.

What's wrong with the current method and is it the new implementation really worth the additional complexity?

The new implementation is only for parity db and subdb, there is still the old active on rocksdb, but if the target is to drop rocksdb for trie state it does not really matter.
As mentioned above, I am not sure if it is worth it. I wanted to bring some as efficient as possible deletion (only request was from contract side, but it was the gist of the rent design), but at the same time I agree on the code complexity point.

With a db like rocksdb which manage its keys and allow iteration on it, the target was pretty clear: delete a range of keys instead of deleting all trie contents.

Ah, I see now that it uses delete_prefix.
It it really not clear at this point what storage scheme for subtrees will be more efficient. We have two approaches here:

Separate all subtrees in the storage by using unique keys for each subtree. This allows for faster removal of subtrees. But you have common subtree data duplicated in the database.

Use reference counting. This eliminates duplicates but requires walking the trie when deleting.

It seems to me that you'd want fast deletion when you have lots of subtrees in the system. On the other hand when you have lot of subtrees, you'd also wan't them to share the same data and not blow up the state (as it happens in parity-ethereum right now). I'm inclined to think that storage saving is more important here. Also, there are some potential optimizations in parity-db to speed up iterating the trie, which may bring down deletion time difference somewhat.

After weekend, I got a clearer opinion about this.
I guess the rocksdb delete by prefix is nice to have, but shouldn't be the main pros in the story.
I think parity-db will perform well enough by parsing the trie.
And by extension rc removal by parsing the trie too.
This is specific to the way the backend db work, and thus I see the operation required at db level.
The main thing that should be avoided by having a specific child trie deletion mechanism is the bloat of an unbounded number of key values removal, and the specific scenario I did not have in mind is the parachain state transition proof verification: the current child trie deletion will create a huge proof of individual key value removal when what is really interesting is to know that the whole child trie got removed.
It is the same for child trie, I did put in cons the fact that it doesn't register every child trie key removal, but I think it is definitively a big pro.
Does it really require reorganizing splitting the data payload by child trie, maybe not, we could have same per child trie management by child trie, send a transaction payload that do not split child trie state nodes, but got an additional list of BulkTrieDeletion: so instead of splitting all the payload we only split for the optional child deletion info. That would be a way to remove #4827 from this PR.
This PR would still need additional journal info, but we could use a new journal containing child trie deletion without touching the existing ones.
That is a possibility.

the current child trie deletion will create a huge proof of individual key value removal when what is really interesting is to know that the whole child trie got removed.

As far as I understand there's no need to include deleted tries in the parachain block proof  anyway. They don't really affect block validity. The runtime would not walk the trie to delete it, it would still call a host function (externality) for that. The host function to delete a trie on the parachain validator would simply assign an empty storage root, without bothering to actually delete anything.
@rphmeier could you please confirm that ^

Oh yes that could work indeed, no need to know what stuff was deleted, same goes for clear prefix and clear child prefix. That also could be a neat optimization of the proof in current execution proof, I will add that on TODO list (just need to delete up to the first node containing prefix and not register the other ones and in fact no need go through them if a new primitive is created in trie crate, for child trie kill it is even more straight forward indeed). Would also need to make sure the proof check don't try to access those values.

This makes me wish that partial key were stored in the parent branch so same optimization could be achievable at branch level (still doable if we know that deleted keys are direct descendant (0 length partial key) of a branch and we delete all the child in the bitmap, but it is probably rather small gain in this case), but it is starting to be late I am probably missing something here.

the current child trie deletion will create a huge proof of individual key value removal when what is really interesting is to know that the whole child trie got removed.

As far as I understand there's no need to include deleted tries in the parachain block proof anyway. They don't really affect block validity. The runtime would not walk the trie to delete it, it would still call a host function (externality) for that. The host function to delete a trie on the parachain validator would simply assign an empty storage root, without bothering to actually delete anything.
@rphmeier could you please confirm that ^

That sounds right. For any stateless client we only need to compute the main trie root as part of the validation function. So the approach of setting the child trie root to an empty root will work. In this case it would happen via an emulated host function within the parachain Wasm blob.  The full nodes which generate this proof and follow the chain that is approved by Polkadot would need to delete the child trie keys from their DB (actually, schedule them for deletion in the state pruning system)

converted to draft as this is still in progress.

I did start implementing the possibility to remove deletion from proof like describe in previous comment https://github.com/paritytech/substrate/compare/master...cheme:proof_backends .
The code is incomplete (no handle of child trie prefix deletion), and need many tests, but enough to formulate a few  intersting observation.
I end up with three kind of proof construction and two kind of proof verification, when with the bulk trie deletion apprach we would only consider not registering state change for performance, but proof will be fine by nature.

proof that do not need to trace deletion that are bellow a parent deletion, and therefore can produce shorter proof:

A first variant that do not process the transaction. (WithoutTransaction)

This should be the default choice unless we need to use the transactions (performance).
The implementation uses a different logic at Ext level and additional filtering in the overlay change (deleted child trie and deleted prefix).
On root calculation we simply calculate child trie root on a empty backend.
Note that for the prefix case, we are using a hack to insert the unitary changes lazilly. That does not achieve the real goal (on proof calculation we will register the access to the unitary element), and new trie primitive would be needed to only change the prefix node. Still the lazy nature of this hack benefits proofs that do not call storage root.

A second variant that process the transaction but do not record it. (WithTransaction)

The implementation simply switch of the proof node recording during prefixed key access and during child trie key access on delete prefix and delete child trie operation.
But internally for storage root calculation it needs to work the same way as the previous variant and suffer from the same issue on prefix case.
Both variant needs to be verified with a verifier that do not query child trie nodes on deletion, that is the same change in processsing than the first variant.
The drawback here is that an host function could not be use in the proof (except if we do not prove its value as it is currently doable with Core_execute_block behavior), changes_storage_root that compute the change trie root: getting those deletion out of the proof we cannot check change trie, that can be acceptable (note that with bulk deletion approach all will be fine because change trie do not expect those deletion entries).

proof that need to all deletion access (the existing code where we register all trie node touched):

Interesting for testing.
Interesting for proving a change trie. Should parachain verify their change trie in polkadot, that does not seem very obvious to me (at first I was thinking 'no use', but we also probably want to trust change trie).
So my gist out of this branch would be to say that it is doable to skip unneeded deleted content in proof, but rely on the assumption that change trie root will never be read during block processing.
Generally I find it better to have a special change for trie deletion (and by extension prefix deletion), and do not see disadvantage from having it (except complexity but if we got some specific proof generation process that is not true at all).
Benefit being lighter change trie and smaller memory footprint.
In both scenario (the linked branch and this PR approach), delete by prefix optimization would require additional tools (radix trie map and specific trie update operation, plus some reverse deathrow logic on non archive node (this would be needed for bulk child trie deletion too if we would allow using a child trie again after deletion)).

What is the status here?
@cheme You need feedback (if yes by whom)?
I am asking because we need this for #6357.

It is frozen, I need a feedback on wether we want to make child trie deletion (and by extension possibly prefix deletion) a first class citizen operation (currently we got insert key value and delete key in changesets).
I mean @rphmeier did reply that we would not include child trie key in proofs, so I started implemented that, but end up having complicated redundant code (state machine need to behave differently depending on context), and I still think that registering a specific child trie deletion operation is the easier and cleaner thing to do.
From a quick look at the changes, things that could be trimmed:

remove the InnerHash code, it is an unrelated optimisation
revert #4827 change (but we still need to add an additional child trie related info in client and organising by child trie makes thing a bit more evolutive (bringing child_info into the client db layer to allow different backend depending on child type)). This relates to discussion with @arkpar and what is referred too as a 'totally different architecture'.

Only way I see to avoid child info in client would be to create a new storage change that contains the bulk child deletion with either keyspace for rocksdb delete or fetched child trie node hash for parity db (but it would means we fetch child trie content at the time of block processing which makes things awkward with proof, and make use store useless journal of key when we only need root).
In this case that would be the db type that will be leaking in state machine, and we need to avoid fetching key when running a child deletion in statemachine for proof, so I think this idea is a bad move.

You outlined multiple possible solutions. You have problems deciding which to choose or why is it frozen? @rphmeier @arkpar can you comment which one you would prefer? I have to little knowledge on this topic to fully comprehend the answer.

I still think subtree deletion should not leak to state-db abstraction. It should really be backend agnostic, and not rely on prefixes or backend-provided identifiers. ParityDb uses reference-counting, so that same node could be shared by multiple tries. Saving a lot of space potentially. This does not play well with prefixed keys. The most generic way to implement it is to walk the tree and delete each individual key. Avoiding any special handling of this operation.  I'd suggest we don't do any DB-optimized deletion until it is shown to be a problem in practice.
Regarding proofs: Pausing recording during the deletion operation looks like the right thing to do. It is an optimization though. The validator would not access nodes when it validates deletion, so there's no need to provide them. I'm not sure I understand the issue with the change trie. How does skipping collecting proof for deletion affects the change trie root? As far as I know, change tries are only implemented for the main tree.
The long-term plan for ParityDB is to evolve to support trie-related operations. That would involve not just deletion, but also reference-counted insertion and iteration at the DB level. Until then we'd better keep it simple.

I feel too disconnected from this issue and the underlying DB roadmap to meaningfully comment. I believe the only place I have weighed in is here upon this request from @arkpar to clarify needs of some higher-level protocol. I defer to @arkpar for comments on the general approach.

The most generic way to implement it is to walk the tree and delete each individual key. Avoiding any special handling of this operation. I'd suggest we don't do any DB-optimized deletion until it is shown to be a problem in practice.

This is basically what we have now, right? You argue for keeping child trie deletion a O(n) operation?

ParityDb uses reference-counting, so that same node could be shared by multiple tries. Saving a lot of space potentially. This does not play well with prefixed keys.

The PR do not use prefixed keys in this case: for rocksdb the drop tree operation contains both child trie root and keyspace, then only in the case of rocksdb we try to apply a delete by prefix, parity-db still iterate on trie but only when pruning is called.
At first I thought it would be useless with parity-db, but the good things are:

only keeping trace of child root in the pruning journal.
in case of an archive node it means that we never iterate the child trie at all
smaller change trie (but a bit less info which in this case looks good to me)
Still those point are either optimization (I don't expect the size of the journal to be problematic), or breaking (change trie).

I'd suggest we don't do any DB-optimized deletion until it is shown to be a problem in practice

Using trie iteration for rocksdb (the same way as parity-db) seems doable, it will then only helps with the previous point.

Pausing recording during the deletion operation looks like the right thing to do.

That is what I did in https://github.com/paritytech/substrate/compare/master...cheme:proof_backends , it means that there is different mode of execution for state-machine, one that produce the transaction payload, and one that don't (IIRC I did add a third one for doing both (tx payload and proof not recording ), I believe it is what is needed for cumulus).
I don't remember too well why I was really not happy with this branch, maybe bringing the same logic for delete_with_prefix was a bit too much, or I just end up seeing the new assumption with change trie and other things as more complicated than having a delete trie change set operation.

I'm not sure I understand the issue with the change trie.

Change trie root can be calculated from a storage host function so if a parachain uses it in its runtime, it would need to include all deletion in its proof (so running the proof add all the child trie deletion in change trie).
In practice the value of the change trie root would probably be directly send to the header without being use internally by the state machine and not stored in the state trie, but it is still possible to do.
Similarily including individual child trie deletion in change trie means that if we want to proof child trie the proof will allways be way bigger (as is the child trie)

As far as I know, change tries are only implemented for the main tree.

I reply to quickly to previous point, change trie do also include child trie changes.

The long-term plan for ParityDB is to evolve to support trie-related operations. That would involve not just deletion, but also reference-counted insertion and iteration at the DB level. Until then we'd better keep it simple.

Sounds interesting, I will try to keep looking at parity-db branches and issues if there is.

You argue for keeping child trie deletion a O(n) operation?

Note that in the parity-db case we still got a O(n) trie parsing removal operation. Regarding the perf gains the trade off seems fine.
The issue I see, and I think is your concern regarding rent system, is that we iterate during block evaluation when with this PR we only need to iterate on pruning (which makes sure this O(n) cost only happen for canonical and is easier to separate or reschedule).

The issue I have with O(n) child trie removal is when contracts are evicted due to rent. If the contract has a huge amount of accumulated storage this eviction might be even too large for one block. We then need to implement something like lazy removal that can distribute this across multiple blocks.

The most generic way to implement it is to walk the tree and delete each individual key. Avoiding any special handling of this operation. I'd suggest we don't do any DB-optimized deletion until it is shown to be a problem in practice.

This is basically what we have now, right? You argue for keeping child trie deletion a O(n) operation?

It is O(n) best case anyway. The only difference is with rocksdb you get O(n) on commit, and not on the actual delete operation. Unless you keep each subtree in a separate database. We can indeed optimize to perform it in the background on the database level but I'd argue it is too early for that.

I think it does not make much sense for change tries to collect all removed keys for subtries. If it does, there's your O(n) right there and there's little sense to optimize it in the database, since you have to do iteration anyway.
There needs to be a single event recorded in the parent tree that would allow to track that all subtree data has been removed.

I see. Thanks for your answers. We need then cope with the fact that eviction is linear time operation.

From my current understanding if we cannot get around the fact that contract eviction is linear time we should at least make it possible to perform the clean-up lazily or defer it when possible or break it up into chunks of clean-up. Otherwise we end up having no way to clean-up contract instances that are especially big. Might this even be an attack vector in certain cases? Maybe there are other operations that need to be deferred or chunked up into pieces to be distributed among several blocks so that we could find a generalized solution to this problem?

closing because of inactivity.

There needs to be a single event recorded in the parent tree that would allow to track that all subtree data has been removed.

Using a specific child trie delete operation does inherently cover this point.
Closing note:
bulk child trie deletion seems still very relevant to me.
Though it is more in line with an architecture where each child trie are managed independently (which is needed for multiple other things and open perspective for other kind of state).
So in line with #4827 I feel like this will be needed in the future (I feel like the switching off deletion when registering proof is more complex than this approach).

Also for https://github.com/paritytech/substrate/issues/6594 having a single child trie delete info send back to the client makes the non O(1) cost only happen at pruning (or never for archive nodes), and it could be easier to implement this way.

Note, this PR lacks a correct trie root calculation in state-machine, code such as https://github.com/cheme/trie/blob/379bf92720e23b2465badd4739c7d2ba75115c06/trie-db/src/traverse.rs#L658 (old code please don't use), mainly have a detach branch from trie action (can be implemented in triedbmut too, but more involve).


[ui-v0.7.0] manifest and image

Signed-off-by: David Echelberger<EMAIL_ADDRESS>

Codecov Report

Merging #701 (a87af34) into main (e4f154e) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              main      #701   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          321       322    +1
  Lines        19700     19732   +32
=========================================
+ Hits         19700     19732   +32

Impacted Files
Coverage Δ

internal/contracts/manager.go
100.00% <0.00%> (ø)

internal/oapiffi/ffi2swagger.go
100.00% <0.00%> (ø)

...erver/route_get_contract_interface_name_version.go
100.00% <0.00%> (ø)

...rnal/apiserver/route_get_contract_api_interface.go
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e4f154e...a87af34. Read the comment docs.


WiFi adapters are not supported

Support of WiFi adapters (NdisMediumNative802_11) would be great to have low latency sockets on Windows.
I saw this is disabled by design right now (see https://github.com/microsoft/xdp-for-windows/blob/main/src/xdplwf/bind.c#L156):
if (AttachParameters->MiniportMediaType != NdisMedium802_3) {
    Status = NDIS_STATUS_UNSUPPORTED_MEDIA;
    goto Exit;
}

We can allow wireless media, but wireless NICs usually depend on a Windows built-in LWF for functionality. We need to determine whether it's OK for XDP to bind below that, or whether it should bind itself above the wifi LWF. The latter case may require spinning up a different XDP driver for wifi, which is feasible but nontrivial.


Update Rootstock explorer images

What

Update Rootstock explorer images

Why

The explorer UI changed and needs update

Refs

Ticket

Hi @zdaodu-iov,
Please resolve conflicting files.
Also, there is an overflow from the left nav on the node pages.
Is this overflowing on your local host?


Proof of concept with appwrite as soure and destination

Thanks, and as I was talking with you -- I'll take a look at this and see what the issue was. Did you end up finding the problem you ran into?


Add Client-Side Gizmo

This PR introduces a client-side gizmo, addressing the limitations of the server-side gizmo and improving the overall user experience. The client-side gizmo is designed to synchronise with the client-side camera, providing a more intuitive and responsive interface. Key highlights of this PR include:
Initial Implementation:
Added a 80x80 canvas to the bottom right of the screen, containing a tiny three.js scene.
Created a nice @franknoirot gizmo.
Synced the gizmo's rotation with the client-side camera using quaternion values from SceneInfra.
Enhancements:
Implemented lerp (linear interpolation) to minimize step effects and provide fluid motion for the gizmo.
Added TailwindCSS styling for the canvas, making it rounded with a border that matches the user's theme settings.
Future Improvements:
Plan to add click-and-drag functionality to the gizmo for directly orienting the camera.
Fix gimbal lock over Z-axis.
References:
Issue #2279: Add client-side gizmo @Irev-Dev
PR #2332: Integrate unreliable camera_drag_move
closes https://github.com/KittyCAD/modeling-app/issues/2279
Screenshots:

Looking forward to your feedback and suggestions for further improvements.

Looking good @max-mrgrsk!
You probably left these in so we could verify the syncing works as expected, but before merge we should remove the places that we create that engine-side gizmo:
https://github.com/KittyCAD/modeling-app/blob/26438270ff85e643e94265a6f1e1f071b14e82aa/src/lang/std/engineConnection.ts#L1046-L1063
https://github.com/KittyCAD/modeling-app/blob/26438270ff85e643e94265a6f1e1f071b14e82aa/src/lang/std/engineConnection.ts#L1347-L1357
I don't want to ask you to do these styling tweaks if you're trying to get this thing done, so consider it a checklist for me as a fast-follow PR if you're not able to:

[ ] Add className "pointer-events-none" to gizmo wrapper div (for now to prevent context menu)
[ ] Make LowerRightControls container element have these classNames: flex flex-col items-end gap-3
[ ] Move gizmo into LowerRightControls.tsx as the first child of the section element
[ ] Remove the fixed styling from the gizmo div so it flows in flexbox

Thanks for your feedback.
I appreciate your guidance and help.
@franknoirot, the design you did is so nice that it's a joy to execute :D
@Irev-Dev, thanks for all your tips.
I'll address all the comments and updates discussed.

I forgot to mention, that since our playwright action and I made commits, you'll need to pull to get these changes locally.

[x]  Add className "pointer-events-none" to gizmo wrapper div (for now to prevent context menu)
[x]  Make LowerRightControls container element have these classNames: flex flex-col items-end gap-3
[x]  Move gizmo into LowerRightControls.tsx as the first child of the section element
[x]  Remove the fixed styling from the gizmo div so it flows in flexbox

thanks @franknoirot , all done :) looks sweet

I also looked into the gimbal lock situation, and it's not a bug on the FE, basically the camera-up that's returned from the engine is always [0,0,1], even when the camera flips upside down, I'd expect it to flip to [0,0,-1] at that point but it doesn't.
I've raised the above with the engine team, what's unfortunate about this is that I think we need to wait to merge this until that's fixed in the engine because while it's a bit of an edge case, we'd be replacing a working gizmo with one that has some quirks so we'll just have to wait sorry.

@Irev-Dev
Another thing is that the gizmo stops working after we exit the sketch plane.
Shall I check on it while we are waiting?

Another thing is that the gizmo stops working after we exit the sketch plane.
Shall I check on it while we are waiting?

I wonder if this issue is related to or solved by https://github.com/KittyCAD/modeling-app/pull/2397

Okay we're back in business with this one, video inbound, because I have a couple thoughts.
But just note because we had a bunch of conflicts with snapshots I did force push to this branch so you'll need to take some steps to get your local branch in sync.
Here's what I would do with the command line, but I know you're using the github desktop app right so I'm not sure
# We're going to delete the gizmo branch so make sure we're not on it
git checkout main
# make sure we have an updated origin
git fetch --all
# delete our local gizmo branch
git branch -d gizmo
# checkout the origin's gizmo branch to get in sync
git checkout origin/gizmo

https://github.com/KittyCAD/modeling-app/assets/29681384/51564fa7-a5ea-49e2-8875-3b36d8565def

I'm half thinking we just merge this 🤷

I agree this can get in; I don't see that delay as devastating and I'd like to solve it with animation updates on the lossy channel or some other strategy


:memo: [doc] Added README

I could not test the shell commands yet.

I forgot the app permissions.

I will wait with the fixes until we sorted the other MR out.


Logout method not work as expect

Subject of the issue
I can still use access token after call logout method
Your environment:

Q
A

Bug?
yes

New Feature?
no

Framework
Laravel

Framework version
8.x.y

Package version
1.x.y

PHP version
8.x.y

Steps to reproduce

Use attempt method to create access token
Call logout method from controller

Expected behaviour
Can't use access token after logout
Actual behaviour
Access token is valid

close for duplicate.


WSD scheduler, Decay part question

Hi! Thank you for your work and for sharing the technical report with us. I have a questions. There is the constant lr after the decay phase as shown in the figure for each of the experiments.

However, the definition shows that the decay and last phase should be exponential.

Is it caused by the "cutoff steps T" which is in the equation for exponential decay? Thank you very much! I realy like the ideas behind!

Judging from this equation and the description of the entire article, there should be no stable learning rate stage after the Decay stage. This is my personal opinion.


Slim 854 implement load profile

All is well.

All is well.

This pull request makes the build fail.

All is well.

This pull request makes the build fail.

All is well.

All is well.

All is well.

All is well.

This pull request makes the build fail.

retest this please

All is well.

All is well.


openedx/frontend-component-footer

@chris1tapia I'm reopening this issue in the Paragon repo, but it needs a better title and the description of the work - openedx/frontend-component-footer is a whole repository, what needs to be done with it?

I continued working over the main PR https://github.com/openedx/frontend-component-footer/pull/303 was updated, just peer dependencies left

We already have an issue for the header and footer, do we need additional ones?


The Home page and Navbar look so sus i wanted to fix it

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

I would like to work on it, assignn it to me

Please describe the issue. You can raise a issue when there's proper description of the issue.


Validate Client with BBDD instead of InMemory info

Hi,
I'm not sure if this feature is already implemented on the project, but so far i didn't found anything about it.
Basically there is no "elegant" way of configuring a ClientDetailsService so we use the clients on the database instead of creating a InMemoryRegisteredClientRepository.
By my point of view, it should be something like in the previous versions of AuthorizationServer:
We have this on the AuthorizationServerConfig:
@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws Exception {
    configurer.withClientDetails(couchbaseClientDetailsService);
}

And then in the service we have:
@Service
public class CouchbaseClientDetailsService implements ClientDetailsService {
@Autowired
private CustomClientDetailsRepository customClientDetailsRepository;

@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {

    CustomClientDetails client = customClientDetailsRepository.findByClientId(clientId);

    String resourceIds = client.getResourceIds().stream().collect(Collectors.joining(","));
    String scopes = client.getScope().stream().collect(Collectors.joining(","));
    String grantTypes = client.getAuthorizedGrantTypes().stream().collect(Collectors.joining(","));
    String authorities = client.getAuthorities().stream().collect(Collectors.joining(","));

    BaseClientDetails base = new BaseClientDetails(client.getClientId(), resourceIds, scopes, grantTypes, authorities);
    base.setClientSecret(client.getClientSecret());
    base.setAccessTokenValiditySeconds(client.getAccessTokenValiditySeconds());
    base.setRefreshTokenValiditySeconds(client.getRefreshTokenValiditySeconds());
    base.setAdditionalInformation(client.getAdditionalInformation());
    base.setAutoApproveScopes(client.getScope());
    return base;
}

}
It's behavior would be similar of what we're used to do on a UserDetailsService, but with client.
As i said before, i don't know if there's a way to do this already on the project, if it is, please tell me and i apologize.
Thank you for the hard work.

@LORJIM A JDBC implementation of RegisteredClientRepository is coming in the 0.1.2 release. See gh-265.
Closing as duplicate.

Is there a way to set additional information on the Registered client?


Added Hexsweep Game

#103
https://github.com/user-attachments/assets/21e89757-1cdc-4cd9-977c-c41d44da21d9

@iamrahulmahato  can you please mention why no level for this ? if it is small you can give level1 or level2 @MastanSayyad

@iamrahulmahato was her 200 limit exceeded?


Potential memory leak

Describe the bug
I am running a tusd server in a production Kubernetes cluster. This server is currently successfully handling ~15,000 uploads per day averaging 300KB each, so about 4.5 GB total per day. When watching the memory usage over the course of a day, I have noticed the memory only ticks upwards and never seems to fully release any memory. Example of memory usage over 1 day:

The image above shows an increase of 7GB of memory over the day, which seems very high! Additionally, these files are quite small and they only take 1.5 minutes on average to upload, so at any one time only ~50-100 uploads are happening concurrently.
To Reproduce
Not sure how to reproduce, as I don't know whether this pertains to all tusd instances or my particular configuration. I am seeing this behaviour happen every day until this k8s pod is evicted due to running out of memory.
Expected behaviour
I would expect that tusd would release memory over time as uploads finish and to not continue increasing.
Setup details
Please provide following details, if applicable to your situation:

Operating System: Linux
Docker Image: tusproject/tusd:v1.4.0
Used tusd version: 1.4.0
Used tusd data storage: Google Cloud Storage
Used tusd configuration: args: [
"-port=1081",
"-behind-proxy",
"-hooks-http", "REDACTED",
"-hooks-enabled-events", "post-finish",
"-hooks-http-forward-headers", "REDACTED",
"-gcs-bucket", "REDACTED",
"-timeout", "300000",
"-hooks-http-backoff", "600",
"-hooks-http-retry", "10"
]
Used tus client library: tus-java-client/tus-android-client

Thanks for reporting. I haven't seen this for our production tusd servers. What metric is the graph actually showing? Is that total memory used by a container? Or are those numbers from the /metrics endpoint (see https://master.tus.io/metrics)? Are you sure there is no other process running next to tusd causing memory usage?

Closing this issue due to a lack of information. Feel free to leave a comment if you want to continue the discussion :)

FYI, I had a look at our production tusd servers and their RSS usually stays around 30 - 40 MiB.

Hello I have same problem in our production servers. Almost same configuration like in issue report head
tusd Version: v1.3.0
tusd -gcs-bucket  -gcs-object-prefix tusd -behind-proxy -base-path --hooks-http
6742768 4,348g   8416 S 158,7 74,9  14744:55 tusd
The memory was consumed after 2 days of usage.

@jzupka

6742768 4,348g 8416 S 158,7 74,9 14744:55 tusd

What do those numbers mean? Can you explain? Also, what memory usage does the /metrics endpoint (see https://master.tus.io/metrics) report?

@Acconut sorry for late answer and inconvenient report
this is allocated memory by tusd. Important part is 4.348GB after 2 days of usage.
CPU load is solved unfortunately memory problem is still there.
I have to install early oom to kill tusd.

This memory leaks seems to be specific for the GCS storage. I found a few issues in the GCS Go SDK repository about memory leaks (e.g. https://github.com/googleapis/google-cloud-go/issues/1623) which are not fixed in the SDK version we are using in tusd.
@jzupka Can you try to upgrade the GCS Go SDK, recompile tusd and see if the memory leak disappears?

@Acconut yes sure. Lets try this it looks reasonable. I'll try it during this week.

Great, let me know if you hit road blocks!

@Acconut There is really problem with GCS SDK they create newMediaBuffer which they almost never destroy. There is pull request pull request to using user manager buffer to avoid this problems.
I have tried tusd on miniogw -> GCS. Unfortunately it not work good.  I'll make another issue for this.

@Acconut I have tested tusd builded with go Lang 1.15 and last GCS everything unfortunately same behaviour.

If you have Idea how to solve memory problem with GCS without these pull request it would be great.

Unfortunately, I don't. A first step in the right direction would be to pinpoint what allocations are not released properly. Would you be able to add pprof to tusd and take a memory profile after performing a few uploads? https://www.freecodecamp.org/news/how-i-investigated-memory-leaks-in-go-using-pprof-on-a-large-codebase-4bec4325e192/ looks like a good introduction.

yes I already did it. it looks exactly same than like in https://github.com/googleapis/google-api-go-client/pull/632.

Ok, that's good to know! Would you be able to replace the GCS SDK with the fork from the PR's author and configure it to use our own buffers?
This way we can see if that PR actually solves the problem.

Upgrading to v1.8 fixed this for us (I'm on the issue author's old team). Based on the discussion here I'd guess #535 was the fix.

@joshcurtis Awesome, thanks for letting us know! Glad that it fixes the issue for you


Better handling of snake-ification of mixed input

Thanks for casey! :-)
I found this issue I was having myself, and made test and patch.
I hope you find it meaningful, though very likely the code could be done better (I am still quite noob in rust).
To be honest, I was asking myself ... would it not be possible to do the actual case conversion with an other crate?
The main selling point of yours, is that ti is done at compile-time. I think, some of the others (run-time ones) around, are more used and have more tests for the case conversion, so it would be cool to make use of that, if possible.
... or is there some technical hindrance for that?
example crates:

https://github.com/rutrum/convert-case
https://github.com/withoutboats/heck

hi @hoijui!
thanks for the PR and the tests

would it not be possible to do the actual case conversion with an other crate?

Yes handling the case conversion via a dedicated crate makes a lot of sense.
I was using heck previously but moved away from it, although can't remember the reasons.

:D
ouh man.. I feel wit you.. that kind of thing happens to me all the time: take a decision, remember only the decision without the reasoning, and then someone wants to know why... :-)
I found the commit that removed heck, but the commit message does not mention the reason either:
https://github.com/holygits/casey/commit/b74061a467e77291fb4b4e264b80531f3bc29be3
ouh well ...
thanks anyway!
for now it works for me like this.


Does tested_libversions need updating?

Hi! I'm trying to launch electrum from source on macos, and it can't find libsecp256k1
When I do brew install secp256k1, it installs the recent libsecp256k1 0.6.0 released two weeks ago: https://github.com/bitcoin-core/secp256k1/releases/tag/v0.6.0
So inside the folder, I see libsecp256k1.5.dylib
But tested versions are up to 2 only.
See https://github.com/spesmilo/electrum-ecc/blob/b2cde56af85becb9582d4fe81c447d41868c246d/src/electrum_ecc/ecc_fast.py#L48
When on ubuntu, I usually just run
sudo apt install libsecp256k1-dev
And because of ubuntu slow rollover of packages I guess, the max version I would get is the number 2
Can this list be updated? Is it like, to prevent breaking ABI changes? Or any blocker in recent libsecp which prevents it from using?
Because when I manually added tested versions it does start at least (:
Hmm but also, I tried compiling the 0.5.1 version, and it has ABI version of 2. So I'm not sure, maybe it's their bug that they jumped 3 versions at once?
EDIT: just tested on linux, and it's also a jump of 3 versions there

They only bump the ABI version when they make an incompatible change to it. So 0.3.x, 0.4.x, and 0.5.x all used version 2. Now there was a change in 0.6.0, so the ABI version got bumped to 5.
See the changelog re "ABI Compatibility".
The versions themselves are calculated in a somewhat weird way, see https://github.com/bitcoin-core/secp256k1/pull/1055#issuecomment-1227505189


using static PInvoke.User32; is needed for Apps.xaml.cs

[Enter feedback here]
"using static PInvoke.User32;" is needed for calling Win32 APIs.
Beginners may be able not to build / execute the sample because of lacking the using directive.

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

ID: 053e4864-ba80-e65e-a7d3-694ce86ca102
Version Independent ID: 618fd334-462f-ae7c-8eb9-2e1a8bef685c
Content: Build a C# .NET 5 app with WinUI 3 and Win32 interop - Windows apps
Content Source: hub/apps/winui/winui3/desktop-winui3-app-with-basic-interop.md
Product: reunion
Technology: winui-conceptual
GitHub Login: @Karl-Bridge-Microsoft
Microsoft Alias: kbridge

Thanks for pointing out this oversight. Topic has been revised.


Add codegen mode to support both Anvil and Hilt

This PR implements a KSP argument for CircuitSymbolProcessor which allows a consumer to skip emission of Anvil annotations. One use case of this is to allow for generated binding support for other DI frameworks, such as Hilt.
The argument "circuit.generate-anvil-bindings" defaults to true, and can be configured via the KSP gradle DSL:
ksp {
  arg("circuit.generate-anvil-bindings", "false")
}

Sounds like a plan!
Given your suggestion on naming of the option being codegen mode, what are your thoughts on me pulling in my Hilt module generation changes too? I'd prefer to have this in circuit rather than living in my own third-party artefact, but also get it if you're not keen to take on that much scope

As long as it's simple it's fine with me. Seems like it's trivial to add in hilt's case

Just got around to adding the Hilt codegen mode option as suggested. Tested against a seperate project with a local version and it's working as expected! Docs-wise, is there anything to contribute to?

Apologies for the delay on this, been AFK for a while due to travelling. The recent commits I've pushed have added in documentation, tidied up errors, and implemented the remaining Hilt functionality with @GeneratesRootInput and @OriginatingElement where applicable. Let me know what you think!


Need to update the "Allow access from Azure portal" option in Cosmos DB networking settings.

[Enter feedback here]
The internal documents of Azure Cosmos DB have been updated that "Browsing the Azure Cosmos DB resources from the portal are also be blocked to ensure the integrity of access control."
Please update the external documents after verifying the internal documents to avoid any confusion from customer side.
Suggestion: It would be good if we can remove the below configuration from Azure portal as the new updates are nullifying the "Allow access from Azure portal" option.

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

ID: 8d7a26cc-5853-7241-c918-4d758814baaf
Version Independent ID: 96790e64-f053-5194-cccb-2a66019a8f3f
Content: Configure an IP firewall for your Azure Cosmos DB account
Content Source: articles/cosmos-db/how-to-configure-firewall.md
Service: cosmos-db
GitHub Login: @seesharprun
Microsoft Alias: sidandrews

Hi @tonytomyatmicrosoft ,
Thanks for sharing this feedback. We will look into this and update as apropriate.
Hi @seesharprun,
Could you please look into this, thanks.

@tonytomyatmicrosoft, the external troubleshooting documentation was recently updated to clarify this.
#please-close


AAQ-225: Align score docs

Reviewer: @amiraliemami
Estimate: 20mins

Adding docs for AlignScore
Ticket
Fixes: AAQ-225
Description, Motivation and Context
Goal
AlignScore requires another container to be setup in addition to config being updated.
The docs now capture this.
How Has This Been Tested?
Ran mkdocs locally
mkdocs serve -a localhost:8001

To-do before merge

[x] Ensure PR #68 is merged
[x] Ensure PR #67 is merged

Checklist:
This checklist is a useful reminder of small things that can easily be forgotten.
Put an x in all the items that apply and remove any items that are not relevant to this PR.

[x] My code follows the style guidelines of this project
[x] I have reviewed my own code to ensure good quality
[x] I have tested the functionality of my code to ensure it works as intended
[x] I have resolved merge conflicts
[ ] I have updated the automated tests (if applicable)
[x] I have written good commit messages
[ ] I have updated the README file (if applicable)
[x] I have updated affected documentation (if applicable)

Thanks for this, very nice detailed docs! Could you also lint the .md files (I run option+shift+f to do this on VSCode)? There were some formatting violations. Happy to do this too.


TVIH264Codec causes black frames

Description
Using the TVIH264Codec causes black frames on the receiver's end. When screen capturing AR from SceneKit using technique from sample app. Without preferring the H264 coded, the frames are transferred correctly.
Steps to Reproduce
Code
builder.preferredVideoCodecs = [TVIH264Codec()]

Expected Behavior
Preferring the TVIH264Codec should send correct frames.
Actual Behavior
Receiver gets black frames
Reproduces How Often
100%
Logs
I'm seeing a few of these in the debug log on the sender side.
2018-06-01 19:06:06.760469-0700 [App Name][668:180076] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 <IP_ADDRESS>:0 TLS target domain=unspecified mFlowKey=0 ]

And here's a sip message that includes the part specifying h264 (on the sender side).
2018-06-01 19:05:57.838369-0700 [App Name][668:180076] DEBUG:TwilioVideo:[Core]:

Sending outgoing SIP message

INVITE sip:mobile-endpoint.twilio.com;transport=tls SIP/2.0

Via: SIP/2.0/TLS <IP_ADDRESS>;branch=z9hG4bK-524287-1---3b2b4e736e439cc3;rport

Max-Forwards: 70

Contact: <sip:A14e4c307332BA2c46Edafd734Ed1bC5@<IP_ADDRESS>;transport=tls;ob>

To<EMAIL_ADDRESS>

From: "A14e4c307332BA2c46Edafd734Ed1bC5"<sip:A14e4c307332BA2c46Edafd734Ed1bC5@mobile-endpoint.twilio.com>;tag=35ddb147

Call-ID: 1GMJfOExX6Lea0LX0gwyIQ..

CSeq: 1 INVITE

Session-Expires: 120

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, UPDATE, NOTIFY

Content-Type: application/room-signaling+json

Supported: timer, outbound, path, gruu, room-signaling

User-Agent: TwilioVideo SDK

X-Twilio-AccessToken:

...

Content-Length: 4422

{"format":"planb","name":"-LDyEb_gkMmqNxL7XPMO","participant":{"revision":1,"tracks":[{"enabled":true,"id":"9c11cAbDb3BdEB2EC72e94c4AAcB3C3F","kind":"data","name":"9c11cAbDb3BdEB2EC72e94c4AAcB3C3F","priority":"medium"},{"enabled":true,"id":"c1A5e7812f1216DF1C18aa1eEc6E07Bf","kind":"audio","name":"Microphone","priority":"medium"},{"enabled":true,"id":"f4136Ea5ddB3892cCeAf3f5CA77bA3F0","kind":"video","name":"AR capture","priority":"medium"}]},"peer_connections":[{"description":{"revision":1,"sdp":"v=0\r\no=-<PHONE_NUMBER>44868028 2 IN IP4 <IP_ADDRESS>\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video data\r\na=msid-semantic: WMS BBB93aaF7e545CDD8ECb7b66edEAC6B8\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 <IP_ADDRESS>\r\na=rtcp:9 IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:DgCc\r\na=ice-pwd:qGDchqlSSFh4aXN8Qdw4PFjN\r\na=fingerprint:sha-256 B8:D1:E5:49:A5:13:F3:56:8D:5F:74:39:83:D6:D6:70:60:9D:A2:78:6A:E0:B9:88:9B:73:DA:2E:4E:42:C4:8A\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendrecv\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:1582303180 cname:J1nAbU1sZYh8f3RT\r\na=ssrc:1582303180 msid:BBB93aaF7e545CDD8ECb7b66edEAC6B8 c1A5e7812f1216DF1C18aa1eEc6E07Bf\r\na=ssrc:1582303180 mslabel:BBB93aaF7e545CDD8ECb7b66edEAC6B8\r\na=ssrc:1582303180 label:c1A5e7812f1216DF1C18aa1eEc6E07Bf\r\nm=video 9 UDP/TLS/RTP/SAVPF 127 96 98 100 102 97 99 101 125\r\nc=IN IP4 <IP_ADDRESS>\r\na=rtcp:9 IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:DgCc\r\na=ice-pwd:qGDchqlSSFh4aXN8Qdw4PFjN\r\na=fingerprint:sha-256 B8:D1:E5:49:A5:13:F3:56:8D:5F:74:39:83:D6:D6:70:60:9D:A2:78:6A:E0:B9:88:9B:73:DA:2E:4E:42:C4:8A\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=sendrecv\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtpmap:100 red/90000\r\na=rtpmap:102 ulpfec/90000\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:125 rtx/90000\r\na=fmtp:125 apt=127\r\na=ssrc-group:FID<PHONE_NUMBER><PHONE_NUMBER>\r\na=ssrc:2297101943 cname:J1nAbU1sZYh8f3RT\r\na=ssrc:2297101943 msid:BBB93aaF7e545CDD8ECb7b66edEAC6B8 f4136Ea5ddB3892cCeAf3f5CA77bA3F0\r\na=ssrc:2297101943 mslabel:BBB93aaF7e545CDD8ECb7b66edEAC6B8\r\na=ssrc:2297101943 label:f4136Ea5ddB3892cCeAf3f5CA77bA3F0\r\na=ssrc:1900990091 cname:J1nAbU1sZYh8f3RT\r\na=ssrc:1900990091 msid:BBB93aaF7e545CDD8ECb7b66edEAC6B8 f4136Ea5ddB3892cCeAf3f5CA77bA3F0\r\na=ssrc:1900990091 mslabel:BBB93aaF7e545CDD8ECb7b66edEAC6B8\r\na=ssrc:1900990091 label:f4136Ea5ddB3892cCeAf3f5CA77bA3F0\r\nm=application 9 DTLS/SCTP 5000\r\nc=IN IP4 <IP_ADDRESS>\r\na=ice-ufrag:DgCc\r\na=ice-pwd:qGDchqlSSFh4aXN8Qdw4PFjN\r\na=fingerprint:sha-256 B8:D1:E5:49:A5:13:F3:56:8D:5F:74:39:83:D6:D6:70:60:9D:A2:78:6A:E0:B9:88:9B:73:DA:2E:4E:42:C4:8A\r\na=setup:actpass\r\na=mid:data\r\na=sctpmap:5000 webrtc-datachannel 1024\r\n","type":"offer"},"id":"fBaC5bA3CA2AfdccF357efe4C4499Dab"}],"publisher":{"hw_device_arch":"arm64","hw_device_manufacturer":"Apple","hw_device_model":"iPhone10,6","name":"twilio-video-ios","platform_name":"iOS","platform_version":"11.3.1","sdk_version":"2.1.0"},"type":"connect","version":1}

2018-06-01 19:05:57.842200-0700 [App Name][668:180076] WARN:TwilioVideo:[Signaling]:RESIP::TRANSPORT: Can't find matching transport [ V4 <IP_ADDRESS>:0 TLS target domain=unspecified mFlowKey=0 ]

2018-06-01 19:05:58.069645-0700 [App Name][668:180076] DEBUG:TwilioVideo:[Core]:

Receiving incoming SIP message from infra

SIP/2.0 100 Giving a try

Via: SIP/2.0/TLS <IP_ADDRESS>;received=<IP_ADDRESS>;branch=z9hG4bK-524287-1---3b2b4e736e439cc3;rport=49894

To<EMAIL_ADDRESS>

From: "A14e4c307332BA2c46Edafd734Ed1bC5"<sip:A14e4c307332BA2c46Edafd734Ed1bC5@mobile-endpoint.twilio.com>;tag=35ddb147

Call-ID: 1GMJfOExX6Lea0LX0gwyIQ..

CSeq: 1 INVITE

Server: Twilio Gateway

Content-Length: 0

Versions
Video iOS SDK
TwilioVideo 2.1.0 vis CocoaPods
Xcode
9.4
iOS Version
Sender: 11.3.1
Receiver: 11.4
iOS Device
Sender: iPhone X
Receiver: iPhone 6s

@sdgandhi Thanks for reaching out.
Our Quickstart sample app demonstrates the use of H.264 codecs.  You can choose the video codec by "Settings > Video Codec > H.264".  Are you able to reproduce the problem on Quickstart?

Hey @sdgandhi,

When screen capturing AR from SceneKit using technique from sample app.

Is there any chance you are you trying to capture in a resolution > 1280x720? This won't work, and is a current limitation of our iOS Client and the Group Rooms topology.
https://www.twilio.com/docs/video/managing-codecs#muti-codecs-limitations-and-known-issues
Best,
Chris

@piyushtank I cannot reproduce the problem with the Quickstart with the same phones.
@ceaglest Constraining the capture resolution to 1280x720 does not fix the problem either. Still getting black frames on receiver side.

In addition, the camera preview in my app works fine with H264. It's only the AR capture that sends black frames for H264.
Therefore, I have to surmise that there's an issue with the video data pipeline from AR capture -> H264. Do you guys have a working sample of this?

@sdgandhi Thanks for posting more information. I am assuming you are having a custom capturer but It is hard to say where the problem is without looking a the code.
Is it possible for you to share code to help reproduce the problem?  or if you can change sample app to reproduce the problem?
We have ARKitExample which demonstrates custom capturer APIs and ARKit use with our video sdk. Please note that ARKitExample has a listed known issue of performance because it snapshots the ARSCNView. We are going to improve the performance of the example app in future.

@piyushtank Yes, modifying the regular video quickstart by using the custom capturer from the ARKitExample will repro the issue.

@sdgandhi In order to debug the problem, can you share the code of the modified quickstart which reproduces the problem?

Has there been any update on this. We are seeing this exact issue with our app. We are using ARKit and running video to a custom captureConsumer. If we set the codec to h264 we get no output (just black frames) from the sender. We can only initialize calls using VP8 on iOS, but this causes some conditions where one participant will sometime fail to connect to a room or will connect then immediately disconnect. We would prefer to use a hardware accelerated codec. This is how we are implementing our capture consumer and initializing the ARKit stream.
func startCapture(_ format: TVIVideoFormat, consumer: TVIVideoCaptureConsumer) {
        self.captureConsumer = consumer

        self.displayLink = CADisplayLink(target: self, selector: #selector(self.displayLinkDidFire))
        self.displayLink?.preferredFramesPerSecond = self.sceneView.preferredFramesPerSecond

        self.displayLink?.add(to: .main, forMode: .commonModes)
        captureConsumer?.captureDidStart(true)
    }

// Send SceneKit View to pixelBuffer
    @objc func displayLinkDidFire(timer: CADisplayLink) {
        let image = self.sceneView.snapshot()

        autoreleasepool {
            let pixelBuffer = ImageProcessor.pixelBuffer(forImage: image)
            let aFrame = TVIVideoFrame(timeInterval: timer.timestamp, buffer: pixelBuffer!, orientation: TVIVideoOrientation.up)
            self.captureConsumer?.consumeCapturedFrame(aFrame!)
        }
    }

// Processing pixel buffer
struct ImageProcessor {
    static func pixelBuffer (forImage image:CGImage) -> CVPixelBuffer? {

        //        let frameSize = CGSize(width: image.width, height: image.height)
        let frameSize = CGSize(width: 720, height: 1280)
        var pixelBuffer:CVPixelBuffer? = nil
        let status = CVPixelBufferCreate(kCFAllocatorDefault, Int(frameSize.width), Int(frameSize.height), kCVPixelFormatType_32BGRA , nil, &pixelBuffer)
        if status != kCVReturnSuccess {
            return nil

        }

        CVPixelBufferLockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags.init(rawValue: 0))
        let data = CVPixelBufferGetBaseAddress(pixelBuffer!)
        let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
        let bitmapInfo = CGBitmapInfo(rawValue: CGBitmapInfo.byteOrder32Little.rawValue | CGImageAlphaInfo.premultipliedFirst.rawValue)
        let context = CGContext(data: data, width: Int(frameSize.width), height: Int(frameSize.height), bitsPerComponent: 8, bytesPerRow: CVPixelBufferGetBytesPerRow(pixelBuffer!), space: rgbColorSpace, bitmapInfo: bitmapInfo.rawValue)

        //        context?.draw(image, in: CGRect(x: 0, y: 0, width: image.width, height: image.height))
        context?.draw(image, in: CGRect(x: 0, y: 0, width: 720, height: 1280))

        CVPixelBufferUnlockBaseAddress(pixelBuffer!, CVPixelBufferLockFlags(rawValue: 0))

        return pixelBuffer

    }

}

// How we build a room
let connectOptions = TVIConnectOptions.init(token: self.accessToken) { (builder) in

                    // Use the local media that we prepared earlier.
                    builder.audioTracks = self.localAudioTrack != nil ? [self.localAudioTrack!] : [TVILocalAudioTrack]()
                    builder.videoTracks = self.localVideoTrack != nil ? [self.localVideoTrack!] : [TVILocalVideoTrack]()

                    // Use the preferred audio codec
                    if let preferredAudioCodec = Settings.shared.audioCodec {
                        builder.preferredAudioCodecs = [preferredAudioCodec]
                    }

                    // Use the preferred video codec
                    if let preferredVideoCodec = Settings.shared.videoCodec {
                         builder.preferredVideoCodecs = [TVIH264Codec(), TVIVp8Codec(), TVIVp9Codec()]
                    }

                    // Use the preferred encoding parameters
                    if let encodingParameters = Settings.shared.getEncodingParameters() {
                        builder.encodingParameters = encodingParameters
                    }

                    // The name of the Room where the Client will attempt to connect to. Please note that if you pass an empty
                    // Room `name`, the Client will create one for you. You can get the name or sid from any connected Room.
                    builder.roomName = roomName

                    // The CallKit UUID to assoicate with this Room.
                    builder.uuid = uuid
                    print("Built room", uuid)
                }

@cspecter Thanks for reaching out. Apologize for the delay as some of our team members are on vacation at present.
I will try to reproduce the problem tomorrow in PST day time using our ARKitExample sample app. In the meantime, can you provide following information to debug the problem - 1

The iPhone device
iOS version

Hi,
We tried to reproduce this issue locally, but were unable to. Please reopen if you can provide a Room SID that we can diagnose.
Thanks,
Chris


Update old links for Sandcastle

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot


[Bug]: Broken Service Integration error is displayed while checking balance for Equity bank

Description
A broken service integration error is displayed on the home screen after tapping the check balance icon for the Equity account.
Steps to reproduce

Open the Stax app
Tap the check balance icon for the Equity account.
Pay attention to the message at the bottom of the home screen.

Expected result
The equity account balance is successfully returned after tapping the check balance icon.
Actual result
A broken service integration error is displayed on the home screen after tapping the check balance icon for the Equity account.
Link to screenshots/screen recordings
https://drive.google.com/file/d/1j8qVnFjxOQvb3M5w1raI7hTR-NP_FR2p/view?usp=drivesdk
Device name
Samsung Galaxy A32
Android OS
12
Is your phone dual SIM or single SIM?
Dual SIM
Which telco are you using for this test?
Safaricom
Stax device ID or email address
bc34b750f5749d4a

This has been fixed with the new release that we will be putting out early next week.


zigpy-cli: init at 1.0.4

Description of changes
Tested by doing an energy-scan.
Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

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

2 packages built:

zigpy-cli
zigpy-cli.dist


Adding a new Tab to the Server Performance Section

This is a feature request.
The image shows the data in "Slow Queries" Tab.
I would firstly suggest to rename the Tab to something like "All Queries" as the Title "Slow queries" is a bit missleading. Some of the queries are defintly slow but not all of them. We are classifying all the queries by time in this stage and not all the shown results are slow. From other point of view, if these reported queries are the slow ones, then where can the user find the "Fast" ones? :D (Now that I think of a bit, this could be also an interesting feature: "Fast Queries" which you could implement in the future.)
Then I would suggest a new Tab "Most Expensive Queries" which would provide more in depth analysis on what is the real pain for the SQL engine. As the image shows, the number of the running queries on a server (in this case an empty one) can increase very fast and it is also not that easy to identify the one which may cause the pain if we are above 2 digit numbers. I am intentionally showing the executed query in the image to make the point. This is a WMI notification Alert which I have created for a certain purpose on the server and it is monitoing the state of the server.
Below you can find two samples of the "Most Expensive Queries", each one very useful. I would suggest a combination of data in both could be added to a new Tab where marked in the image.

SQL SERVER – Find Most Expensive Queries Using DMV
https://blog.sqlauthority.com/2010/05/14/sql-server-find-most-expensive-queries-using-dmv/
SQL DMV: Most Expensive Queries, Missing Indexes
https://knowledge-base.havit.eu/2017/10/03/sql-dmv-most-expensive-queries-missing-indexes/

I'm not 100% on the name Slow Queries either.  It's also not all queries - by default the collection will capture RPC/Batch completed events that took longer than 1 second.  Changing it to RPC/Batch Completed would be more accurate but a slightly longer name for the tab.
DBA Dash doesn't capture statement level metrics which is a limitation.  I would recommend using query store to compliment what is collected by DBA Dash.
I have thought about collecting data from sys.dm_exec_query_stats or possibly pulling data from query store to include performance tracking at the statement/plan level.  Ideally we want to capture this over time so it gets more complicated.  The tricky part is getting this to work well for servers that have a heavy adhoc workload and keeping the volume of data collected reasonable.  I'll probably include this at some point - but probably not soon.

There are challenges as you start to filter the data.  For example, if you collect the top 10 queries - those will change over time.  It's more a problem if you want to track the data every min/hour etc.  Working out the diffs for the current period while not collecting everything.
Just returning top 10 from what is in the DMVs since each query was cached is easier.  sp_BlitzCache does a good job of this.  Given it's open source with MIT License it might be possible to incorporate this within DBA Dash - something I might consider at some point.


feature:  Improve documentation to show which objects are created/modified during the various steps of deploying and binding a syncer

Feature Description
Show the list of objects and their yaml content during the various steps of creating, deploying, and binding a syncer in different pcluster scenarios:

a pcluster with compatible resource schemas, e.g. Kind cluster like in a quickstart
a pcluster with incompatible resource schemas, e.g. an MicroShift cluster with an older version of Kubernetes

Proposed Solution
Create a detailed step by step documentation of the resources for both scenarios to help users understand what's happening
Alternative Solutions
No response
Want to contribute?

[X] I would like to work on this issue.

Additional Context
No response

/transfer-issue contrib-tmc

/transfer-issue contrib-tmc


Update issue templates

I would also mention that we expect k definitions shared in bug reports to be minimized to as few files/sentences as possible while still reproducing the error.

@dwightguth I've updated the template, please have another look.


3070 , 3080 , 3090 Speed.

Has anyone been able to test the speed on those cards ?
From previous issue someone posted 1b/s for 3080 on the cl version (yes i know that cuda version doesn't work on 3080).
More interested if anyone has tested for 3070 and 3090 (or if anyone has those and can run basic test for speed with screenshots ofcourse :) ).

[2020-12-16.14:51:35] [Info] Compression: compressed
[2020-12-16.14:51:35] [Info] Starting at:<PHONE_NUMBER>0000000000000000000000000000000000000000000000057EE7CA
[2020-12-16.14:51:35] [Info] Ending at:<PHONE_NUMBER>00000000000000000000000000000000000000FFFFFFFFFFFFFFFF
[2020-12-16.14:51:35] [Info] Counting by:<PHONE_NUMBER>000000000000000000000000000000000000000000000010000000
[2020-12-16.14:51:35] [Info] Compiling OpenCL kernels...
[2020-12-16.14:51:35] [Info] Initializing GeForce RTX 3060 Ti
[2020-12-16.14:51:37] [Info] Generating 33,554,432 starting points (1280.0MB)
[2020-12-16.14:51:41] [Info] 10.0%
[2020-12-16.14:51:41] [Info] 20.0%
[2020-12-16.14:51:42] [Info] 30.0%
[2020-12-16.14:51:42] [Info] 40.0%
[2020-12-16.14:51:42] [Info] 50.0%
[2020-12-16.14:51:42] [Info] 60.0%
[2020-12-16.14:51:42] [Info] 70.0%
[2020-12-16.14:51:42] [Info] 80.0%
[2020-12-16.14:51:43] [Info] 90.0%
[2020-12-16.14:51:43] [Info] 100.0%
[2020-12-16.14:51:43] [Info] Done
[2020-12-16.14:51:43] [Info] Loading addresses from 'C:/Users/junai/Desktop/exe.txt'
[2020-12-16.14:51:43] [Info] 159 addresses loaded (0.0MB)
[00:00:14] 2048/8192MB | 159 targets 613.69 MKey/s (18,446,744,063,416,801,333 remaining) [ETA 9.53 centuries]

-b 128 -t 256 -p 1024

Nvidia RTX 3090 Bitcrack CL version 1779 Mkey/Sec

Nvidia RTX 3090 Vanitysearch cuda version speed 4025 Mkey/sec

try bitcrack
-b 82 -t 256 -p 2096
-b 82 -t 256 -p 3096
-b 82 -t 256 -p 4096
-b 82 -t 512 -p 2096
-b 82 -t 512 -p 3096
-b 82 -t 512 -p 4096

also try with cuBitCrack, compile cuda ver and try to use that

@hamnaz may I know where is updated compiled version of cubitcrack ??

try bitcrack
-b 82 -t 256 -p 2096
-b 82 -t 256 -p 3096
-b 82 -t 256 -p 4096
-b 82 -t 512 -p 2096
-b 82 -t 512 -p 3096
-b 82 -t 512 -p 4096

And -t 0 is must

-t 0 is for kangaroo not for bitcrack

I am talking about his second screenshot where he use -t 7
On Thu, Dec 17, 2020, 1:08 AM hamnaz<EMAIL_ADDRESS>wrote:

-t 0 is for kangaroo not for bitcrack
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/brichard19/BitCrack/issues/279#issuecomment-746894574,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AO2RWHSRGKZWHA4E4FOWZFLSVEECNANCNFSM4U5NXL6A
.

-t 0 is for kangaroo not for bitcrack

I am talking about his second screenshot where he use -t 7

Building in Linux
Using make:
Build CUDA:
make BUILD_CUDA=1
Build OpenCL:
make BUILD_OPENCL=1
Or build both:
make BUILD_CUDA=1 BUILD_OPENCL=1

Nice stats on all cards compared to the 2080 ones .
Too bad no one showed 3070 , but i`m guessing will be the same as 3060 TI .

OpenCL (!) version
-b 128 -t 256 -p 1024
RTX 3080 Asus TUF, 427k targets

OpenCL (!) version
-b 128 -t 256 -p 1024
RTX 3080 Asus TUF, 427k targets

OpenCL (!) version
-b 128 -t 256 -p 1024
RTX 3080 Asus TUF, 427k targets

OpenCL (!) version
-b 128 -t 256 -p 1024
RTX 3080 Asus TUF, 427k targets

Too bad no one showed 3070 , but i`m guessing will be the same as 3060 TI .

Will fire one on 3070 FTW3 Ultra tomorrow for you.
3080 doing pretty sweet I see.

Too bad no one showed 3070 , but i`m guessing will be the same as 3060 TI .

Will fire one on 3070 FTW3 Ultra tomorrow for you.
3080 doing pretty sweet I see.

root@hash:/home/hash/BitCrack/bin# ./clBitCrack -b 82 -t 256 -p 4096 1FshYsUh3mqgsG29XpZ23eLjWV8Ur3VwH
[2021-01-13.18:14:41] [Info] Compression: compressed
[2021-01-13.18:14:41] [Info] Starting at:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000001
[2021-01-13.18:14:41] [Info] Ending at:   FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
[2021-01-13.18:14:41] [Info] Counting by:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000001
[2021-01-13.18:14:41] [Info] Compiling OpenCL kernels...
[2021-01-13.18:14:41] [Info] Initializing GeForce RTX 3090
[2021-01-13.18:16:10] [Info] Generating 85,983,232 starting points (3280.0MB)
[2021-01-13.18:16:29] [Info] 10.0%
[2021-01-13.18:16:29] [Info] 20.0%
[2021-01-13.18:16:30] [Info] 30.0%
[2021-01-13.18:16:30] [Info] 40.0%
[2021-01-13.18:16:30] [Info] 50.0%
[2021-01-13.18:16:30] [Info] 60.0%
[2021-01-13.18:16:30] [Info] 70.0%
[2021-01-13.18:16:30] [Info] 80.0%
[2021-01-13.18:16:31] [Info] 90.0%
[2021-01-13.18:16:31] [Info] 100.0%
[2021-01-13.18:16:31] [Info] Done
GeForce RTX 3090 7872 / 24268MB | 1 target 1667.26 MKey/s (533,010,055,168 total) [00:05:16]

root@hash:/home/hash/BitCrack/bin# ./clBitCrack -b 82 -t 256 -p 4096 1FshYsUh3mqgsG29XpZ23eLjWV8Ur3VwH
[2021-01-13.18:14:41] [Info] Compression: compressed
[2021-01-13.18:14:41] [Info] Starting at:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000001
[2021-01-13.18:14:41] [Info] Ending at:   FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140
[2021-01-13.18:14:41] [Info] Counting by:<PHONE_NUMBER>000000000000000000000000000000000000000000000000000001
[2021-01-13.18:14:41] [Info] Compiling OpenCL kernels...
[2021-01-13.18:14:41] [Info] Initializing GeForce RTX 3090
[2021-01-13.18:16:10] [Info] Generating 85,983,232 starting points (3280.0MB)
[2021-01-13.18:16:29] [Info] 10.0%
[2021-01-13.18:16:29] [Info] 20.0%
[2021-01-13.18:16:30] [Info] 30.0%
[2021-01-13.18:16:30] [Info] 40.0%
[2021-01-13.18:16:30] [Info] 50.0%
[2021-01-13.18:16:30] [Info] 60.0%
[2021-01-13.18:16:30] [Info] 70.0%
[2021-01-13.18:16:30] [Info] 80.0%
[2021-01-13.18:16:31] [Info] 90.0%
[2021-01-13.18:16:31] [Info] 100.0%
[2021-01-13.18:16:31] [Info] Done
GeForce RTX 3090 7872 / 24268MB | 1 target 1667.26 MKey/s (533,010,055,168 total) [00:05:16]

A 3080 RTX Prism does 1600m/k/s on openCL easy, so I would suggest you to tweak the -b value a bit (e.g. 128), as the 3090 should be doing way better.
Fyi. The CL version is broken (https://github.com/brichard19/BitCrack/issues/263). Your power will be used for void.
Goodluck hunting 👍

A 3080 RTX Prism does 1600m/k/s on openCL easy, so I would suggest you to tweak the -b value a bit (e.g. 128), as the 3090 should be doing way better.
Fyi. The CL version is broken (https://github.com/brichard19/BitCrack/issues/263). Your power will be used for void.
Goodluck hunting 👍

GeForce RTX 3060 Laptop GPU
cuBitCrack.exe
-b 64 -t 512 -p 1024
564.09 MKey/s [00:00:32]
-b 96 -t 128 -p 1024
605.41 MKey/s [00:00:30]
-b 128 -t 256 -p 1024
666.64 MKey/s [00:00:27]
-b 82 -t 256 -p 2096
704.18 MKey/s [00:00:25]
clBitCrack.exe
-b 128 -t 256 -p 1024
613.69 MKey/s [00:00:29]
-b 128 -t 256 -p 756
609.83 MKey/s [00:00:29]
-b 128 -t 256 -p 1024
618.68 MKey/s [00:00:29]
-b 82 -t 256 -p 2096
620.38 MKey/s [00:00:29]

Anyone want to help me out here? I have an RTX 3090 and with settings you guys are running Im getting less than 200mkey/s

3070

For -b 82 -t 256 -p 1024 3070 Ti
NVIDIA GeForce R 3493 / 8191MB | 16294 targets 1095.95 MKey/s (4,351,568,379,904 total) [01:07:27]

3080
-b 128 -t 256 -p 1024


How to add LaTeX or any math formula support to my HTML editor?

I need to add LaTeX (or any other approach) to add formula in my HTML

I don't know how LaTeX works in HTML, is there some JS/CSS you have to add? How would you add LaTeX support to a normal HTML document? This will help me figure out a way to support it in the editor.

To add LaTex or MathJax, we only need to be able to add a script to the iframe head.
`
      initialText: r"""

       Look at this: \(ax^2 + bx + c = 0\) \(\sqrt{x}\)"""

`
http://docs.mathjax.org/en/latest/web/examples.html

This code is obviously not a good approach but, it is working.
We need to remove the script from the initialText and move it somewhere else(but we don't know where).

There is another problem with RTL
By switching LTR to RTL, MathJaX will fail and will not work again.

Okay thanks for the detail.  Change your app like this:
pubspec.yaml:
flutter:
  assets:
    - assets/

create assets/summernote.html:

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="description" content="Flutter Summernote HTML Editor">
    <meta name="author" content="tneotia">
    <title>Summernote Text Editor HTML</title>

    <link href="file:///android_asset/flutter_assets/packages/html_editor_enhanced/assets/summernote-lite.min.css" rel="stylesheet">

HtmlEditor:
HtmlEditor(
  controller: controller,
  htmlEditorOptions: HtmlEditorOptions(
    filePath: "assets/summernote.html",
  ),
),

This should work but I haven't tested it. As for RTL, don't really know, maybe because the browser reads the entered characters backwards which breaks LaTeX parsing? Try it again with the above method and if it doesn't work I'd suggest disabling RTL direction.

Thanks for the detail, just noticed you are using Flutter Web. I know how to implement this and will provide a solution for you soon.

@alirezaemami can you try this:
Create a custom HTML file in your assets:

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <meta name="description" content="Flutter Summernote HTML Editor">
    <meta name="author" content="tneotia">
    <title>Summernote Text Editor HTML</title>

    <link href="summernote-lite.min.css" rel="stylesheet">

Then pass the file location in your HtmlEditor > HtmlEditorOptions > filePath parameter to load it.
Let me know if it doesn't work or you need more help.

Thank you for paying attention to this issue.
I understand that users are not comfortable writing formulas and I am combining libraries to provide a suitable solution for my project.
I am currently using the math_keyboard library to get formulas from users and convert formulas to LaTeX, and I want to display the LaTeX output in html-editor-enhanced.
I hope I can create a good UX for users.
I'm currently developing part of an online testing project called Wikiazma, and I want my users able to design complex questions freely. I need a WYSIWYG editor for this, but unfortunately, Flutter is still weak in this, and after reviewing dozens of libraries, HTML seems to work better than Markdown, Quill, and etc.

Yes you are correct, the wysiwyg functionality in Flutter is very lacking, especially because their webview support is not great. Hopefully it gets better in the future.
If you have any other questions feel free to ask. Thanks!

is it possible to use controller.insertText() or controller.insertHtml() to insert an expression dynamically?


More options for MIDI input devices

Is your feature request related to a problem? Please describe.
The MIDI input settings are not that good. It's not even possible to disable a device. (#173)
Describe the enhancement you'd like
Not only I would like the ability to disable devices, but also, it would be really nice to have the ability to set different instruments for indiviual MIDI channels of each device, instead of setting instruments for the devices themselves.

Hello! Thanks for your suggestion. I just implemented an option to disable and mute individual MIDI devices.
As for your second request, sadly it's impractical at the moment. The code that actually deals with receiving the MIDI messages is a very low-level bit of the program that's completely separate from the main code, and is much trickier to make changes to. Perhaps this can be taken into consideration for the v4.0 rewrite.


The performance of traffice element

Thanks to you awesome work!  But when I training with repo code, the mAP of traffic elements is very low and the visualization result is wrong.

2023-08-30 01:16:58,035 - mmdet - INFO - Epoch(val) [24][601]	OpenLane-V2 Score: 0.1291, DET_l: 0.2889845073223114, DET_t: 2.5147695851046592e-05, TOP_ll: 0.0411, TOP_lt: 0.0006

Hi, @VijayLuo, I sincerely apologize for the mistake.
The bug came from the unscaled gt_bboxes and was caused by an incorrect order of the train_pipeline in the config.
I have already fixed this issue. I kindly request you to retrain using the updated config.

The fixed model and training log is uploaded. Please check the latest update.


save number using sms API

Part of https://github.com/ProgramEquity/amplify/issues/128
If a user subscribes to updates, This API will help us collect phone numbers, verify them, before sending updates on the action a person took
Development would take place in twilio.js with set up of functions for each API use twilio provides
Resources:

[ ] referencing base URL (our key is TWILIO_SECRET_KEY
[ ] SMS API Authentication
[ ] Functions

[ ] POST
[ ] LIST messages

@manishapriya94
Can I work on this?


Can't use precreated partition

I had planned to install Linux on my M1 mac a while ago, but didn't get around to it, mostly because of the high amount of manual work that was required. I had gotten the first step done -- create a partition -- but that was it.
I saw the announcement for the installer the other day, so thought I'd have a look. So I start the installer, and I'm given this screen:
Partitions in system disk (disk0):
  1: APFS [Macintosh HD] (225.11 GB, 6 volumes)
    OS: [B*] [Macintosh HD ] macOS v12.3.1 [disk4s1, 355AE13A-D811-48B5-9096-1B230A4A49E0]
  2: APFS [Linux] (20.00 GB, 1 volujme)
  3: APFS (System Recovery) (5.37 GB, 2 volumes)
    OS: [  ] recoveryOS v12.3.1 [Primary recoveryOS]

  [B ] = Booted OS, [R ] = Booted recovery, [? ] = Unknown
  [ *] = Default boot volume

Using OS 'Macintosh HD' (disk4s1) for machine authentication.

Choose what to do:
  r: Resize an existing partition to make space for a new OS
  q: Quit without doing anything

The option I would need, "wipe an existing partition and use its space" does not exist.
Looking in the python code of the installer, I see there's an option to use "free space" on the disk; however, the Apple partitioner in Disk Utility.app does not allow one to create empty space; reducing the size of an existing APFS partition will immediately create a new partition (APFS by default); it's not possible to tell the partitioner to not do that, AFAICS.
It would be preferable if I could tell the installer to repurpose an existing partition, if one exists that is not the system disk nor the recovery partition.

You can wipe the existing EFI + Linux partition with this method.
https://github.com/AsahiLinux/asahi-installer/issues/76#issuecomment-1094359888


Include VM statistics in the site list

Issue type
[X] Feature request
[ ] Bug report
[ ] Documentation
Environment

Python version:  v3.6.3
NetBox version:  v2.2.4

Description
Would like to see the VMs that are created on the hosts for a site visible at the site level. This would make visibility greater from a top down view as to what is located or hosted at each site. Basically just adding in the a VM number and link in the site under the stats dashboard section.
It would be useful for those that use vms as production servers and would like the visibility at the site level, instead of having to go through the vm section to get the vm details.

A virtual machine isn't tied directly to a site. A VM is tied to a cluster, which in turn may be assigned to a site. We can include a count of all VMs which belong to a cluster assigned to each site, but this will not include VMs belonging to clusters which have no site assignment.

Yes. This makes complete sense and would make visibility of resources much easier. Thank you.

could this be reopened and added to. The addition is great but could you propagate the information in the stats area of the site with the VM number as well.


SAP Business Application Studio subscription issue

Tutorial URL: https://developers.sap.com/tutorials/appstudio-onboarding.html
Step 2: Switch to subscriptions view
The SAP Business Application Studio was subscribed automatically when the account was created, so this step can be removed.
Else add a text stating that if SAP Business Application Studio is unsubscribed then to subscribed to it.
Labels to be attached:
Landscape label: trail1,trail2, trail3
Sprint Label: SCPTest-2009A
Scenario Labels: SCPTest-fbizapp
Priority: Low-Prio
Best Regards,
Priyanka

Hi @PriyankaShivakumar ,
This will be available in the next tutorial update.
Regards - Raz

@raz-korn Can I close this one?

no

@raz-korn When will this be updated? Can the tutorial be completed currently?

Hi @PriyankaShivakumar ,
I released an update today.
Regards - Raz

Hi @raz-korn ,
Thanks for the update. The issue is fixed now so will close the ticket.
Best Regards,
Priyanka


Please publish a new/current version to https://rubygems.org/

The last version published to https://rubygems.org/gems/omniauth-uaa-oauth2 was in 2018

@strehle do you think it would make sense to move this repo over to github actions, like was done for cf-uaa-lib?

@rkoster added gh file, but you or someone from VMware needs to add credentials for rubygems

@strehle / @rkoster it looks like the owners of the gem on RubyGems.org are Dr. Nic, and gramos.
Perhaps it would be worth asking if the CF RubyGems user could be added as an owner of the Gem?

@drnic would you be able to add the cf ruby gems user as an owner to the omniauth-uaa-oauth2 gem?

Done.
$ gem owner omniauth-uaa-oauth2 -a cf
cf was added as an unconfirmed owner. Ownership access will be enabled
after the user clicks on the confirmation mail sent to their email.
Owners for gem: omniauth-uaa-oauth2

gramos
drnic

Thanks @drnic !

@rkoster can you add RUBYGEMS_AUTH_TOKEN to this repo , then this should work.
https://github.com/cloudfoundry/omniauth-uaa-oauth2/actions/workflows/gem-push.yml

secret has been added.

@rkoster Thanks, @aramprice close this now since https://rubygems.org/gems/omniauth-uaa-oauth2/versions/1.1.1 deployed


chore(components): clean-up private/protected

This change fixes an issue where an instance property of checkbox missed its private declaration. This change also aligns new code to existing code where non-API-purpose properties are private unless we expect in-house usage of inheritance.

Thanks @emyarod for spotting the typo!


feat: add finnish translation

Is your feature request related to a problem? Please describe.

Describe the solution you'd like to see
Add finnish translation to the documentation.
Describe alternate solutions

Additional information

Is there any specific instruction for adding a new language to the project?

Is there any specific instruction for adding a new language to the project?

No, not yet. we didn't quite anticipate this big interest in translating the docs.
Generally though:

make a copy of pages/en to pages/fi
File a draft PR to let others know you're working on it
One by one, translate the docs, add lang: fi in the frontmatter of the translated pages

There'll be some other stuff required with the sidebar but that doesn't yet work so we'll have to get back to you on that one.

Thanks! I'll make a draft PR now.

@juliusmarminge do I need to translate the frontmatter too or will it cause some issues.

@juliusmarminge do I need to translate the frontmatter too or will it cause some issues.

We have a guide for translations now:
https://github.com/t3-oss/create-t3-app/blob/next/www/TRANSLATIONS.md
It's probably still a bit rough around the edges but should hopefully be enough to get you started. If not, we also have a ct3a-translation channel on discord now.
And here is an example of a translated file:
https://raw.githubusercontent.com/t3-oss/create-t3-app/cbb21673ada42873279bc4689a9966629081f1e4/www/src/pages/ru/installation.md

I see you've started working on this :) Closing the issues now, feel free to reopen if there's something important.


Token categories hide their sub-tokens in syntax diagrams

Token categories are used to classify a bunch of tokens for ease of reference, among other things. I personally like classifying all binary operator tokens under one BinaryOp token, for instance, so that I only have to write one $.CONSUME() call in the parser as opposed to 10 alternations.
But in the generated syntax diagram the underlying tokens of a category are not shown. Instead the category token is shown as a terminal with NOT_APPLICABLE as its alt text. The expectation is that either the category is replaced with all its children as alternatives, or the category is considered a non-terminal with another railroad showing its sub-tokens, as if it were a production rule. Or some other way to show both that these sub-tokens exist and that they belong to this category.
For example, in the chevrotain playground for 'JSON Grammar and CST Output', True and False show up in the syntax diagram as they're supposed to with proper alt texts. Let's replace the tokens as such:
  const Boolean = createToken({ name: "Boolean", pattern: Lexer.NA });
  const True = createToken({ name: "True", pattern: /true/, categories: Boolean });
  const False = createToken({ name: "False", pattern: /false/, categories: Boolean });

and replace the True and False alterations in the parser with a single { ALT: () => $.CONSUME(Boolean) },. Let's add Boolean to jsonTokens as well.
As you can now see in the diagram, True and False are nowhere to be seen and Boolean, which could be just an internal implementation detail, takes their place in the diagram with an unhelpful alt text NOT_APPLICABLE.
There should be an option to allow expanding/collapsing categories or showing/not showing them as non-terminals.

Hello @lsq-ahaseeb
This is a known issue: #1137 which is up for grabs.
Lets continue the discussion there if you are interested in contributing a improvement to the diagrams rendering.


[Collecting items] July 2021 Newsletter

Please comment below to propose newsletter items!
Scope and Types of items in the newsletters

Announcements: Open-science related initiatives, publications, presentations, awards, etc that involved OSCD members
Opportunities: Open-science related funding, job, support opportunities that OSCD members can benefit from
Events: Institutional, national and international open science events that OSCD members could be interested in participating in.

We limit items to single bullet points - relevant URLs are recommended, (non-excessive) emojis are 🆗 , no images allowed.
A short description of why your suggested item(s) is relevant for OSCD members will also be very helpful for our reviewing and curation!
Please propose items on or before July 1, 2021- this issue will be closed after this date.

Newsletter finalised!


Updating Library Stops Midway

Steps to reproduce
Scroll down on the Library Page to activate Update
Expected behavior
It should go through every list of manga. For Example, (0/100), (1/100), (2/100)...(100/100)
Actual behavior
It updates 1/4 of the list of mangas. (0/100), (1/100), (2/100)...(30/100) then stops.
Crash logs
tachiyomi_crash_logs.txt
TachiyomiS97 version
1.7.3
Android version
Android 10
Device
Samsung J6
Other details
I am really hating this bug, It used to work perfectly before (Probably during past versions), but now this is the problem I am facing
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open issue.
[x] I have written a short but informative title.
[X] If this is an issue with an extension, I should be opening an issue in the extensions repository.
[X] I am reporting an issue exclusive to this fork. I have also checked that is not an issue on the main version of Tachiyomi
[X] I have tried the troubleshooting guide.
[X] I have updated the app to version 1.7.3.
[X] I have updated all installed extensions.

Can you explain more how does the updating stops? Does the app crash or does the notification just disappear silently. I suspect it might be because of battery saving features of your phone.
The logs you shared also didn't include crash events trace.

Can you explain more how does the updating stops? Does the app crash or does the notification just disappear silently. I suspect it might be because of battery saving features of your phone.

No, the app stays up. The notification just disappears.
Scenario:
When I update my library, it goes from (0/100) to (6/100) then finds a new chapter, then I update at that same time again it then goes from (0/100) to (7/100) then finds a new chapter of another manga. It used to go from (0/100) to (100/100).
Now its just stops at intervals. Ex. (0/100) to (15/100), (0/100) to (30/100), (0/100) to (6/100)
P.S battery saving is off for this app

Sorry accidentaly closed it

If possible, please tell me how should I resolve the problem?

It appears this is a duplicate of #9 but you provided more information that helped me discover how to reproduce the bug.
Hopefully this will be fixed in the next release.

Thanks for your patience, looking forward to the next release. Good Luck


Mac OS X

I'm trying to slowly get the ioquake3 engine to compile under os x, as well as the test files and anything else that isn't compiling. Currently I'm copying over a few of the Xcode includes headers and editing them as needed to get the files to compile.
I've added a stub #warning directive but commented out a few others i needed until later.
Currently I have to add:
-I /PATH_TO_XCODE_INCLUDE/include to lacc calls
if i want my own custom edited headers, I have included
-I /PATH_TO_LACC_LIB/include/
ahead of the previous include so that the compiler picks those files up in the correct order,
as I don't know if the flag to have it appended to the include list is available. Maybe I'll add that too?
Thoughts?

Ideally it should be supported with the correct configuration generated by configure script, but I have no experience with OS X so  not sure what is required to make it work. Sounds like you at least need different defaults for builtin include paths.
There is also -isystem, which will append include path after the ones specified with -I.


How to decode these characters?

while the page content isn't English,after use extract() method, the article.content may like this 用——构建.
How can avoid this?

Could you share to me the URL of that page? I would like to confirm if its HTML source contains these characters.

Like this
http://taobaofed.org/blog/2017/03/09/head-first-typescript/

Ah, I see. When I try to run a script as below:
main.extract('http://taobaofed.org/blog/2017/03/09/head-first-typescript/').then((art) => {
  require('fs').writeFileSync('./test.html', art.content);
});

Opening "test.html" give me a good unicode content, not any encoded character even from HTML source:

If you still want to convert the encoded string like "用——构建" into human friendly text, you can use something like he:
var he = require('he');
let s = '用——构建';
console.log(he.decode(s));
// --> 用——构建

Regards,
Dong

Perfectly solved！Thank you!


Display all projects/skills

Specifying
window.SkillsClient.SkillsConfiguration.configure({
serviceUrl: 'http://localhost:8080',
projectId: 'VeryCoolProject',
authenticator: 'gitlab',
});
brings back skills within the project.  Is it possible to bring all projects that the user has reported.
Thanks

@msekkappan  The Skills Display embedded component represents a single project - a single integrated web-application. Usually a single web-application is represented by a single SkillTree project. There isn't currently an embedded component that visualizes users' progress/ranking across multiple projects. With that said, the SkillTree dashboard does have The Progress and Ranking pages which do visualize the user's current Progress and Ranking across multiple projects.
Hope this helps but if not, if you can please elaborate further about the use-case we can hopefully point you in the right direction.


[TB] Molecules - Image - Images missing alt text

Problem/Concern
Images are missing alt text, causing Accessibility Insights for Web errors
Issue
Ensures <img> elements have alternate text or a role of none or presentation (image-alt)
Target application
A11y ThemeBuilder
Element path
.image-sq > img
Snippet
<img src="/sample.jpg">
How to fix
Fix any of the following:
  Element does not have an alt attribute
  aria-label attribute does not exist or is empty
  aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty
  Element has no title attribute
  Element's default semantics were not overridden with role="none" or role="presentation"

Environment
Microsoft Edge version <IP_ADDRESS>
This accessibility issue was found using Accessibility Insights for Web 2.43.0 (axe-core 4.8.4), a tool that helps find and fix accessibility issues. Get more information & download this tool at http://aka.ms/AccessibilityInsights.
Screenshot

Proposed Solution
If images are meaningful, add alt text. If not, add empty alt text.

For the sake of general accessibility knowledge sharing, leaving alt empty implicitly adds the aria role "presentation". role="presentation" is worth knowing about anyway, it has uses other than images.


Reproducible: tab loses indent wrongly and autocomplete thinks I'm outside a function

HD <IP_ADDRESS> and FD <IP_ADDRESS> on Win7x64 both exhibit this problem, but only lately and only in one particular file of my project:

Now, I've had this happen before in other contexts, but it always came down to a missing bracket somewhere in the file, and therefore not in valid code.
But in this context, the project actually compiles and runs without trouble.  This problem persists between restarts of HD / FD.  (BTW is this where to report HaxeDevelop bugs?  Or is there a separate issue tracker somewhere?  I couldn't find it.  In any case this also applies to FlashDevelop, I've verified.)
Here is a reproducible example file:
package;

class ABC
{
	function a(?b:Void->Void)
	{
	}
	function c()
	{
		var myVar:String;
		if (true) {
		}
	}
}

Put the cursor after the if (true) { and hit enter, then type my.  You don't get myVar and you lose a tab indent.  If you take away the ?b:Void->Void it works fine.  If you comment out all of function a() it also works fine.

Duplicate of #1125

Thanks, sorry for the dupe.  I did search, just used different terms than in the other issue.  :)

No problem at all. Will try to fix it during this week.

Sweet!


More docs to from_dict to mention that the result lives in RAM

following discussions at https://discuss.huggingface.co/t/how-to-load-this-simple-audio-data-set-and-use-dataset-map-without-memory-issues/17722/14

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.