[WIP] Add ResNet-RS models

Hey @rwightman !
I am almost there with contributing Resnet-RS models to timm (my first model contribution)! Starting this [WIP] PR to get things wrapped up.
I am very confident that the only things remaining in this implementation currently are:

Pretrained model weights which have been officially released here.
Switching the stride sizes for the first two convolutions in the residual path of the downsampling block (mentioned in Section 4.1 of Resnet-RS paper.

Everything else according to me has been covered already. As per section 4.1 of the paper:

First, the 7×7 convolution in the stem is replaced by three smaller 3×3 convolutions, as first proposed in InceptionV3 (Szegedy et al., 2016).

This has been done by adding stem_type='deep' to model_args.

Second, the stride sizes are switched for the first two convolutions in the residual path of the downsampling blocks.

NOT COVERED YET

Third, the stride-2 1×1 convolution in the skip connection path of the downsampling blocks is replaced by stride-2 2×2 average pooling and then a non-strided 1×1 convolution.

Covered off by setting avg_down=True  similar to existing resnet50d architecture.

Fourth, the stride2 3×3 max pool layer is removed and the downsampling occurs in the first 3×3 convolution in the next bottleneck block.

Covered off by adding a new parameter skip_stem_max_pool to model config and first_conv_stride to make_blocks function.

For all experiments we use a Squeeze-and-Excitation ratio of 0.25 based on preliminary experiments.

Covered by adding block_args=dict(attn_layer='se') similar to senets
Since I haven't ported weights from TF to PyTorch before, I was hoping for some guidance on how to do this.
Also FYI.
I have kicked off a run on ImageNette and will later kick off a run on ImageNet for resnetrs50 to begin with and compare performance with resnet-50.
Pretty happy with the implementation thus far, but keen to hear your feedback too.

Ok @rwightman, happy days! The implementation performs better on Imagenette. The graph below compares renetrs50 with resnet50. Resnet-RS 50 gets 85.9% top-1 compared to 84.5% for Resnet-50. I have kicked off a training run for ImageNet but given I have only single V100 - it should take at least 3-4 days before we see results.

Do you have any plans for smaller resnet (18, 34)? Does it make sense?

Do you have any plans for smaller resnet (18, 34)? Does it make sense?

Hi @JulienMaille :)
The smalles ResNet-RS model is ResNet 50 FYI

@amaarora I thought that was imagenet 85.9 for a sec then realized it was imagenette ;)
One thought re the stem config, do the RS models push the stride 2 into the blocks or replace the maxpool with a conv? I thought they replaced? Or do they do both depending on the model size?
@JulienMaille don't think it makes much sense to define a basic block RS model. I generally use a ResNet26 def as the smallest bottleneck (2,2,2,2) like 34 but with bottleneck. Although I've seen 14s (1,1,1,1).
An FYI, there are already resnet models better than these RS ones here. I trained an ecaresnet26t that's almost 80% top-1, ecaresnet50t  that's over 82, resnet50d that's close to 80.5. The RS models are SE so the 50d score is impressive relative and the ECA are roughly similar in terms of throughput to an SE but lower param count. I have some comparable SE models as well but only a larger ones like the seresnet152d (84.35 vs 83 for the best 152 RS) was trained with recent hparams.

Basically I've already been exploring the ideas in the RS paper here, heavier augs and regularization w/ different resolution scaling. I went a bit further with aug/regularization.

@amaarora also, the stem changes will likely break the feature extraction without changing feature_info locations based on the stem config

One thought re the stem config, do the RS models push the stride 2 into the blocks or replace the maxpool with a conv? I thought they replaced?

Good catch! This has been a little confusing but going by the implementation, you're right. They replace the maxpool with stride-2 3x3 conv.
This can be inferred from the Resnet-RS config here where replace_stem_max_pool is set to True. Based on this config, in the code implementation here, the MaxPool is replaced by stride 2 3x3 conv.
FYI, this is in conflict to the paper where they write in section 4.1 under Resnet-D architecture subheading:

Fourth, the stride2 3×3 max pool layer is removed and the downsampling occurs in the first 3×3 convolution in the next bottleneck block.

Note the usage of the word "removed" and not "replaced".
I guess in such cases we follow the TF implementation and take it to be source of truth? @rwightman

FYI I am working on fixing the failed tests.

@rwightman Finally passing! :)
How do you add pretrained weights please? If I can now add pretrained weights to these models, then they are ready to be merged IMHO.

I keep getting error code 137. It appears as though that’s due to OOM error and not quite code change.
Source from here https://stackoverflow.com/questions/43268156/process-finished-with-exit-code-137-in-pycharm
Still trying to figure out why and can’t quite replicate it unless I run all tests for all models.

@amaarora porting weights is fiddly, especially to get the padding matched up... hopefully the padding in these rs models is compatible with pytorch resnet, otherwise it's going to require changes not worth making to this resnet model. I think they used a fixed padding instead of 'SAME' but I didn't look closely. If it requires SAME there will be a problem. Other model class like ByobNet can be modified to use SAME padding easier than ResNet, hopefully that isn't necessary.
My bits and pieces of weight conversion code are messy and I don't have time to explain. A fairly clean, different approach from mine for conversion would be https://github.com/lukemelas/EfficientNet-PyTorch/tree/master/tf_to_pytorch/convert_tf_to_pt ... should have all you need to put together a conversion for different models, but you have to redo the mappings. Tensorflow models often have naming that's hard to work with since the indexing boundaries of layers doesn't often match up with module/stages and there is no ordering based on module instantiation.

@rwightman Thanks! I will take up this challenge and try to get model weights for Resnet-RS in timm :)

@rwightman FYI as an update, I've kicked off training for ResNetRS-50 on ImageNet. Run can be tracked here https://wandb.ai/wandb_fc/pytorch-image-models/runs/u0z5tk2s?workspace=user-aarora
Also, started work on porting weights from TF - should be a few days before this PR is complete.

That run crashed due to network error from my end.
Resumed training here https://wandb.ai/wandb_fc/pytorch-image-models/runs/u0z5tk2s?workspace=user-aarora

@amaarora looks like it keeps crashing, are you running this on those TPUs?

Hey @rwightman - no I am runinng on 4 x V100s. It took me a while to realize but it kept crashing everytime my laptop lost internet connection. Figured out that using tmux will solve this problem.
I was able to train to 73.336 TOP-1 accuracy as in this run https://wandb.ai/wandb_fc/pytorch-image-models/runs/1nxhgnkj?workspace=user-aarora.
Working on porting the weights from TensorFlow and might get back to you with some questions later in the day (8-10 hours from now)

Hey @rwightman I am having a hard time converting the weights from TF to PyTorch but determined to get it done! Please allow me a couple more days..

@amaarora it's a bit of a headache eh? :) I usually just string a bunch of ugly code together for each model and then hack it for each variant .. it'd be nice if there was a way of dumping the TF weights in order of layer creation so that one can just match it up without mapping the names... that works well for JAX and Glouon

@rwightman It's quite a bit of a headache but one that I'm enjoying haha
I've been writing some ugly code in a notebook too and getting to know a lot about tf and pytorch.
BTW, the resnet-rs weights are in Tensorflow1 https://github.com/tensorflow/tpu/tree/master/models/official/resnet/resnet_rs#imagenet-checkpoints and Tensorflow2 checkpoints are yet to be released as per this issue.
Would it make sense to wait for TF2 weights or not quite?

Sorry Ross, I've decided to give up on porting weights for now. I will most probably circle back to this after 1-2 weeks but I've spent a lot of time on this and feels like I've made no progress at all. Thanks for all your help and time - really appreciate it.

@amaarora sorry to hear that, but I understand completely, porting weights is suprisingly time consuming and fiddly. I've usually delt with TF1 checkpoints, and some tflite (which were also a pain).
I find the best approach is a few beers (or other beverage / snack of pref, turn on some music), put print statements everywhere, dump all of the names, observe the patterns and correlations between the models, then start writing big ugly mess if statements, regexes, dict mappings to translate them and try to keep as much 'generic' ness to specific layer counts, etc as possible, but sometimes give up and bake it all into code to get the job done ;)

Excluding the really mess model specific if/map/etc code in to_torch_tensor and build_mappings which, BTW, I don't have a good template for based on what I saw in the RS models (diff patterns than efficientnet, xception, and some other mdoels I've worked with), this is my top level framework .... a bit diff than Luke but same idea
def load_variables(checkpoint_path, block_map):
    reader = pywrap_tensorflow.NewCheckpointReader(checkpoint_path)
    var_to_shape_map = reader.get_variable_to_shape_map()
    state_dict = {}
    for name in sorted(var_to_shape_map):
        print(name)
        torch_name = to_torch_name(name, block_map)
        if not torch_name:
            continue

        tensor = reader.get_tensor(name)
        shape = tensor.shape
        b = bytes(tensor)
        d = np.frombuffer(b, dtype=np.float32)

        if len(shape) == 4:
            tpt = (2, 3, 0, 1) if 'depthwise' in name else (3, 2, 0, 1)
            d = np.reshape(d, shape).transpose(tpt)
        elif len(shape) == 2:
            d = np.reshape(d, shape).transpose()
        state_dict[torch_name] = torch.Tensor(d)

    return state_dict

parser = argparse.ArgumentParser(description='Convert from Tensorflow EfficientNet style')
parser.add_argument('--model', default='efficientnet_b3', type=str, metavar='MODEL',
                    help='Name of model to train (default: "all"')

def main():
    args = parser.parse_args()

    torch_model = create_model('tf_' + args.model, num_classes=1000, pretrained=False)
    torch_model.eval()

    mappings = build_mappings(torch_model) # flatten stages/block sequences if it helps map to TF enumeration

    checkpoint_path = os.path.join(args.model, "model.ckpt")
    state_dict = load_variables(checkpoint_path, mappings)

    torch_model.load_state_dict(state_dict)
    torch.save(torch_model.state_dict(), './%s.pth' % args.model)

if __name__ == '__main__':
    main()

Thanks @rwightman for sharing! :)
Yes, the plan is to work on this in my leisure time and probably grab a 6-pack (beer is definitely my choice of beverage haha) and get the job done. I definitely believe there's a PR coming to get the weights loaded some time in the near future just not sure how soon.
Once again, thanks for sharing your approach! :)

@rwightman - the tensorflow convolution weights have a momentum term in them. Do you know what to do with these? I have been able to match the tf kernel weights to conv but not sure what to do with ema and momentum weights. See example below:
...
conv2d_58/kernel
conv2d_58/kernel/ExponentialMovingAverage
conv2d_58/kernel/Momentum
conv2d_59/kernel
conv2d_59/kernel/ExponentialMovingAverage
conv2d_59/kernel/Momentum
...

Ignore all the 'Momentum' vars... for ExponentialMovingAverage though, you
will want the option to either use that instead of the parent value, or not
use it, that is essentially the EMA averaged version of the weights and the
non-EMA. Usually the EMA in most google checkpoints is better, but not
always
On Sun, May 2, 2021 at 9:11 PM Aman Arora @.***> wrote:

@rwightman https://github.com/rwightman - the tensorflow convolution
weights have a momentum term in them. Do you know what to do with these
please? I have been able to match the tf kernel weights to conv but not
sure what to do with ema and momentum weights. See example below:
...
conv2d_58/kernel
conv2d_58/kernel/ExponentialMovingAverage
conv2d_58/kernel/Momentum
conv2d_59/kernel
conv2d_59/kernel/ExponentialMovingAverage
conv2d_59/kernel/Momentum
...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/rwightman/pytorch-image-models/pull/554#issuecomment-831009104,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABLQICCLMI2LSZBOUOTODIDTLYPAHANCNFSM42WKDQIA
.

Thanks @rwightman !! I am very close to getting the model weights in now.
Just last question - I am left with num_batches_tracked kind state dict values. I don;t know what's an equivalent in TF.
From https://github.com/lukemelas/EfficientNet-PyTorch/blob/master/tf_to_pytorch/convert_tf_to_pt/load_tf_weights.py, I have mapped:
 mapping_bn[module_name+'.weight'] = tf_layer_name + '/gamma'
 mapping_bn[module_name+'.bias'] = tf_layer_name + '/beta'
 mapping_bn[module_name+'.running_mean'] = tf_layer_name + '/moving_mean'
 mapping_bn[module_name+'.running_var'] = tf_layer_name + '/moving_variance'

Not sure what to do with these:
....
'layer3.5.bn3.num_batches_tracked',
'layer4.0.bn1.num_batches_tracked',
'layer4.0.bn2.num_batches_tracked',
'layer4.0.bn3.num_batches_tracked',
....

Okay done! I have loaded tensorflow weights to PyTorch, now I am trying to find how to benchmark the model and test that the model weights actually have around 80% top-1 accuracy. :)

@rwightman 79.114 TOP-1 Accuracy on ImageNet 1k for Resnetrs-50! Hell yeah! :D
Just to confirm - here's what I did:
I used the timm training script train.py, but didn't call train_one_epoch and only called validate. The summary.csv says 79.114% top-1 ! I think that's right?
Now let me get the weights for all resnet-rs models - it's pretty easy from here on. How do we upload the pretrained weights?
Would be really helpful if you could also benchmark or get another set of eyes for QA.

Thanks @rwightman !! I am very close to getting the model weights in now.
Just last question - I am left with num_batches_tracked kind state dict values. I don;t know what's an equivalent in TF.
From https://github.com/lukemelas/EfficientNet-PyTorch/blob/master/tf_to_pytorch/convert_tf_to_pt/load_tf_weights.py, I have mapped:
 mapping_bn[module_name+'.weight'] = tf_layer_name + '/gamma'
 mapping_bn[module_name+'.bias'] = tf_layer_name + '/beta'
 mapping_bn[module_name+'.running_mean'] = tf_layer_name + '/moving_mean'
 mapping_bn[module_name+'.running_var'] = tf_layer_name + '/moving_variance'

Not sure what to do with these:
....
'layer3.5.bn3.num_batches_tracked',
'layer4.0.bn1.num_batches_tracked',
'layer4.0.bn2.num_batches_tracked',
'layer4.0.bn3.num_batches_tracked',
....

I just ignored these num_batches_tracked weights.

All model weights are here. https://www.kaggle.com/aroraaman/resnetrs
You should now be able to do:
import timm
m = timm.create_model('resnetrs50')
m.load_state_dict(torch.load('<path to weights>')

@amaarora congrats! yeah, num_batches_tracked is a pytorch specific thing that can be ignored for this...
you know there is a validate.py right? you can just call, try different image size, crop pct, image interpolation to find what the best is .... one thing that's not clear from the paper and table in the official repo is whether each validation result is at the train size (ie 160x160) for the 50, or if they're doing the train - test res thing and testing at a higher res, ie 224 when trained at 160.

@amaarora FYI, the kaggle weight link doesn't work

@amaarora FYI, the kaggle weight link doesn't work

Sorry it's cause the dataset is private. Could you please try again? :)

you know there is a validate.py right?

Must be the excitement of getting resnetrs weights to work that I just completely didn't see it. :D

one thing that's not clear from the paper and table in the official repo is whether each validation result is at the train size (ie 160x160) for the 50, or if they're doing the train - test res thing and testing at a higher res, ie 224 when trained at 160.

I do agree. I ran benchmarks yesterday testing at default 224x224 for all models and found validation accuracy to be within 1% of the reported results here .

@amaarora for the models that have checkpoints for more than one size, did you include only the largest one?

@rwightman Sorry - I should have clarified. I went for the smallest one - but can totally update to have the largest ones? Or both? It should take only a couple minutes from here on to update the weights.

FYI here is the messy script that I wrote to port the weights from TF.

@amaarora k, good, that makes sense, I picked a few to do a quick eval and the 152 wasn't checking out but the others were. I think the largest for each model makes sense, don't see much value in having them all, and def prefer having the best possible one for each arch

@amaarora k, good, that makes sense (with regards to what I observed), I picked a few to do a quick eval and the 152 wasn't checking out but the others were. I think the largest for each model makes sense, don't see much value in having them all, and def prefer having the best possible one for each arch

Okay sounds good! I'll go back and port the weights for largest ones where there are two set of weights available and run benchmark scripts to share the better performing model in my Kaggle dataset - does this sound good? Won't be long.

@rwightman updated kaggle dataset here https://www.kaggle.com/aroraaman/resnetrs
I have included all weights as in here https://github.com/tensorflow/tpu/tree/master/models/official/resnet/resnet_rs

@rwightman Here are my benchmarking results.
ResNet RS 101
For resnetrs101_i192.pt I get 81.25 top-1 as opposed to 80.524 for resnetrs101.pt (this is i160). Both are evaluated on validation image size 224x224.
Let's use resnetrs101_i192.pt for ResNet-RS 101.
ResNet RS 152
For newly added resnetrs152_i224.pt, I get 81.68 ImageNet top-1 when predicting on image size 224x224. (Paper reports 82%)
For same weights, I get 82.474 top-1 when predicting on image size 256x256.
For resnetrs152_i256.pt, I get 81.732 top-1 when predicting on image size 256x256.
Let's s use resnetrs152_i224.pt weights for ResNet-RS 152.
ResNet-RS 350
For resnetrs350_i320.pt I get 83.224 top-1 for validation image size 320x320.
Whereas for resnetrs350.pt (this model was trained on i256), I get 83.426 top-1 for validation image size 256x256.
I suggest we use resnetrs350.pt for ResNet-RS 350.

@amaarora merged and made a few additional changes... curious if you compared the EMA vs non-EMA weights on any of the models?
The 420 weights are pretty weak, actually 420 and the i320 350 and the 270 weights are kind of meh, the i256 350 are great by comparison (validate up to 84.4ish with some res scaling). I can't get the 420 past 84.2/84.3. So I'd be curious on a check to see if the 420 weight are any better for the non-EMA (assuming the one I have is the EMA).

Hey @rwightman - thanks for your help!

curious if you compared the EMA vs non-EMA weights on any of the models?
Sorry I didn't.

can't get the 420 past 84.2/84.3.
What you have are the non-EMA weights for all models. Please allow ~1hour to go back and share the EMA weights as a separate Kaggle dataset with you.

@amaarora oh, okay, that could be a fairly significant difference, curious to see how it stacks up

@rwightman EMA weights uploaded here https://www.kaggle.com/aroraaman/resnetrsema

@rwightman
So the ResNet-RS 270 EMA weights get me 8358% top-1 (paper reports 83.8%) for IMG SIZE 256x256.
ResNet-RS 420 EMA weights get me 84.238% top-1 (paper reports 84.4%) for IMG SIZE 320x320
And the ResNet-RS 350 i320 EMA weights get me 84.312 top-1.


Can Sentry send notices and warnings at user defined moments?

We inherited a legacy system where we integrated Sentry (it's been very helpful!). Unfortunately that legacy system is not built very elegantly, so we are in the following situation (simplified):

we have an endless loop that consumes jobs
these jobs can cause warnings and notices that we would like to be informed of in Sentry
currently those warnings and notices are only sent once the php process shuts down
unfortunately the system regularly runs pkill php (don't ask 😉), which seems to prevent sentry from sending those accumulated warnings and notices

Is there any way to send those warnings and notices synchronously? Let's say at the beginning or end of each loop iteration?
Pseudo code:
while (true) {
    sendAccumulatedSentryWarningsAndNotices();
    processJob();
}

We investigated, but it seems that this is not a use case that is currently supported. We would appreciate any ideas or input here. Thank you

Closing this as it's a duplicate of an already existing issue


Update Content to Close Out VSP Applications

We've reached the end of applications for VSP. We need to remove content from the site that directs people to apply.

Update Apply nav item button (TBD what we'll do with it)
Update copy in current Apply CTA (or remove it)
Remove "apply..." language from VSP pages
Remove "Accepting applications..." badge from VSP subnav
Update VSP timeline to show where we are in the process
Remove note about QA sessions from VSP apply page

For clarity (i think this was your plan) lets not change any URLs for now, as there are lots of links out there to some of these subpages, and for the /apply page lets mostly keep it the same, but in the call out box at the right, note that applications are now closed for this cohort, but that we anticipate beginning recruitment for our next cohort in mid 2021 and have the sign up form embedded for people to be notified when we go live (we also need to put in links to the youtube videos on this page as i hadn't realized it had links to the zoom Q&A sign up)

agreed on the rest as we mostly can just call out "applications now closed", while keeping the language the same as it is good content to keep.


PaneSystem needs refactoring.

After #10 being merged, PaneSystem has became too large in my opinion. PaneSystem and InnerPaneSystem are essentially the same, so we need to refactor them somehow.
Also, I'm trying to move all the splitters into a separate layer, so a wrapper is necessary.
For example,
<SomeContext>
  <PaneSystemContextRegistry>
    <InnerPaneSystem>
      ...
    </InnerPaneSystem>

    <SplitterLayer />
  </PaneSystemContextRegistry>
</SomeContext>

SomeContext may hold some values in which InnerPaneSystem and SplitterLayer both need.
@hchangjae Can you refactor this somehow?

The two codes are very similar, but there are some differences, making maintenance challenging.
I'll take this.


Read config key from env AIO_CONFIG_KEY

Description
This is an alternative approach to #62
Instead of depending on an executable file name to be used as the key, we allow the use of an environment variable AIO_CONFIG_KEY to define the key.
Alternative CLIs can use an init hook to set this value before other plugins load the config.
AIO_CONFIG_KEY is used in the following ways:

used to load global config ex. ~/.config/aio
used to read a local config ex. .aio
used as a prefix for environment variables ex. AIO_*

A very simple hook attached to an alt cli might look like this:
module.exports = async function (opts) {
  process.env.AIO_CONFIG_KEY = 'wxp'
  // alternatively, it is also possible to derive the root key from the package.json
  // const pjson = opts.config?.pjson
}

Related Issue
#62
How Has This Been Tested?

AIO_CONFIG_KEY=adp ADP_BOO=scary aio config get boo
scary

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes.
[x] All new and existing tests passed.

@purplecabbage changes look good.
We can add the hook based configuration approach to Readme for documentation purpose.

LGTM. Just to note a corner case nitpick (we can probably ignore this but wanted to make sure we are aware of it): AIO_CONFIG_KEY will be visible to aio CLI config because of the AIO_ prefix but not to a wxp CLI

Yeah, there is an outside chance it might be visible, seems obscure though, and its not a secret ..
AIO_CONFIG_KEY=boo aio config get config.key


archive: disable build of bsdunzip utility

In line with the Windows builds, where this isn't built by default.
https://github.com/libarchive/libarchive/blob/bd074c2531e867078788fe8539376c31119e4e55/configure.ac#L277-L280
Should fix the CI for the linuxmusl-* platforms.

Dankjewel Kleis.


Fix mermaid flowchart margin issue

Fixes: https://github.com/go-gitea/gitea/issues/27435
Related: https://github.com/mermaid-js/mermaid/issues/4907

I was unable to create a backport for 1.20. @silverwind, please send one manually. :tea:
go run ./contrib/backport 27503
...  // fix git conflicts if any
go run ./contrib/backport --continue

I was unable to create a backport for 1.21. @silverwind, please send one manually. :tea:
go run ./contrib/backport 27503
...  // fix git conflicts if any
go run ./contrib/backport --continue


Rendering on Firefox 35

When testing my application on IE, Chrome all is well. When on Firefox (35) I get a first flash of the page load without CSS and then the page cleans up. It's only for a split second but it's annoying.
Any issues to help fix the problem?
Thanks
Sandy

This could be caused by the use of the Google-hosted Raleway web font. Switching to the FontLoader method of applying Google Web Fonts might help in this regard.

@sganz , If you can attach a screenshot about your issue will be helpful for us to debug that problem.

It was not persistent enough to capture a screen shot, but when you loaded a page you would see the un-styled display for a second, then it would format correctly once things loaded. Not sure if still an issue as we are decided against moving forward with SKEL mainly due to fact that it doesn't have a lager enough community as yet for me. It's import for support from my perspective. I think omgmog was on the right track with fonts being a bit of a delay the causes the page to have the odd loading issue.

I do not have Firefox 35, I have test it out on 39 and did not see that.

It was not persistent enough to capture a screen shot

If the problem will not be able to reproduce, why care ?

see the un-styled display for a second, then it would format correctly once things loaded

You probably fix this by moving the font and css on the top of the website. This will make sure that you can load your font and css before anything else.

fact that it doesn't have a lager enough community

Personally, I do not think this project will have a lot community involve because is a very straight up project. Not reason to add a lot complexity, and easy enough to ask at stackoverflow for support. Usually, having a community involve are for larges project (imo) where it have a lot complexity involve in the project.
Assuming, that this issue have been fixed or not been able to reproduce. Shall we close it ?

Sure close it out.


TarArchive.WriteEntryCore() throws UnauthorizedAccessException if user does not have write permissions in application directory

Steps to reproduce

Create & build an application that will create a user-specified tar file with ASCII translation turned on (utilizing TarEntry.WriteEntry())
Move the application and SharpZipLib dll into a testing folder
Create a test file in the testing folder (to be tar'd in step 5)
Remove the tester's write permissions from the testing folder
Run the application, with the current working directory set to the testing folder, to create a tar file in a folder that the tester has write permissions on

Expected behavior
A tar file should be created in the folder that the tester has write permissions on / supplied to the application.
Actual behavior
UnauthorizedAccessException is thrown as the tester does not have write permissions in the working directory for the application.
Version of SharpZipLib
1.3.2
Obtained from (only keep the relevant lines)

Package installed using NuGet

TLDR
Ran into a permissions issue after updating from 1.2.0 to 1.3.2. Looks like issues #537 and #543 were related to the change that caused it. I am hoping that the last two sentences in the following comment can be implemented (at least for TarArchive.WriteEntryCore()): https://github.com/icsharpcode/SharpZipLib/issues/537#issuecomment-724845720

So, if I understand this correctly, you are trying to create an archive in
/tmp/target/output.tar

by adding a file from
/tmp/source/sourcefile.txt

but you get a UnauthorizedAccessException because of no write access to /tmp/source/, even though the output should be in /tmp/target/?
You also use /tmp/source/ as the CWD, is that essential?
If so, it looks like the temporary file is created in CWD instead of the target directory for some reason...

Never mind, found the bug. Path.GetTempFileName() returns a file path including temp path, but Path.GetRandomFileName() returns just the file path. And if no absolute path is given,  that is of course interpreted as CWD.

Oh wow, thank you for the quick response and change! That is all correct. In fact, I would not have noticed this if the CWD was not the same as the read-only directory.
That said, it seems like the change that addresses this issue is reintroducing the concern mentioned in #537 and #543. Maybe I should open a new issue for this, but I ultimately would want to avoid an unnecessary temporary file from being created at all - be it in the CWD or a user's temp directory.
Specific to tar creation: is there a need for a temporary translated file to be created, or is this done out of convenience? I am not seeing a necessity, but want to check before I pester further / work on a PR 🙂

Sort of. The reason for doing it at that step is that the size of the file needs to be calculated, and in doing so you are already creating the translated version of the file, so instead of doing that once more in the next step it just uses a temporary file.
The main reason for doing it this way is probably because of memory concerns. For a smaller file it wouldn't be noticeable to do the conversion twice, nor to store the result in a MemoryStream. But what about a multi-GiB file? Where do you draw the line?
Except for that, it should be fairly easy to do. Write into a MemoryStream and use that instead of the FileStream when writing the contents a couple of lines further down... Or do the translation twice. That's slower, but you don't have to consider the memory usage.

Gotcha. I think I'd want to attempt a change that does not utilize a MemoryStream. Like you hinted, a MemoryStream introduces the issue that a larger file could exhaust memory resources and make the tar creation impossible. Performing the translation twice is slow and therefore not ideal, but would not make tar creation impossible in the case of a larger file or less memory. In other words, I would argue that a performance bottleneck is preferable to a restriction.
If there are no qualms with that approach, I'll go ahead and work on a PR this weekend. Would you want to see a new issue for this or would the PR be sufficient?


missing comma in pgn

cutechess:
Qb6 {0.00/23 0.22s, Draw by adjudication} 1/2-1/2
fastchess:
Ke4 {-6.31/11 0.005s White wins by adjudication} 1-0
fastchess is missing the comma before the "White wins by adjudication". unsure if this affects pgn parsing

yea we should add the comma


Make the CI great again

To anyone who is reading this. i was a long time away from open source projects and have now a little more time on my hand. If you are interested in go-mutesting, please help me get this project back on track. first step is to have a CI again for the repository. If you can help with that i would be eternally grateful.

what is needed here? what CI tools are being used? are there any previous pipeline definitions?

It seems that travis is being used at the moment, and the configuration file isn't huge. Do you think it's a good time to move to Github Actions ?

I can provide some help with migrating to github actions as well

@zimmski Do you want to use github actions, and if so do you want to make use of your makefile or use commands directly??

So, I just reimplemented .travis.yml configuration in github actions. Now it's on @zimmski to review it :+1:


how to integrate it with Quasar 2

Hi
I am new to Blitzar please help me to integrate this is not an bug its an help request. I want to get integrate Blitzar inside quasar vue 3
01 I installed using npm i blitzar
02 code
<template>
  <q-page>

hi

    <blitz-form v-model="formData" :schema="schema" :column-count="2" />
  </q-page>
</template>

it was not showing q-input component on screen no error on console too. Is there any kind of boot file is required to registered any component globally ?
Note : Quasar Import all component is default settings

Just working on a Quasar example project for Blitzar. Should be able to share soon.

@prashantnirgun see here https://github.com/CyCraft/blitzar/tree/production/example-projects/quasar

let me know if you have any other questions!


[PlatformView][Android] Unexpected behavior when embedding an Android SurfaceView

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
I embed a SurfaceView in a Flutter page, and I get some unexpected results. When using AndroidView, SurfaceView is added to VirtualDisplay, and when performing hot reload or rotate the screen , SurfaceView will not display any frame. When using AndroidSurfaceView, hot reload is normal, But when the page exits, there will be one frame left.
Steps to reproduce:
1.Run the example, click the play_video button, it will jump to the playback page, and then execute hot reload or rotate the screen.
2.Change the child to AndroidSurfaceView , re-run the example, when you exit the page, you will see a frame remains.
Expected results
It is expected that when embedding SurfaceView, it can behave normally regardless of whetherVDmode orHC mode is used.
Actual results
When using VD mode
Do a hot reload or rotate the screen
https://github.com/flutter/flutter/assets/33898039/78192680-e110-46fa-905f-bc70357efbd8
When using HD mode
https://github.com/flutter/flutter/assets/33898039/de0dcd36-e186-46d9-8b25-fa2b9deb0dff

Code sample
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';

class VideoPlayPage extends StatefulWidget {
  const VideoPlayPage({Key? key}) : super(key: key);

  @override
  State<VideoPlayPage> createState() => _VideoPlayPageState();
}

class _VideoPlayPageState extends State<VideoPlayPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('play'),
      ),
      body: LayoutBuilder(
        builder: (BuildContext context, BoxConstraints boxConstraints) {
          return Container(
            color: Colors.black,
            width: boxConstraints.maxWidth,
            height: boxConstraints.maxWidth * 9 / 16,
            child: _surface(),
          );
        },
      ),
    );
  }

  Widget _surface() {
    return PlatformViewLink(
        surfaceFactory: (context, controller) {
          return AndroidViewSurface(
            controller: controller as AndroidViewController,
            gestureRecognizers: const <Factory<OneSequenceGestureRecognizer>>{},
            hitTestBehavior: PlatformViewHitTestBehavior.opaque,
          );
        },
        onCreatePlatformView: (params) {
          return PlatformViewsService.initSurfaceAndroidView(
            id: params.id,
            viewType: 'video_player',
            layoutDirection: TextDirection.ltr,
            creationParams: {},
            creationParamsCodec: const StandardMessageCodec(),
            onFocus: () {
              params.onFocusChanged(true);
            },
          )
            ..addOnPlatformViewCreatedListener(params.onPlatformViewCreated)
            ..create();
        },
        viewType: 'video_player');
  }

  Widget _vd() {
    return const AndroidView(viewType: 'video_player');
  }
}

PlatformView is defined in java, providing a MediaPlayer for playing MP4 files in the asset.
// create SurfaceViewPlatformView
class SurfaceViewPlatformView implements PlatformView {
    private final SurfaceView surfaceView;
    private MediaPlayer mediaPlayer;

    SurfaceViewPlatformView(SurfaceView surfaceView) {
        this.surfaceView = surfaceView;
        //simple delay play the video
        surfaceView.postDelayed(new Runnable() {
            @Override
            public void run() {
                // 创建MediaPlayer并设置数据源
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setDisplay(surfaceView.getHolder());

                AssetFileDescriptor assetFileDescriptor = null;
                try {
                    // 获取MP4文件的AssetFileDescriptor
                    assetFileDescriptor = surfaceView.getContext().getAssets().openFd("big_buck_bunny.mp4");
                    // 设置MediaPlayer的数据源为AssetFileDescriptor
                    mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(),
                            assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
                    // 准备MediaPlayer
                    mediaPlayer.prepare();
                    // 开始播放
                    mediaPlayer.start();
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    // 释放AssetFileDescriptor资源
                    if (assetFileDescriptor != null) {
                        try {
                            assetFileDescriptor.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        }, 1000);
    }

    @Override
    public View getView() {
        return surfaceView;
    }

    @Override
    public void dispose() {
        // 清理资源
        mediaPlayer.release();
    }
}

The demo example is a plugin,
The complete code can be found in project  video_player_surface
Screenshots or Video
No response
Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
Doctor summary (to see all details, run flutter doctor -v):
[√]  Flutter (Channel stable, 3.10.4, on Microsoft Windows [版本 10.0.19044.2965], locale zh-CN)
[X] Windows Version (Installed version of Windows is version 10 or higher)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    X cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    X Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/windows#android-setup for more details.
[√] Chrome - develop for the web
[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2021.3)
[!] Android Studio (version 2022.1)
    X Unable to find bundled Java version.
[√] VS Code (version 1.77.1)
[√] Connected device (4 available)

Thanks for the report @designDo
It looks similar to https://github.com/flutter/flutter/issues/74403. Can you take a look at it and confirm if it resemble your issue or not ?

@darshankawar  Thanks for your advice.
I made this modification to your suggestion:
The video playback page is changed to a red background, the SurfaceView is placed in the middle, and the maximum height is set to 200, and the maximum width is  MediaQuery.of(context).size.width + 1.
When the page exits, it still has the previous effect.
 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('play'),
      ),
      body: Container(
        color: Colors.redAccent,
        child: Center(
          child: OverflowBox(
            maxWidth: MediaQuery.of(context).size.width + 1,
            maxHeight: 200,
            child: _surface(),
          ),
        ),
      ),
    );
  }

https://github.com/flutter/flutter/assets/33898039/00011d2b-06df-43c3-9689-02a113c2806e

Thanks for the update. Using the code sample (repo) provided, I was able to replicate the reported behavior.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.10.5, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.10.5 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (2 days ago), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.12.0-4.0.pre.84, on macOS 12.2.1 21D62
    darwin-x64, locale en-GB)
    • Flutter version 3.12.0-4.0.pre.84 on channel master at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 3246808cd2 (5 hours ago), 2023-06-14 17:20:30 -0700
    • Engine revision 2d8d5ecfe4
    • Dart version 3.1.0 (build 3.1.0-206.0.dev)
    • DevTools version 2.24.0
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/dhs/Library/Android/sdk
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for
      more details.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 13C100
    • CocoaPods version 1.11.2

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

[✓] IntelliJ IDEA Ultimate Edition (version 2021.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 65.1.4
    • Dart plugin version 213.7228

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

[✓] Connected device (3 available)
    • Darshan's iphone (mobile) • 21150b119064aecc249dfcfe05e259197461ce23 • ios
      • iOS 15.3.1 19D52
    • macOS (desktop)           • macos                                    •
      darwin-x64     • macOS 12.2.1 21D62 darwin-x64
    • Chrome (web)              • chrome                                   •
      web-javascript • Google Chrome 109.0.5414.119

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

! Doctor found issues in 1 category.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 1 category.

Note from triage: cc'ing @johnmccutchan, this might be something worth looking in to as you look in to Platform Views in general.

@gmackall  @darshankawar @johnmccutchan
In the past few days, I try to understand the principle of the implementation of PlatformView。
I found that when using AndroidView, when performing hot reload or rotating the screen, the resize method of shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java will be called. What I don't understand is why we need to create a new VirtualDisplay instead of calling the resize method of VirtualDisplay directly.
I tried to modify it and verified in the test that when hot reload is executed again or the screen is rotated, it behaves normally.
My modification is as follows：
https://github.com/designDo/engine/commit/1b4071b09fd82a38eefcc07618e550f31861c45b
The most important thing is the addition of line 144 virtualDisplay.resize(width, height, densityDpi);

 public void resize(final int width, final int height, final Runnable onNewSizeFrameAvailable) {

    bufferWidth = width;

    bufferHeight = height;

    textureEntry.surfaceTexture().setDefaultBufferSize(width, height);

    virtualDisplay.resize(width, height, densityDpi);

    final View embeddedView = getView();

    embeddedView.postDelayed(onNewSizeFrameAvailable, 128);

  }

performance in the test:
Uploading resize.mp4…

@johnmccutchan  @darshankawar Hello All.
I found that the resize method of VirtualDisplay can be used on Android31 and above to solve the problem of rotating the screen. But this method cannot use the resize method because of the implementation problem of Presentation in versions below Android30.
The specific reason is that when the device rotates, the cancel method of the presentation will be called, so a new Presentation must be created and displayed.

So I did compatibility processing in the resize method of io.flutter.plugin.platform.VirtualDisplayController.
But the version below Android30 still can't solve it (in the scenario of using MediaPlayer).
It will prompt BufferQueue has been abandoned, and the screen is directly black.
When I try to release SurfaceView from widow detach, and regenerate SurfaceView and bind to MediaPlayer, MediaPlayer does not support this operation.
In my business scenario, our SDK will render the screen to SurfaceView and support resetting the new SurfaceView, so through my compatibility processing, this problem is temporarily solved.
I hope to be able to make some contributions to the community. I hope to be able to merge the compatible solutions of Android 31 and above. And explore whether there is a more suitable solution.
My modifications to Engine can be found here
https://github.com/designDo/engine/blob/97d798bece53d7f17956c1a204a686d54cf6d7f3/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java#L142
private void resizeAboveAndroidS(View embeddedView, int width, int height, final Runnable onNewSizeFrameAvailable) {
    bufferWidth = width;
    bufferHeight = height;
    textureEntry.surfaceTexture().setDefaultBufferSize(width, height);
    virtualDisplay.resize(width, height, densityDpi);
    embeddedView.postDelayed(onNewSizeFrameAvailable, 0);
  }

To facilitate your testing and reproduction, I uploaded the demo project on github.
https://github.com/designDo/video_player_surface
Please give me some comments, looking forward to your reply.

Hi,
Thank you for the analysis and for the reproduction. I am currently looking at another bug (supporting Android Platform Views under Impeller), but this is near the top of my queue as I am focusing entirely on Android Platform Views for the near future.
John


Pip installation must be enabled

@anitaapplegarth

Added toml file and amended setup. Waiting for code

Ran successfully on testpypi, ready for complete code to upload to pypi.


Wallet locked up after multiple failed calls to split-coin

My wallet is locked up after multiple intentional split-coin failures. Full logs below but this error is what caused the full lockup
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Inconsistent results observed in the Gateway. This should not happen and typically means there is a bug in the Sui implementation. Details: \"Failed to download some objects after transaction succeeded\"", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 1 1 0 01 10 1
----- Certificate ----
Signed Authorities : [k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, k#e9599283c0da1ac2eedeb89a56fc49cd8f3c0d8d4ddba9b0a0a5054fe7df3ffd]
Transaction Kind : Call
Package ID : 0x2
Module : Coin
Function : split_vec
Arguments : [ImmOrOwnedObject((4EB06E2F73376B300925D9BFD9FBCF879F37E56E, SequenceNumber(1), o#6b366e825890b8710e9ef87a9c28f08e02f88e8452a6974feb31a2642edd1867)), Pure([8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0])]
Type Arguments : [Struct(StructTag { address:<PHONE_NUMBER>000000000000000000000000000002, module: Identifier("SUI"), name: Identifier("SUI"), type_params: [] })]

----- Split Coin Results ----
Updated Coin : Coin { id: 4EB06E2F73376B300925D9BFD9FBCF879F37E56E, value: 4985 }
New Coins : Coin { id: 165929329D92273AD2EAF50B2B706D2459F35112, value: 1 },
      Coin { id: 320E82A291E8D023FF59933512F2ABD35DF6615E, value: 10 },
      Coin { id: BD46681BFF9238AA61917CEC717235835C5E3814, value: 0 },
      Coin { id: C26152BDDB57D287CA102E558F4AF5164AF2E02D, value: 1 },
      Coin { id: CD687FC62FAE2B9B1059677CD75B43D49CE70865, value: 1 },
      Coin { id: D03D0788AAD7C558B0A551D159503FEF9978D43A, value: 0 },
      Coin { id: D1E634706FE4CE3F612DFA45E8EF1438022498B8, value: 1 },
      Coin { id: E432C108A7F905E1841E7912B5081CF02F8569B7, value: 1 }
Updated Gas : Coin { id: 250563D7389A5E8FEA21EE5DF0B593C862B9C94E, value: 46857 }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0 1 0 1 0 1
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Execution aborted: \"VMError with status ABORTED with sub status 0 at location Module ModuleId { address:<PHONE_NUMBER>000000000000000000000000000002, name: Identifier(\\\"Balance\\\") } and message 0x0000000000000000000000000000000000000002::Balance::split at offset 9 at code offset 9 in function definition 4\".", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0 1 0 1 0
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Execution aborted: \"VMError with status ABORTED with sub status 0 at location Module ModuleId { address:<PHONE_NUMBER>000000000000000000000000000002, name: Identifier(\\\"Balance\\\") } and message 0x0000000000000000000000000000000000000002::Balance::split at offset 9 at code offset 9 in function definition 4\".", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0 1 0
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Inconsistent results observed in the Gateway. This should not happen and typically means there is a bug in the Sui implementation. Details: \"Failed to download some objects after transaction succeeded\"", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#1d47ad34e2bc5589882c500345c953b5837e30d6649d315c61690ba7a1e28d23, TransactionLockDoesNotExist)]", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#e9599283c0da1ac2eedeb89a56fc49cd8f3c0d8d4ddba9b0a0a5054fe7df3ffd, TransactionLockDoesNotExist)]", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet split-coin --coin-id 4EB06E2F73376B300925D9BFD9FBCF879F37E56E --gas-budget 1000 --amounts 1 0 4980 1 0 1 0 1 0
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#e9599283c0da1ac2eedeb89a56fc49cd8f3c0d8d4ddba9b0a0a5054fe7df3ffd, TransactionLockDoesNotExist)]", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet objects
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#1d47ad34e2bc5589882c500345c953b5837e30d6649d315c61690ba7a1e28d23, TransactionLockDoesNotExist)]", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet addresses
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#1d47ad34e2bc5589882c500345c953b5837e30d6649d315c61690ba7a1e28d23, TransactionLockDoesNotExist)]", data: None }
arunkoshy@Aruns-MacBook-Pro debug % wallet active-address
RPC call failed: ErrorObject { code: ServerError(-32000), message: "Too many authority errors were detected: [(k#27613e1b78d1c8ebb1ac263ef7180f17eb9cffa3ab5544cd369f8be179b0327e, TransactionLockDoesNotExist), (k#2266186afd9da10a43dd3ed73d1039c6793d2d8514db6a2407fcf835132e863b, TransactionLockDoesNotExist), (k#1d47ad34e2bc5589882c500345c953b5837e30d6649d315c61690ba7a1e28d23, TransactionLockDoesNotExist)]", data: None }

Wallet locked up again after some stress testing, but this time it only locked up when trying to do write actions (merge-coin, transfer, call etc.). Always returning the same error. I was only stress testing one address (3FC1D945C33AD47D123E3AC0FAB854B3015F8E4D) in my wallet, but when I switch to another address in my wallet or create a new wallet the same error is returned.
RPC call failed: ErrorObject { code: InternalError, message: "Internal error", data: None }
I wrote a script to merge coins until I had one mega coin or until I broke something, attached it if anyone else wants to play around with it.
#!/bin/bash
# Get coins from faucet and merge coins until I have one coin to rule them all!
counter=1
while [ $counter -le 100 ]
do
coins=$(curl --location --request POST 'http://ac15d2445706543f3acf211fc44e01c3-1765225438.us-west-2.elb.amazonaws.com:9100/gas' \
--header 'Content-Type: application/json' \
--data-raw '{
    "FixedAmountRequest": {
        "recipient": "3FC1D945C33AD47D123E3AC0FAB854B3015F8E4D"
    }
}' | jq -r '.transferred_gas_objects | .[] .id')

for coin in ${coins[*]};
do
    wallet merge-coin --primary-coin FA518F3CAB519112C4B4648D5C3E4972BF19873A --coin-to-merge $coin --gas-budget 1000
done
((counter++))
echo Round $counter
done

echo All done


Added ScoresAutoRequest class definition

This allows developers to use the Scores Auto Search API at /businessinformation/businesses/v1/scores/search.

Hi @scstauf thanks for the PR, we'll run this through our build checks and look at merging it in soon.

Hello again @scstauf I just wanted to let you know that your changes have been folded into master. Also we've wrapped up the entire API as a Nuget package available here: https://www.nuget.org/packages/Experian.Api.Client/ Currently its pre-release but we'll push out the full version shortly.
Thanks again for the submission we really appreciate it!


Cant find sample application

Hi I am not able to find the sample application SharpCaster.Sample. I only found empty repo
https://github.com/Tapanila/SharpCaster.Samples

Hey,
The sample was on this repository but when I was doing refactoring or something I have deleted it.
Will add the WPF sample back to this repository but it will take few weeks before I will get into this

is there any update on this? I am struggeling to stream website content


Minor: Remove deprecated chrome.loadTimes() code

This code predates the window.performance API, so it makes sense to remove it given that the window.performance API has broad adoption.
The chrome.loadTimes() code produces console warnings for most Chrome users, since it's deprecated; this PR eliminates that.

nvm forgot i can just merge from the PR


[WFRP4e] Not Enough Funds

Describe the bug
Trying to buy something and it shows that I've not have enough funds, even if I've got a lot more (item costs 18SS, while I've got over 41GC).
Screenshots

Merchant sheet | buyTransaction
Object { type: "buy", buyerId: "iBKqZ0qyDfNvdTFt", tokenId: "SRIelG7kCY0mdXLH", itemId: "aHxWaFiNveIvnDTh", quantity: "1", processorId: "U5FIH1DicVj3Ntbc" }
bundle.js:18:231
Buying item: [object Object], [object Object], aHxWaFiNveIvnDTh, 1 bundle.js:7:7887
Actor currency:  0 bundle.js:18:13687

Oh hey - I'm having this problem too (Warhammer).

I will look into this as my next task

Is it okay to have it fixed only for 9 and upwards?

I would think so - WFRP is working with v9.

Fixed in https://github.com/whelan/fvtt-merchant-sheet-npc/releases/tag/2.4.2


Remove "shortcut" version of BRT test

The batchruntomo command is running much faster that before, so the shortened version that bypassed the actual IMOD command, is not longer necessary.
Steps:

comment out in test_brt
move run_brt from utils.py to brt/flow.py
see if there are any other simplifications that we want to make
remove commented-out code

This was closed by #264


update test to work with Julia v1.10

Closes #204

coverage: 91.595%. remained the same when pulling bdf6c768ee5e9909d9ccea0162e6894bf106a9b5 on hr/collect into bf0102d6d1f00bfdb3efffac3eaba2df933149c4 on main.


lambda & proc are assumed to be attributes

https://github.com/tadiou/lambda_factory_girl is an example setup for this case.
I was rubocopping some old files in a factory, and it suggested I changed Proc.new to proc (based on 1.8 -> 1.9 changes), that failed because FG assumed proc was an attribute being assigned to a value. Same with lambda or throw or other general ruby keywords all get assumed to be attributes before they're recognized as core ruby syntax.
The functionality works fine, when I convert to -> vs lambda, or if i pull it out of the factory block and put it in the same file as a method, but the DSL tries to read it and says nope.

self where you are trying to define the Proc is an instance of FactoryGirl::DefinitionProxy:
FactoryGirl.define do
  factory :user do
    # Factory girl uses `instance_eval` to evaluate this block
    # in the context of a `FactoryGirl::DefinitionProxy` instance
  end
end

FactoryGirl::DefinitionProxy undefines all but a handful of whitelisted methods, and neither proc or lambda make the cut. Undefining these methods keeps them from conflicting with attributes on the class you are trying to build, so in theory this should work:
class User
  attr_accessor :proc
end

FactoryGirl.define do
  factory :user do
    proc 'An attribute called proc'
  end
end

user = FactoryGirl.build(:user)

The expected behavior, I think, is that user.proc should now return 'An attribute called proc'. It actually doesn't quite work that way. Instead user.proc returns false. I think this is a bug, probably coming from somewhere in FactoryGirl::Evaluator. I would be happy to fix this bug, although I don't expect doing so will make rubocop happy.
The simplest solution in this case may be to arrest rubocop.

self where you are trying to define the Proc is an instance of FactoryGirl::DefinitionProxy:
FactoryGirl.define do
  factory :user do
    # Factory girl uses `instance_eval` to evaluate this block
    # in the context of a `FactoryGirl::DefinitionProxy` instance
  end
end

FactoryGirl::DefinitionProxy undefines all but a handful of whitelisted methods, and neither proc or lambda make the cut. Undefining these methods keeps them from conflicting with attributes on the class you are trying to build, so in theory this should work:
class User
  attr_accessor :proc
end

FactoryGirl.define do
  factory :user do
    proc 'An attribute called proc'
  end
end

user = FactoryGirl.build(:user)

The simplest solution in this case may be to arrest rubocop.


JavaScript - Fetch API

https://developer.mozilla.org/en/docs/Web/API/Fetch_API

Just keeping this listed here as a target request. Maybe someone (or I) will send a PR.

This also came up a a handy to-have addition to this project in my view. So +1 if anyone could provide a PR for this

any progress on landing the PR #98 for this?

httpsnippet is slowly rising from the ashes of it's abandonment. Stay tuned. #98 is looking pretty good so will review that shortly!


ES6 Phaser.Scene, the physics engine is not reachable.

In an Es6 extending Phaser.Scene, the physics engine is not accessible.
With the following code, "this.physics" ends up with an error:
TypeError: Cannot read property 'add' of undefined
therefore, this.physics shows up as undefined.
This was the code I used:
class GameScene extends Phaser.Scene {
    constructor(config) {
        super({
            key: 'GameScene',
            physics: {
                system: 'impact',
                gravity: 100,
                setBounds: {
                    width: 800,
                    height: 600,
                }
            }
        });
        console.log(config);
    }

    preload() {
        this.load.image('mushroom', './assets/images/mushroom2.png')

    }

    create() {
        console.log(this.physics);
        this.mushroom = this.physics.add.image(300, 300, 'mushroom').setActive().setVelocity(0, 0).setBounce(0);

    }
}

export default GameScene

When using Impact physics, I believe you have to refer to it as this.impact instead of this.physics. I'm not familiar with the particulars of why this is but if you switch to that your code will work.

Took a slightly modified version of your sample code for some quick tests in the Labs. Looks like this.physics is reserved to Arcade Physics. As @iamchristopher noted, use this.impact instead.
Also, that scene configuration is wrong. Should be something like this:
{
    key: 'GameScene',
    physics: {
        impact: {
            gravity: 100,
            setBounds: {
                width: 800,
                height: 600
            }
        }
    }
}

Sample code
class GameScene extends Phaser.Scene {
    constructor() {
        super({
            key: 'GameScene',
            physics: {
                arcade: {
                    //  Will enable Arcade Physics
                },
                matter: {
                    //  Will enable matter.js
                },
                impact: {
                    gravity: 100,
                    setBounds: {
                        width: 800,
                        height: 600
                    }
                }
            }
        });
    }

    preload() {
        this.load.image('disk', 'assets/sprites/copy-that-floppy.png');
    }

    create() {
        //  {
        //      impact: /* ImpactPhysics { ... } */,
        //      matter: /* MatterPhysics { ... } */,
        //      physics: /* ArcadePhysics { ... } */
        //  }
        console.log(this);

        this.disk = this.impact.add.image(100, 100, 'disk').setActive().setVelocity(0, 0).setBounce(0);
    }
}

const game = new Phaser.Game({
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    backgroundColor: '#2d2d2d',
    parent: 'phaser-example',
    scene: [GameScene]
});

Yes, physics is Arcade Physics, for legacy reasons. You can redefine it in the InjectionMap if you'd like to change it, to whatever you wish.

impact physics seems to be broken starting with v3.23
This demo works up to v3.22 but after that this.impact is undefined
http://phaser.io/examples/v3/view/game-objects/tilemap/collision/weltmeister-map-and-impact

this.impact is undefined starting with Phaser v3.23
See this demo. It works in v3.22 but not newer
http://phaser.io/examples/v3/view/game-objects/tilemap/collision/weltmeister-map-and-impact

@stahlmanDesign that's correct, this was removed in 3.23. From the Change Log:
### Removed

The following features have been removed in this version of Phaser:

* Impact Physics has been removed completely and is no longer a choice of physics system. The resulting `Scene.impact` property and Impact config object have also been removed.

Impact Physics has been removed completely and is no longer a choice of physics system. The resulting Scene.impact property and Impact config object have also been removed.

Sad to see support removed for a game engine I loved, but I totally understand the desire to remove features and to make the codebase tighter and more focused.

So few people used it, it didn't warrant keeping as part of the core API I'm afraid.


implement ines file support

Closes #24

Codecov Report

Merging #32 (028a13b) into main (09684c0) will increase coverage by 0.13%.
The diff coverage is 57.14%.

@@            Coverage Diff             @@
##             main      #32      +/-   ##
==========================================
+ Coverage   47.62%   47.76%   +0.13%
==========================================
  Files          61       64       +3
  Lines        5400     5477      +77
==========================================
+ Hits         2572     2616      +44
- Misses       2704     2727      +23
- Partials      124      134      +10


Appendix indicators should have hover help text

Like when you hover over the icons elsewhere:

Pointer on where to look to begin implementation from https://github.com/github/choosealicense.com/pull/406#issuecomment-218225779

Note that I've not made the license property tooltips you can see eg in /licenses or on individual license pages work (hover over eg "commercial use" on one of those pages). The CSS and Javascript (relevant files are assets/css/application.scss and assets/js/app.coffee) for those tooltips currently require a specific structure with bullets, but probably could be made more flexible. An alternative that might even be more useful would be a legend.


⚠ Bofrost.lu has degraded performance

In dbcdda1, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2063 ms

Resolved: Bofrost.lu performance has improved in 9631a67 after 43 minutes.


Create coverity.yaml

@gaben-snps Was this intended?

This was not intended. I thought I copied this repo on my personal


Very clearly display a track as being marked as spam

In the end, I'm not sure it'll make sense for us to individually mark tracks as spam vs. accounts — but currently detection on tracks is working better than detection on users.
One thing is missing — a track should be very obviously marked as spam when it displays in the UI. We need to find a visual way to represent that. It's only visible to the owner and moderators, so it's fine to make it loud and proud.
We could go very overt and include a short message to the user like "This track has been detected and reported as spam. Contact<EMAIL_ADDRESS>if you believe it's an error"

Duplicate of #533 and no longer needed as users are whitelisted now.


Unknown Member "GetImageAsPngAsync" / "GetImageAsJpgAsync" on CachedImage object

The two mentioned methods are not working in my project. Sample code:
CachedImageRender.Init(); // in AppDelegate, App.xaml.cs, MainActivity
 var image = new CachedImage
                    {
                        HorizontalOptions = LayoutOptions.Center,
                        VerticalOptions = LayoutOptions.Center,
                        CacheDuration = TimeSpan.FromDays(30),
                        DownsampleToViewSize = true,
                        RetryCount = 0,
                        RetryDelay = 250,
                        TransparencyEnabled = false,
                        Margin = new Thickness(10),
                        Source = "http://loremflickr.com/600/600/nature?filename=simple.jpg",
                      };

var png = await image.GetImageAsPngAsync(500, 500); // png is null; "Unknown Member: ..."
var jpg = await image.GetImageAsJpgAsync(100, 500, 500); // jpg is null; "Unknown Member: ... "

Why are the methods not working?

It's because image is not loaded yet. Put that method within FinishCommand command or Finish event.


Can't see console output in terminal after page.click()

Puppeteer version: 1.9.0
Platform / OS version: macOS 10.14 (18A391)
Node.js version: v10.12.0

Can't see console output in terminal after page.click()
index.ts
(async () => {

  /*** All console outputs and readline questions is displayed on terminal before : ***/
  const browser = await puppeteer.launch({
    userDataDir: `${__dirname}/../chromium`,
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
  });

 ...

challenge.ts
import * as readline from 'readline';
import * as puppeteer from 'puppeteer';

import * as selectors from '../config/selectors.json';
const timeout = (ms: number) => new Promise<void>((resolve) => setTimeout(resolve, ms));

export default async function challenge(page: puppeteer.Page) {
  await page.waitForSelector(selectors.challengeSendButton);
  const email = await page.$eval(selectors.challengeEmailLabel, (label) => label.textContent);

  await Promise.all([
    page.waitForNavigation({ waitUntil: 'networkidle0' }),
    page.click(selectors.challengeSendButton, { delay: 200 }),
  ]);
  await timeout(1000);

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });

  /*** Nothing is displayed in the terminal here ***/
  const secCode = await new Promise<string>((resolve) => {
    rl.question(`Enter the verification code sent to ${email}: `, (answer) => {
      resolve(answer);
    });
  });
  rl.close();

  await page.waitForSelector(selectors.challengeSubmitButton);
  await page.type(selectors.challengeSecCodeInput, secCode, { delay: 200 });

  await Promise.all([
    page.waitForNavigation({ waitUntil: 'networkidle0' }),
    page.click(selectors.challengeSubmitButton, { delay: 200 }),
  ]);
  await timeout(1000);
}

Can't see console output in terminal after page.click()

@jeudesprits I can't run your script  - there's no url and it looks like it's a part of some larger system. However, usually if you want to see the messages dumped by Page's console.log statements, you need to add
page.on('console', msg => console.log(msg.text());

You can also launch browser with dumpio: true if you're actually interested in chrome log rather than in page's log.
Hope this helps!


openssh: depend on git

Proof of concept. Fixes #2414

Provides field is awesome!

If this change is still desired and viable, let's open PR in https://github.com/ScoopInstaller/Main


Increase trough height by 1/8" to allow panel to tip backwards

This needs to be 1/4" in order to accommodate a build using 3/16" layers.


runners: pyocd: Add semihosting option

For ARM semihosting breakpoints to be parsed by pyOCD, the --semihosting argument is
needed. With that argument it starts dumping the semihosting console output to
the telnet port.
Signed-off-by: Casper Meijn<EMAIL_ADDRESS>

Why not just use --tool-opt=-S?
In general, I'm against merging runner-specific options that just map directly to some other option in the underlying tool. It's extra indirection without any benefit.

That makes total sense. I was not aware of the --tool-opt, because it doesn't show up in west debug --help. I could have known as this option was directly above my change.
I will close this in favor of --tool-opt=-S.

@caspermeijn sounds good, thanks. Regarding west debug --help, it does include this in the output:

  ===================================================================
    IMPORTANT:
    Individual runners support additional options not printed here.
  ===================================================================

  Run "west debug --context" for runner-specific options.


Custom Java?

Just a path on the target system?
OpenJDK version number with a destination path?
GraalVM version number with a destination path?
Or support both?
An arbitrary archive URL? Where do I download it, what's the archive structure?

https://whichjdk.com/#distributions
Jesus, so many choices. I'm leaning onto the 1st option. skip_java or something.


Remove C-style incrementers

This addresses Swift Evolution Proposal #4 mentioned in issue #10.

Aww, I'm sorry I left this PR open for so long @joemasilotti. Thanks for contributing this. I haven't been great at keeping up with the swift evolution proposal, but I think this change is a clear win.


WIP:  Updates for Cypress v.10 CT testing

Added a new component input in the action.yml which is a boolean to let the action know that Cypress is running component tests and not e2e tests.
removed default config-file value of cypress.json and replaced it with an empty string '' in the `action.yml
Added a component testing example job and CRA example project with component tests
Updated all v9 examples to the latest version of Cypress 9
Duplicated all v9 examples and updated them for Cypress v10
Updated README

This PR is being tested in the RWA in this PR: https://github.com/cypress-io/cypress-realworld-app/pull/1195
Todo:

Updated all references to the latest Cypress binary with 10.0.0 whenever Cypress 10 is officially released.

@kevinold I am currently getting 6 failing checks and I am not sure why. When you have a chance, would you mind reviewing them? I could use another set of eyes as I think I have been staring at this stuff for too long now

@kevinold @admah the example-start errors out each time it is executed. I am not sure what the issue is. Even if I remove all of the v10 stuff in that config, it still fails inconsistently.
Other than that, I think this PR is ready for you guys to review. Sorry, it is so large. Happy to jump on a call or discuss if that will help.

@robertguss Is this work still relevant? Will there need to be more updates to get this working prior to release?

@jennifer-shehane yes this work is still relevant and there will be more work to be done after the release since we will need to update all of the examples to an actual release in the package.json files instead of a beta binary.

Thanks for working on this. I'm going to need this for our pipeline to turn green again.

Oh ok. I thought 3.2 was the new version. My mistake!


Integration with Apollo

This library looks super promising :-)
I previously built an Apollo + Redux + Graphcool + Next.js POC and would love to add offline capability: https://github.com/relatenow/relate
How can redux-offline be combined with Apollo/Graphcool?

I've been doing some reading and research somewhat related to this question. I think it would be difficult but not impossible. Guessing some close coordination with the Apollo team would be needed.

On the persistance and re-hyrdration side the first issue is that the entirety of the apollo redux state is not meant to be persisted and re-hydrated. I think Apollo has the API functionality to handle this as long as it was figured out how to do it correctly.

Once the store has re-hydrated  with data from previously successful Graphql queries, Apollo can query that local cache.

There is no built in way to tell Graphql when to fetch or re-fetch data when the client comes back on-line

I think the biggest issue is the batching of mutations. From the redux-offline docs:
store.

In order to support Write-resilience, we will store all network-bound actions in a queue inside our Redux Offline creates a state subtree called offline, where among other internal state needed by the library, it manages an array called outbox.

To be able to perform the network-bound actions after we come back online, we need to store all necessary data to perform the action, and metadata about what should happen afterwards.

Apollo is built on top of redux but the redux actions dispatched by query and mutation operations are abstracted from the developer. So we can't just append data to the redux actions to describe how offline should work, nor can we queue these actions up easily.

@funkyeah thanks for the comments, it also looked to me like a collaboration with Apollo would be best. Maybe @stubailo can comment?

I think there are two relatively issues here:

Apollo expects the Redux state to be initialized right away, but with this implementation it probably takes some time to get ready. That's something we can try to fix in Apollo.
Apollo manages your network requests for you, but not in a way that is aware of offline state. There's no easy way to queue up mutations, and there's no built-in functionality to refetch all queries when you come back online.

The first one is mostly about retaining data across reloads, but the second might require some changes in Apollo.
We have wanted to build the offline functionality for a while, but the main blocker has been a lack of clear goals. What does offline first mean? What actions need to be available offline, and what does loading data when offline look like? Because GraphQL pushes a lot of the "understanding" of data to the server which usually makes client-side data management simpler, I think it actually makes offline a bit more complex.
If you are interested in spending some time on this I'd love to help. The first step I think would be collecting some of the requirements of how it should work. What is the behavior when going on and offline? How should queueing up mutations work? Etc.

@stubailo that's great feedback, thanks. Unfortunately @jevakallio wrote he doesn't have as much time as he thought 😞
@rauchg also wrote that offline is a top priority for Next.js.
Opportunity for collaboration perhaps.

@sedubois @stubailo thanks for your comments. I don't currently see how Apollo offline-first should work - overall I have very limited experience with Apollo, though from what I've seen it's a hella impressive piece of work!
I'm going to stop giving estimates on when I'm delivering things, but let's say soon I'll put together an example app using redux-offline. I think branching off of such example, integrating with Apollo, and seeing where the friction starts to burn would be a good way to find out.
If anybody has the time to set up a general redux-offline example app that follows the basic documentations in README, that would be a great starter.

Apollo + redux-offline would be absolutely amazing !

I have start to try a simple example with redux-offline & apollo.
I would be happy about changes.
https://github.com/ReggaePanda/redux-offline-examples

I'd recommend you have a read of http://www.east5th.co/blog/2017/07/24/offline-graphql-queries-with-redux-offline-and-apollo/ for a way to do this 😀

Thanks for sharing this article @notrab. When is the next article coming out for mutations?

Hi @nikhilag - I didn't write this article - I'm sure comments are enabled for that post though 👍

I have simple workbox-webpack-react-apollo-graphql implementation here: https://github.com/developer239/workbox-webpack-react/tree/with-apollo-graphql Note that graphql is not in master branch of the respository.
It works pretty nice. Now I am trying to figure out how to "reload" apollo query after user gets back online.

Hey @developer239,
if you want to refetch your Apollo query once, immediately after the user came back online, you could listen to redux-offline's default config.detectNetwork method (or, if necessary, a custom one) and just manually execute your query again (using client.query()).
If you want your users to see live updates whenever a new blog post is published, you'll want to look into GraphQL subscriptions (depending on your implementation, what I've suggested above might still be necessary).
Note that the aforementioned solution is a workaround that works best if only used for a small number of queries (otherwise you might lose track of what needs to be refetched - and what maybe doesn't). I'm planning on adding a more convenient way of implementing that sort of refetch behaviour to a package that provides an offline-first toolkit specifically for Apollo, apollo-offline. It is built on top of redux-offline and my attempt at plug-and-play offline support for Apollo apps.

@MLPXBrachmann Wow apollo-offline looks promising. I will look at it tomorrow and post some feedback here. :)


Enable dprint completions in each main shells

eval style makes 8~10ms slower

https://github.com/dprint/dprint/pull/678 👀 looks the origin

Creating a task to bump these generated file is a way, but I omit it until checked the benefit of this completion
Non eval style may work different with home-manager installed dprint and other versions in each repository, but I accept it for now


Remove install-fail kitchen test

What does this PR do?

Add new config files from https://github.com/DataDog/datadog-agent/pull/24360 to E2E tests
Remove kitchen test that is now handled by an E2E test

added assertions for removal of auth_token and checks.d

Revert temporary CI fix https://github.com/DataDog/datadog-agent/pull/25257
Motivation

install-fail kitchen test started failing because it wasn't updated to be aware of the new config files added in https://github.com/DataDog/datadog-agent/pull/24360
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


[c++] Experimental [WIP]

Issue and/or context: To be typed up
Changes:
Notes for Reviewer:

Experimental around #2941


python310Packages.islpy: 2022.2 -> 2022.2.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.islpy is: "Python wrapper around isl, an integer set library"
meta.homepage for python310Packages.islpy is: "https://github.com/inducer/islpy"
meta.changelog for python310Packages.islpy is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
Warning: a test defined in passthru.tests did not pass
found 2022.2.1 with grep in /nix/store/9qw4halfk5fmjmgs472gxr675y6bj4nh-python3.10-islpy-2022.2.1
found 2022.2.1 in filename of file in /nix/store/9qw4halfk5fmjmgs472gxr675y6bj4nh-python3.10-islpy-2022.2.1

Rebuild report (if merged into master) (click to expand)

8 total rebuild path(s)

4 package rebuild(s)

4 x86_64-linux rebuild(s)
4 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
python310Packages.islpy
python310Packages.loopy
python39Packages.islpy
python39Packages.loopy

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/9qw4halfk5fmjmgs472gxr675y6bj4nh-python3.10-islpy-2022.2.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.islpy https://github.com/r-ryantm/nixpkgs/archive/a1b16f99f8b0a6caca6a05c91475bd6c6aab7ce8.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/9qw4halfk5fmjmgs472gxr675y6bj4nh-python3.10-islpy-2022.2.1
ls -la /nix/store/9qw4halfk5fmjmgs472gxr675y6bj4nh-python3.10-islpy-2022.2.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

4 packages built:

python310Packages.islpy
python310Packages.loopy (python310Packages.loo-py)
python39Packages.islpy
python39Packages.loopy (python39Packages.loo-py)

Maintainer pings
cc @costrouc for testing.

Included in python-updates.


GRAL-3207

Fix messaging app vulnerability
App seems to work, but seems there is some issue with the channels endpoint

Main branch dependencies


address some issues raised by Sean

@spl We are grateful for all your help! It is only a small way to show our gratitude, but I just added you to the list of acknowledgements in the introduction.

Thanks. Happy to help. I've really enjoyed the tutorial, and I'd like to see it continue improving. :)


unable to change the log size with in the pod

Is there a way we can change the log size when the QM is created. currently creating 16 mb files.

No there is not a way to do that without a code change.  Here's where you'd need to set it: https://github.com/ibm-messaging/mq-container/blob/4580cecf4973107dff184e8cbbcf9ac7f5b4e7df/cmd/runmqserver/qmgr.go#L210

Would be really helpful to have an option to inject (generic) crtmqm args.

This is now possible at queue manager creation time by setting the MQ_QMGR_LOG_FILE_PAGES variable, as documented in the README.


LineString visible on reloading project even if set to invisible

Describe the bug
When reloading an appinventor project, a LineString is visible on the Designer even if it is set to non-visible. Again checking and unchecking the visible checkbox resolves this issue.
Affects

[x] Designer
[ ] Blocks editor
[ ] Companion
[ ] Compiled apps
[ ] Buildserver
[ ] Debugging
[ ] Other... (please describe)

Expected behavior
The LineString should be invisible when visible box is unchecked.
Steps to reproduce

Create a map in the designer.
Add a LineString to the map.
Uncheck the Visible check box.
Observe the LineString becomes invisible,
Reload the webpage.
Observe that LineString is visible but Visible checkbox is still unchecked.

Encountered this issue while resolving #2441.
This problem is shared by circle, rectangle and polygon too.

i am a beginner how can i start working on this issue can someone help me?

@Himanshu2107 is this something you're planning to resolve as part of your work on #2441 or could @KishkinJ10 work on it?

@ewpatton Yes, I am planning to resolve this issue as well.

Ok, I'll assign it to you.


Deriving convergence state

Hi! Thanks for the great work. There are two convergence states in eq.9 and eq.16 in your paper, may I ask the process of deriving \beta_{u,i} and \omega_{i,j}?

Hi cieske,
For eq.9, it is derived from eq.8 by transposing the "\frac{1}{d_u + 1} e_u" in the  right side to the left side, and you can get "\frac{d_u}{d_u + 1} e_u = ...e_i". Then multiply "\frac{d_u + 1}{d_u}" to the both sides, and you can get eq.9.
For eq.16, its derivation is the same as eq.9. You can first write an equation like eq.8 as "e_i = \frac{G_{i, i}}{g_i} e_i + \frac{G_{i, k}}{\sqrt{g_i}\sqrt{g_k}} e_k". Then  you will get eq.16.

Hi! Thanks for the great work. There are two convergence states in eq.9 and eq.16 in your paper, may I ask the process of deriving \beta_{u,i} and \omega_{i,j}?

Hi cieske,
For eq.9, it is derived from eq.8 by transposing the "\frac{1}{d_u + 1} e_u" in the right side to the left side, and you can get "\frac{d_u}{d_u + 1} e_u = ...e_i". Then multiply "\frac{d_u + 1}{d_u}" to the both sides, and you can get eq.9.
For eq.16, its derivation is the same as eq.9. You can first write an equation like eq.8 as "e_i = \frac{G_{i, i}}{g_i} e_i + \frac{G_{i, k}}{\sqrt{g_i}\sqrt{g_k}} e_k". Then you will get eq.16.

I understand. Thank you for your reply!

Hi! Thanks for the great work. There are two convergence states in eq.9 and eq.16 in your paper, may I ask the process of deriving \beta_{u,i} and \omega_{i,j}?

Hi cieske,
For eq.9, it is derived from eq.8 by transposing the "\frac{1}{d_u + 1} e_u" in the right side to the left side, and you can get "\frac{d_u}{d_u + 1} e_u = ...e_i". Then multiply "\frac{d_u + 1}{d_u}" to the both sides, and you can get eq.9.
For eq.16, its derivation is the same as eq.9. You can first write an equation like eq.8 as "e_i = \frac{G_{i, i}}{g_i} e_i + \frac{G_{i, k}}{\sqrt{g_i}\sqrt{g_k}} e_k". Then you will get eq.16.

代码里面实现跟第一个user-item实现是一样的，没看懂给出这个公式有什么用


Upgrade ubuntu version from 18.04 to 18.10

Summary
Upgrade ubuntu version from 18.04 to 18.10. Needed to resolve CVE for downstream nodejs BBCs: https://nvd.nist.gov/vuln/detail/CVE-2019-2130#vulnCurrentDescriptionTitle.
Changes

change name of Dockerfile-ubuntu-18.04 -> Dockerfile-ubuntu-18.04
update FROM line: ubuntu:18.04 as base -> ubuntu:18.10 as base
update doc accordingly
update yml files accordingly

Testing

Was able to build image using Dockerfile-ubuntu-18.04 successfully

change name of Dockerfile-ubuntu-18.04 -> Dockerfile-ubuntu-18.04

Was able to build image using Dockerfile-ubuntu-18.04 successfully

Did you mean Dockerfile-ubuntu-18.10 in both cases here?
Looks good to me otherwise. 👍

Hi @daohng, I was looking up the CVE here https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2019-2130.html
It doesn’t look like there has been a patch released for this CVE yet. Can you share any sources on the fix in 18.10?
It also seems that 18.10 is no longer supported, it may not be the best version to upgrade to.
Thank you

@mannytoledo

It also seems that 18.10 is no longer supported, it may not be the best version to upgrade to.

You're correct, I didn't see that 18.10 is no longer being supported, agreed that we should not upgrade.

It doesn’t look like there has been a patch released for this CVE yet. Can you share any sources on the fix in 18.10?

The following output (result of running aqua scan in a nodejs BBC) led me to believe that upgrading to Ubuntu 18.10 would resolve the CVE. However, I am open to closing this PR since like you said 18.10 is no longer supported, and we do have a workaround for this specific CVE. Thank you.
{
"acknowledged": false,
"description": "In CompilationJob::FinalizeJob of compiler.cc, there is a possible remote code execution due to type confusion. This could lead to escalation of privilege from a malicious proxy configuration with no additional execution privileges needed. User interaction is not needed for exploitation. Product: Android. Versions: Android-7.0 Android-7.1.1 Android-7.1.2 Android-8.0 Android-8.1 Android-9. Android ID: A-132073833.",
"file": "nodejs",
"filetype": "package",
"fix_version": "any in ubuntu 18.10",
"have_version": "10.16.0-1nodesource1",
"modification_date": "2019-08-26",
"name": "CVE-2019-2130",
"publishdate": "2019-08-20",
"qualys_ids": null,
"referenced_vulnerabilities": null,
"score": 10,
"score_version": "CVSS v2",
"severity": "high",
"solution": "",
"type": "",
"url": "https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-2130",
"vectors": "AV:N/AC:L/Au:N/C:C/I:C/A:C",
"vendor_name": "",
"vendor_severity": "medium",
"vendor_statement": ""
}


motion streams in labview?

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.
Have you looked in our documentations?
Is you question a frequently asked one?
Try searching our GitHub Issues (open and closed) for a similar issue.

All users are welcomed to report bugs, ask questions, suggest or request enhancements and generally feel free to open new issue, even if they haven't followed any of the suggestions above :)

Required Info

Camera Model
D400

Firmware Version
<IP_ADDRESS>

Operating System & Version
Win10

Kernel Version (Linux Only)
NA

Platform
PC

SDK Version
LabVIEW with more recent dll file

Language
labview

Segment
{Robot/Smartphone/VR/AR/others }

Issue Description
I would like to capture the data from the accelerometer and the gyroscope in LabVIEW.  It looks like some of the vi's might have the added those options as inputs, but I am not seeing anything that shows how to actually pull the motion stream off the device.  Is there an example of this available in the LabVIEW SDK that I've missed?
Thanks.

Hi @johnras  The LabVIEW wrapper is a layer on top of the RealSense DLLs and so you should be able to access the full range of the RealSense SDK's functions.  The RealSense D435i and D455 camera models that are equipped with an IMU are also compatible with the wrapper.  The stream guidance in the wrapper documentation at the link below also indicates that the IMU should be accessible.
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/labview#understanding-the-programming
You are correct though that there are no LabVIEW-specific examples or programming references for accessing the IMU through the wrapper.

Hi @johnras  Do you require further assistance with this case, please?  Thanks!

Thanks very much @johnras for the update.  Good luck!


Change colors of build invalidations to yellow, as these are not erro…

…rs and are normal processes to be expected. r=vporof

Coverage remained the same at 38.764% when pulling 002cdc67752c483de407c8f7f5d26bc8e69d4128 on jsantell:build-colors into 7aef8e81936b7bf7718a601d8069db3773ed84d6 on mozilla:master.

Was just about to do that.


AutoPr-ManagedServices-ajay-sainy-REST Spec PrNumber 5328

Closing this PR as another PR https://github.com/Azure/azure-sdk-for-net/pull/5424 is already opened.
THis PR is auto generated which lacks tests, the other has tests, so closing this one.


[usavian] Data: Metadata for state agency actions, research

Would be nice to have the metadata  comprising state agency management actions and monitoring programs/data collection efforts (thanks @atyre2).

Conservation Evidence database


Fix the sequence of loaders

https://github.com/webpack/webpack/blob/master/lib/NormalModuleFactory.js#L300
inline loaders are applied after normal loaders.

@TheLarkInn @EugeneHlushko Thanks for reviewing.
I have added a list of two phases and mentioned the orders with them instead of adding a tip box.

Thank you!