sensitivity analysis fail

Hi Neta,
I tried to run the sensitivity analysis for filter with the following command 'python3 compress_classifier.py -a resnet20_cifar --data ../../../data.cifar10/ -j 12 --resume=../ssl/checkpoints/checkpoint_trained_dense.pth.tar --sense=filter', but got an error, detailed log:
Logging to TensorBoard - remember to execute the server:

tensorboard --logdir='./logs'

=> loading checkpoint ../ssl/checkpoints/checkpoint_trained_dense.pth.tar
Checkpoint keys:
arch
optimizer
compression_sched
state_dict
best_top1
epoch
best top@1: 92.540
Loaded compression schedule from checkpoint (epoch 179)
=> loaded checkpoint '../ssl/checkpoints/checkpoint_trained_dense.pth.tar' (epoch 179)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}
Files already downloaded and verified
Files already downloaded and verified
Dataset sizes:
training=45000
validation=5000
test=10000
Running sensitivity tests
Testing sensitivity of module.conv1.weight [0.0% sparsity]
Traceback (most recent call last):
File "compress_classifier.py", line 782, in
main()
File "compress_classifier.py", line 339, in main
return sensitivity_analysis(model, criterion, test_loader, pylogger, args)
File "compress_classifier.py", line 750, in sensitivity_analysis
group=args.sensitivity)
File "/home/chongyu/application/distiller/distiller/sensitivity.py", line 108, in perform_sensitivity_analysis
scheduler.on_epoch_begin(0)
File "/home/chongyu/application/distiller/distiller/scheduler.py", line 112, in on_epoch_begin
policy.on_epoch_begin(self.model, self.zeros_mask_dict, meta)
File "/home/chongyu/application/distiller/distiller/policy.py", line 123, in on_epoch_begin
self.is_last_epoch = meta['current_epoch'] == (meta['ending_epoch'] - 1)
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
It looks like there is no valid value for meta['ending_epoch'].
Can you kindly suggest how to solve it? Thanks.

I have the same problem too, I change the code as follows
https://github.com/NervanaSystems/distiller/blob/ff6985adfc0e8b1b2a15a3b58d8675997f5e79d2/distiller/scheduler.py#L96
for index, epoch in enumerate(epochs):
           if epoch not in self.policies:
                starting_epoch = epoch
                self.policies[epoch] = [policy]
            else:
                self.policies[epoch].append(policy)
            if index == len(epochs)-1:
                ending_epoch = epoch
            assert len(self.policies[epoch]) > 0

I encounter the same problem and temporary fixed the bug by modify
https://github.com/NervanaSystems/distiller/blob/ff6985adfc0e8b1b2a15a3b58d8675997f5e79d2/distiller/scheduler.py#L103
    self.sched_metadata[policy] = {'starting_epoch': epochs[0],
                                   'ending_epoch': epochs[-1],
                                   'frequency': frequency}

Thanks, Yi-syuan, it worked for me.

@promach you should  correct 'epoch' to 'epochs'

@chenys1995
I have corrected my typo mistake but it leads me to a totally different error though. Please correct me if I still make some other typo mistakes

[phung@archlinux classifier_compression]$ time python compress_classifier.py -a=resnet56_cifar -p=50 ../../../data.cifar10 --epochs=70 --lr=0.1 --compress=../pruning_filters_for_efficient_convnets/resnet56_cifar_filter_rank_v2.yaml --resume=../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar -j=1 --deterministic
Log file for this run: /home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/examples/classifier_compression/logs/2018.11.19-224347/2018.11.19-224347.log
==> using cifar10 dataset
=> creating resnet56_cifar model for CIFAR10

Logging to TensorBoard - remember to execute the server:

tensorboard --logdir='./logs'

=> loading checkpoint ../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar
Checkpoint keys:
compression_sched
best_top1
optimizer
state_dict
epoch
arch
best top@1: 92.920
Loaded compression schedule from checkpoint (epoch 179)
=> loaded checkpoint '../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar' (epoch 179)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}
Files already downloaded and verified
Files already downloaded and verified
Dataset sizes:
training=45000
validation=5000
test=10000
Reading compression schedule from: ../pruning_filters_for_efficient_convnets/resnet56_cifar_filter_rank_v2.yaml
L1RankedStructureParameterPruner - param: module.layer1.0.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.1.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.2.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.3.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.4.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.5.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.6.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.7.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.8.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer2.1.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.2.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.3.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.4.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.6.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.7.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer3.1.conv1.weight pruned=0.188 goal=0.200 (12/64)
L1RankedStructureParameterPruner - param: module.layer3.2.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.3.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.5.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.6.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.7.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.8.conv1.weight pruned=0.391 goal=0.400 (25/64)
Training epoch: 45000 samples (256 per mini-batch)
==> using cifar10 dataset
=> creating resnet56_cifar model for CIFAR10
Traceback (most recent call last):
File "compress_classifier.py", line 781, in
main()
File "compress_classifier.py", line 378, in main
loggers=[tflogger, pylogger], args=args)
File "compress_classifier.py", line 457, in train
compression_scheduler.on_minibatch_begin(epoch, train_step, steps_per_epoch, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/scheduler.py", line 120, in on_minibatch_begin
self.zeros_mask_dict, meta, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 395, in on_minibatch_begin
self.__apply(model, zeros_mask_dict, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 386, in __apply
self.thinning_func(model, zeros_mask_dict, self.arch, self.dataset, optimizer=optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 200, in remove_filters
sgraph = create_graph(dataset, arch)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 75, in create_graph
return SummaryGraph(model, dummy_input.cuda())
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/apputils/model_summaries.py", line 102, in init
torch.onnx._optimize_trace(trace, False)
File "/usr/lib/python3.7/site-packages/torch/onnx/init.py", line 42, in _optimize_trace
trace.set_graph(utils._optimize_graph(trace.graph(), operator_export_type))
File "/usr/lib/python3.7/site-packages/torch/onnx/utils.py", line 153, in _optimize_graph
if operator_export_type != OperatorExportTypes.RAW:
TypeError: ne(): incompatible function arguments. The following argument types are supported:
1. (self: torch._C._onnx.OperatorExportTypes, arg0: torch._C._onnx.OperatorExportTypes) -> bool
Invoked with: OperatorExportTypes.RAW, False
Log file for this run: /home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/examples/classifier_compression/logs/2018.11.19-224347/2018.11.19-224347.log
Traceback (most recent call last):
File "compress_classifier.py", line 781, in
main()
File "compress_classifier.py", line 378, in main
loggers=[tflogger, pylogger], args=args)
File "compress_classifier.py", line 457, in train
compression_scheduler.on_minibatch_begin(epoch, train_step, steps_per_epoch, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/scheduler.py", line 120, in on_minibatch_begin
self.zeros_mask_dict, meta, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 395, in on_minibatch_begin
self.__apply(model, zeros_mask_dict, optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 386, in __apply
self.thinning_func(model, zeros_mask_dict, self.arch, self.dataset, optimizer=optimizer)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 200, in remove_filters
sgraph = create_graph(dataset, arch)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/distiller/thinning.py", line 75, in create_graph
return SummaryGraph(model, dummy_input.cuda())
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/apputils/model_summaries.py", line 102, in init
torch.onnx._optimize_trace(trace, False)
File "/usr/lib/python3.7/site-packages/torch/onnx/init.py", line 42, in _optimize_trace
trace.set_graph(utils._optimize_graph(trace.graph(), operator_export_type))
File "/usr/lib/python3.7/site-packages/torch/onnx/utils.py", line 153, in _optimize_graph
if operator_export_type != OperatorExportTypes.RAW:
TypeError: ne(): incompatible function arguments. The following argument types are supported:
1. (self: torch._C._onnx.OperatorExportTypes, arg0: torch._C._onnx.OperatorExportTypes) -> bool
Invoked with: OperatorExportTypes.RAW, False
real	0m6.110s
user	0m4.491s
sys	0m1.179s
[phung@archlinux classifier_compression]$

You may using Pytorch 0.4.1, and might need to downgrade to 0.4.0

Hi Neta,
Thanks for fixing the issue. While when I am trying to do filters and channels pruning, some errors occurred.

Firstly I try to do filter-wise pruning with my own network, following the example 'resnet56_cifar_filter_rank.yaml', looks like the recipe has been successfully applied to Conv layers, details:

L1RankedStructureParameterPruner - param: module.layer3.1.output.2.0.weight pruned=0.500 goal=0.500 (12/24)
L1RankedStructureParameterPruner - param: module.layer4.2.output.2.0.weight pruned=0.500 goal=0.500 (16/32)
L1RankedStructureParameterPruner - param: module.layer5.3.output.2.0.weight pruned=0.500 goal=0.500 (32/64)
L1RankedStructureParameterPruner - param: module.layer6.2.output.2.0.weight pruned=0.500 goal=0.500 (48/96)
L1RankedStructureParameterPruner - param: module.layer7.2.output.2.0.weight pruned=0.500 goal=0.500 (80/160)
L1RankedStructureParameterPruner - param: module.layer8.0.output.2.0.weight pruned=0.500 goal=0.500 (160/320)
L1RankedStructureParameterPruner - param: module.crp4.0.1_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp4.0.3_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp3.0.1_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp3.0.3_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp2.0.1_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp2.0.3_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp1.0.1_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
L1RankedStructureParameterPruner - param: module.crp1.0.3_outvar_dimred.weight pruned=0.500 goal=0.500 (128/256)
Invoking create_thinning_recipe_filters
In tensor module.layer3.1.output.2.0.weight found 12/24 zero filters
In tensor module.layer4.2.output.2.0.weight found 16/32 zero filters
In tensor module.layer5.3.output.2.0.weight found 32/64 zero filters
In tensor module.layer6.2.output.2.0.weight found 48/96 zero filters
In tensor module.layer7.2.output.2.0.weight found 80/160 zero filters
In tensor module.layer8.0.output.2.0.weight found 160/320 zero filters
In tensor module.crp4.0.1_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp4.0.3_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp3.0.1_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp3.0.3_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp2.0.1_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp2.0.3_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp1.0.1_outvar_dimred.weight found 128/256 zero filters
In tensor module.crp1.0.3_outvar_dimred.weight found 128/256 zero filters
Created, applied and saved a thinning recipe
But finally got an error 'RuntimeError: running_mean should contain 12 elements not 24'. It seems the BN layer has not been pruned after Conv layer.
Can you kindly suggest the solution for it? Thanks.

Following previous run, I tried another test for channel-wise pruning, by updating the configuration file 'resnet56_cifar_filter_rank.yaml'. I changed '3D' to 'Channels' for all layers, and then updated the 'net_thinner' as following:
extensions:
net_thinner:
class: 'ChannelRemover'
thinning_func_str: remove_channels
arch: 'resnet56_cifar'
dataset: 'cifar10'

However, it gave me another error:
Invoking create_thinning_recipe_channels
In tensor module.layer1.0.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.0.conv1 normal=layer1.0.conv1 module.layer1.0.conv1
In tensor module.layer1.1.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.1.conv1 normal=layer1.1.conv1 module.layer1.1.conv1
In tensor module.layer1.2.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.2.conv1 normal=layer1.2.conv1 module.layer1.2.conv1
In tensor module.layer1.3.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.3.conv1 normal=layer1.3.conv1 module.layer1.3.conv1
In tensor module.layer1.4.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.4.conv1 normal=layer1.4.conv1 module.layer1.4.conv1
In tensor module.layer1.5.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.5.conv1 normal=layer1.5.conv1 module.layer1.5.conv1
In tensor module.layer1.6.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.6.conv1 normal=layer1.6.conv1 module.layer1.6.conv1
In tensor module.layer1.7.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.7.conv1 normal=layer1.7.conv1 module.layer1.7.conv1
In tensor module.layer1.8.conv1.weight found 9/16 zero channels
Could not find predecessors for name=module.layer1.8.conv1 normal=layer1.8.conv1 module.layer1.8.conv1
In tensor module.layer2.1.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.1.conv1 normal=layer2.1.conv1 module.layer2.1.conv1
In tensor module.layer2.2.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.2.conv1 normal=layer2.2.conv1 module.layer2.2.conv1
In tensor module.layer2.3.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.3.conv1 normal=layer2.3.conv1 module.layer2.3.conv1
In tensor module.layer2.4.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.4.conv1 normal=layer2.4.conv1 module.layer2.4.conv1
In tensor module.layer2.6.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.6.conv1 normal=layer2.6.conv1 module.layer2.6.conv1
In tensor module.layer2.7.conv1.weight found 16/32 zero channels
Could not find predecessors for name=module.layer2.7.conv1 normal=layer2.7.conv1 module.layer2.7.conv1
In tensor module.layer3.1.conv1.weight found 6/64 zero channels
Could not find predecessors for name=module.layer3.1.conv1 normal=layer3.1.conv1 module.layer3.1.conv1
In tensor module.layer3.2.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.2.conv1 normal=layer3.2.conv1 module.layer3.2.conv1
In tensor module.layer3.3.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.3.conv1 normal=layer3.3.conv1 module.layer3.3.conv1
In tensor module.layer3.5.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.5.conv1 normal=layer3.5.conv1 module.layer3.5.conv1
In tensor module.layer3.6.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.6.conv1 normal=layer3.6.conv1 module.layer3.6.conv1
In tensor module.layer3.7.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.7.conv1 normal=layer3.7.conv1 module.layer3.7.conv1
In tensor module.layer3.8.conv1.weight found 19/64 zero channels
Could not find predecessors for name=module.layer3.8.conv1 normal=layer3.8.conv1 module.layer3.8.conv1
Created, applied and saved a thinning recipe
==> Best Top1: 93.640 on Epoch: 180
Saving checkpoint to: logs/2018.11.21-162715/checkpoint.pth.tar
Training epoch: 45000 samples (256 per mini-batch)
Traceback (most recent call last):
File "/home/chongyu/application/distiller/examples/classifier_compression/compress_classifier.py", line 787, in
main()
File "/home/chongyu/application/distiller/examples/classifier_compression/compress_classifier.py", line 384, in main
loggers=[tflogger, pylogger], args=args)
File "/home/chongyu/application/distiller/examples/classifier_compression/compress_classifier.py", line 466, in train
output = model(inputs)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 121, in forward
return self.module(*inputs[0], **kwargs[0])
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/chongyu/application/distiller/models/cifar10/resnet_cifar.py", line 140, in forward
x = self.layer1(x)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/container.py", line 91, in forward
input = module(input)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/chongyu/application/distiller/models/cifar10/resnet_cifar.py", line 70, in forward
out = self.conv1(x)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/chongyu/application/distiller/env/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 301, in forward
self.padding, self.dilation, self.groups)
RuntimeError: Given groups=1, weight of size [16, 7, 3, 3], expected input[256, 16, 32, 32] to have 7 channels, but got 16 channels instead
Can you kindly help for this error? Thanks.

I think I may find some clue for my Q1.
In 'thinning.py' L328 and L357, it is trying to look for layers that the 'type' is 'Conv', 'Gemm' or 'BatchNormalization', but in 'model_summaries.py' L307, I found the 'type' is 'aten::_convolution' or 'aten::batch_norm', which means the 'type' values do not match each other.

Hi @cattpku ,
The PR I just merged only contains a fix to the original problem that you reported.
I suspect that I know the source of the other 2 issues you have -  (1) and (2) above, but I can't be sure.
Can you share the definition of your network?  It will help for me to recreate the issue and understand it.
If you can't share, then in a few days I will push a fix to the problem I see (which occurs in networks that have complex data-dependencies, such as in ResNet) and hopefully it will also fix your issue.
Cheers,
Neta

Hi Neta,
Thanks for your reply. For Q1, the network definition is here https://github.com/DrSleep/light-weight-refinenet/blob/master/models/mobilenet.py, and for Q2, I was using the 'resnet56_cifar', which is from the example.

Hi @cattpku,
I couldn't use this network because it has some issues when I export it to ONNX.  I think this has to do with pytorch version compatibilities, but I didn't fight it.
I tried recreating (2).  I don't see the problem that you describe, but I see a different issue - this is the issue I am working on and is related to my discussion with @vinutah in issue #73.
To make sure we are aligned, I'm attaching the YAML schedule for (2), which I created according to the instruction you provided above (I changed the ending to .txt from .yaml so that I can attach it).
resnet56_cifar_filter_rank_cattpku.txt
The error I get is this:
--- validate (epoch=180)-----------
5000 samples (256 per mini-batch)
==> Top1: 86.380    Top5: 99.360    Loss: 0.468

==> using cifar10 dataset
=> creating resnet56_cifar model for CIFAR10
Invoking create_thinning_recipe_channels
In tensor module.layer1.0.conv1.weight found 9/16 zero channels
In tensor module.layer1.1.conv1.weight found 9/16 zero channels
Traceback (most recent call last):
  File "compress_classifier.py", line 788, in <module>
    main()
  File "compress_classifier.py", line 407, in main
    compression_scheduler.on_epoch_end(epoch, optimizer)
  File "/home/cvds_lab/nzmora/sandbox_5/distiller/distiller/scheduler.py", line 161, in on_epoch_end
    policy.on_epoch_end(self.model, self.zeros_mask_dict, meta)
  File "/home/cvds_lab/nzmora/sandbox_5/distiller/distiller/thinning.py", line 374, in on_epoch_end
    self.thinning_func(model, zeros_mask_dict, self.arch, self.dataset, meta.get('optimizer', None))
  File "/home/cvds_lab/nzmora/sandbox_5/distiller/distiller/thinning.py", line 147, in remove_channels
    thinning_recipe = create_thinning_recipe_channels(sgraph, model, zeros_mask_dict)
  File "/home/cvds_lab/nzmora/sandbox_5/distiller/distiller/thinning.py", line 266, in create_thinning_recipe_channels
    assert len(bn_layers) == 1
AssertionError

This is caused by the complex data-dependencies that exist in ResNet, and I'm addressing this issue.
I modified this notebook to show the dependencies and I'm attaching here (again, I change the file type to .txt from .ipynb).
pruning_channels_and_filters-cattpku.txt
The output looks like this:

The green oval is module whose channels we reduce; the red ovals are the modules (layers) that Distiller determined have a data-dependency and need to be changed.  The "thinning" code doesn't currently handle these dependencies well.
Cheers
Neta

Hi Neta,
I also tried to export it to ONNX, and I failed too...
I just compared the YAML scheduler you sent with the one I used, they are exactly the same, but I reproduced the same error as my Q2.  After debugging, I found the reason is the same as what I found for my Q1, that is:
predecessors = sgraph.predecessors_f(normalize_module_name(layer_name), ['Conv']),
I need to change it to
predecessors = sgraph.predecessors_f(normalize_module_name(layer_name), ['aten::_convolution'])
same as bn_layers
bn_layers = sgraph.predecessors_f(normalize_module_name(layer_name), ['aten::batch_norm'])
With such modification, I got the same error like you show above.

This is strange - I don't understand at the moment why you are seeing this.
Can you send me your environment configuration?  You will find this information in any of the log files - in the top ~15 lines.
Thanks
Neta

2018-11-23 00:51:58,493 - Log file for this run: /home/chongyu/application/distiller/examples/classifier_compression/logs/2018.11.23-005158/2018.11.23-005158.log
2018-11-23 00:51:58,493 - Number of CPUs: 32
2018-11-23 00:51:58,516 - Number of GPUs: 1
2018-11-23 00:51:58,516 - CUDA version: 9.0.176
2018-11-23 00:51:58,516 - CUDNN version: 7102
2018-11-23 00:51:58,516 - Kernel: 4.15.0-36-generic
2018-11-23 00:51:58,516 - Python: 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0]
2018-11-23 00:51:58,516 - PyTorch: 0.4.1
2018-11-23 00:51:58,516 - Numpy: 1.14.3
2018-11-23 00:51:58,531 - Git is dirty
2018-11-23 00:51:58,531 - Active Git branch: master
2018-11-23 00:51:58,538 - Git commit: ff6985adfc0e8b1b2a15a3b58d8675997f5e79d2
2018-11-23 00:51:58,538 - App args: ['/home/chongyu/application/distiller/examples/classifier_compression/compress_classifier.py']
2018-11-23 00:51:58,539 - ==> using cifar10 dataset

Can you switch for a second to pytorch 0.4.0 to see if you still see 'aten::_convolution' and 'aten::batch_norm'?  I have a hunch Facebook touched this ONNX code.
Thanks

You are right, once I switch to pytorch 0.4.0, the 'type' changed to 'Conv' and 'BatchNormalization'

I think what you are seeing is related to this issue.

@cattpku Did you encounter https://github.com/NervanaSystems/distiller/issues/79#issuecomment-439948112 even after doing a git pull for the latest commit ?

@promach
I also met this problem with pytorch 0.4.1, and I compared the 'utils.py' for both 0.4.0 and 0.4.1, then I just comment out the parts 'if operator_export_type != OperatorExportTypes.RAW'

@cattpku I am not really sure if your quick hack in utils.py actually solves everything because it leads me to another error in functional.py which I am not familiar at all.

[phung@archlinux classifier_compression]$ time python compress_classifier.py -a=resnet56_cifar -p=50 ../../../data.cifar10 --epochs=70 --lr=0.1 --compress=../pruning_filters_for_efficient_convnets/resnet56_cifar_filter_rank_v2.yaml --resume=../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar -j=1 --deterministic
Log file for this run: /home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/examples/classifier_compression/logs/2018.11.26-231318/2018.11.26-231318.log
==> using cifar10 dataset
=> creating resnet56_cifar model for CIFAR10

Logging to TensorBoard - remember to execute the server:

tensorboard --logdir='./logs'

=> loading checkpoint ../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar
Checkpoint keys:
compression_sched
best_top1
optimizer
state_dict
epoch
arch
best top@1: 92.920
Loaded compression schedule from checkpoint (epoch 179)
=> loaded checkpoint '../pruning_filters_for_efficient_convnets/checkpoints/checkpoint.resnet56_cifar_baseline.pth.tar' (epoch 179)
Optimizer Type: <class 'torch.optim.sgd.SGD'>
Optimizer Args: {'lr': 0.1, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0.0001, 'nesterov': False}
Files already downloaded and verified
Files already downloaded and verified
Dataset sizes:
training=45000
validation=5000
test=10000
Reading compression schedule from: ../pruning_filters_for_efficient_convnets/resnet56_cifar_filter_rank_v2.yaml
L1RankedStructureParameterPruner - param: module.layer1.0.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.1.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.2.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.3.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.4.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.5.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.6.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.7.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer1.8.conv1.weight pruned=0.688 goal=0.700 (11/16)
L1RankedStructureParameterPruner - param: module.layer2.1.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.2.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.3.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.4.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.6.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer2.7.conv1.weight pruned=0.594 goal=0.600 (19/32)
L1RankedStructureParameterPruner - param: module.layer3.1.conv1.weight pruned=0.188 goal=0.200 (12/64)
L1RankedStructureParameterPruner - param: module.layer3.2.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.3.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.5.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.6.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.7.conv1.weight pruned=0.391 goal=0.400 (25/64)
L1RankedStructureParameterPruner - param: module.layer3.8.conv1.weight pruned=0.391 goal=0.400 (25/64)
Training epoch: 45000 samples (256 per mini-batch)
==> using cifar10 dataset
=> creating resnet56_cifar model for CIFAR10
Invoking create_thinning_recipe_filters
In tensor module.layer1.0.conv1.weight found 11/16 zero filters
In tensor module.layer1.1.conv1.weight found 11/16 zero filters
In tensor module.layer1.2.conv1.weight found 11/16 zero filters
In tensor module.layer1.3.conv1.weight found 11/16 zero filters
In tensor module.layer1.4.conv1.weight found 11/16 zero filters
In tensor module.layer1.5.conv1.weight found 11/16 zero filters
In tensor module.layer1.6.conv1.weight found 11/16 zero filters
In tensor module.layer1.7.conv1.weight found 11/16 zero filters
In tensor module.layer1.8.conv1.weight found 11/16 zero filters
In tensor module.layer2.1.conv1.weight found 19/32 zero filters
In tensor module.layer2.2.conv1.weight found 19/32 zero filters
In tensor module.layer2.3.conv1.weight found 19/32 zero filters
In tensor module.layer2.4.conv1.weight found 19/32 zero filters
In tensor module.layer2.6.conv1.weight found 19/32 zero filters
In tensor module.layer2.7.conv1.weight found 19/32 zero filters
In tensor module.layer3.1.conv1.weight found 12/64 zero filters
In tensor module.layer3.2.conv1.weight found 25/64 zero filters
In tensor module.layer3.3.conv1.weight found 25/64 zero filters
In tensor module.layer3.5.conv1.weight found 25/64 zero filters
In tensor module.layer3.6.conv1.weight found 25/64 zero filters
In tensor module.layer3.7.conv1.weight found 25/64 zero filters
In tensor module.layer3.8.conv1.weight found 25/64 zero filters
Created, applied and saved a thinning recipe
Log file for this run: /home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/examples/classifier_compression/logs/2018.11.26-231318/2018.11.26-231318.log
Traceback (most recent call last):
File "compress_classifier.py", line 789, in
main()
File "compress_classifier.py", line 386, in main
loggers=[tflogger, pylogger], args=args)
File "compress_classifier.py", line 467, in train
output = model(inputs)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/usr/lib/python3.7/site-packages/torch/nn/parallel/data_parallel.py", line 124, in forward
return self.module(*inputs[0], **kwargs[0])
File "/usr/lib/python3.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/models/cifar10/resnet_cifar.py", line 140, in forward
x = self.layer1(x)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/container.py", line 92, in forward
input = module(input)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/home/phung/Documents/Grive/Personal/Coursera/Machine_Learning/pruning/distiller/models/cifar10/resnet_cifar.py", line 71, in forward
out = self.bn1(out)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/module.py", line 477, in call
result = self.forward(*input, **kwargs)
File "/usr/lib/python3.7/site-packages/torch/nn/modules/batchnorm.py", line 67, in forward
exponential_average_factor, self.eps)
File "/usr/lib/python3.7/site-packages/torch/nn/functional.py", line 1349, in batch_norm
training, momentum, eps, torch.backends.cudnn.enabled
RuntimeError: running_mean should contain 5 elements not 16
real	0m7.277s
user	0m6.356s
sys	0m1.016s
[phung@archlinux classifier_compression]$

@promach
it is also caused by 0.4.1, please check the posts above


login error

signup a user test
login user
login error ,message is "502 Bad Gateway" with url "http://<IP_ADDRESS>:6080/api/v1/callback/casdoor?code=652ecf1e0b2f4bc8bd90&state=casdoor"
log is "{"time":"2024-09-23T10:56:08.44444961Z","level":"INFO","msg":"http request","ip":"<IP_ADDRESS>","method":"GET","latency(ms)":751,"status":502,"current_user":"","auth_type":"","url":"/api/v1/callback/casdoor?code=fdc7b21d34353abf80f4&state=casdoor"}"

+1


Support if-else chaining

Codecov Report

Merging #116 (90d00d1) into main (fe164bd) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #116      +/-   ##
==========================================
- Coverage   90.22%   90.22%   -0.01%
==========================================
  Files          29       29
  Lines        2630     2629       -1
==========================================
- Hits         2373     2372       -1
  Misses        257      257

Impacted Files
Coverage Δ

tests/integration_test.rs
98.70% <ø> (ø)

src/parser/expr.rs
99.43% <100.00%> (-0.01%)
:arrow_down:

src/parser/mod.rs
98.19% <100.00%> (+0.01%)
:arrow_up:

Continue to review full report at Codecov.

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


In Split View Mode, Go-to-definition opens file in new tab rather than navigating already opened tab in other view pane

Open Vscode, spilt it and open two different files in two split pane

Pick for Go-to-definition, click F12

It opened the file in new tab, in the same pane which is already opened in other pane view. It doesn't navigate to the file to other pane.

Opened same file in two different pane.

use the workbench.editor.revealIfOpen setting


Remove Godeps

Non-main packages should not use Godeps, all of our dependencies are quite stable, and the new vendoring system allows importers to control things properly.

LGTM


Fix docs builds

This PR fixes an issue with the doc builds. get_html_theme_path() was removed in the commit below. After some local testing, it seems that the lines in this PR can be removed without any issues.

https://github.com/pydata/pydata-sphinx-theme/commit/579d7ce695cb5c2611aa7b8ab76fbc3efc5fab26

@gpucibot merge


WIP: Heatmap test with artifact upload

Need this to build to grab artifacts, build expected to fail
S3KEY and S3SECRET must be set as environment variables @wallw-bits
https://github.com/justin-bits/opensphere/blob/test/heatmap/cypress/support/s3-artifact-upload.sh must be configured in Travis to run on build failures
This is a different approach than before, therefore doesn't use the built-in artifact uploader and doesn't need to be a direct push to https://github.com/ngageoint/opensphere/tree/travis-artifacts
Artifacts will output here: https://opensphere-travis-artifacts.s3.amazonaws.com/
S3 bucket is setup to expire artifacts after one day
All artifacts grouped by build number

Rebuild after setting variables and pointing to new script.

Apparently draft PRs don't generate a build.  I'll mark as Ready for review after the Travis configuration is complete.

No build created.  This draft PR process isn't working well.  Closing and submitting again.

This is OBE, new PR here: https://github.com/ngageoint/opensphere/pull/513


New codebase setup

Overview
Setup new codebase for ARK-iOS
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

In scope

Config .gitignore to ignore some noise
Create initial Xcode project
Config bundle & fastlane & cocoapods
Config pull request template
Config scripts to initialise project

Check list

[ ] Does your submission pass tests?
[ ] Have you lint your code locally prior to submission?
[x] Have you update the wiki of your change?

Reference

Card: https://trello.com/c/X0fOSBxc
Related PR: https://github.com/TW-Smart-CoE/ARK-WIKI/pull/1

项目现在的搭建目前以SwiftUI为基础，会考虑引入UIKit的东西吗？

我倾向于不用？


"Share an Argument"

Not point or position or idea of thought but...argument?! I'd argue that's a bit too aggressive - others?

Hey,
For the time being the agora component has been scaled out to focus on core features. Hence closing
Go checkout #projectgruff in our Slack. It's a project being lead by a member of the community to enable productive debate on a web interface.


Debug adapter type traceability

I saw a couple SO questions where a user mentioned errors they saw while debugging, but could not say which extension was responsible for the debugging. Someone should be able to figure it out, but I noticed that there isn't really good traceability from launch config to extension and vice versa. And you could have 5 extensions installed for X, with two different debuggers, and it's not obvious which you're using to debug. Example:
Here's my launch config, which extension am I using? Maybe hovering over the value here could show the extension display name.

(Also opened #14681 to track this)-> Which debug types are supported? I have to read the readme (I'm not sure someone in this situation would look at this page, but it might be good to have the debug adapter "type" here).

cmd-click -> goes to extension page might also be a good addition.


不能执行安装脚本

执行以下命令：
sudo bash <(curl -fsSL https://get.hy2.sh/)
返回以下错误：
bash: /proc/self/fd/11: No such file or directory
请教该如何解决？谢谢

不要加 sudo 。

bash <(curl -fsSL https://get.hy2.sh/)
11: note: The user running this script is not root.
11: note: Re-running this script with sudo. You can also specify FORCE_NO_ROOT=1 to force this script to run as the current user.
env: ‘/proc/self/fd/11’: No such file or directory
之前就是这样的提示，才加了sudo

修了， 再试试呢？

Checking for installed version ... not installed
Checking for latest version ...
卡在这里不动了

curl: (28) Failed to connect to api.github.com port 443: Connection timed out
Downloading hysteria binary: https://github.com/apernet/hysteria/releases/download/app/hyservinst.PufoqTv86D: error: Failed to get the latest version from GitHub API, please check your network and try again./hysteria-linux-amd64 ...
curl: (3) bad range in URL position 84:
https://github.com/apernet/hysteria/releases/download/app/hyservinst.PufoqTv86D: error: Failed to get the latest version from GitHub API, please check your network and try again./hysteria-linux-amd64

看来你的服务器连不上 GitHub API 。
你可以用
bash <(curl -fsSL https://get.hy2.sh/) --version v2.0.0

解决了，谢谢


[occm] Get IP addresses of neutron subports v3

Vlan-aware VMs are commonly used in telecom.
Those VMs are plugged into flat networks and use neutron trunk:
https://docs.openstack.org/neutron/latest/admin/config-trunking.html
Currenlty, nodeAddresses() only returns neutron ports directly attached to VM. For vlan-aware VMs, IP addresses are assigned on neutron subports. Subports are attached to the trunk; they are not attached to the VM directly. This pull request changes nodeAddresses() to return IP addresses of neutron subports when they exist. Without this change, Kubernetes is unable to IP addresses of vlan-aware VMs. This change is transparent to VMs not using neturon trunk.
Special notes for reviewers:
This is a rebase of the following PR:
https://github.com/kubernetes/cloud-provider-openstack/pull/2270
Release note:

NONE

Rebase caused the creation of this new PR.
I will update the PR for last comment from https://github.com/kubernetes/cloud-provider-openstack/pull/2270.

/ok-to-test

@mdbooth, you probably want to take another look here.

Hi @mdbooth, I updated the PR per your comment, pls review. I am testing with k8s 1.23, I am unable to retrieve the trunk_details as you expect, I used continue to skip the code changes for now.

Hi @mdbooth, I updated the PR per your comment, pls review. I am testing with k8s 1.23, I am unable to retrieve the trunk_details as you expect, I used continue to skip the code changes for now.

Thanks! This is high on my todo list but unfortunately it doesn't look like I'm going to get to it this week. Hopefully Monday.

Hi @mdbooth, I managed to test with k8s 1.23, all good, works as expected. It is amazing the master branch works with k8s 1.23.

/test pull-cloud-provider-openstack-check
/test pull-cloud-provider-openstack-test

@jingczhang Those test failures were weird. I'm currently assuming they don't relate to the current version of your PR.
Please could you squash the commits before merging?

Oh, nm. I had some stale state locally. Yeah, you need to fix the unit tests. If you do that and also squash the commits this still lgtm.

Yup, looks good, just needs the unit tests to be fixed. Thanks!

Hi @mdbooth, your last comment has been taken care of, please review.

/approve
I am ok with current code but looks the UT only modify existing cases
can we follow up create more UT To cover, e.g multiple VLAN address returned ?

/lgtm

/approve
I am ok with current code but looks the UT only modify existing cases can we follow up create more UT To cover, e.g multiple VLAN address returned ?

The last time we looked at this the problem was that it's extremely hard to do without being able to mock OpenStack API calls. We can do this in CAPO now, but the solution was quite intrusive and it's not easy to share. It's on my longer-term todo list to find a way to do this, ideally directly in gophercloud.


OS error code 22

I have been testing the library for a highly parallelized application using Tokio. I have the Tokio runtime using 8 worker threads, and I noticed that when running inside for_each_concurrent I randomly receive an error
Error: MySql(Io(Io(Os { code: 22, kind: InvalidInput, message: "Invalid argument" })))
Any idea why this error is coming up? I set the min and max pool connections to 8. I don't see any errors in the MySQL db error log
mysql://root@localhost/mydb?pool_min=8&pool_max=8
In general my code calls get_connon the pool inside each function that executes a query

Hi.
Which platform/server version/create version do you use?

Hi.
Which platform/server version/create version do you use?

Rust 1.49
mysql_async 0.26
macOS 11.1 with MySQL 8
It seems the issue is that by running everything in a for_each_concurrent loop where tokio is multithreaded that there is a race condition that triggers the connection pool to go beyond its limit or something. I ran the exact same code using sqlx and did not get any errors

Rust 1.49
mysql_async 0.26
macOS 11.1 with MySQL 8
It seems the issue is that by running everything in a for_each_concurrent loop where tokio is multithreaded that there is a race condition that triggers the connection pool to go beyond its limit or something. I ran the exact same code using sqlx and did not get any errors

@tomleavy, could you please try to reproduce it on mysql_async v0.25.1?

My code all relies on Tokio 1.1, which I believe is a problem. Easiest way for you to test this is to make an async function that inside gets a connection from the pool and executes a query, and then call that async function inside for_each_concurrent loop with max parallelism to the same # of threads the Tokio runtime has for worker threads. I used 8

I couldn't reproduce it, unfortunately.

All good, maybe something specific to my code. Thanks for looking into it!


Empty schema should not render "undefined"

An empty JSON object is a valid JSON Schema for any JSON object or array. It's being rendered as "undefined" currently. It should render as "any"

Fixed in f30bcb9


[BaseTasks] Import Xamarin.Build.AsyncTask

We've decided to move https://github.com/xamarin/Xamarin.Build.AsyncTask
into this repository as part of dotnet org migration efforts.
Source and test content from https://github.com/xamarin/Xamarin.Build.AsyncTask/commit/db4ce14dac
has been added to Microsoft.Android.Build.BaseTasks.
The AndroidAsyncTask and AsyncTask classes have been merged,
as we don't need both levels of abstraction.

Other testing PRs:
https://github.com/xamarin/androidtools/pull/443
https://github.com/xamarin/android-sdk-installer/pull/966
https://github.com/xamarin/monodroid/pull/1497
https://github.com/xamarin/xamarin-android/pull/9017

@dellis1972 @jonathanpeppers I think this should be ready for further review and hopefully good to go now. I just bumped Microsoft.Android.Build.BaseTasks-Tests to .NET 8 as I noticed those tests weren't actually running in main:
https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=9730201&view=logs&j=3b059b26-55fe-5273-567a-5b3fa6c051e7&t=73552669-1d50-5779-0733-0594204b4f2d&l=16
The downstream PRs are all looking good so far against these latest changes as well.


reflect: Struct.PkgPath may be empty even if Name is unexported

Since Go1.0, the following:
type x int
type S1 struct{ *x }
type S2 struct{ x }
fmt.Printf("%+v\n", reflect.TypeOf(S1{}).Field(0))
fmt.Printf("%+v\n", reflect.TypeOf(S2{}).Field(0))

Has printed the following:
{Name:x PkgPath: Type:*main.x Tag: Offset:0 Index:[0] Anonymous:true}
{Name:x PkgPath:main Type:main.x Tag: Offset:0 Index:[0] Anonymous:true}

Notice that StructField.PkgPath for an embedded unexported pointer type is empty, while it is populated for an unexported non-pointer type. This is surprising since the documentation for StructField.PkgPath says the following:

[PkgPath] is empty for upper case (exported) field names.

Although not explicitly stated, I would expect it to be non-empty for unexported field names.
We should either:

Document the special-case that PkgPath may be empty for anonymous fields of pointer types.
Fix StructField.PkgPath to be populated for embedded pointer types as well. However, this would change the behavior of what has been happening since Go1.0.

Given that the current behavior has persisted for 9 releases of Go, perhaps we should just document this? However, this difference in behavior has led to bugs (see #21121).
\cc @ianlancetaylor @rsc @crawshaw

Some evidence in support of changing the behavior. The following all make the assumption that PkgPath=="" if and only if the field is exported.

text/template/exec.go:572
encoding/json/encode.go:1096
encoding/xml/typeinfo.go:61
encoding/asn1/asn1.go:862
encoding/asn1/marshal.go:431

In the standard library, I did not find a single case where the current behavior is desired.
I glanced through a bunch of usages of this inside Google and it seems pervasive that people expect this property to be true.

I ran my change through global testing (at Google) to detect regressions, and only 1 target failed as a result of this change.
The failure was in cloud.google.com/go/internal/fields, however I believe this is due to a different bug in reflect that is related.


Freeze spdlog to 1.9.2 and Tolerate errors in coverage tests

This PR resolves the build failure and the build-test-coverage failure.

This PR is ready for review.


Cross platform video player

Can we get a cross-platform video player implementation? At the moment, I have no idea how to spin up native video players across the three platforms.

This is done in: https://github.com/martijn00/XamarinMediaManager


Duration with Init Value = Bug

I would like to file a bug. While working on the AL programming book I noticed that it is no longer possible to have an Init Value for a Duration field.
This was possible in C/Side and has been part of our programming book since Navision 5.0.
Can this be fixed please?

Hi @markbrummel, thanks for reporting this issue. We discussed this internally and we will treat this as an enhancement.
Primarily we want to be able to offer a similar experience as C/SIDE with a markup not only letting you enter numeric values but more sophisticated entries. Please let me know if you have any questions.

Hi, thank you for your suggestion! We are not prioritizing this for the immediate future, but we recommend you submit this at aka.ms/BCIdeas, or vote up the idea if its already there. We're constantly monitoring top Ideas and will consider them for a future release.


bpf: nodeport: clear EDT info for "Port unreachable" ICMP reply

The EDT ID for pod-egressing traffic is stored in skb->queue_mapping, and checked by the Bandwidth Manager code in to-netdev.
When the N/S LB responds to a service request with a "Port unreachable" ICMP message, it rebuilds the initial request and redirects it back out (passing through to-netdev). As the NIC driver potentially filled the skb->queue_mapping field on RX, we need to clear it to avoid aliasing with genuine EDT marking.
This is in line with what the nodeport code does when forwarding LB'ed requests to a remote backend.
Fixes: 2c2c5ae08e7e ("bpf: Send ICMP unreachable when no service backends are available")
When the Bandwidth Manager feature is enabled, don't apply Egress rate-limiting to "Port unreachable" ICMP replies by Cilium's North-South Loadbalancer.

/test


[Question] React Native Integration with Pipecat and Daily

Hi Pipecat Team,
I'm exploring the integration of Pipecat (Pipeline: Speech-to-text -> LLM -> Text-to-Speech) into my React Native app using Expo. I have a couple of questions on the best approach for this integration:

Daily Integration: Should Daily be integrated directly within my app's client, or would it be more efficient to deploy Pipecat to AWS (perhaps using a Lambda architecture with state management) and have the Expo app communicate with the cloud service and all the pipecat code living in aws?

Best Practices: Are there any specific best practices or recommendations you have for integrating Pipecat with a React Native app, especially considering the constraints and capabilities of Expo?

Any guidance or examples you could provide would be greatly appreciated!
Thank you for your help!

Related to https://github.com/pipecat-ai/pipecat/issues/152

Hi @gaceladri ! I know this is closed but here are some answers:

Pipecat is a server side thing so you can host it wherever you want. The Pipecat bot/agent will just connect to the Daily room. To integrate with Daily in the client you can just use daily-react or daily-js directly. That will be your client application which you can also host anywhere. Since you are using Daily you can send message from the Pipecat bot to the client UI using DailyTransportMessageFrame. The storytelling-chatbot examples shows how to do that.
If you use Daily and want to use React, daily-react is probably the best option.

daily-react: https://github.com/daily-co/daily-react
daily-js: https://github.com/daily-co/daily-js

@aconchillo Thank you for your answer! I closed this since @jptaylor shared some examples of clients I could adapt


[QUESTION] Link this resource page to the Funk Blog site?

here's an image of how the redirect link could look like:

the link would also redirect the user to a blog-looking page, which would look similarly to this image (that i photoshopped in a few mins lol):

you could also try to update the page using queueing system you have been talking about (idk if it's possible tho cuz i don't know how it works!!)
i think this can work nicely for people who want to find all of the game information on the official site.

 Will close when tomorrows blog post comes out!

closed with https://github.com/FunkinCrew/funkBlog/commit/661a159679366ab42f6e432ce3cb8d687ca56840

sweet


Invalid Unicode escape sequence

I get a Invalid Unicode escape sequence error at the point highlighted in the screenshot.

why are you using backslash in your file path? that's why.


a_b_c.domain.com — Neither domain, nor publicSuffix? (but valid)

The URL http://wsc4_1.webspectator.com/ is returning null for both getDomain and getPublicSuffix. I can't even find webspectator.com on public suffix list, so I assume the corect result would be webspectator.com for domain and com for public suffix.
Demo:
var tld = require('tldjs');
tld.getDomain('http://wsc4_1.webspectator.com/'); // null
tld.getDomain('wsc4_1.webspectator.com'); // null
tld.getPublicSuffix('http://wsc4_1.webspectator.com/'); // null
tld.isValid('http://wsc4_1.webspectator.com/'); // true

but:
> tld.getDomain('wsc41.webspectator.com')
'webspectator.com'

So it seems it's all about the _ character.
See:
> tld.getDomain('a_b.google.com')
null
> tld.getDomain('a-b.google.com')
'google.com'

Technically host names containing an underscore are not RFC compliant (only A-Z, a-z, 0-9, -, and . are allowed), however a newer RFC notes that a DNS server can be used to serve arbitrary data, and no DNS server should refuse to load a zone that contains invalid characters in host names.

Yes indeed it is tight to the character _.
@ZLightning do you have a link towards the new RFC change?
A possibility could be to have a strict mode or not (I guess, disabled by default) in order to properly extract domains and such. For cookie creation, we might want to stick to the RFC compliant mode but that's something to discuss later on.
What do you think folks?

RFC2181 is only a proposed standard, but I have confirmed subdomains with an _ in them still resolve.  I think a strict and sloppy mode would be a great feature.  The default being strict is a good idea for backwards compatibility.

Is there any update on that, as I also just hit that unfortunately.

Note if anyone's still following this: HOSTNAMES cannot contain underscores, but other DNS entries can. e.g. _spf.google.com is a valid DNS name.

The DNS itself places only one restriction on the particular labels that can be used to identify resource records. That one restriction relates to the length of the label and the full name. [...] Implementations of the DNS protocols must not place any restrictions on the labels that can be used. In particular, DNS servers must not refuse to serve a zone because it contains labels that might not be acceptable to some DNS client programs.

AFAIK, no registrar allows you to register a domain under a TLD with an underscore, but technically that too is allowed.

Alternately, the code could care about the validity of the publicSuffix in a strict form while the rest of the domain name would be lenient. (No registrar registers domains with an underscore as they can't be used for hostnames at all...) This is more annoying, though, because if someone does want to be lenient on the publicSuffix, now you have to have two flag options: reallyStrict, default, and reallyLenient.

Hi @LesBarstow and thanks for the great feedback! It's really interesting to get another perspective. I would like to add the following, which is just my opinion on the matter. Currently isValid is used for two different purposes internally:

It's used to quickly check if the input to any of the function is already a valid hostname, in which case we can skip the expensive parsing step. In this case, we could probably use the lenient version of isValid.
It is used to indicate if the input is a valid url/hostname through the two functions: parse, isValid, exposed as part of the public API.

So what we could do perhaps is to use the lenient mode for 1. (as an internal optimization). And for 2. allow an extra parameter to provide options about the behavior isValid.
Last but not least, we had similar discussions in the past regarding hostname parsing (which is hard and different libraries have different behaviors). In the end, we made the opinionated choice of using a specific module but gave the flexibility for a user of the library to provide their own parsing logic. In a way, tldjs is not about validating urls/hostnames. So maybe it is ok to pick one option (let's say we always validate hostnames in a lenient way), and let users who need it use some more complex ways to validate the hostnames depending on their usecase.
As was pointed out, tldjs could only care about validating the public suffix part, since it's what the library is about.
We can of course recommend/suggest other libraries which can be used along-side tld.js to do this validation.

isValid

Hi, i am using parse() function with real world urls from squid logs to determine domainnames. I understand that this repo is all about publicsuffix but look at this real-world-example:
console.log(parse('http://spons_700.spns.nrb-apps.com/ajax/footpanel_process.php'));
{ hostname: 'spons_700.spns.nrb-apps.com',
  isValid: false,
  isIp: false,
  tldExists: false,
  publicSuffix: null,
  domain: null,
  subdomain: null }

console.log(parse('http://spons700.spns.nrb-apps.com/ajax/footpanel_process.php'));
{ hostname: 'spons700.spns.nrb-apps.com',
  isValid: true,
  isIp: false,
  tldExists: true,
  publicSuffix: 'com',
  domain: 'nrb-apps.com',
  subdomain: 'spons700.spns' }

many bigger providers do have _ in their hostnames and if the purphose of parse() is to determine publicSuffix then this function fails with real-world urls

Thanks, sorry i should have seen #122 . I have commented that one


Online tracker does not handle name changes

Is your feature request related to a problem? Please describe.
When you change your username, you cant view experience gained on your previous username unless you search for it specifically.
Describe the solution you'd like
Perhaps an "update username" button? If the date the original username stopped gaining xp and the new user gained xp is the same, the update check out.
Describe alternatives you've considered
Manual username verification and/or checking

We removed the runelite.net xp tracker in runelite/runelite.net@da1125eef30047ae488187736546722626c5ea16 and removed the link to it from the client in 9214480a02c98e0835f59ca181c373e689209d7b, so this no longer applies.


Update terraform provider for VMware Cloud Director

Signed-off-by: Waleed Malik<EMAIL_ADDRESS>
What this PR does / why we need it:
This PR updates the terraform provider version for VMware Cloud Director to the latest available version i.e. 3.8.1.
We are also adding the missing support for allowInsecure field for terraform example and the generated MachineDeployments; Support for insecure HTTPS connection to VMware Cloud Director API.
Which issue(s) this PR fixes:

Fixes #
What type of PR is this?

/kind feature
Special notes for your reviewer:
Does this PR introduce a user-facing change? Then add your Release Note here:

* Update terraform provider for VMware Cloud Director to v3.8.1
* Support for insecure HTTPS connection to VMware Cloud Director API in the terraform example

Documentation:

NONE

/hold

/lgtm
/approve

/lgtm

/cherry-pick release/v1.5

/lgtm

/unhold


Landing Page: Register on site

As a parent I want to be able to register on the site so that I can use additional properties of the website
Acceptance Criteria
• A user gets a registration form after clicking the “register” button.
• A user cannot submit a form without completing all the mandatory fields.
• Information from the form is stored in the registrations database.
Dependency: Registration form

Hey @fmkarakus  What do you mean register on the site? Is not the same as Sign Up?

Hey @fmkarakus  What do you mean register on the site? Is not the same as Sign Up?

Hey @razvanbrb , indeed, it is same as sign up.

Hey @razvanbrb , indeed, it is same as sign up.

Ok thanks  @fmkarakus   then I think this one is not need it since Ira is busy with Sign in Sign up if I am not wrong?

Ok thanks  @fmkarakus   then I think this one is not need it since Ira is busy with Sign in Sign up if I am not wrong?

Relate #35

Relate #35


[doi-search] Test B12.1 Enhancements to DOI Search Component

🟢 Issues Ready For I&T

[ ] Parent theme: https://github.com/nasa-pds/pds-wds-react/issues/13

See sub-tasks for enhancements. The DOI Search can be either deployed as it's own separate interface that queries the DOI Service API, or it can also be tested on the operational deployment here: https://pds.nasa.gov/tools/doi/

📜 Test Plan / Procedure

⚙ Automated Tests

Test Passed. https://cae-testrail.jpl.nasa.gov/testrail/index.php?/runs/view/14269&group_by=cases:section_id&group_order=asc


People picker single mode

I'd like to be able to select only one person in people picker. I think the simplest implementation would be to change the current selected person when you select another one.
Probably this mode should be enabled by special attribute (single?).
Expected Behavior
Allow only one person can be selected. Change current person when another one is selected.
Actual Behavior
Multiple people can be chosen. When a person is selected it is added to the selected list.

While there's no match for this in the ReactJS version (https://dev.office.com/fabric#/components/peoplepicker), still a nice feature to have but on the backlog.

I just did a blog post on using the People Picker in SharePoint. I found a hacky workaround for this issue using a $watchCollection... that said, I agree it would be a nice feature.

Implemented in v0.16.0


proposal: cmd/go: optional mode - semantic import versioning

Optional Semantic Import Versioning
Earlier proposal; trying to make it more formal, with definitions around the module file changes, and constraints. #44550
Additionally, made the behavior for resolution of naked imports a keyword you flip on for your project, so that if a change were made no old code would break.
Goal
To keep all current behavior and to allow the new naked import resolution to be entirely opt-in.
Even after a user has opted-in, allow the benefits of Semantic Import Versioning, such as utilizing two majors in the same compilation unit.
Intention
Across a large project, when you do a major version upgrade of Go code, many files are touched. If that contribution includes that only some source files in the compilation unit are being upgraded and others are being left, it requires manual review outside a code review tool because no lines of code have changed in those files. It can be difficult to pin down which files are being left because there are no source code changes to those files.
The driving purpose behind this change is to increase the ability to catch issues upon reviewing source code when upgrading a major version with Semantic Import Versioning where riding between two major versions was intentional.
Alongside these code review simplifications, the other aspect is allowing for semantic import versioning to also be closer and more in line with other package management solutions as an opt-in behavior for users.
Where the import path is resolved in combination with the package management manifest, in Go, the go.mod file.
My assertion is that managing a project will be easier under the optional mode while allowing the same affordances for the compilation process that the current behavior does.
Module File Change Proposal
Define additional keyword in go.mod: optional.
Default value: false.
Extend require syntax.
require module-path module-version [default]*
The default tag is optional itself and used to indicate which version should resolve with the naked import when modules with duplicate module-path components are found.
Documentation:
Optional mode changes the default behavior of v0/v1 resolution to instead resolve to the version described in the go.mod file with the locality defined to the module compilation unit. Import statements that lack semantic import versions MUST resolve their version via go.mod. In Optional mode, when two modules share the same module-path one MUST have the default identifier.
Examples
Majority upgrade to v2 with specific files staying at v1
module example.com/mymodule

go 1.18
optional true

require (
  + example.com/othermodule v2.0.0 default
  example.com/othermodule v1.2.3
  example.com/thismodule v1.2.3
  example.com/thatmodule v1.2.3
)

file: stay-on-v1.go
import (
  + "example.com/othermodule/v1"
  - "example.com/othermodule"
)

file: upgrade-to-v2.go
import (
  "example.com/othermodule"
)

Majority stays at v1 with specific files upgrading to v2.
module example.com/mymodule

go 1.18
optional true

require (
  + example.com/othermodule v2.0.0
  + example.com/othermodule v1.2.3 default
  - example.com/othermodule v1.2.3
  example.com/thismodule v1.2.3
  example.com/thatmodule v1.2.3
)

file: stay-on-v1.go
import (
  "example.com/othermodule"
)

file: upgrade-to-v2.go
import (
  + "example.com/othermodule/v2"
  - "example.com/othermodule"
)

Constraints
Your choice of opting your module into optional mode impacts the handling of your own module but doesn't change the behavior outside your own compilation unit. SIV as it exists today would still apply outside the bounds of how your own module is handled.
Performance Impacts
Depending on the current resolution algorithm, this could make optional modules a boundary for optimizing a global resolution of package identifiers. However, given that multiple majors are allowed, I believe this will not be a blocking issue for this proposal.

I'm confused by this proposal. It seems to add more changes to the go.mod file which weren't discussed in the previous thread, so it seems like a fairly different proposal in general.

Leaving aside the specific go.mod syntax, if I understand this proposal correctly it proposes:

A go.mod file may indicate a specific major version of a module as the "default".
When an import path does not contain a major version suffix, the import resolves to the default major version of the module.
Import paths containing a major version suffix are interpreted as today.

For example, as I write this today the import path "rsc.io/quote" resolves to v1 of the "rsc.io/quote" module. This proposal would provide a way to make that import path equivalent to (for example) "rsc.io/quote/v3" by changing only the go.mod of the module containing the import.
This proposal permits changing the major version of a module depended upon by another module with a go.mod change, whereas today such a change requires changing every import statement referencing the old module.
This proposal makes it less possible to interpret a .go source file independently of the go.mod file of its module. Consider this file:
package example
import "example.com/mod"
func F() mod.T { return mod.T{} }

Today, I can examine this file and state that the function example.F returns a "example.com/mod".T. Under this proposal, example.F might return "example.com/mod/v2".T (or any other version of T), depending on the go.mod applying to the file containing the example.F function.
I think this proposal would benefit from more explanation of the problem that it is intended to solve. It permits selecting the major version of a module to use without rewriting import paths, but it is not clear to me why rewriting import paths is a problem. Perhaps it is a problem, but if so, it would be best to first understand why.

I'm confused by this proposal. It seems to add more changes to the go.mod file which weren't discussed in the previous thread, so it seems like a fairly different proposal in general.

@mvdan I added what I believed was required from #44550 to reduce source tree changes when you intentionally wanted to ride between two versions. This is the addition of the default attribute on the require syntax to help the resolution of an import statement. Secondarily, I made the behavior of how naked imports were resolved (v0/v1) vs go.mod based explicitly opt-in at the module level with the optional keyword.

A go.mod file may indicate a specific major version of a module as the "default".
When an import path does not contain a major version suffix, the import resolves to the default major version of the module.
Import paths containing a major version suffix are interpreted as today.

@neild with the keyword optional all modules as listed in the go.mod file become the resolution version for naked imports that would traditionally resolve to v0/v1.
The default attribute on the require syntax is simply there to help with the resolution of riding between two majors of the same import path. This was defined so that you could still take advantage of the minimized source tree changes so that reviewing the actual changes on the requirement to utilize both majors was still as minimal a change as necessary.

This proposal makes it less possible to interpret a .go source file independently of the go.mod file of its module.

Yes.

I think this proposal would benefit from more explanation of the problem that it is intended to solve. It permits selecting the major version of a module to use without rewriting import paths, but it is not clear to me why rewriting import paths is a problem. Perhaps it is a problem, but if so, it would be best to first understand why.

I've updated the intention section of the proposal to more fully describe it. But effectively, optional mode makes the resolution of Go dependencies act like other tools, as you did point out, this does mean that you cannot interpret the source file without seeing the related go.mod to determine if they were running in optional mode as I've called it. But, I appreciate the affordances that SIV allowed, so I made what I believe are the minimal modifications to the go.mod file to allow for both a complete definition, but also to make code reviewing a major version upgrade less error-prone for the common case when someone adopts a new major.

I am sympathetic to (part of) the intention of this proposal, and whilst I am not completely convinced that this problem warrants a solution that fundamentally changes how module versioning currently works (albeit in an opt-in manner), my greater concern is that (if I have understood the proposal correctly) I don't believe that the proposed solution is an effective remedy to the stated problem.
If I understand correctly, we currently have a situation where a module upgrade may be "partially applied" to another. This may happen either accidentally or intentionally, but in either case it is desirable to make the job of reviewing such changes easier and less error prone. My problem here is that the proposal only appears to offer a partial solution to this problem, and indeed only claims to "increase the ability" to review such changes and discover possible errors. Since there is no guarantee that every file that imports (any version of) example.com/othermodule would be modified, I'm not sure that this proposal, if implemented, would deliver any meaningful improvement on the current situation since you still could not rely on code review tools alone to highlight all affected files.
If this situation warrants a solution at all, I would prefer one that properly covers the problem space, rather than one that offers an incremental improvement with no obvious route to a full solution.

I'm retracting this because an issue that I believed was true within a definition of optional SIV inside the original ticket is untrue.
A user has defined the naked import in their go.mod, the rules as laid out here; https://github.com/golang/go/issues/44550#issuecomment-787496240 would resolve in a non-breaking way.
Therefore my thought that a necessity for an optional mode is unfounded.

That other proposal by @itsjamie was closed: https://github.com/golang/go/issues/47034#issuecomment-874240760

I'm retracting this because an issue that I believed was true within a definition of optional SIV inside the original ticket is untrue.
A user has defined the naked import in their go.mod, the rules as laid out here; #44550 (comment) would resolve in a non-breaking way.
Therefore my thought that a necessity for an optional mode is unfounded.

This proposal has been declined as retracted.
— rsc for the proposal review group


Conversion of wasm to byte array ?

Hi all
WAMR provides the utility to convert the Wasm to byte array through bh_read_file.h.
Are there any other methods through which we an achieve the same?

In WAMR, you can build this binarydump-tool to use it in the command line to convert the Wasm file to a header file that contains the byte array


updated new color reference

updated new color palette and reference. please merge this soon.

branch is failing to build with grunt.
error tmp/sass/old_common/header.scss (Line 37: Undefined variable: "$DarkGrey8".)
Sass::SyntaxError on line ["37"] of /bb/datavis/cartodb/embedded/cartodb-blp_prod/tmp/sass/old_common/header.scss: Undefined variable: "$DarkGrey8".


Generalize assert syntax

With reference to https://github.com/dart-lang/sdk/issues/17682 for background, the language specification should be adjusted such that it uses the grammar rule
assertStatement: assert '(' expression ')' ';'
rather than the current one which uses conditionalExpression. The wording of the paragraph starting with 'The conditional expression e ..' in section 17.17 should be adjusted accordingly.
The language team analysis of this issue is available at https://gist.github.com/eernstg/50a327addd96035d5393a507c0ea2d9a.

Should we also update the specification to reflect the optional message that I believe is already supported by all of the platforms?

Let's do this independently, but yes.

Is the optional message supported anywhere? I don't think we ever agreed on a design.

Analyzer supports an optional message (see https://github.com/dart-lang/sdk/issues/24217). According to https://github.com/dart-lang/sdk/issues/24213 it is also supported in dart2js and the formatter (though that issue was never updated to reflect that analyzer supports it). The discussion was around whether to require the second argument to be a String or whether to allow any object and use toString() to convert it to a string.

... or not convert it at all, and keep it as-is in the AssertionError object.

Closing this because the commit message says it's fixed.
GitHub's "auto-close" looks for certain strings like "Fixes #...", but "fixes issue #..." isn't one of them. :)


Error While Pasting Text

Current plugin version: 3.0
After pasting normal text, it will automatically be pasted one more time, unless the plugin is disabled.

@ProudBenzene can you please record a video? I can't reproduce it. What operating system do you have?

Thanks for replying so quickly!
I'm on macOS, and Just now as I was getting ready to record the video, I also realized that not all copy and pastes reproduce the problem. Only copying in list format will reproduce it. Could you please try again?

@ProudBenzene I don't understand what is list format. I need an example

Okay, here is the record video:
https://github.com/user-attachments/assets/7cc9e2e6-027c-4eb0-b876-eb96e4bee842

@ProudBenzene I still cannot reproduce the issue. Can you please to disable all other plugins and keep only the current one to see if the issue stays

Seems like the problem was solved after I updated the latest version of the plugin.
Thank you very much!


Update README.md

Hi, my name is Yiwen. I am a student working on an assignment that helps improve the ReadMe documents of open-source GitHub projects. In this Pull Request, I am proposing some improvements for your ReadMe.
"from"->"of"
"shown"->"have shown"
"starttime"->"start time"
"and"->", and"

Hi Yiwen, thanks for submitting this pull request. I'm really curious about your assignment - do you mind telling us a bit more about your school program and assignment? If you don't want to do it via Github, you could email us at<EMAIL_ADDRESS>Thanks!


Failed reading proxy response: Undefined error: 0 while proxying https

Hi, I’m having trouble using Wiremock and https. My config file (in /mappings) looks like this:
{  "request": {
    "method": "GET",
    "url": "/some/thing"},
  "response": {
    "status": 200,
    "body": "Hello world!",
    "headers": {
      "Content-Type": "text/plain"}}}

and I’m starting Wiremock (v2.6.0) like this:
java -jar wiremock-standalone-2.6.0.jar --enable-browser-proxying --port 8080 --verbose --print-all-network-traffic --https-port 8083

now this command (the http version):
wget -e use_proxy=yes -e https_proxy=localhost:8083 -e http_proxy=localhost:8080 http://www.google.com/some/thing

works fine, but with https it fails:
wget -e use_proxy=yes -e https_proxy=localhost:8083 -e http_proxy=localhost:8080 https://www.google.com/some/thing

--2017-05-10 11:38:09--  (try: 2)  https://www.google.com/some/thing
Connecting to localhost|::1|:8083... connected.
Failed reading proxy response: Undefined error: 0
Retrying.

And Wiremocks logging shows this:
2017-05-10 11:41:47.100 Opened Socket[addr=/0:0:0:0:0:0:0:1,port=63290,localport=8083]
2017-05-10 11:41:47.145 Incoming bytes: CONNECT www.google.com:443 HTTP/1.0
User-Agent: Wget/1.12 (darwin10.3.0)

2017-05-10 11:41:47.146 Closed Socket[addr=/0:0:0:0:0:0:0:1,port=63290,localport=8083]
2017-05-10 11:41:47.147 Closed Socket[addr=/0:0:0:0:0:0:0:1,port=63290,localport=8083]
2017-05-10 11:41:48.151 Opened Socket[addr=/0:0:0:0:0:0:0:1,port=63292,localport=8083]

What could be wrong here?

I'm experiencing exactly the same problem :(  Anybody any ideas?

You're attempting forward proxying through WireMock over HTTPS, which it doesn't yet support.
Suggest you switch to reverse proxying (i.e. via --proxy-all), which does support HTTPS.

Ok, thanks, I’ve solved the problem by recording like this:
java -jar wiremock-standalone-2.6.0.jar --proxy-all="https://www.example.com/" --record-mappings --https-port 8443

and then
curl "https://localhost:8443/"

this results in a recording in /mappings and /__files
stacktrace.txt
. Then I started Wiremock in playback:
java -jar wiremock-standalone-2.6.0.jar --port 8080 --verbose --print-all-network-traffic --https-port 8443

and it serves up the recorded page as expected.
So that works, but now I keep getting a stack trace for every URL. see attached file (stacktrace.txt).

stacktrace.txt

Do you see any errors if you omit the network traffic printing?

yes, that's better. thanks.


Todo List

[ ] Rearrange blacklist/redirect
[x] Make blacklist/redirect easier to use (https://youtube.com)
[x] Easily configure current page (blacklist/redirect)
[ ] Prompt reload instead of force reload
[ ] Make prompts and dialog look prettier
[ ] Add confirm leave if unsaved changes
[ ] Make all changes auto-saved (and then remove all save btns)
[x] Bug: Changing the redirect status from disabled to enabled will not have existing distracting websites redirect.

Implement in firefox?


Add examples of associations #106

Possibly closes #106
need more work with @papb
I added an examples for associate function, need more work with you @papb or other maintainers, thanks.

Sorry for not looking into this... Why did you close though? Is it outdated? Maybe another maintainer could look into it with you, I don't know. Sorry again and thank you :)

Sorry for not looking into this... Why did you close though? Is it outdated? Maybe another maintainer could look into it with you, I don't know. Sorry again and thank you :)

I suspect this is outdated, so yeah we will close it forever haha


Add OscTime type alias and use it for OscBundle time tags

Before the time tag of an OscBundle was of type OscType and such
required a user to match against this enum, which is cumbersome.
Closes #9

Also, I'm not sure how you do version bumps, but it would definitely be a breaking change, considering this is a master branch, maybe you want to update Cargo.toml to 0.4.0?

I do think as well that a bump {{0.4.0}} is appropriate.
Thank you very much for the review!


perpendicular isolines, x label

Isolines are plotted nicely, however to complete the overlay,  lines that run perpendicular
to these are required.
Also information on the x axis is displayed behind the graph.

that's not possible (i don't think it is actually desirable..), either you use f1.lineWidth(0.1) or draw gradient segment lines as in vedo/examples/basic/isolines.py.

Okay, thought that might be the instance.
I discovered a similar situation with MayaVi and wrote an overly involved piece of python
code to overlay a grid of tubes of a selectable diameter.


Fix CVE-2023-39410

Description
Resolved CVE related to avro
Issues Resolved
Resolves #[Issue number to be closed when this PR is merged]
Check List

[ ] New functionality includes testing.
[ ] New functionality has a documentation issue. Please link to it in this PR.

[ ] New functionality has javadoc added

[x] Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@asifsmohammed  @dlvenable  Can you please let us know the release date for the version 2.5.0 ?

@anand3493 , We are planning to release 2.5.0 this week.

@dlvenable  Thanks for the update.

@dlvenable  Earlier today I had sent you an email regarding the vulnerabilities associated to the 2.5.0 release.
Because of Ubuntu based release of 2.5.0, now data prepper has so many OS related vulnerabilities.
While 2.4.1 based out of alpine had very lesser vulnerabilities.
Can you please help me out here with a data prepper with reduced vulnerabilities?


Fix for issue 3914

Fix for https://github.com/knex/knex/issues/3914
Added unit tests for generateCombinedName
This broke these two tests
  1) Query Building Tests
       Oracle SchemaBuilder
         allows dropping a unique compound index with too long generated name:
  2) Query Building Tests
       OracleDb SchemaBuilder
         allows dropping a unique compound index with too long generated name:

Let me know how to proceed to remediate those issues in the way that matches the pattern you have laid out in other places.
Thanks!

Better solution would be to keep default as-is to avoid introducing breaking changes, but make it configureable for user who need it.

If you want to be consistent with precedents, take a look at following files:
lib/dialects/postgres/index.js:
        if (!client.version) {
          return client.checkVersion(connection).then(function (version) {
            client.version = version;
            resolver(connection);
          });
        }

and then inside the lib/dialects/postgres/schema/columncompiler.js:
  if (!client.version || parseFloat(client.version) >= 9.2)
    return jsonb ? 'jsonb' : 'json';

We could use the same for Oracle.

@drew-royster Do you need any help with this?


add smileys or sticker feature

Hi Nicejinux,
Very nice library from you.
I need some help as follows:
How can we add smileys or stickers on canvas view ???
Thanks in advance

Hi.
Sorry for late reply. I was incredibly busy last week.
It's depends on what kind of image you want to add.
The easiest way is adding UIImageView.
and If you want to move the position of the sticker by finger,
add gesture recognizer on the UIImageView.
or, Can you explain more about what you thought?
if it's not that hard to implement, I'll add that feature.
Thanks.

Thank you for a reply.
doing the same as you have suggested If I having any issue in implementing it.
I will ask for your help.
Thank you

Hi Nicejinux,
hopes your doing well.
I have added a smiley feature, here need some help for update sessions so we can undo-redo the drag & drop, resize and rotate features.
Thank you


[WARN] Upload fail!

I'm now trying to push my Hassio addon image to Docker Hub. I have the following in build.json:
"image": "nolan/hassio-mycroft-{arch}",

I'm using GitLab to build my image. Before I begin, I run:
docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_PASSWORD

The build logs show:
$ docker login -u $DOCKER_HUB_USERNAME -p $DOCKER_HUB_PASSWORD
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
$ docker run --rm --privileged -v /root/.docker:/root/.docker -v $CI_PROJECT_DIR:/data homeassistant/amd64-builder --armhf -t /data/mycroft

$DOCKER_HUB_USERNAME is set to nolan.
The image successfully builds, then I get:
Successfully tagged nolan/hassio-mycroft-armhf:2
[INFO] Finish build for nolan/hassio-mycroft-armhf:2
[INFO] Start upload nolan/hassio-mycroft-armhf:2
[WARN] Upload fail!
[INFO] Start upload nolan/hassio-mycroft-armhf:latest
[WARN] Upload fail!
[INFO] Clean crosscompiling feature

It would be nice to know why the upload fails. I see its output is redirected to /dev/null. Any particular reason for this?
If I fix this and want to test my fix, how do I build my own hassio-builder image to test things out?
Thanks.

Right, I just don't know which base image to use. I'm building on
x86_64, but the image I'm building with the builder needs to run on armhf.
Is there a script in the repo I can run to build the builder itself? If
so, it isn't obvious to me.
Thanks.


Monster Parse Fail: Druid(And Fala Lefaliir among others based on druid)

The staff on the actors is setup with normal damage, then a second formula for versatile, and then the actual versatile field is already populated.  In Auto effects this would be bad, pretty sure it also would be bad in normal dnd5e.

Oh druids use a slightly different set of language for their dual handed stuff, fix in next release/


Attribute TMBD on webpage

[ ] use the TMDB logo.
[ ] include: "This product uses the TMDB API but is not endorsed or certified by TMDB".
[ ] ensure that  the TMDB logo is less prominent than our header/logo

Logos for attribution: https://www.themoviedb.org/about/logos-attribution


find() not finding hidden elements

After upgrading to poltergeist 1.6.0,  selectors which were previously targeting elements with display: none stopped finding the element correctly. Downgrading to 1.5.1 works.
I have Capybara.ignore_hidden_elements = true set as the default, and I'm using the selector like this:
find('body > header > nav .management', {:visible => false})

Setting Capybara.ignore_hidden_elements = false causes it to work fine, so either the :visible option to find is not working properly or something fishy is going on with ignore_hidden_elements

Can you produce a test case for this?

Closing due to lack of response, we can reopen if a test case is provided


add Wireguard support for connection status

Implement GetConnections
Update README.md --install linux-headers

@mangelajo I updated the code to use the Tx/Rx byte count and not rely only on last handshake. I did some WG testing and it seems handshake is not updated on idle connection, even with persistent keepalive turned on.
I removed almost all of the TODOs. The ones still there are not can be left for future enhancements.

@tpantelis , @mangelajo

@tpantelis ping ^ ;)


/src/lib is hardcoded, i want to put my components elsewhere

hey thanks for this great project! i just tried it out with this in component.svelte:
<script context="module">
	// Write a glob to get your handsome components here. Are they in `lib`? or maybe `components`?
	const modules = import.meta.globEager('/src/components/**/*.svelte');
</script>

<script>
	import { DisplayComponent } from 'talenote';
</script>

<DisplayComponent {modules} />

but it is showing an error:

the sourcemap shows that src/lib is hardcoded

Whoa, thanks so much for giving it a try swyx!! Could you check /talenote/index.svelte? I put a getComponentName function there to create nicer display names for the component list 😅

realized that just now and came to close it, didnt realize it was under my control 😅


transform oXygen change PIs to DocBook in the preprocessing pipeline

I don’t know whether it fits into the current pipeline or whether it’s too poorly tested yet. So feel free to reject this PR. It was just the most efficient way to let you know what I did there, and make you think whether it can be useful in the pipeline.
The patch tries to transform matching pairs of PIs as documented here into DocBook markup. Text nodes will be wrapped in a phrase with @role one of oxy_insert or oxy_delete. Elements in between will receive the corresponding (additional) role. Comments will become annotations.
It has been useful in rendering the change markup of a 600-pages long book that could not be rendered as PDF with any of the oXygen Docbook framework FOP configurations, in particular not with one that highlights changes.

Is Oxygen careful to put these PIs only in text and make sure that they're well-formed around markup?

I doubt it. But the stylesheet will only convert balanced and properly nested PIs to phrases or attributes. If there are unbalanced PIs, they will remain PIs.
It worked surprisingly well so far though on my sample of one book ;)
However, it was necessary to prevent the tool from creating <phrase role="oxy_insert"> </phrase> between tfoot tbody. There might be many more contexts in which whitespace text should just remain untouched – anywhere where only block-level content is permitted.

Ok. I'll take a closer look; I'd like to understand the consequences a little better before I merge it.

That’s prudent. Since the XSLT can be run standalone, I’ll announce its existence on the DocBook and oXygen mailing lists and ask users to test it outside the larger pipeline. I’m sure there will be edge cases or even mainstream cases to which the stylesheet is inapplicable as it currently is. I’d be interested in user feedback anyway.
We can leave the PR open for a while, enhance it occasionally or discard it if it proves to be too limited in applicability.

Closed by #79.


Add workflow to deploy to AKS

Add workflow to deploy to AKS

Automated Deployment Warning
Ensure your manifest at ./aks-store-ingress-quickstart.yaml uses the image name "aksautoregistry.azurecr.io/image-workflow-1730816583075:latest" for the application you wish to deploy.
For example, the image line in your deployment would look something like
image: aksautoregistry.azurecr.io/aksautoregistry.azurecr.io/image-workflow-1730816583075:latest


Normalize line endings

Normalize line endings to CRLF

I was also going to look into if we can use editor.config to help with this, but I wanted to fix these line endings to help with some PRs in flight.

I was also going to look into if we can use editor.config to help with this, but I wanted to fix these line endings to help with some PRs in flight.

A few months ago, I looked at turning that EditorConfig feature on, and it seemed to work fine with the editors that I use, but I didn't have the time to validate it on all of the editors that I know people on our team use. Even if it doesn't work perfectly with all of the editors, it seems like forward progress to turn it on.

How are we going to avoid this going forward?

Good question - I think editor config would help (for editors that support this feature).

working on mac will convert them back to LF and we will continue to have a bunch of different line endings.

I think we have set the .gitattributes to remove the text attribute from our files, so hopefully git will not normalize on the macOS platform.


[match] How to use match with gitlab CE

Question Checklist

[x] Updated fastlane to the latest version
[x] I read the Contribution Guidelines
[x] I read docs.fastlane.tools
[x] I searched for existing GitHub issues

Question Subject

How to use match with gitlab CE？

Question Description

I try to creat a private project in own gitlab CE, and run as the document say.
But as the follow show, it cycled run.
I found the code signing identity had created in my account, but the gitlab project has nothing change.
Multiple teams found on the Developer Portal, please enter the number of the team you want to use:
1) XXXX "XXX DEVELOPMENT LIMITED" (Company/Organization)
2) XXXX "XXX TECHNOLOGY CO., LIMITED" (Company/Organization)
2
[11:38:32]: Couldn't find a valid code signing identity in the git repo for development... creating one for you now

+---------------+--------------------------------------+
|               Summary for cert 2.108.0               |
+---------------+--------------------------------------+
| development   | true                                 |
| force         | true                                 |
| username      |<EMAIL_ADDRESS>                     |
| keychain_path | /Users/xxx/Library/Keychains/log  |
|               | in.keychain-db                       |
| platform      | ios                                  |
+---------------+--------------------------------------+

[11:38:32]: Starting login with user<EMAIL_ADDRESS>Multiple teams found on the Developer Portal, please enter the number of the team you want to use:
1) XXXX "XXX DEVELOPMENT LIMITED" (Company/Organization)
2) XXXX "XXX TECHNOLOGY CO., LIMITED" (Company/Organization)
.......

Seems the account you are using is part of multiple teams. match has 2 params to enable it to decide which one to use:
team_id = The ID of your Developer Portal team if you're in multiple teams
team_name = The name of your Developer Portal team if you're in multiple teams
https://docs.fastlane.tools/actions/match/#parameters


Add Metabase + BI Category

Started a new category for  generic BI/analytics tools. Not sure if Business Intelligence is the best name.

Thanks for the contribution. I put it in a data mining category rather than a BI, so it is more about what it does and not what it is used for.
I also rewrote the description a little bit so it follows the guidelines


python3 print in numerical

I squashed all the commits into one.
Sorry to have deleted the other pull request in the process.

Looks great! Thanks!


[Question]: What happened to "displayMetrics"?

What is your question?
What happened to "displayMetrics"?
After an update, it is undefined for Android device info:
'displayWidthPixels': build.displayMetrics.widthPx,
'displayWidthInches': build.displayMetrics.widthInches,
'displayHeightPixels': build.displayMetrics.heightPx,
'displayHeightInches': build.displayMetrics.heightInches,
'displayXDpi': build.displayMetrics.xDpi,
Checklist before submitting a question

[X] I searched issues in this repository and couldn't find such bug/problem
[X] I Google'd a solution and I couldn't find it
[X] I searched on StackOverflow for a solution and I couldn't find it
[X] I read the README.md file of the plugin
[X] I am using the latest version of the plugin
[X] All dependencies are up to date with flutter pub upgrade
[X] I did a flutter clean
[X] I tried running the example project

Ok, I saw the ChangeLog

Experiencing the same issue, looking for change log also...

Have you found similar documents? The feeling disappeared into thin air

https://pub.dev/packages/device_info_plus/changelog#1001

BREAKING FIX(device_info_plus): Remove Display Metrics from Android Device Info (#2731). (c5af3322)


Query doesn't respect #any-of?

So I'm trying to debug queries for the Elixir language and in locals.scm there's a query with this fragment:
(identifier) @_identifier (#any-of? @_identifier "def" "defp" "defmacro" "defmacrop" "defguard" "defguardp" "defn" "defnp" "for")

And when matching with this code:
def foo2(a, b) do
  :ok
end

It matches def, foo2, a and b (all identifiers), but it should match only def!
Why is #any-of? ignored? I guess that predicates aren't handled by treesitter itself but I supposed that nvim-treesitter would filter out the results that don't match.
Here's it running:

And here's the result of :checkhealth nvim-treesitter:
nvim-treesitter: require("nvim-treesitter.health").check()
========================================================================
## Installation
  - OK: `tree-sitter` found 0.20.7 (parser generator, only needed for :TSInstallFromGrammar)
  - OK: `node` found v16.16.0 (only needed for :TSInstallFromGrammar)
  - OK: `git` executable found.
  - OK: `cc` executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
    Version: cc (GCC) 12.2.0
  - OK: Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

## Parser/Features H L F I J
  - vim            ✓ ✓ ✓ . ✓
  - elixir         ✓ ✓ ✓ ✓ ✓
  - erlang         ✓ . ✓ . .
  - javascript     ✓ ✓ ✓ ✓ ✓
  - lua            ✓ ✓ ✓ ✓ ✓
  - cpp            ✓ ✓ ✓ ✓ ✓
  - c              ✓ ✓ ✓ ✓ ✓
  - typescript     ✓ ✓ ✓ ✓ ✓
  - css            ✓ . ✓ ✓ ✓
  - query          ✓ ✓ ✓ ✓ ✓
  - html           ✓ ✓ ✓ ✓ ✓
  - python         ✓ ✓ ✓ ✓ ✓
  - bash           ✓ ✓ ✓ . ✓
  - json           ✓ ✓ ✓ ✓ .

  Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
         +) multiple parsers found, only one will be used
         x) errors found in the query, try to run :TSUpdate {lang}

And I'm running nvim-treesitter from git

Oh. I just need to wrap the query in (), like this
((identifier) @_identifier (#any-of? @_identifier "def" "defp" "defmacro" "defmacrop" "defguard" "defguardp" "defn" "defnp" "for"))

It's working now