Insert Subcircuit Dialog : Longer Circuit Names Bug

Describe the bug
Longer Circuit names either with space or without space gives abnormality while Insert Subcircuit option is clicked.
For Ex: With Space ->Helloworld Helloworld Helloworld Helloworld Helloworld Helloworld Helloworld Helloworld HelloworldHelloworld Helloworld Helloworld Helloworld Helloworld Helloworld
Without Space ->HelloworldHelloworldHelloworldHelloworldHelloworldHelloworldHelloworldHelloworld
The Circuit Name with space overlaps with other circuit names, while that without space goes out of the dialog box.
To Reproduce
Steps to reproduce the behavior:

Go to 'beta.circuitverse.org'
Click on 'Insert Subcircuit' after inserting circuits with long circuit names
See error

Expected Behaviour
The Circuit Name with space should not overlap and should remain inside the container/div, while for that without space, it should not go out of the dialog box, it should remain inside the dialog box, making the text enter the next line adding hyphen to the text break.
Screenshots

Device Information [optional]:

OS: [Windows]
Browser [Chrome]

Are you working on this issue? (Yes/No)
No

@abstrekt can you add some input on how to fix this?

@abstrekt can you add some input on how to fix this?

best to not displaying the full name imo

@Shivansh2407 i think making it a flex box , and managing the overflow direction will work, @satu0king i would like to work on this.

Go ahead and make a PR @rohan2734 👍

@rohan2734 , you can start working with what you think is best, and also share screenshot in your PR

@abstrekt  the problem which i suffer is where is the code, and do i need to setup the whole repo?, can i work in gitlab virtual termninal? is it working fine.
-because setting it itself will take so much time.

I usually prefer setting it up locally, but you can use gitlab @Shivansh2407 works on it if I'm not wrong, he can tell you more about it.
the html for this is the edit.html.erb and the css is main.stylesheet.css & most the color css rules are in color_theme.scss, JS public/src/

Are you talking about Gitpod @abstrekt @rohan2734 ? I use Gitpod just for reviewing the PRs, but in my opinion the Best way to make PRs is to setup the Repo in your local machine so that you can easily work on it without any interruptions (Because some PRs need changes and each time opening gitpod will be tedious, also Gitpod gives 40 hours free worktime only). Also this will help you contribute easily in future.
Incase you need Gitpod Setup Docs Refer :
https://github.com/CircuitVerse/CircuitVerse/wiki/Development-on-Gitpod
https://github.com/CircuitVerse/CircuitVerse/wiki/Pull-Requests-using-Gitpod
For Local setup refer SETUP.md File

@Shivansh2407 how to setup RVM  for thisInstall ruby using RVM, use ruby-2.6.5
and how to download redis and posgre SQL?

are these links  provided in the setup.md enough?
Required Software
Git - using a GUI such as SourceTree or GitHub Desktop can help.
Ruby on Rails
PostgreSQL
Yarn
Redis
ImageMagick

@Shivansh2407 how to setup RVM  for thisInstall ruby using RVM, use ruby-2.6.5
and how to download redis and posgre SQL?

are these links provided in the setup.md enough?
Required Software
Git - using a GUI such as SourceTree or GitHub Desktop can help.
Ruby on Rails
PostgreSQL
Yarn
Redis
ImageMagick

RVM Install : https://rvm.io/rvm/install
You can download PostgreSQL from the link given, I think you will not need Redis setup , but incase you need it, the links are enough to download Redis. If you need any further help, feel free to ask us here.

RVM Install : https://rvm.io/rvm/install

@Shivansh2407  but it is on ubuntu OS right, mine is on windows OS.

For Windows, Directly install Ruby using the given link : https://rubyinstaller.org/

@Shivansh2407  installed rubyonrails from a youtube video.

@Shivansh2407  which version should i download for windows for imageMagick, please check this link.

I guess, the latest versions for Redis and ImageMagick should work. Let me know if there is any issue.

@Shivansh2407  after entering yarn command , there is an error about python

and about imageMagick which one out of these?

@abstrekt please mention the file names along with the path, because i am not  able to find them, if you mention them with folder names , it would be easy for me.

-hey what branch do i need to push if  i complete the task?

@Shivansh2407 in gitpod , if i did the task, and i want to push it but to a different branch, it wont be directly merged right.

hey @Shivansh2407  can you mention the file names with path, i am not able to find them.

I usually prefer setting it up locally, but you can use gitlab @Shivansh2407 works on it if I'm not wrong, he can tell you more about it.
the html for this is the edit.html.erb and the css is main.stylesheet.css & most the color css rules are in color_theme.scss, JS public/src/

@abstrekt has already mentioned the files. Please check them in the New UI Branch.

@abstrekt has already mentioned the files. Please check them in the New UI Branch.

ya but those files i am not able to find, can you send i with path?

@abstrekt has already mentioned the files. Please check them in the New UI Branch.

ya but those files i am not able to find, can you send i with path?

open the CV folder on your drive, use the file explore search feature.

@abstrekt  i tried ,but i will try one more time.

I usually prefer setting it up locally, but you can use gitlab @Shivansh2407 works on it if I'm not wrong, he can tell you more about it.
the html for this is the edit.html.erb and the css is main.stylesheet.css & most the color css rules are in color_theme.scss, JS public/src/

as you can see there are so many edit.html.erb files, which one is the correct one?

views\simulator for simulator

views\simulator for simulator

ok thanks.

i have tried, updating this, but the class is not updating,

but the class is not changin at all.

@Shivansh2407 @abstrekt did you check it?, can you help?,
here the class is not changing even though i am changing it and viewing it.

@Shivansh2407 @abstrekt did you check it?, can you help?,
here the class is not changing even though i am changing it and viewing it.

make sure you've webpacker running on a separate terminal tab,
ruby ./bin/webpack-dev-server for windows.

make sure you've webpacker running on a separate terminal tab,
ruby ./bin/webpack-dev-server for windows.

ok i will try and tell you.

@abstrekt can you send a fix for this. Thanks!

I would like to work on this issue.
Is anyone working on this issue?

Hey @satu0king ,
Is anyone working on this?
If not, I can solve this issue, please assign me.


Shows an error on corrupted true/false

It doesn't like the corrupted line in the filter. :-)

I'll update it today, I forgot to update the latest version, thanks!


$ and $$

Just following standard chrome pattern for $ and $$ - would be nice to make one generate single wrapped instance and the second - collection. That'd be also more apparent what is what.

Logically $('#sel') is never multiple els, $('.class') is conceptually not a singleton, so simple selector parsing gives corresponding result - array or node.


fix: Additives Page- Button text on additives page is not centered.

fix:  The button text on the additives page is left-aligned and not centered. Better if we center-align it.
The button text on the additives page is left-aligned and not centered. Better if we center-align it.
Screenshot

Fixes bug(s)

Fixes: #4214

Part of

#525

@tarunsamanta2k20 LGTM! could you pls add a screen shot for the same.

@tarunsamanta2k20 LGTM! could you pls add a screen shot for the same.

Sure I have installed your app in my phone but your app is stuck on opening screen. I have installed it using flutter run.

you can run the following command in smooth_app dir flutter run -t lib/entrypoints/android/main_google_play.dart. and let me know if you face any problem.

@khanjasir90
https://drive.google.com/file/d/1lgA5K6H0PjCs8lcsbySjqmxpsFotNVVq/view?usp=drivesdk

@tarunsamanta2k20 great work!
@teolemon @g123k could u please take a look at it once.

I don't think that's the right way to fix the issue:
As you can see, this button is used on many screens and you should ensure that only this one is editted.

Let me check

I don't think that's the right way to fix the issue:
As you can see, this button is used on many screens and you should ensure that only this one is editted.

But... at the end of the day we would require all buttons with text center aligned! Is there any specific button that requires left-aligned button?

I don't think that's the right way to fix the issue:
As you can see, this button is used on many screens and you should ensure that only this one is editted.

But... at the end of the day we would require all buttons with text center aligned! Is there any specific button that requires left-aligned text?

I think no. Button labels are center aligned in most of the cases.

@g123k do you want that this parameter would be optional?

@g123k what is your preference let me know.

What you should do is by default let the alignment as is.
But for the particular case of the Wikipedia one, center-it.

@g123k what is your preference let me know.

What you need to do is by default let the alignment as is. But for the particular case of the Wikipedia one, center-it.

@g123k what are all other button should i test to check the effect of changing?

Codecov Report

Merging #4216 (c2fd48d) into develop (14d0200) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop    #4216   +/-   ##
========================================
  Coverage    11.23%   11.23%
========================================
  Files          277      277
  Lines        13694    13694
========================================
  Hits          1539     1539
  Misses       12155    12155

Impacted Files
Coverage Δ

...ric_lib/buttons/smooth_large_button_with_icon.dart
0.00% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

For example, in the carousel, when you have an unknown product:

@g123k i have pushed my changes.

@g123k i have pushed my changes.

Yes, but it's not compiling 😛
https://github.com/openfoodfacts/smooth-app/actions/runs/5320900144/jobs/9635284848?pr=4216

@g123k allow me sometime, i am still working on it.

@g123k i have pushed my changes.

Yes, but it's not compiling stuck_out_tongue https://github.com/openfoodfacts/smooth-app/actions/runs/5320900144/jobs/9635284848?pr=4216

@now check once

Ok perfect, could you just take screenshots of the button with the fix and the other one with the product not found please?

For example, in the carousel, when you have an unknown product:

@g123k from where are you opening this screen. Could you please send a screenshot by running the app from my branch?
because i am not able to see that kind of screen. Please do it ASAP.

For example, in the carousel, when you have an unknown product:

@g123k from where are you opening this screen. Could you please send a screenshot by running the app from my branch? because i am not able to see that kind of screen. Please do it ASAP.

Hey, this button is a different button. this is not using  the AddPanelButton.

@g123k i think everything has done for this PR.

After digging a little bit, the fix here is incorrect.
It's a server side issue, where the icon is not sent.
Instead, you should tell here: if there is no icon -> center
Otherwise, let the code as is

After digging a little bit, the fix here is incorrect.
Instead, you should tell here: if there is no icon -> center Otherwise, let the code as is

Okay sounds good. But I believe that the existing solution to this issue is more feasible than the suggested one because, later, at some point of time, if you want the button with the icon also gonna be center aligned, then again you have to follow the same approach. Do let share your suggestions over here. Feel free to share your preferences as well.

We don't want the button to be centered when an icon is available, hence the change needed


vecmat fails to compile for VMVX+DT+UKERNEL

What happened?
Here is an input for repro.
func.func @vecmat(%a : tensor<1x128xf32>, %b: tensor<128x1024xf32>) -> tensor<1x1024xf32> {
   %result = stablehlo.dot_general %a, %b, contracting_dims = [1] x [0], precision = [DEFAULT, DEFAULT] : (tensor<1x128xf32>, tensor<128x1024xf32>) -> tensor<1x1024xf32>
   return %result : tensor<1x1024xf32>
}

Steps to reproduce your issue
iree-compile  --iree-input-type=stablehlo --iree-hal-target-backends=vmvx --iree-opt-data-tiling=true --iree-vmvx-enable-microkernels vecmat.mlir -o vecmat.vmfb
failed to translate executables
failed to translate executables
failed to translate executables
vecmat.mlir:2:14: error: 'vm.div.i64.s' op operand #1 must be 64-bit signless integer, but got 'index'
   %result = stablehlo.dot_general %a, %b, contracting_dims = [1] x [0], precision = [DEFAULT, DEFAULT] : (tensor<1x128xf32>, tensor<128x1024xf32>) -> tensor<1x1024xf32>
             ^
...

I found query_tile_sizes is not lowered into a microkernel call since it is 1D for LHS. (Looks like the unit outer dim is dropped.)

VMVX + DT + ukernels will result in dynamic inner tile sizes. I think we only support typical matmul at this moment. I disabled data-tiling for batch_matmul, and we probably need to disable it for matvec/vecmat as well.
https://github.com/openxla/iree/blob/0545746bddea74f1a9f0b8ef5adfe0c380770145/compiler/src/iree/compiler/Codegen/Common/CPU/CPUMaterializeEncodingPass.cpp#L40-L47

@hanhanW thanks for the comment, but disabling DT would degrade perf, wouldn't it?
I have a tentative fix to add query_tile_sizes.1d for LHS and RESULT, which seems to fix the issues with LHS and RESULT, but the vecmat fails with error: Unable to resolve all strided buffer descriptors. Looking into it.

Here is a small repro: https://gist.github.com/okkwon/eb8f663b9da2ec62acc9f8ebaeddcbdf
How to repro:
iree-compiler vecmat.mlir -o vecmat.vmfb

If you are going through VMVX, everything is slow... if you want performance, please use llvmcpu backend. It also supports ukernels. Fixing it on VMVX path is just make it use the same kernel on cpu path. So I would suggest to use llvmcpu directly.

If you are going through VMVX, everything is slow... if you want performance, please use llvmcpu backend. It also supports ukernels. Fixing it on VMVX path is just make it use the same kernel on cpu path. So I would suggest to use llvmcpu directly.

There is a use case that needs to use VMVX. Hope the gap is small when we use micro kernels.

It took a while to understand the issues in the codegen flow, but it looks like we can simply fix the issue by skipping the reshaping of <1x128xf32> to <128xf32> for stablehlo.dot op, which always happens.
When I disable the DotVectorOptimization pattern, it compiles okay.
@rsuderman do you have any comments on disabling the pattern? I'd rather leave such optimization to users. Or, we may introduce a flag so that we don't do it for the VMVX backend.


Opflow takes the adjoint of an Operator if the expectation value is written as OperatorMeasurement

Information

Qiskit Terra version: master @  1c049978525ea912422fb656625264aa7d4075bd
Python version: 3.7.9
Operating system: macOS Big Sur

What is the current behavior?
As discovered by @Zoufalc, if an expectation value is written as ~StateFn(operator) @ state, the operator is complex conjugated although it shouldn't be. I.e. in that case the Opflow evaluates
<state | operator_dagger | state>

instead of the expected
<state | operator | state>

Steps to reproduce the problem
from qiskit.opflow import *
op = 1j * Z
state = Zero
print((~Zero @ op @ Zero).eval()) # = 1j -> correct
print((~StateFn(op) @ Zero).eval()) # = -1j -> wrong sign! The operator was complex conjugated!

What is the expected behavior?
Don't take the adjoint of the operator.
Suggested solutions
Maybe we should adjust OperatorStateFn.adjoint to not take the adjoint of the primitive? Not sure if that breaks stuff elsewhere.

I thought this behavior is as expected. ~StateFn(operator) @ state means Hilbert-Schmidt inner product <operator | "state">_HS = tr[operator^dagger |state><state|].

I don't think so, as far as I remember this is supposed to evaluate the expectation value of the operator as it is.
Since several expectation converters only support this representation of ~StateFn(op) @ state it would be strange if that wouldn't be an ordinary expectation. I think e.g. VQE uses this representation, or the tutorials.
Maybe we should have an explicit state function for measurements to avoid this confusion?

If the operator is Hermitian then this is always fine since then operator^dagger = operator.  However, this is not true in general and then we need to be careful and ensure that
<state | operator | state>  = tr[operator |state><state|].

Evaluation of the expectation value of the operator is given by Hilbert-Schmidt inner product. That is natural from the perspective of mathematics and this is used in PTM representation.
I know this representation is frequently used.
As @Zoufalc said, if the operator is Hermitian, there are no problem. For Non-Hermitian operator,
 <state | operator | state> =  tr[operator |state><state|] = <operator^\dagger | "state">_HS where "state" =  |state><state|.
What is important here is whether the representation ~StateFn(operator) @ state means <operator^\dagger | "state">_HS or tr[operator |state><state|].
I strongly support the representation means the HS inner product because ~ represents adjoint.
If you want to calculate <state | operator | state>, just write print((~StateFn(~op) @ Zero).eval())

Maybe we should have an explicit state function for measurements to avoid this confusion?

This may be nice idea!

The opflow tutorial said

The composition operator is used to perform an inner product, which by default is held in an unevaluated form.

So this representation must be inner product.

For the case of the left operand being a OperatorStateFn we have a special case, see https://qiskit.org/documentation/tutorials/operators/01_operator_flow.html#OperatorStateFn.

I think we need to be careful here since the Hilbert-Schmidt inner product is -as you say- defined as <A|B>=Tr(A^*B) but an expectation value w.r.t. a state |s> and observable O is given by Tr(O)|s><s| = <s|O|s>.

tl;dr: We should keep the current behavior but add a class OperatorMeasurement to explicitly do expectation values.
Ok so there's an abuse of notation we need to clear up. Here's what I think:

The canonical way to write expectation values in Opflow is OperatorMeasurement(operator) @ state. I say canonical because expectation converters and gradients work only with that representation and not with ~state @ operator @ state.
We've been using ~StateFn(op) as shorthand notation to obtain a OperatorMeasurement(operator). But that's not technically correct, and this is where @ikkoham is right: ~ means adjoint and means we complex conjugate the state function. What we meant with ~StateFn(op) @ state is actually StateFn(op, is_measurement=True). If you run the above example, this works correctly:print((StateFn(op, is_measurement=True) @ Zero).eval()) # = 1j -> correct

To clear this confusion up we need a designated way to write operator measurements. Since the adjoint of an operator state function prints as "OperatorMeasurement" I suggest we add a class OperatorMeasurement to represent the adjoint of OperatorStateFn. With that the syntax would beprint((OperatorMeasurement(op) @ Zero).eval()) # = 1j -> correct

@Cryoris Thank you for your nice suggestion. I completely agree with your idea.

If we want to fix this, I think we should take the opportunity to make the design a bit simpler and more uniform. It may be possible to do this without too much disruption. I'd like to

Separate the concepts of measurement and adjoint, which are currently confounded. We could do this by leaving the current design mostly intact, but adding a new way to represent what we have been calling "expectation" or "measurement".

Have the compose operator @, which for the most part constructs ComposedOp, represent one idea; probably tensor contraction. It seems this already agrees with how it is used in opflow, except for things like StateFn(op, is_measurement=True) @ Zero, in which @ means something different. If we want @ to mean tensor contraction, then we could represent the latter as  ~state @ op @ state. Or if that is difficult to recognize or handle, then something like DiagMatrixElement(op, state), which does not abuse the meaning of @.

Use technical quantum mechanics terms only in their usual textbook sense; roughly Nielsen and Chuang. In particular, "measurement" in QM never means "a complex linear combination of expectation values of observables", which is, it seems, how we have been using it.

In particular, I disagree with  using OperatorMeasurement(op) @ Zero on two counts: 1) @ is used anomalously and confusingly here. and 2) OperatorMeasurement(op) seems to suggest a QM measurement. But, really it means, treat the following symbol @ in a special way, ie construct a diagonal matrix element <0| op |0>, where op is an arbitrary matrix.

Closing this, as from above it turns out this is not a bug in the code but rather a bug in my user expectation 😉


refactor: disentangle bindgen extractor logic (continued)

Hi,
As discussed with @frol I took over #890 and continued it here.
Thanks for all the great work prior @itegulov ! I really appreciate your refactoring after making a small change in related code yesterday.
TODOs
There were the following unresolved questions in #890 :

Whether the trait object based polymorphism approach in the visitor can be improved and subsequently whether build can be made more idiomatic.
How handles_result and visit_result relate.
Whether view functions can be allowed to be private.

Polymorphism
When looking at the trait object based polymorphism approach I noticed that there is some repetition in the trait implementations. I initially tried to resolve this by providing default implementations, but then realized that the combinations of shared code are not amenable to this. Specifically, given the three kinds of methods (call, view, init), there were no trait method with more than two differing implementations, but how the the the three methods are split into two groups varies.
For this reason, I switched from a trait based approach to an enum based approach, where there is just one visitor object (as opposed to three visitor objects for each method kind implementing a trait). The methods of this single visitor object match on an enum to alter their behavior based on an internal tag that determines the method kind that the visitor object represents.
For example I changed

impl BindgenVisitor for InitVisitor {
    fn visit_init_attr(&mut self, _attr: &Attribute, init_attr: &InitAttr) -> syn::Result<()> {
        self.ignores_state = init_attr.ignore_state;
        Ok(())
    }
}

impl BindgenVisitor for CallVisitor {
    fn visit_init_attr(&mut self, attr: &Attribute, _init_attr: &InitAttr) -> syn::Result<()> {
        Err(Error::new(attr.span(), "Call function can't be an init function at the same time."))
    }
}

impl BindgenVisitor for ViewVisitor {
    fn visit_init_attr(&mut self, attr: &Attribute, _init_attr: &InitAttr) -> syn::Result<()> {
        Err(Error::new(attr.span(), "View function can't be an init function at the same time."))
    }
}

to
impl Visitor {
    pub fn visit_init_attr(&mut self, attr: &Attribute, init_attr: &InitAttr) -> syn::Result<()> {
        use VisitorKind::*;

        match self.kind {
            Init => {
                self.parsed_data.ignores_state = init_attr.ignore_state;
                Ok(())
            }
            Call | View => {
                let message =
                    format!("{} function can't be an init function at the same time.", self.kind);
                Err(Error::new(attr.span(), message))
            }
        }
    }
}

I found that this approach significantly reduced the code size and I found it easier to check the rules for a specific attribute as it's all in one function. It also makes it possible for the build method to take self by value which was brought up in the review for #890.
The downside is that all the parsed data is now in a single internal data structure even though not all methods need all fields from it which is not so clean. In contrast, with the trait based approach each method kind visitor had its own parsed data structure holding only the data the variant supports. I don't think the single parsed data structure should cause problems in practice, because a visitor method errors if it's called on a variant that doesn't support it.
I'm curious to hear what you think about this approach! Happy to adjust it. The change is done in f6ab89dcfce7393f366e1c64a46396fddd145d9e.
handles_result and visit_result
A review in #890 asked whether visit_result needs to be called when handles_result is visited.
Visiting handles_result was not part of the visitor yet, so I added a method called visit_handles_result for it in 3e843b04a6952e98fec0a40c2f474df91f0a1695. I later renamed from visit_handles_result to visit_handle_result_attr in 76be952 for consistency.
I noticed a potential for confusion based on the method name so I renamed visit_result to visit_return_type in 83534ed2455649ffc9d8cea8383b0fff9eba61ca which is more accurate.
When calling visit_return_type there was a potential for error, because it needs to be called after handles_result is set for correct behavior. I resolved this by merging the build step and the visit_return_type step since there is only ever one return type and calling it in build ensures that it's called last.
Private view functions
A reviewer in #890 commented that private view functions shouldn't be allowed. This wasn't implemented in #890 and when I made the change several tests failed, because methods that take &self as argument are considered ~private~ view. Example failing test case:
#[private] pub fn method(&self, #[callback_unwrap] x: &mut u64, y: String, #[callback_unwrap] z: Vec<u8>) { }

On a related note, at first I was surprised that methods that take self by value are view, but I guess that it makes sense since they cannot mutate the object. As I haven't found a test case for this I added one to make sure that method(self) isn't payable in 56394ec234587b8195005b8b601c9b80c24b2247.
Next steps

We need to resolve whether view functions can be allowed to be private.
Once this PR is ready to be merged, as suggested by the original author, I'll follow up follow-up with a PR to clean up the code generation side of bindgen the macro which will be helped by this refactoring.

@agostbiro I have not reviewed the code yet, but I checked that buildkite CI fails due to Cargo.lock files in examples being not up-to-date. Please, compile all the examples (run examples/build_all_docker.sh) and commit all the changes.

@agostbiro I have not reviewed the code yet, but I checked that buildkite CI fails due to Cargo.lock files in examples being not up-to-date (strum dependency was added [it was already in the dependency tree, so it is not adding anything new, but Cargo.lock gets changed]). Please, compile all the examples (run examples/build_all_docker.sh) and commit all the changes.

Thanks @frol , I committed the updated Cargo.lock files in 6637e5928e63b3e9eeb1a93bea41752919958f7c and the CI passes now.

Thanks @itegulov for your kind review!

I think you meant that methods that take &self argument are considered view, right?

Yes, you're right, I misspoke and meant view there. I created a follow up issue https://github.com/near/near-sdk-rs/issues/1026 to discuss private view methods.

@agostbiro I have re-run the job, should be good now


NaNimation is causing wrong materials

I have encountered two issues that does not exist before optimizer 3.5.0
Environment:
VRCSDK 3.5.1
d4rkAvatarOptimizer 3.5.0
VRCFury 1.795.0
NDMF 1.3.6
poiyomi 8.1.167
liltoon 1.7.2
To reproduce

NaNimation is causing some the meshes to be pure black when I use poiyomi and liltoon at the same time. I have made animations to change the min brightness of poiyomi and liltoon materials, but it should be no way to make liltoon materials to be pure black like this. I don't know how to specify the exact issue. This issue will not occur if only I cancel NaNimation.

Without NaNimation:

FaceTracking seems to break after optimizations. This does not happen if I test avatars in play mode (NDMF+VRCFury executed) or baked avatars (NDMF bake avatar+VRCFury build test avatars) without d4rkoptimizer.

Without optimizations:

TrashBin.zip
VF_Sotai_Chiffon_max_11bits_Clone__Clone_.zip

Ok, for face tracking I have an idea what causes it. Seems like it is animating Animator parameters in there and the way I check if bindings are animatable doesn't find that so it deletes all of that. Should be easy to fix...
For the other issue I would like some additional info from you:

What material/shader are the socks?
What material/shader is in the first slot of the same mesh as the socks after merging.
Screenshot of the list of materials in the merged mesh that include the socks.
Screenshot of the merge preview around the socks mesh/material after baking NDMF/VRCFury but before optimizer runs.

Try 3.5.1 to see if it fixes the face tracking.

By the way, I could bake NDMF dependently but could not separte VF bake and d44k optimizations. When I bake VF, d4rk is triggered.

The material of the socks is liltoon.

The first slot of the same mesh where socks belong to is poiyomi.

Screenshot of the list of materials in the merged mesh that include the socks.

Screenshot of the merge preview around the socks mesh/material after baking NDMF/VRCFury but before optimizer runs.

Try 3.5.1 to see if it fixes the face tracking.

FaceTracking is all right in Unity. Thx

I could bake NDMF dependently but could not separate VF bake and d44k optimizations. When I bake VF, d4rk is triggered. It seems that sometimes d4rk could be triggered respectively, sometimes not, I could not understand the rule. When I open the issue, I could separate VF and d4rk, but I could not do it now.

Simply uncheck the Optimize on Upload checkbox on the optimizer and I think fury will not run my optimizer when building the test avatar.

Only when I enter play mode, will the socks become pure black. So probably the lightness is animated. But I have never animated liltoon to be black.  I do animate the lowest lightness of liltoon and the multiplier of the lightness of poiyomi.

Yes, once again I suspect some weirdness of WD ON material property animations. Here the problem seems to be that the first material of the merged mesh is poi while the socks get merged in later and are lilToon. If the poi material doesn't have the property you animate for the socks, then its default value will be 0 instead of what is set on the socks initially. But I need to investigate that a bit further to verify that.
Thanks for all the info so far!

I could bake NDMF dependently but could not separate VF bake and d44k optimizations. When I bake VF, d4rk is triggered. It seems that sometimes d4rk could be triggered respectively, sometimes not, I could not understand the rule. When I open the issue, I could separate VF and d4rk, but I could not do it now.

Simply uncheck the Optimize on Upload checkbox on the optimizer and I think fury will not run my optimizer when building the test avatar.

Only when I enter play mode, will the socks become pure black. So probably the lightness is animated. But I have never animated liltoon to be black.  I do animate the lowest lightness of liltoon and the multiplier of the lightness of poiyomi.

Yes, once again I suspect some weirdness of WD ON material property animations. Here the problem seems to be that the first material of the merged mesh is poi while the socks get merged in later and are lilToon. If the poi material doesn't have the property you animate for the socks, then its default value will be 0 instead of what is set on the socks initially. But I need to investigate that a bit further to verify that.
Thanks for all the info so far!

Thx for your instructions. And here is a probably related issue:

Emission of face (the green material) is animated to none after optimizations in play mode. The optimized copy in editor or NDMF/VF baked copy of the original avatar looks good.

The face has two materials:

Poi transparent material without emission session (Red). Appears as the first material in combined mesh.
Poi opaque material with emission session(Green)

I tried to fix this by enabling the red material's emission sessions, but it does not help. I also have tried to enable the emission session of the Shoes' material (VRCFury Material for shoes_lime Poiyomi Toon Outline), which also appears to be the first material of the combined mesh , it did not help either.

I doubt this is a new issue since v3.5.0: Reduced generated shader complexity handling material property animations. As I am keeping met issues with material property animations applied for poiyomi like _RimEnviroIntensity, _EmissionStrength. which is not a problem in the previous version. And this is probably triggered when the merged mesh has poiyomi shaders and other shaders together

I changed how material property animations are handled with WD ON.
As such I will close this as its no longer relevant to what the optimize is doing now.
Please make new bug reports if issues arise.


Specification of table names in DLP Dataset for Sensitive Tag Column

It seems that the table name you want to tag and the table name of the DLP dataset need to be the same, when running Sensitive Tag Column.
However, there is no explanation for table names in DLP Datasets.
If this is the specification, it should be added to ui_guide.md.
https://github.com/GoogleCloudPlatform/datacatalog-tag-engine/blob/b64520a4780e66e72215efd5cf530e3f87b61059/docs/ui_guide.md?plain=1#L93-L95

Yes, that's true. Are you saying that for you the table names don't match up? (i.e. the name of the table you want to tag does is different from the name of the table written by DLP?).


Invalid checking if otp_yubikey should be used

Expected Behavior

If  otp_yubikey is installed in current environment (venv), but absent in INSTALLED_APPS, then tests which use login should work.
Current Behavior

Tests crash with:
RuntimeError: Model class otp_yubikey.models.YubikeyDevice doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Possible Solution

Instead of trying to import otp_yubikey and catching ImportError you can check if otp_yubikey is present in INSTALLED_APPS.
Steps to Reproduce (for bugs)

Well, I don't have minimal example, but here is the change I am working (patchset 2 failed due to this problem). I have ran it locally and pasted the reason above.
https://gerrit.sio2project.mimuw.edu.pl/#/c/2946/
Your Environment

Browser and version: Google Chrome 64.0.3282.167 64-bit
Python version: 2.7.6
Django version: 1.9.13
django-otp version: 0.4.2
django-two-factor-auth version: 1.5.0 (latest for Django 1.9)

This is the current check, it already checks INSTALLED_APPS:
try:
    import yubiotp
except ImportError:
    yubiotp = None
#...
def get_available_yubikey_methods():
    methods = []
    if yubiotp and 'otp_yubikey' in settings.INSTALLED_APPS:
        methods.append(('yubikey', _('YubiKey')))
    return methods

See https://github.com/Bouke/django-two-factor-auth/blob/7684b9a08f63ffa0ee79c3ac94a0f67ba864730a/two_factor/models.py#L41
A pull request that solves your problem would be welcome.


Alter movement for Paralyzed and Petrified.

Feel like these two effects should have a data.attributes.movement.all > Custom > 0 setting.

Sounds good, will do

Added in v1.8.3


KAFKA-12313: Streamling windowed Deserialiser configs.

This PR aims to streamline the configurations for WindowedDeserialisers. It deprecates default.windowed.key.serde.inner and default.windowed.value.serde.inner configs in StreamConfig and adds window.inner.class.deserialiser. Details described here: https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=177047930

hey @ableegoldman , plz review whenever you get the chance..

Thanks @ableegoldman , actually i think i had updated the ticket as well that we need to include serialisers as well. i have updated the KIP. and sent it again for discussion. Thanks!

Hey @vamossagar12 , I think we're good to go on the update you proposed to this KIP. Take a look at the other feedback I left and just ping me when the PR is ready for review again. Thanks!

hey @ableegoldman , could you plz review the PR whenever you get the chance? Thanks!

Done! 👏
@vamossagar12 I'll close out the JIRA ticket, but can you update the KIP and move it to the "Adopted" section in both the main KIP page and the Streams KIPs subpage? I can send you a link if you're not sure what I'm referring to here.

thanks @ableegoldman , have updated the main KIP page, the streams kiP sub page and the actual kiP. Thanks for your support!


Make action headers, params and payloads be required by default

This is probably what most people expect from it, so let's make it so.
To make any of those three definitions non-required, simply add the :required option as used in any other attribute definition. For example:
payload required: false do
  attribute :foobar, String
end

Signed-off-by: Josep M. Blanquer<EMAIL_ADDRESS>

LGTM.


Stop trying to move config from read-only config partition

There is some prehistoric code in the onboot script that allows to pass initial hardwaremodel, rebootConfig and restartcounter files via /config partition. However, as this partition became read-only, EVE is no longer able to remove them once applied:
move /config/rebootConfig /persist/status
mv: cannot remove '/config/rebootConfig': Read-only file system

But while the file cannot be removed, mv command will manage to at least copy its content to /persist. But this means that on every boot the current value in /persist is overwritten with this initial content from /config. This is very dangerous especially for rebootConfig. Device will end up in endless reboot cycle: on every boot it will replace the last applied reboot counter with whatever the initial value was set in /config, which results in counter mismatch wrt. the reboot counter from device config received from the controller.
I'm not aware of any practical value of setting initial values of these files through /config, therefore I think this functionality can be completely removed.

@siddharthzed can it be the fix for the issue with node reboots because of the updated rebootcounter you contacted me two weeks ago?


Dark Mode Main background color & Social Logo's color change with dark mode. ASSETS AVAILABLE BELOW.

I would say having the background color in dark-mode be #000000 is to strong for the eyes, i would suggest changing the background color more to #171717.

ASSETS GREY LOGO'S
Color of Assets #AAAAAA
Grey Social Logos.zip

Also love the gray assets :)

It looks like there are still two reaminig issues.

Best regards
nformant

This is caused by the class of the a href attribute. When switching to light, it has the opposite effect.
I can help to review the fix, but looking at @qlpqlp approval of the grey assets above, i'm not sure it's necessary anymore.

@qlpqlp any info on when this will be resolved?

Done!, sorry the delay.


Development of avatar

Design
### Acceptance criteria
- [x] get POC working in avatar component
- [ ] make focus ring
- [x] improve flexibility of sizing (using tokens)
- [x] vertical layout of avatar and name
- [x] add tokens

Getting the info on whether the avatar is round or square based on a css variable is difficult; only after the first render this property can be read, so you will get a flicker in content. Also, it's not really possible to create one token to use in figma. We need to look for another way to choose between square and round for a whole theme at once. Preferably somewhere on a high level, in a sort of config file?

In vertical mode:

header (name) wraps over 2 lines
subheader truncates
in total max 3 lines

I’m working on the aria-label/ alt text for the avatar and how it works right now is in the screenshot. of course the name (when visible) gets read as well when using a screenreader.
Some things I have doubts about:

the status “label” is now something we dictate; i just use the value of the status attribute, and the list of option for that is the same for all cfa’s and languages. Should we even use this?
It just says “34" but not what that means. Should we add an attribute so devs can add a category/label postfix?
I don’t add the name to the aria-label when that is read out anyway after the avatar. Is that correct?
The aria-label is on picture level, not on the component, so we can use the name and subheader that are rendered. I’m pretty sure this is the right way to go, but if you think otherwise, let me know.


Losing an UO challenge with The Wall causes server error

Losing an unopposed challenge grants the attacker 1 UO power, then causes a server error (the wall is not knealt) which can only be cleared by manually kneeling the wall, which gives the opponent a second UO power.

This was fixed in a recent commit but isn't deployed yet


Expose the certificate chain in the sender Identity

I feel that I have already merged something like this.

Found it, it seems that I forget to upload the pull request (commit).

I close this PR because it is now possible to introduce a custom certificate validation through the DtlsConnectorConfig (see https://github.com/eclipse/californium/pull/602).


Docs: fix typos & expand v0.18.X docs (qpy, pulse)

Summary
Minor fixes to docs that I found when reading through the v0.18.X release notes. These changes can probably be backported to v0.18.X
Details and comments

Fix typos & minor doc errors in qpy specification
Add links to qiskit.pulse.transforms docs (more transforms are included than are specified in the docs (https://qiskit.org/documentation/apidoc/pulse.html).
Add note about existence of qiskit.pulse.transforms.block_to_schedule(), which can be useful in the changeover from qiskit.pulse.build() returning Schedule -> ScheduleBlock.

Commits:

qpy_serialization: fix docstring typos
docs (pulse): add reference to transforms
docs (release notes): add block_to_schedule reference
docs (qpy): fix more typos
docs (qpy): fix CUSTOM_DEFINITIONS intro

Rebased to see if there are merge conflicts. Didn't find any.


Add explicit upgrade command for kubectl-gs

Before

After

The validation error thing is pretty cool ✅

The validation error thing is pretty cool ✅

Good to hear, thanks


fix content overflow of tag list

Description
Fixes issue of content overflowing when there are more than 5 tags in the play page while the screen width is less than 435px.
Fixes #122
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Tested via Dev tools.
Checklist:

[ ] I have performed a self-review of my own code
[ ] My changes generate no new warnings

@AhnafAhamed Thanks for your contribution to ReactPlay. You will be added to the contributor list soon.
Feel free to support the project with a 🌟, also if you share your contribution experience on Twitter, please tag @ReactPlayIO. Looking forward to see more contributions 👍

@all-contributors please add @AhnafAhamed  for Code


Add support to print single property

@heaths,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

:white_check_mark: Build vswhere 1.0.24-beta+g1980171184 completed (commit https://github.com/Microsoft/vswhere/commit/1980171184 by @heaths)


Gcstobtjavablog

#459
PR to update the blog link for the GCS to Bigtable in Java blog

This PR is for the blog issue # 459 and template issue # 157


⚠ Minecraft has degraded performance

In 0dd915b, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1054 ms

Resolved: Minecraft performance has improved in b9de8aa.


16-bit PNGs not rendered correctly

Hi,
I was trying to render a 16-bit png but doesn't seem like it supports 16 bit.  I do that both "bits" and "pixelBitlength" were set to 16.
Any idea?
Thanks!

Hi, I had many problems with this library, so I decided to write my own https://github.com/photopea/UPNG.js . It accepts 16-bit depth without any problems.


Debug info in ZAC

It would be cool if there was a debugging information page in ZAC.  I am thinking a "Debugging" type option down the LHS, and then across the top, can be common command that are run in the controller, such as

ziti edge policy-advisor identities -q
ziti edge policy-advisor services -q

There are probably more, as I am a beginner with ziti, but when logging notes in discord etc, could make it easier for a beginner.

You can add "debug" to the command line and all service calls will display in stdout.
e.g. node server.js debug

Is that inside the web GUI. I am talking about a debit page that shows the output of those commands.

@JeremyTellier - see the followup comment. is there any equivalent of policy-advisor in zac yet? we definitely should have it

@dovholuknf - Yes, policy advisor is available when you click an identity and click a service to test.


Export CSV

HELLO,
PLEASE HELP ME,
EXPORTING CSV DOES NOT DISPLAY TILDES AND Ñ
FOR EXAMPLE
Ã¯Â»Â¿"ID","Nombre","Estado","Â "
HOW DO I SOLVE IT?

I AM USING GENTELELLA PLUGIN FOR YII2.0

Can you provide a screenshot or so? Would be really helpful and also can you please write that again ?


RichText: Add https:// as placeholder instead of textbox value when adding url

Category
[X] Enhancement
[ ] Bug
[ ] Question
Version
[ 3.15.0 ]
Expected / Desired Behavior / Question
When you are adding a url to the text in the RichText control, the url text box should have a place holder text saying "https://". Today, the url text box instead have a default value of "https://", giving that when you paste a url into the box, the value becomes "https://https://...". This is very annoying and can be defined as an incorrect behaviour for editors.

Hi @daenur76,
You're right, this should be displayed as a placeholder instead of a value.
Are you insterested to submit a PR for this one?

@michaelmaillot Of course, PR has been submitted.

Linked PR has been merged and should be available soon in the beta release.


Backticks in {CLAUSE} mess up my alter-wrapper

I'm trying to echo my percona commands to a file using the alter-wrapper options, but the backticks in the {CLAUSE} part are messing up the wrapper as you can see below.
\! echo "pt-online-schema-change --dry-run --alter 'ADD COLUMN `test` varchar(450) DEFAULT NULL' D=xxx,t=xxx,h=xxx,P=xxx,u=xxx,p=xxx" >> /skeema_wrapper_output
/bin/sh: 1: test: not found
2019-08-02 09:24:39 [INFO]  xxx:xxx xxx: push complete

My alter-wrapper:
alter-wrapper=echo "pt-online-schema-change --dry-run --alter {CLAUSES} D={SCHEMA},t={TABLE},h={HOST},P={PORT},u={USER},p={PASSWORDX}" >> /skeema_wrapper_output

What is the best way to echo all my commands to a file?

It seems to work by surrounding the {CLAUSE} with a single-qoute followed by a double-qoute
alter-wrapper=echo "pt-online-schema-change --dry-run --alter '"{CLAUSES}"' D={SCHEMA},t={TABLE},h={HOST},P={PORT},u={USER},p={PASSWORDX}" >> /skeema_wrapper_output

Yeah, this is due to quoting behavior of the Bourne shell, which is outside of Skeema's control. This doesn't normally come up if you're using a real command and not echo.
Side topic but can you describe your use-case in more detail? I generally don't recommend using an alter-wrapper of echo, as this prevents skeema push from actually pushing. This is not guaranteed to work in future versions -- it's possible push may have extra verifications of the success of the push in the future.
If you just want to generate pt-osc command lines from an automated pipeline, I usually recommend invoking skeema diff | tee some-file. Or if you need to remove the \!  prefixes on shell-outs, this could be filtered by putting something like sed in the middle of the pipeline.
I've also considered supporting alter-wrapper output in the automatic diff comments in the hosted CI system, but handling of passwords becomes problematic there, and ditto for size-based options like alter-wrapper-min-size.

Well, i'm doing it this way because we have a special user for doing alters. This user only has localhost access on our database server due to security.
The build server, where i'm running skeema, is a seperate server and thus should not execute any alters.
My workflow is:

Skeema diff
Fail if any errors are found
Skeema push (with the alter-wrapper)
Execute all commands, in the output file, on the database server through SSH


⇧ / ⌘Y meaning

In the readme it says this command is to quicklook events
⇧ / ⌘Y
⌘Y worked for that, but ⇧ Y (shift Y - right?) didn't work.

shift Y - right?

No, just SHIFT. It's a standard Alfred feature.


Mezzanine generation script cleanup and improvements

Made the script a bit more generic, should be able to handle arbitrary content sizing now as well.

Cleaned up option set to mezzanine script
Made target resolution configurable with appropriate sizing of the overlay components when this is done
Increased cross process data queueing for qrcode -> ffmpeg
Documented in README how to use the script

The following should perform all the steps:
./mezzanine.sh -s 00:00:07.250 -d 30 -f 30 -b boundaries.png -t "Cousine-Regular.ttf" ToS-4k-1920.mov tos-30sec-final.mp4


Bump DuckDB to v0.9.1

Extensions will be build by this workflow btw: https://github.com/duckdb/duckdb/actions/runs/6483452177


Fine tuning regional forecasts at a higher resolution

Hi. Thanks for the great work!
I can't quickly make it out at a glance.
Does the model support fine tuning regional forecasts at a higher resoluton than the model was pretrained on?

Fantastic. Thank you.


increment counter inside endpoint

looks good! I wonder if we need to make it possible to disable the metrics collection (maybe some people don't want it  ... )
But good for now.

looks good! I wonder if we need to make it possible to disable the metrics collection (maybe some people don't want it  ... )
But good for now.

we can add a command line argument that disables or enables metrics.init(app) then?

we can add a command line argument that disables or enables metrics.init(app) then?

sure. but now we're also "invading" other source files which will make it harder to disable the metrics.

sure. but now we're also "invading" other source files which will make it harder to disable the metrics.


Use kotlinx.serialization

This PR attempts to make the protocol module multiplatform by using kotlinx.serialization instead of jackson. these are the highlights:

Make all classes @Serializable
Use the Kotlin Multiplatform plugin instead of JVM for protocol

Don't apply the java plugin to all modules

Bump Kotlin to 1.8.10 (we need this for generic value classes)
Move all Lavaplayer related code into server module
Move v3 classes to jvmMain
Add KotlinxSerialization2HttpMessageConverter and add it to spring configuration

I updated my client to the discussed & here implemented changes and it seems to be working fine

The Track search response is currently broken.
{
	"loadType": "search",
	"data": {
		"tracks": []
	}
}

is what's being returned when it should be
{
	"loadType": "search",
	"data": []
}

The Track search response is currently broken.
{
	"loadType": "search",
	"data": {
		"tracks": []
	}
}

is what's being returned when it should be
{
	"loadType": "search",
	"data": []
}

fixed


Bugfix: default lro retry settings was incorrect.

Current coverage is 92.94% (diff: 100%)

Merging #91 into master will increase coverage by 0.08%

@@             master        #91   diff @@
==========================================
  Files            10         10
  Lines          1190       1190
  Methods         189        189
  Messages          0          0
  Branches        235        235
==========================================
+ Hits           1105       1106     +1
+ Misses           85         84     -1
  Partials          0          0

Powered by Codecov. Last update f58ffb1...83c0e52


(Minor Complaint) Name of pokemon displayed before sprite.

I am using your (very cool) code to show a little picture of my favourite pokemon at the top of every new terminal window and it's working great! However the name of the pokemon was on top of the sprite and it was mildly annoying. What would be ideal would be if that didn't happen, or it was possible to turn off but like the title says this is a super tiny complaint and so you don't need to bother fixing it. :) :)
By the way: this tool is super cool, thanks for making it!
Here's the workaround I used:
pokeget umbreon > /tmp/umbreonTEMP.txt
clear
cat /tmp/umbreonTEMP.txt
rm /tmp/umbreonTEMP.txt

Piping to sed (or anything else similar) won't work here because the name of the pokemon gets written to a different stream.

Hmm, that's a super easy fix, I'm a bit of a dunce for not noticing it earlier. Thanks!

It's actually fixed on my end with pokeget 1.2.4. What version are you using? (pokeget --version)

I'm also using 1.2.4 but the issue still appears...

Oh, I misunderstood what you meant. You could try and get it so that you filter out stderr, but I could also make a flag to disable the name. I'll go ahead and do the latter now.

Publishing now...

That's fantastic thank's for the rapid fix :) :)
Genuinely appreciate it!

Not a problem :)
Sorry for the misunderstanding earlier.


fix intro-yii.md (vi) link

Q
A

Is bugfix?
✔

New feature?
✔/❌

Breaks BC?
✔/❌

Tests pass?
✔/❌

Fixed issues
-

Checked in google translate

Thanks


Pusher keeps reconnecting?

Hi, I am trying to disconnect the active connection but for some reason Pusher keeps reconnecting me. There are 2 times when I want to disconnect -> when app is closed or when there is an internal condition. The first clause works on its own, the second one does not. After the second clause fails, the first one won't work either (closing app won't close the actual connection and it will keep reconnecting).
Socket is implemented as a singleton and we create a new Pusher object on initialisation, i.e. whenever the app process is started. We reuse this object for any subsequent state changes. Here's what happens when we try to programatically disconnect. The following sequence afterwards are attempts to close the app and reopen it back (it starts reconnecting on its own).
Here is console log.
// log singleton class method action.
// 1st value = method name
// 2nd value = socket!.connection.connectionState.rawValue == 1
// 3rd value = is user logged in?
// 4th value = user state cookie for server requests
// calls socket?.disconnect()
disconnect true true cookie

// log changedConnectionState(from: ConnectionState, to: ConnectionState)
connected -> disconnecting

Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
disconnecting -> reconnecting
reconnecting -> connecting
Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
connecting -> reconnecting
reconnecting -> connecting
Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
connecting -> reconnecting
reconnecting -> connecting
Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
connecting -> reconnecting
reconnecting -> connecting
Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
connecting -> reconnecting
reconnecting -> connecting

connecting -> connected // WHYYY

disconnect true false // OK let's try to close the app, notice the actual user is now logged out, but socket is not 😔
connected -> disconnecting
Websocket is disconnected. Error: The operation couldn’t be completed. (PusherSwift.WSError error 1.)
disconnecting -> reconnecting
reconnecting -> connecting
disconnect false false // Now socket did not manage to reconnect yet so shows as disconnected
connecting -> connected // but briefly it manages to reconnect 😟

Here is the whole class for reference. We only ever call the disconnect() and connect() methods.
import Foundation
import PusherSwift

class Socket: PusherDelegate {

    private var socket: Pusher?

    init() {
        self.socket = createNewInstance()
        self.socket?.connection.delegate = self
        bindToEvents()
    }

    public func connect() {
        print("connect", isConnected(), userLoggedIn(), getCookie())
        if !isConnected() && userLoggedIn() {
            socket?.connect()
        }
    }

    public func disconnect() {
        print("disconnect", isConnected(), userLoggedIn(), getCookie())
        socket?.disconnect()
    }

    private func bindToEvents() {
        socket?.bind { data in
            if data == nil {
                return
            }

            // ...
        }
    }

    private func createNewInstance() -> Pusher {
        let options = PusherClientOptions(
            authMethod: .noMethod,
            attemptToReturnJSONObject: true,
            autoReconnect: true,
            host: .cluster("xx"),
            port: nil,
            encrypted: true
        )
        let instance = Pusher(key: "xx", options: options)
        return instance
    }

    private func isConnected() -> Bool {
        if socket == nil {
            return false
        }

        return socket!.connection.connectionState.rawValue == 1
    }

    func changedConnectionState(from old: ConnectionState, to new: ConnectionState) {
        print("----------------------------------------")
        print(old.stringValue(), "->", new.stringValue())
        print("----------------------------------------")

        let channelName: String = getCookie()
        if channelName != "" {
            if new.rawValue == 1 {
                _ = socket?.subscribe(channelName)
            } else if new.rawValue == 2 {
                _ = socket?.unsubscribe(channelName)
            }
        }
    }

}

let AppSocket = Socket()

Expected behavior
Socket should stay disconnected until we call connect().
Actual behavior
Socket keeps reconnecting.

EDIT: I tried to make the socket public and calling disconnect() directly on it from a random place in the app, same result, it gets reconnected right away. Why?

@mrlubos Apologies that you didn't get a timely reply - can I assume I can close this issue? (As a side note, if you're still using this SDK, please try v9.0.0 that was released recently as we replaced our WebSocket client with a fully-native one).

Since the latest v9.1.0 release contains reconnection functionality improvements, and since there has been no response, I'll close this issue for now. If it's still a problem, please feel free to reopen this issue.


Wont work with V3.0 or JetPack 4.4

The code is not yet available to work on Jetpack 4.4.
The current version requires PYTorch 1.4.0 to be installed, altough the Jetpack 4.4 production dont support Pytorch < 1.6.0.
Anybody using Jetpack 4.4 are currently in a loop hole. Follows the error (PyTorch Incompatibility)
Does anybody has a solution to this? Will we have an implementation of TRT for Pytorch 1.6?
torch.nn.modules.module.ModuleAttributeError: 'BatchNorm2d' object has no attribute '_non_persistent_buffers_set'

Updated with tag v3.0


htpasswd bcrypt support

My reason:
Seems that verdaccio/lib/plugins/htpasswd/utils.js verify_password doesn't support bcrypt encryption.
App Version:
2.1.7
Would be cool if you can add bcrypt :)

Hi @AshtonRoute.  I'd recommend create a plugin for that,  please take a look th e following list of plugins as an idea. https://github.com/verdaccio/verdaccio/wiki/Plugins . The main point here, is, make verdaccio pluggable as possible. Would you like that as challenge?

Hello @juanpicado. I completely agree with your idea, but I think it will be better to implement it as a plugin when you deal with #192. For now I think its better to just add it as another option (separate file) to verify_password. It won't break anything and it will be much easier to move it to htpasswd plugin as you suggested in #192.
Anyway, adding bcrypt to current code base is easy.
I can send a PR on this weekend if I have time :)

Cool :) looking forward to see the PR. thanks 👍

I'll close it, follow up here https://github.com/verdaccio/verdaccio-htpasswd/issues/4


RaytracingSimpleLighting: is index buffer incorrectly sized ?

Hi, total newbie to D3D12, so forgive my inexperience
In this line in D3D12RaytracingSimpleLighting.cpp
    488: UINT descriptorIndexIB = CreateBufferSRV(&m_indexBuffer, sizeof(indices)/4, 0);
indices is an array of unsigned shorts, so 2 bytes per value. The number of elements in the array is passed in as its size divided by 4. This suggest 64 bit units.
However CreateBufferSRV seems to indicate 32 bit. numElements is passed in as sizeof(indices)/4
    srvDesc.Buffer.NumElements = numElements;     if (elementSize == 0)     {         srvDesc.Format = DXGI_FORMAT_R32_TYPELESS;         srvDesc.Buffer.Flags = D3D12_BUFFER_SRV_FLAG_RAW;         srvDesc.Buffer.StructureByteStride = 0;     }
Does this miss-count the number by half or do I miss something?
Thanks.

A ByteAddressBuffer SRV is created with a ElementSize=0 and NumElements=number of 32-bit words, while a StructuredBuffer SRV is created with a ElementSize=sizeof(struct) and NumElements=ArrayCount.

Got it, sizeof() gives the size in bytes, not in elements, that confused me.
Thanks!


Caliph weapons

Caliph doesnt buy weapons. Is there a way to fix this?

Try changing "TradeAmountEquipment" values to whatever you want under caliph's config.

And also don't forget to set the respective SellResource[Weapon] to None or the AI will constantly sell and rebuy those weapons.

Thanks to both of you


Dockerfile consolidation / Local development experience

Inspired by the issues with Visual Studio Code Dev Containers, I reworked both the Dockerfiles and the devcontainer.json.
Major Changes in here:

Both GPU and CPU images are combined into a single image using ARGS
The CPU image uses the same mechanism as the GPU image (potentially a breaking change?)
The ARGS allow the container image to be customized, e.g. for people wanting to use the SageMaker integration (installing additional dependencies for development)

This change requires additional parameters to be set in CI/CD to pass the required parameters:
build-args: |
    BASE_REPOSITORY=https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers]
    PYTHON_VERSION=3.7.3
    PYTORCH_COMPUTE_PLATFORM=cpu/cu113
    BASE_IMAGE=nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04 / ubuntu:20.04

Advantages:

No need for different Dockerfiles
Version configurable, potentially through CI/CD or from an additional file
Nice development experience when using Dev Containers

Potential disadvantes:

CPU container uses a different base image and Conda
CPU container might be larger? Potentially a different base image works, too.

Unless you know better :)
Happy to get some feedback.

The devcontainer.json uses ARGS to define the target development environment.
"build": {
      "dockerfile": "../Dockerfile",
      "args": {
        "BASE_REPOSITORY": "https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers]",
        "PYTHON_VERSION": "3.7.3",

        // ACTION NEEDED: uncomment if you have a local GPU
        // "PYTORCH_COMPUTE_PLATFORM": "cu113",
        // ACTION_NEEDED: uncomment if you want to use a CPU only image
        "PYTORCH_COMPUTE_PLATFORM": "cpu",

        // ACTION NEEDED: uncomment if you have a local GPU
        // "BASE_IMAGE": "nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04",
        // ACTION_NEEDED: uncomment if you want to use a CPU only image
        "BASE_IMAGE": "ubuntu:20.04",

        // ACTION NEEDED: uncomment if you plan to use Amazon SageMaker local mode
        // "INSTALL_DOCKER": "1",
        // "INSTALL_AWS_CLI": "1",
        // "INSTALL_DOCKER_COMPOSE_V1": "1"
      }
    },

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

Of course it depends on how the Hugging Face guys are using the Dockerfiles, and how willing they are to adapt any processes, but from my perspective, this is great work!

@muellerzr Could you have a look here? Thanks!

This is indeed a breaking change and the dockerfile being built is completely different than the original one. The ones in Accelerate currently are designed to be minimal based on solely dev-install and are used for testing as well. Here we've added ipython and jupyter.
The main part I mostly care about is:

How big is the newly created docker images themselves? The CPU image is designed to be extremely small and minimal, and the GPU image (relatively) small as well
If we then do go with this new docker image, the docker workflow needs to be changed before we can merge this. Workflow A, Workflow B

Thanks for your work on this though! Just need to make sure these changes don't drastically increase the image sizes, we likely will need to modify those workflows to include at least a few of the optional tags (esp Sagemaker), and ensure those get released as well on our release and nightly schedules. Let me know if there are any questions on any of this :)

Thanks @muellerzr for your feedback. This PR focuses on streamlining the experience between both images, which means: same base, both using conda, etc. They behave exactly the same, the core difference just being GPU support, which allows reproducibility between both.
The image sizes using the proposed Dockerfile in this PR:
docker build . --build-arg PYTORCH_COMPUTE_PLATFORM=cpu --build-arg BASE_IMAGE=ubuntu:20.04 --build-arg BASE_REPOSITORY=https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers] --build-arg PYTHON_VERSION=3.7.3 -t accelerate:cpu
docker inspect -f "{{ .Size }}" accelerate:cpu | numfmt --to=si
> 3.3G

docker build . --build-arg PYTORCH_COMPUTE_PLATFORM=gpu --build-arg BASE_IMAGE=nvidia/cuda:11.2.2-cudnn8-devel-ubuntu20.04 --build-arg BASE_REPOSITORY=https://github.com/huggingface/accelerate#egg=accelerate[testing,test_trackers] --build-arg PYTHON_VERSION=3.7.3 -t accelerate:gpu
docker inspect -f "{{ .Size }}" accelerate:gpu | numfmt --to=si
> 13G

Current images:
docker pull huggingface/accelerate-cpu
docker inspect -f "{{ .Size }}" huggingface/accelerate-cpu:latest | numfmt --to=si
> 1.7G

docker pull huggingface/accelerate-gpu
docker inspect -f "{{ .Size }}" huggingface/accelerate-gpu:latest | numfmt --to=si
> 13G

Note: all sizes are uncompressed!
The current Dockerfiles have different approaches in handling their Python version, gpu uses hardcoded 3.7.3 (lacking many security updates), whereas cpu takes the latest available 3.7 release.
They are currently not much optimized for size, rather than reproducibility. If the image size is a concern, I can try to optimize the sizes a bit for the CPU image, in order to get them comparable.

Do you have any feedback on the proposed changes?


fix(internal): Delete empty Makefile.uk files on builds

Prerequisite checklist

[ ] Read the contribution guidelines regarding submitting new changes to the project;
[ ] Tested your changes against relevant architectures and platforms;
[ ] Ran make fmt on your commit series before opening this PR;
[ ] Updated relevant documentation.

Description of changes

GitHub-Closes: #1196

Can you please open an issue on the core repo and reference it in the comment?


Added remove_texts method on qvrant vectorsearch

@gregogalante We should add this method to other vectorsearch classes.

@andreibondarev I will work on this in next weeks. After the update for all vector store I think we can add a destroy_from_vectorsearch hook on langchainrb_rails gem like what i did on my fork: https://github.com/gregogalante/langchainrb_rails/blob/main/lib/langchainrb_rails/active_record/hooks.rb

@andreibondarev I will work on this in next weeks. After the update for all vector store I think we can add a destroy_from_vectorsearch hook on langchainrb_rails gem like what i did on my fork: https://github.com/gregogalante/langchainrb_rails/blob/main/lib/langchainrb_rails/active_record/hooks.rb

Nice! I like that!


HttpPostMultipartRequestDecoder may not add content to an existing upload after being offered data

Expected behavior
Once a file upload object exists in the multipart request decoder, but not finished, offering more data to the decoder should populate the buffer of the file object
Actual behavior
The buffer is not created/updated
Steps to reproduce

git clone https://github.com/micronaut-projects/micronaut-core
git checkout upgrade-netty
./gradlew test-suite:test --tests "io.micronaut.upload.StreamUploadSpec.test the file is not corrupted with transferTo"

Netty version
4.1.60+ due to https://github.com/netty/netty/pull/11001
JVM version (e.g. java -version)
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.282-b08, mixed mode)
OS version (e.g. uname -a)
Darwin MacBook-Pro.local 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64
This issue is a blocker for Micronaut to upgrade Netty. With the functionality as it is, it is impossible to read a chunk of the file and release it immediately because new buffers are not set on the underlying file upload object.
This line is the culprit. https://github.com/fredericBregier/netty/blob/6daeb0cc51d8689805c1a657e61d395450afec47/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoder.java#L1187
In my case posDelimiter is 0, so the content is never added to the upload.

@jameskleeh
From the beginning: https://github.com/fredericBregier/netty/blob/6daeb0cc51d8689805c1a657e61d395450afec47/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoder.java#L1160
It tries to find out the delimiter in the full buffer (multiple chunks up to now):

if posDelimiter<0, the delimiter is not found. So the upload cannot be finalized, but maybe we can add some bytes already.

So, then it tries to search for CRLF or LF
If not found (posDelimiter<0), the buffer can be appened fully (since the CRLF/LF + delimiter is not there)
If found (posDelimiter>0), only up to CRLF/LF (without) can be appened (the delimiter could be just after in the next chunk)
If posDelimiter==0, the CRLF/LF is found but at position 0, so nothing can be added (the delimiter could be just after in the next chunk)
It returns false in all cases since delimiter is not found, so the next chunk will be added to the current buffer to try to find out the CRLF/LF + delimiter.

If posDelimiter >= 0, it means it found the CRLF/LF + delimiter, so it finalizes the upload.

So I see nothing wrong there.
Could you propose a reproducer with a simpler code ? It is quite too heavy to check in this huge git.

@fredericBregier I don't have confidence I could create something outside of Micronaut to reproduce the issue. I'm not sure what you mean by "It is quite too heavy to check in this huge git". I clone and run the tests in that codebase everyday so surely you can as well.
I don't understand the importance of CRLF/LF in this context so I really can't comment on whether it makes sense or not. All I can say is that it worked correctly prior to this change.

I verified that LF is found at position 0, however your claim of "nothing can be added (the delimiter could be just after in the next chunk)" seems invalid to me. Can the contents of a file not contain line feeds? How can you assume the delimiter is coming after a LF? Is that in the RFC for multipart requests somewhere?

@jameskleeh Hi, your code is quite heavy, so difficult to search for the reason behind and to be able to reproduce and fixing it.
So the reason if you have a reproducer, with simple code (one client and one server code), then we can extract a reproducer and fix it.
On the RFC part, on multipart side, each part is separated by a CRLF or LF following by the delimiter string.
So this method objective is to find out the first occurence of the CRLF/LF + delimiter in the buffer. Once found, it has found the final delimiter for the current part. And then it continues to the next part.
Of course a part can contains a CRLF/LF. But if this is found, there is a risk such that the next bytes are the delimiter but not yet there (due to HTTP chunk by chunk reception).
Note that if a file contains exactly the CRLF/LF+delimiter string, it can be considered as a end of a part. This is of course not wanted but that's how is the RFC.
Maybe your issue is that the upload is beginning by a CRLF/LF, but not fitting within one HTTP chunk, so the delimiter will come in a later chunk. If this is that, then, once all chunks concerning this upload will arrive on the server side, it will find out the delimite preceeded by CRLF/LF, and therefore ending the part (the upload).
I believe we could try to seak for the "last" CRLF/LF, not the first one when no delimiter is found. It might be better from a memory point of view, but it will not change the logic.

The idea would be to change:
https://github.com/netty/netty/blob/1529ef1794e0a6654fa4334fd979b769d6940e61/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoder.java#L1163
  posDelimiter = HttpPostBodyUtil.findLineBreak(undecodedChunk, startReaderIndex);

by something that will search for "last" CRLF/LF: (not yet implemented)
 posDelimiter = HttpPostBodyUtil.findLastLineBreak(undecodedChunk, startReaderIndex);

We might even check if the new posDelimiter has more space than delimiter size, in order to ensure that the delimiter is not splitten across 2 HTTP chunks as:

HTTP Chunk 1
 file body example line 1CRLFThen line 2CRLF--del

It might takes file body example line 1CRLFThen line 2 as first content for file.

Therefore, the file contains file body example line 1CRLFThen line 2.
But not that this will not change the behaviour: if there is never a CRLF/LF + delimiter, then the part is never ending. The difference is that, if there is a CRLF/LF in the middle (or start) of the file, it will however populate the file behind, but still waiting to find out the CRLF/LF+delimiter.

@fredericBregier I'd be happy to test any local branch with the changes

OK, I will try to make it, but I'm quite sure it will not change anything since I do not have a simple reproducer test code to test it.
But if it does the trick, well, I would be surprised since it seems to me not a fix but an improvement.
In other words, it seems your upload does not end up with a CRLF/LF + delimiter... ? But as I don't know the code, I cannot say for sure of course.

@fredericBregier I'm not quite sure but its not getting to the end of the file. I'm uploading 15 megabytes and I'm seeing this behavior on the second chunk of data being received. I'm fairly confident all of the data in the buffer when posDelimiter is 0 is all data for the file and does not contain any delimiters or anything specific to HTTP

If you'd like to do a screen share I'd be glad to show you

Well, could you at least point me out directly to the code:

client side (I suppose the test itself)
server side
I may try to do a reproducer such that I understand where the problem is. My previous point seems to me only an optimisation.
I would be glad to help to fix this out.

Of course, I could donwload all your project and following your original guidance, but perhaps I could read the code itself first ?
When I go to your github repo, I found out it is so huge, that it was difficult for me to find out where it is...

@fredericBregier Sure
Here is the client that is sending the data
https://github.com/micronaut-projects/micronaut-core/blob/upgrade-netty/test-suite/src/test/groovy/io/micronaut/upload/StreamUploadSpec.groovy#L552
You can see its a random set of bytes 15mb long
Here is where the Netty specific multipart stuff is created from our API
https://github.com/micronaut-projects/micronaut-core/blob/upgrade-netty/http-client/src/main/java/io/micronaut/http/client/netty/DefaultHttpClient.java#L1525
Here is where the data is offered to the decoder
https://github.com/micronaut-projects/micronaut-core/blob/upgrade-netty/http-server-netty/src/main/java/io/micronaut/http/server/netty/FormDataHttpContentProcessor.java#L113
In the second invocation of the onData method above, the currentPartialHttpData() returned from the decoder will have a null buffer. See https://github.com/micronaut-projects/micronaut-core/blob/upgrade-netty/http-server-netty/src/main/java/io/micronaut/http/server/netty/FormDataHttpContentProcessor.java#L134
The buffer is null because the data previously received has already been read and released and no new data was added to the upload.
The data is released via https://github.com/micronaut-projects/micronaut-core/blob/upgrade-netty/http-server-netty/src/main/java/io/micronaut/http/server/netty/multipart/NettyStreamingFileUpload.java#L136

OK, I think I got it.
For the current Http Chunk, once while (postRequestDecoder.hasNext()) is false, it does not mean it has nothing, it could be in the middle of creation of a new HttpData. It just means that there is not enough data to create a new one yet.
So I believe that maybe https://github.com/micronaut-projects/micronaut-core/blob/e67ca50cf2a778cb6c7354b1ecd2c7fe7d2910ed/http-server-netty/src/main/java/io/micronaut/http/server/netty/FormDataHttpContentProcessor.java#L134 is wrong. Current HttpData might be null (empty or not yet any new HttpData).
For instance, let say the last chunk was ending like this:
   my previous Http DataCRLF--delimiterCRLFcontent-disposition: form-data; na

Such that the next Part from multipart is not yet available to know what it is.
Therefore, the previous one is ready (hasNext() is true once, but not twice).
The second one is not yet created, so no new HttpData yet.
Another example:
   my previous Http DataCRLF--delimiterCRLFcontent-disposition: form-data; name="field1"CRLF

Then the second one HttpData is created but empty (no data yet).
I don't know why you are adding like this messages.add(currentPartialHttpData); on line 134-135, because for me, it has no meaning. As long as the decoder is not giving you something new through postRequestDecoder.hasNext(), you don't have to care about new HttpData, the decoder will keep the already available data inside and will give you as soon as it has all the next HttpData.
I'm on my way however to try to improve the decoder part to opimize it, but I feel like you are not using correctly the decoder however.

I don't know why you are adding like this messages.add(currentPartialHttpData); on line 134-135, because for me, it has no meaning. As long as the decoder is not giving you something new through postRequestDecoder.hasNext(), you don't have to care about new HttpData, the decoder will keep the already available data inside and will give you as soon as it has all the next HttpData.

Because we need to notify the downstream that new data is available on the upload. Users can read and release pieces of uploads as they become available.

You can checkout the 2.4.x branch of micronaut-core to see the difference in behavior. In Netty 4.1.59 the partial upload is populated with a buffer on the second invocation and with 4.1.60+ it is not.

Yes I understood. So the "API behavior" change. But what I'm saying, is that the goal of the decoder is not to give you a "partial HttpData" but a full one when ready. You have made assumption which are internal operations.
It is almost as a Queue: when the Queue has no more yet element, it says hasNext is false. You have to wait to see the next available element when it is ready.
 It implementation dependent.
I will try to make the current API to "looks like" what is was before, but my feeling IMHO is that you rely too much on the underlying implementation and not the API contract (which is not the implementation).

But what I'm saying, is that the goal of the decoder is not to give you a "partial HttpData" but a full one when ready.

If that is the case then why is there a method to retrieve the partial data?

Good point ;-)
For me, it is the opportunity to know if there is any new HttpData on going, but not for sure.
However, I was able to reproduce easily this bug (changing behavior), by setting the first bytes of the new file to be CRLF.
While it is not really a bug, since the decoder is going on and finish correctly to get the full HttpData, it indeed has a HttpData through currentPartialHttpData() but with an empty buffer at first step, while it is ok at the end.
Note that from a Disk based HttpData, using HttpData.content() or HttpData.getByteBuf() will read the File and create a newly allocated ByteBuf for that, giving a chance of Out Of Memory exception (if large file).
I fix also the default behavior such that when a Memory based HttpData has not yet data, it returns an empty buffer.
Note that current implementation does not ensure this buffer will remain the same until the HttpData is fully decoded.

@jameskleeh You can check out my proposal to fix the behaviour.
I believe it will run as expected now, even if it is not really a bug.

@jameskleeh Could you try https://github.com/fredericBregier/netty/tree/improveMultipartAddingBuffer ?

Yeah I’ll give it a go today
On Thu, Apr 8, 2021 at 7:56 AM Frédéric Brégier @.***>
wrote:

@jameskleeh https://github.com/jameskleeh Could you try
https://github.com/fredericBregier/netty/tree/improveMultipartAddingBuffer
?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/netty/netty/issues/11143#issuecomment-815712194, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMCVLIOCP4ZVP3MLRIIBS3THWKVVANCNFSM42PB7GYA
.

@jameskleeh Very strange since the only difference is the following with the previous version:
        } else if (byteBuf.readableBytes() == 0) {
            // Previous buffer is empty, so just replace it
            byteBuf.release();
            byteBuf = buffer;

I will check but I don't understand. Have you a trace (log error) ? It might be the release of the first empty buffer, but ver strange then.

Moreover, all Junit tests are passing... So the reason I don't get it. I double check, and I see nothing wrong.
If you have traces or error logs ?

Just in case I understand well your code: https://github.com/micronaut-projects/micronaut-core/blob/e67ca50cf2a778cb6c7354b1ecd2c7fe7d2910ed/http-server-netty/src/main/java/io/micronaut/http/server/netty/FormDataHttpContentProcessor.java#L111
            while (postRequestDecoder.hasNext()) {
                InterfaceHttpData data = postRequestDecoder.next();
                switch (data.getHttpDataType()) {
                    case Attribute:
                        Attribute attribute = (Attribute) data;
                        messages.add(attribute); //2
                        break;
                    case FileUpload:
                        FileUpload fileUpload = (FileUpload) data;
                        if (fileUpload.isCompleted()) { //1
                            messages.add(fileUpload);
                        }
                        break;
                    default:
                        // no-op
                }
            }

            InterfaceHttpData currentPartialHttpData = postRequestDecoder.currentPartialHttpData();
            if (currentPartialHttpData instanceof HttpData) {
                messages.add(currentPartialHttpData); //3
            }

In 1) you are checking if the FileUpload is completed, and if so, add it to the messages list.
In 2) you are not checking this, while nothing is sure that this Attribute is completed (it can be, as for a file, in the middle due to HttpChunk). Can it be an issue ?
In 3) you are adding a partial HttpData, it can be an Attribute already added in 2 just before. Moreover, if it is a FileUpload, when the FileUpload is over, it will be added another time.
Could those being an issue ?

@fredericBregier That isn't an issue. I believe the check at 1) is actually redundant given only completed items get passed through the iterable of the decoder.
Basically if you put a breakpoint at
                postRequestDecoder.offer(httpContent);

                while (postRequestDecoder.hasNext()) {
                    InterfaceHttpData data = postRequestDecoder.next();  //after here

You will find that data is never set to the file upload

It seems to me that on the last chunk the delimiter index is 0, so it is just returning false and not adding any unencoded data to the upload and completing it.

@fredericBregier I've done some debugging and found this to be the issue:
https://github.com/fredericBregier/netty/blob/improveMultipartAddingBuffer/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoder.java#L1168
The readable bytes in this case was 6, but for some reason it is subtracting the delimiter length. That doesn't make sense to me since the delimiter wasn't found. The 6 bytes should be added to the upload yes?

@fredericBregier I changed this specific section of code back to how it is on the netty repo and my test is green
https://github.com/netty/netty/blob/6724786dcc9fa38ba516dab97a04e2bbc17e81d9/codec-http/src/main/java/io/netty/handler/codec/http/multipart/HttpPostMultipartRequestDecoder.java#L1161

@jameskleeh Thanks ! I will check and update ;-)

@fredericBregier Sorry I forgot to mention I did change it to lastLineBreak

@jameskleeh Could you give me the changes you've made ?
The reason of substracting delimiter size is the following:

once we don't find out the delimiter, it can means

either it is not at all within the buffer
either it is partially only present (missing some bytes)

Therefore we could search for CRLF/LF only from this maximum position (delimiter length from the end)

If no CRLF/LF found : full buffer can be added
If CRLF/LF is found : only up to this position, the buffer can be added (CRLF/LF can be followed by an incomplete delimiter)

I may have make an over hypothesis, so I've changed from now: in loadDataMultipartOptimized
        // Not found but however perhaps because incomplete so search LF or CRLF from the end within delimiter
        // possible partial last bytes
        int lastPosition = undecodedChunk.readableBytes() - bdelimiter.length;
        if (lastPosition < 0) {
            // Not enough bytes but can still try to find CRLF
            lastPosition = 0; // Change HERE
        }

Indeed, if the lastPosition is < 0, then it means the buffer has less than delimiter length, so we can afford to check for CRLF/LF within from relative position 0.

@jameskleeh With this change, I've got the following:

delimiter is of size 42
previous last chunk is of size 24 with half real data, half begining of the delimiter => the half is indeed added

decoder.currentPartialHttpData() is not null

last chunk is of size 30 (last part of the delimiter) => the HttpData is over

decoder.currentPartialHttpData() is null

@fredericBregier I'll try with your updated branch now

@jameskleeh  Use the next one ;-) Bad commit

@fredericBregier All tests green on my end. I had to do a couple tweaks to handle no data being added to the upload, however that was probably something that should have been done regardless.

Note that there are 2 other issues we've found during testing, but I haven't gotten to the bottom of them yet and they aren't related to this.

@jameskleeh OK, thanks for your feedback !
I will let the issue open until you 've got the point of the new issues, in order to ensure they are not related to.
Thank you for your help ! It was really helpful!!

@fredericBregier I have the other issues resolved. I appreciate your help getting this resolved. I hope this change can go into 4.1.64

@jameskleeh Great ! We will close this one as soon as the merge is done after review.
Thank you again !

@jameskleeh Current review introduces some changes. When you have time, maybe you can try again to ensure it does not change again the behavior (should not) ?

@fredericBregier I tried with the latest commit and its still good

@jameskleeh Thanks a lot!


add serializers for verror.info and verror.MultiError

PTAL @yunong @micahr

Coverage decreased (-0.3%) to 97.748% when pulling ef899dfb359bc92373fc4447d7d92fcbaf4fc192 on verror-info-multierr into 584f836bf9731f77cb05937d24bbfbe9562b584f on master.

Now that joyent/node-verror#10 has landed, let's add some serializers for stuff that's directly using VError.
At some point in the next major release we should remove the context logic within this module, and use VError's info property instead.

Coverage increased (+0.2%) to 98.174% when pulling 032d2a3067f7cc1373465915612b20a496a90bf3 on verror-info-multierr into 584f836bf9731f77cb05937d24bbfbe9562b584f on master.

Coverage increased (+0.2%) to 98.174% when pulling 1f3be5bccdb8fa982f5036f8f644e8ed91d25667 on verror-info-multierr into 584f836bf9731f77cb05937d24bbfbe9562b584f on master.

LGTM

BTW @yunong if you wanna try this out just copy pasta this:
var verror = require('verror');
var bunyan = require('bunyan');
var restifyErrors = require('restify-errors');

var log = bunyan.createLogger({
    name: 'logger',
    serializers: {
        err: restifyErrors.bunyanSerializer
    }
});

var underlyingErr = new Error('boom');
var multiErr = new verror.MultiError([
    new Error('boom'),
    new restifyErrors.InternalServerError(underlyingErr, {
        message: 'wrapped',
        context: {
            foo: 'bar',
            baz: 1
        }
    })
]);

log.error(multiErr, 'oh noes');

Once we're completely on VError's new features we can break the serializer out into its own module. Need some catchy names that don't take forever to type (require('bunyan-verror-serializer')).


Checklist before starting next cohort of social mice

AEON3 and AEON4

[x] Change task logic to meet new requirements. See issue #404
[x] Change bonsai GUI  See issue #391
[x] Write data visualizer to 1) look at data from current cohort to see if there are values to tweak. 2)look on a daily basis to data of new cohort. #404

[x] Add rfid viz

[x] Update firmware on all patch beambreaks
[x] Update firmware on all rfids #425
[x] Check Lux

AEON3

[x] Check side cameras: they are all different from each other and few not focused. Important now for MoSeq.
[x] Train and check multianimal model.
[x] Mouse seems to be very biased against patch 2. Check if there is anything strange there.
[x] Measure Torque

AEON4

[x] Check side cameras: they are all different from each other and few not focused.
[x] Train and check multianimal model.
[x] Add RFID readers
[x] Replace/fix patch with the broken connector and patch 2 #402 .
[x] Measure Torque
[x] #444
-add flir camera to be used as webcam for now, pointing at the ceiling.

Closing this as done.


Brief description of the bug

Describe the bug
A clear and concise description of what the bug is
screenshots or images, when too long, seem to go off of the side of the screen when clicked and shown in big picture, sometimes making half of the text unreadable etc.
and smaller screenshots have a horrible long box outline when shown in big picture. (same for other pictures too, outline is visible
To Reproduce
Steps to reproduce the behavior
take a long vertical screenshot, post and click it, same for the smaller and other screenshots
Screenshots
If applicable, add screenshots to help explain your problem

Infomation (please complete the following information)
Discord channel: Stable/PTB/Canary
stable
OS: Windows/Linux/OSX
windows (11)
Mod: BetterDiscord/Powercord/GooseMod
BetterDiscord
Discord language: Your language
English (uk)
Additional context
Add any other context about the problem here. Remove if not applicable.

This is because of your plugin.


fix: only send sensor start event on first poke

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 91.609%

Totals

Change from base Build<PHONE_NUMBER>:
0.02%

Covered Lines:
8275

Relevant Lines:
9033

💛  - Coveralls


[FEAT]: support pushdowns for lance datasets

Looks like an unrelated failure https://github.com/Eventual-Inc/Daft/actions/runs/9488192445/job/26146828037?pr=2363

Looks good! Can we also add an integration test in our IO suite to ensure that this continues to work!

@samster25 can you link an example of other filter pushdown tests?


Word / Line segmentation

Is this in the pipeline?

Hey @tolrtd, unfortunately there's not really any feature development happening on this lib anymore, mostly because I just don't have the time, and porting features from Ruby -> Javascript is time-consuming. Do you have any interest in helping out?


express latest view fixes paypal/react-engine#52

Copied the latest View from express 4.13.1. The only difference between this View and Expresses is that it ignores the extension of the passed in name function.  I put in a request to express to have a global option to suppress extension names here.

@reggi  I am afraid if we do this, we loose sight of the updates to the Express View. Is there a way to fix the extname method behavior rather than modifying the view itself?

Only if express adds this as a feature.
Show your support here:
https://github.com/strongloop/express/issues/2708