[feature-request]display a process bar when loading an image

usually it takes a long period of time to run docker load -i foo.bar, sometimes this situation makes me to doubt that if the load operation has already died. i think it's better to have an option(for example -vh ,similar with rpm -ivh foo.rpm) to display a process bar when loading an image.
in fact there are some other docker operations taking a long period of time too. for example docker attach,docker stop
uname -a:
Linux ubuntu 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
docker version:

Client:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:12:04 UTC 2015
OS/Arch:      linux/amd64
Server:
Version:      1.9.1
API version:  1.21
Go version:   go1.4.2
Git commit:   a34a1d5
Built:        Fri Nov 20 13:12:04 UTC 2015
OS/Arch:      linux/amd64

docker info:

Containers: 15
Images: 89
Server Version: 1.9.1
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 119
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-25-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 1
Total Memory: 1.954 GiB
Name: ubuntu
ID: VNFK:3L2W:JOFP:6L3B:FN6Y:JVDN:QSGJ:N4IJ:6JOE:M57L:J4SX:LHCT
WARNING: No swap limit support

Thanks for suggesting; this is a duplicate of https://github.com/docker/docker/issues/8298, so I'm going to close this one. Please subscribe to that issue to stay informed.
w.r.t. docker attach or docker stop; that really depends on the process inside the container. For example, docker stop sends a signal to the container's main process to stop it, but if that process does not properly handle the signal, docker will kill the process after 10 seconds.


Regression in latest version

Discussed in https://github.com/srid/nixos-unified/discussions/83

Originally posted by snglth October 10, 2024
I ran nix flake update recently which fetched following inputs among others:
• Updated input 'nixos-unified':
    'github:srid/nixos-unified/ed937a03c0949742ff7dcd871957d80596e9f59a' (2024-10-05)
  → 'github:srid/nixos-unified/4c9a3c503952b256d6989bbfcd3a443b7eb13647' (2024-10-07)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/27e30d177e57d912d614c88c622dcfdb2e6e6515'
  → 'github:nixos/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7' (2024-10-09)

Now every build results in following error:
<- nix run --show-trace                                                                                nixos-config-shell-env
warning: Git tree '/Users/snglth/Development/ws-flake' is dirty
error:
       … while calling the 'derivationStrict' builtin

         at /builtin/derivation.nix:9:12: (source not available)

       … while evaluating derivation 'activate'
         whose name attribute is located at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/stdenv/generic/make-derivation.nix:336:7

       … while evaluating attribute 'buildCommand' of derivation 'activate'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/build-support/trivial-builders/default.nix:59:16:

           58|         enableParallelBuilding = true;
           59|         inherit buildCommand name;
             |                ^
           60|         passAsFile = [ "buildCommand" ]

       … while evaluating derivation 'nixos-unified.nu'
         whose name attribute is located at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/stdenv/generic/make-derivation.nix:336:7

       … while evaluating attribute 'text' of derivation 'nixos-unified.nu'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/build-support/trivial-builders/default.nix:101:16:

          100|       ({
          101|         inherit text executable checkPhase allowSubstitutes preferLocalBuild;
             |                ^
          102|         passAsFile = [ "text" ]

       … while evaluating derivation 'nixos-unified-activate-data'
         whose name attribute is located at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/stdenv/generic/make-derivation.nix:336:7

       … while evaluating attribute 'text' of derivation 'nixos-unified-activate-data'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/pkgs/build-support/trivial-builders/default.nix:101:16:

          100|       ({
          101|         inherit text executable checkPhase allowSubstitutes preferLocalBuild;
             |                ^
          102|         passAsFile = [ "text" ]

       … while calling anonymous lambda

         at /nix/store/2sz6la88drv77fxg87hb4li4jl9gxf3w-source/activate/default.nix:11:51:

           10|       };
           11|       nixos-unified-configs = lib.mapAttrs (name: value: value.config.nixos-unified) (self.nixosConfigurations or { } // self.darwinConfigurations or { });
             |                                                   ^
           12|       data = {

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:254:28:

          253|           # For definitions that have an associated option
          254|           declaredConfig = mapAttrsRecursiveCond (v: ! isOption v) (_: v: v.value) options;
             |                            ^
          255|

       … while calling 'mapAttrsRecursiveCond'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/attrsets.nix:1201:5:

         1200|     f:
         1201|     set:
             |     ^
         1202|     let

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:246:33:

          245|           ({ inherit lib options config specialArgs; } // specialArgs);
          246|         in mergeModules prefix (reverseList collected);
             |                                 ^
          247|

       … while calling 'reverseList'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/lists.nix:1116:17:

         1115|   */
         1116|   reverseList = xs:
             |                 ^
         1117|     let l = length xs; in genList (n: elemAt xs (l - n - 1)) l;

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:241:25:

          240|       merged =
          241|         let collected = collectModules
             |                         ^
          242|           class

       … while calling anonymous lambda

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:452:37:

          451|
          452|     in modulesPath: initialModules: args:
             |                                     ^
          453|       filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:453:7:

          452|     in modulesPath: initialModules: args:
          453|       filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
             |       ^
          454|

       … while calling 'filterModules'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:420:36:

          419|       # modules recursively. It returns the final list of unique-by-key modules
          420|       filterModules = modulesPath: { disabled, modules }:
             |                                    ^
          421|         let

       … while calling anonymous lambda

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:446:31:

          445|           disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled;
          446|           keyFilter = filter (attrs: ! elem attrs.key disabledKeys);
             |                               ^
          447|         in map (attrs: attrs.module) (genericClosure {

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:407:22:

          406|           let
          407|             module = checkModule (loadModule args parentFile "${parentKey}:anon-${toString n}" x);
             |                      ^
          408|             collectedImports = collectStructuredModules module._file module.key module.imports args;

       … while calling anonymous lambda

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:366:11:

          365|         then
          366|           m:
             |           ^
          367|             if m._class != null -> m._class == class

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:407:35:

          406|           let
          407|             module = checkModule (loadModule args parentFile "${parentKey}:anon-${toString n}" x);
             |                                   ^
          408|             collectedImports = collectStructuredModules module._file module.key module.imports args;

       … while calling 'loadModule'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:348:53:

          347|       # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
          348|       loadModule = args: fallbackFile: fallbackKey: m:
             |                                                     ^
          349|         if isFunction m then

       … from call site

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/modules.nix:349:12:

          348|       loadModule = args: fallbackFile: fallbackKey: m:
          349|         if isFunction m then
             |            ^
          350|           unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgs fallbackKey m args)

       … while calling 'isFunction'

         at /nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/lib/trivial.nix:1000:16:

          999|   */
         1000|   isFunction = f: builtins.isFunction f ||
             |                ^
         1001|     (f ? __functor && isFunction (f.__functor f));

       … while calling anonymous lambda

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/attrsets.nix:1571:24:

         1570|     let f = attrPath:
         1571|       zipAttrsWith (n: values:
             |                        ^
         1572|         let here = attrPath ++ [n]; in

       … while calling anonymous lambda

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/types.nix:601:29:

          600|       merge = loc: defs:
          601|         zipAttrsWith (name: defs:
             |                             ^
          602|           let merged = mergeDefinitions (loc ++ [name]) elemType defs;

       … while calling anonymous lambda

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/modules.nix:836:28:

          835|         # Process mkMerge and mkIf properties.
          836|         defs' = concatMap (m:
             |                            ^
          837|           map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))

       … while evaluating definitions from `/nix/store/2sz6la88drv77fxg87hb4li4jl9gxf3w-source/nix/modules/flake-parts/autowire.nix':

       … from call site

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/modules.nix:837:128:

          836|         defs' = concatMap (m:
          837|           map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
             |                                                                                ^
          838|         ) defs;

       … while calling 'dischargeProperties'

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/modules.nix:908:25:

          907|   */
          908|   dischargeProperties = def:
             |                         ^
          909|     if def._type or "" == "merge" then

       … from call site

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/attrsets.nix:273:39:

          272|         then value
          273|         else { ${elemAt attrPath n} = atDepth (n + 1); };
             |                                       ^
          274|     in atDepth 0;

       … while calling 'atDepth'

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/attrsets.nix:270:17:

          269|       len = length attrPath;
          270|       atDepth = n:
             |                 ^
          271|         if n == len

       … from call site

         at /nix/store/2sz6la88drv77fxg87hb4li4jl9gxf3w-source/nix/modules/flake-parts/autowire.nix:31:11:

           30|         darwinModules =
           31|           forAllNixFiles "${self}/modules/darwin"
             |           ^
           32|             (fn: fn);

       … while calling 'forAllNixFiles'

         at /nix/store/2sz6la88drv77fxg87hb4li4jl9gxf3w-source/nix/modules/flake-parts/autowire.nix:5:29:

            4|     let
            5|       forAllNixFiles = dir: f:
             |                             ^
            6|         if builtins.pathExists dir then

       … while calling anonymous lambda

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/trivial.nix:131:30:

          130|   */
          131|   pipe = builtins.foldl' (x: f: f x);
             |                              ^
          132|

       … from call site

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/trivial.nix:131:33:

          130|   */
          131|   pipe = builtins.foldl' (x: f: f x);
             |                                 ^
          132|

       … while calling 'mapAttrs''

         at /nix/store/x3d704r2qzq7h0m7i04liyzrvnng1pi2-source/attrsets.nix:1057:5:

         1056|     f:
         1057|     set:
             |     ^
         1058|     listToAttrs (map (attr: f attr set.${attr}) (attrNames set));

       error: value is null while a set was expected
```</div>

Culprit: https://github.com/srid/nixos-unified/commit/bf66125e692fbed6aa3abeaf386677b64d080a6b


Refactor the type name of the cycle metadata, to the correct form singular/plural

These types weren't named correctly, named in the plural form when they represented an element in the singular form.

I've continued the refactoring of these cycle elements.
And also added documentation, so we know better what is behind every element from the codebase, while having nice contextual hint from our favorite IDE, when using these elements ✨.

When looking at these 2 words sanctoral and temporale over the internet, I can see that the 2 spellings (with or without the final "e") are both often used, and valid in the same type of sentence construction. When there is the final "e", it seems that the word is more referring to Latin.
Indeed, to stay consistent, we should only use one or the other.
FYI, I generally prefer the usage of "Proper of Time" or "Proper of Saints", to avoid potential confusion in the future with a new ECMAScript proposal for a Temporal built-in object.
Thanks again for the review, and merry Christmas :sparkles: !!!

Thanks again for the review, and merry Christmas :sparkles: !!!

Merry Christmas to you too, @emagnier! :wink:

When looking at these 2 words sanctoral and temporale over the internet, I can see that the 2 spellings (with or without the final "e") are both often used, and valid in the same type of sentence construction. When there is the final "e", it seems that the word is more referring to Latin.

Well, based on what I could find on the Internet (esp in Merriam-Webster dictionary: sanctorale, sanctoral, temporale, temporal; also see these: 1, 2), santorale and temporale are always used as nouns and sanctoral and temporal as adjectives. :wink:

Indeed, to stay consistent, we should only use one or the other.

:+1:

FYI, I generally prefer the usage of "Proper of Time" or "Proper of Saints", to avoid potential confusion in the future with a new ECMAScript proposal for a Temporal built-in object.

I think that in English Roman Missal ed. typ. tertia, they change some terms borrowed from Latin for others that are based on other English words, like:

feria → weekday;
temporale → Proper of Time;
sanctorae → Proper of Saints.

Therefore I agree to use Proper of {Time, Saints} instead.
Also thanks for the link to the Temporal proposal! :pray:

I've added & updated some suggestions based on your comments. Thank you!

Thank you for your review and your time, it's appreciated! 🚀 ✨


Why do the closures taken by Coroutine::spawn have to have the static lifetime?

It is causing me problems

The main reason is that I want to simulate APIs in std::thread. And I think it is hard to make things right if allowing captures from local scope.
Welcome to open a PR if you have ideas.


OPENSSL_1.0.2' not found

ImportError: /opt/lampp/lib/libssl.so.1.0.0: version OPENSSL_1.0.2 not found (required by /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so)
this error occured with this code: echo exec("youtube-dl --help 2>&1",$output);

You need to either recompile Python or set correct $LD_LIBRARY_PATH.

export LD_LIBRARY_PATH="/usr/lib"
i think i totally cleared my library path !!!!

I guess lampp has done something evil. Did you put the export line in exec()?

i did reinstall python !
i changed LD_LIBRARY_PATH to /usr/lib but still no change !

export LD_LIBRARY_PATH=/usr/lib
i think i totally cleared my library path !!!!

Could you try:
exec("LD_LIBRARY_PATH=/usr/lib youtube-dl --help 2>&1",$output)

resualt:
(currently supported: srt|ass|vtt)

How did you set it? If /usr/lib/python2.7/lib-dynload/_ssl.x86_64-linux-gnu.so is still linked to /opt/lampp/lib/libssl.so.1.0.0, you didn't set $LD_LIBRARY_PATH correctly.

resualt:
(currently supported: srt|ass|vtt)

Yeah that's the last line of youtube-dl --help. You may want to use another function as PHP's exec only returns the last line.

OMG , it's working!!!!
thaaaaaaaaaank you my tai friend :D ;)

:smile:


Unable to open a file in VS Code with right click option

Issue Type: Bug
Hello,
Since a few days it is impossible for me to open a file from windows explorer, or even the desktop, by doing a right-click on the file and selecting the "Open in VS Code" option.
The behavior is an error sound is playing and a message pops-up but disappear to quickly to see anything.
I had a look at the Event Viewer but no trace there.
Do you have any idea how to solve this ?
Many thanks for your help.
VS Code version: Code 1.44.0 (2aae1f26c72891c399f860409176fe435a154b13, 2020-04-07T23:31:18.860Z)
OS version: Windows_NT x64 10.0.17763

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-7920HQ CPU @ 3.10GHz (8 x 3096)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: disabled_offprotected_video_decode: enabledrasterization: enabledskia_renderer: disabled_off_okvideo_decode: enabledviz_display_compositor: enabled_onviz_hit_test_surface_layer: disabled_off_okwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
31.85GB (14.14GB free)

Process Argv

Screen Reader
no

VM
50%

Extensions (30)

Extension
Author (truncated)
Version

dart-data-class-generator
Ben
0.3.17

path-intellisense
chr
1.4.2

bracket-pair-colorizer-2
Coe
0.0.29

dart-code
Dar
3.9.1

flutter
Dar
3.9.1

vscode-eslint
dba
2.1.2

xml
Dot
2.5.0

vscode-babel-coloring
dza
0.0.4

gitlens
eam
10.2.1

LogFileHighlighter
emi
2.7.1

prettier-vscode
esb
4.1.1

pubspec-dependency-search
eve
1.1.0

bloc
Fel
3.4.0

auto-close-tag
for
0.5.6

code-runner
for
0.9.17

pubspec-assist
jer
0.3.6

vscode-styled-components
jpo
0.0.29

vscode-github
Kni
0.30.3

rainbow-csv
mec
1.6.0

graphql
mqu
0.1.2

vscode-scss
mrm
0.9.0

mssql
ms-
1.9.0

indent-rainbow
ode
7.4.0

vscode-versionlens
pfl
0.25.0

errorlens
Phi
1.1.3

material-icon-theme
PKi
4.0.1

vscode-graphql
Pri
0.2.14

vscode-icons
vsc
10.0.0

ReactSnippets
xab
2.4.0

markdown-all-in-one
yzh
2.7.0

After investigating a bit further, it appears that the problem is not what i thought.
Actually when i try to open a file with a right-click "open in VS Code" or even when i try to right click on the VS Code icon in the task bar to open a previously opened folder, and there is already an instance of VS Code open then the previously described behavior occurs.

Can you reproduce if you restart your machine?

Hello,
As you can see on the video by following this link: https://drive.google.com/open?id=1vkThUflttnF-QxwA5uJ6-geUicopcivR
It does still exist after rebooting.
Best regards,
Pierre-emmanuel Legrain.
[https://lh6.googleusercontent.com/Do41g6j3MLO03zheDOdHuOxV7dZ9Hg2bsQrw6ZIWYasji9gMH9i8EkwKrHXHSLQ=w1200-h630-p]https://drive.google.com/open?id=1vkThUflttnF-QxwA5uJ6-geUicopcivR
bugVSCode.mp4https://drive.google.com/open?id=1vkThUflttnF-QxwA5uJ6-geUicopcivR
drive.google.com

De : João Moreno<EMAIL_ADDRESS>Envoyé : mercredi 15 avril 2020 07:48
À : microsoft/vscode<EMAIL_ADDRESS>Cc : daseed<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Objet : Re: [microsoft/vscode] Unable to open a file in VS Code with right click option (#94781)
Can you reproduce if you restart your machine?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode/issues/94781#issuecomment-613830300, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AESLDWKT3AYQG7G7X6DU7HTRMVDBLANCNFSM4MEWC4AA.

I can't seem to open that video link, could you put it on Youtube?

Hello Mister Moreno,
You can find it here: https://youtu.be/Ep1afl454oY
Best regards,
Pierre-emmanuel Legrain

De : João Moreno<EMAIL_ADDRESS>Envoyé : vendredi 17 avril 2020 10:23
À : microsoft/vscode<EMAIL_ADDRESS>Cc : daseed<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Objet : Re: [microsoft/vscode] Unable to open a file in VS Code with right click option (#94781)
I can't seem to open that video link, could you put it on Youtube?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode/issues/94781#issuecomment-615113989, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AESLDWM54UHCKSL5CXCB4UDRNAGXVANCNFSM4MEWC4AA.

The error you're getting says

A second instance of Visual Studio Code is already running as administrator.

So this is https://github.com/microsoft/vscode/issues/86968
@bpasero cc because the alert comes and goes really fast, please watch the youtube video. You might wanna dig in to that.


Maximum of 3 CAN messages

Hello,
I am executing some tests with the CAN bus in an IMX-5. I would like to read IMU data (accelerometers + gyros) plus the INS orientation solution (I am particularly interested in yaw). However, I am able to send only 3 CIDs at the same time via the CAN bus. Is this a limit? Is there a way to send 4 messages ?
My config:
1. CAN bus baudrate set to 250 kbps
2. IMU: RUG-3-IMX.G0
3. Messages that I want to receive:
4. CID_DUAL_PX, CID_DUAL_QY, CID_DUAL_PX, CID_DUAL_RZ and CID_INS_EULER
5. 0x5A, 0x5B, 0x5C and 0x5D as ids of the CAN messages above

Best regards
Matheus

Hi Matheus,
The processor on the current IMX-5 limits the number of CAN messages that can be sent. It is a hardware issue that we will address in our next hardware release of the IMX-5.1. In the meantime, if you stream messages more slowly you can receiver more types of messages.


fix: Fix bug in deleting pods. Fixes #2571

Checklist:

[x] Either (a) I've created an enhancement proposal and discussed it with the community, (b) this is a bug fix, or (c) this is a chore.
[x] The title of the PR is (a) conventional, (b) states what changed, and (c) suffixes the related issues number. E.g. "fix(controller): Updates such and such. Fixes #1234".
[x] I have written unit and/or e2e tests for my change. PRs without these are unlike to be merged.
[x] Optional. I've added My organization is added to the USERS.md.
[ ] I've signed the CLA and required builds are green.

This bug was introduced in July 2019.


Remove <? extends Attestation> from Validator API Channel

Removes <? extends Attestation>
Documentation

[ ] I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

[ ] I thought about adding a changelog entry, and added one if I deemed necessary.

closing in favour of #8496


Moved python forge deps to test

I'm not able to use pypy due to python-forge dependency which is it seems to be used only on tests.

Hi! Thanks for contribution, I will be merging this.


Update CONTRIBUTING.md

It was looking lonely :(
r? @hdamron17

Yeah this makes you sound a lot less like a hermit.
One suggestion for the instructions on writing runner tests is that you might make it more obvious in run_one what // code: x and the other parameterized annotations do (I was pretty sure had had to dig into utils::assert_code to confirm).
https://github.com/jyn514/rcc/blob/4b0ee92a0d68abd54564a24eaf59248f8adf47f4/tests/runner.rs#L31.

Ok, I'll add some comments in runner.rs

Looks good to me


Use implemented method to expand ancestors and select resource

expandAncestorsAndSelect() and selectResource() implement the same functionality, although there are some small differences, but I think it would be best to use selectResource() because it was pre implemented in the initial component.
There are nevertheless some differences:
selectResource() does not explicitly check whether the root has changed. Nevertheless, if that happens and the file cannot be selected anymore the calls to tree.expand (line 886) will throw an exception and the selection is retried (unless the file still exists under the current root). We could also have additional checks for this in the while loop of selectResource().
selectResource() finds the ancestors by starting at the root then going down until it finds the resource, so it is possible that it visits all directories in a branch before moving on to the next ancestor. I think our implementation which started at the resource then found the parents using dirname() would be more efficient.
Previously (after expanding all directories) we were calling .selectResource() at the end of expandAncestorsAndSelect(). If we want to keep our method we can just replace that with this.tree.setSelection([resource]) so these redundant calls are not performed anymore.

@irengrig, @matthiasklostermann do you I should change this?


micro ros service rclc - values not passed

Issue template

Hardware description: Nucleo F767
RTOS: FreeRTOS
Installation type: generic static lib
Version or commit hash: foxy

Expected behavior
Ok so my issue is that I have created a service which just reads a 4 byte integer (int32). Whenever I call it I can see the service is called (from the debugger) but the values I get are garbage. And I do not get a response even with these values. I have followed the demo service guide. I will post my source code, srv and msg format
Actual behavior
Call the service and pass the correct value
Additional information
Msg: (my_msg.msg)
int32 my_attribute
Srv (my_srv.srv):
my_pkg/my_msg write_value
---
my_pkg/my_msg  read_value

my_node.cpp
extern UrosService uros_srv;

class UrosService
{
public:
  UrosService() :req_{}, res_{} {}

  void initialise()
  {
    rcl_allocator_t allocator = rcl_get_default_allocator();
    rcl_ret_t rc_support = rclc_support_init(&support_, 0, NULL, &allocator);

    // Create node
    rcl_ret_t rc_node = rclc_node_init_default(&node_, "node", "namespace", &support_);

    // Create service
    rclc_service_init_default(
        &service_, &node_,
        ROSIDL_GET_SRV_TYPE_SUPPORT(my_pkg, srv, my_srv), "/service_name");
      rclc_executor_init(
        &executor_, &support_.context, 1, rcl_get_default_allocator());
      rclc_executor_add_service(
        &executor_, &service_, &req_, &res_, [](const void * req, void * res) {
          uros_srv.req_ =
            *static_cast<my_pkg__srv__my_srv_Request *>(req);
          uros_srv.service_callback();
        });

  }

void UrosOdometryPublisher::service_callback()
{
  // This values are garbage and they do not get passed correctly
  int32_t my_variable = req_.write_value.my_attribute;
  res_.read_value.my_attribute = my_variable;
}

void main_loop()
{
  // This is run by the board's main loop
  rclc_executor_spin_some(&executor_, RCL_MS_TO_NS(25));
}

private:
  void service_callback();
  rclc_executor_t executor_;
  rcl_service_t service_;
  my_pkg__srv__my_srv_Request req_;
  my_pkg__srv__my_srv_Response res_;
};

Call service
ros2 service call /service_name my_pkg/srv/my_srv "{write_value: {my_attribute: 1000}}"

Is this ROSIDL_GET_SRV_TYPE_SUPPORT(cmy_pkgg, srv, my_srv) correct?
The extra c and g:  cmy_pkgg?

Also you have cservice_ inside     rclc_service_init_default instead of service_

Also, rcl_allocator_t allocator exists inside initialise function stack, once it returns allocator memory is not guaranteed to exists, maybe when you call rclc_executor_spin_some, this memory is not correct.
Make rcl_allocator_t allocator a private member of the class.

I am actually using a frertos allocator and it works fine. The other things are just copy-paste issues I am sorry but I can't show my source code so I created a dummy class. This is why these mistakes happened.

Yes, but executor_ is saving a pointer to allocator and it is being used in rclc_executor_spin_some. It can fail at any moment.
Regarding your problem, how does the following code behaves?
      rclc_executor_add_service(
        &executor_, &service_, &req_, &res_, [](const void * req, void * res) {
               my_pkg__srv__my_srv_Request * req_in = (my_pkg__srv__my_srv_Request *) req;
               my_pkg__srv__my_srv_Request * res_in = (my_pkg__srv__my_srv_Request *) res;
               res_in->read_value.my_attribute = req_in->read_value.my_attribute
        });

In the executor_add_service you assign the request message req to uros_srv.req_ in the callback UrosOdometryPublisher::service_callback() you are using a different variable req_.

Ok I have tried this and now I tried with the AddTwoInts example interface to make sure:
example_interfaces__srv__AddTwoInts_Request req;
example_interfaces__srv__AddTwoInts_Response res;

rcl_ret_t rc_support =
    rclc_support_init(&support_, 0, NULL, &board::ros::FreeRtosAllocator::get_allocator());

  // Create node
  rcl_ret_t rc_node = rclc_node_init_default(&node_, REMOTE_NODE_NAME, NAMESPACE_NAME, &support_);

  rclc_service_init_default(
    &calibration_service_, &node_, ROSIDL_GET_SRV_TYPE_SUPPORT(example_interfaces, srv, AddTwoInts),
    "/add");
  rclc_executor_init(
    &executor_, &support_.context, 1, &board::ros::FreeRtosAllocator::get_allocator());

  rclc_executor_add_service(
    &executor_, &calibration_service_, &req, &res, [](const void * req, void * res) {
    example_interfaces__srv__AddTwoInts_Request * req_in =
        (example_interfaces__srv__AddTwoInts_Request *)req;
      example_interfaces__srv__AddTwoInts_Response * res_in =
        (example_interfaces__srv__AddTwoInts_Response *)res;

      res_in->sum = req_in->a + req_in->b;

    });

This is how I get the allocator:
class FreeRtosAllocator
{
public:
  FreeRtosAllocator(const FreeRtosAllocator &) = delete;
  FreeRtosAllocator & operator=(const FreeRtosAllocator &) = delete;
  FreeRtosAllocator(FreeRtosAllocator &&) = delete;
  FreeRtosAllocator & operator=(FreeRtosAllocator &&) = delete;

  static rcl_allocator_t & get_allocator() { return instance().freertos_allocator_; }

private:
  FreeRtosAllocator() : freertos_allocator_{rcutils_get_zero_initialized_allocator()}
  {
    freertos_allocator_ = rcutils_get_zero_initialized_allocator();
    freertos_allocator_.allocate = freertos_allocate;
    freertos_allocator_.deallocate = freertos_deallocate;
    freertos_allocator_.reallocate = freertos_reallocate;
    freertos_allocator_.zero_allocate = freertos_zero_allocate;
    rcutils_set_default_allocator(&freertos_allocator_);
  }
  static FreeRtosAllocator & instance()
  {
    static FreeRtosAllocator instance;
    return instance;
  }
  rcl_allocator_t freertos_allocator_;
};

I still have the same problem now a is random but b is always 1.

Is not possible for you to test the services as they are provided in C99?
This way we can detect if we are having platform support problems, transport problems, typesupport problems, or just C++ issues between the C99 micro-ROS API and your code?

Indeed, I have never tested the services in C++ application.

We could try it out I believe, running an isolated task. However, I can say we have this exact setup running successfully with a subscriber (which would behave similarly to a service I suppose). Having no problems at all to run on our system, except the need to run the subscription with best-effort.
What we did was to try to change the subscription to service following the same pattern. The callback is correctly called, with no problem, however, the data is incorrect.
Here the code that we use to initialize a subscriber (successfully)
  rclc_support_init(&support_, 0, NULL, &board::ros::FreeRtosAllocator::get_allocator());

  // Create node
  rclc_node_init_default(&node_, REMOTE_NODE_NAME, NAMESPACE_NAME, &support_);

  // Create subscription
  rclc_subscription_init_best_effort(
    &subscriber_, &node_, ROSIDL_GET_MSG_TYPE_SUPPORT(geometry_msgs, msg, Twist),
    REMOTE_TOPIC_IN_NAME);

  rclc_executor_init(
    &executor_, &support_.context, 1, &board::ros::FreeRtosAllocator::get_allocator());

  rclc_executor_add_subscription(
    &executor_, &subscriber_, &msg_,
    [](const void * msgin) {
      // we're still connected. This is just WIP check
      uros_remote_provider.timeout_counter_ = 0;
      // Don't do anything unless this is active
      Cvalidate_void(uros_remote_provider.get_state() == capra::lifecycle::State::active);
      uros_remote_provider.msg_ = *static_cast<const geometry_msgs__msg__Twist *>(msgin);
      uros_remote_provider.status_led_.toggle();
    },
    ON_NEW_DATA);

@pablogs9 I will move for now to topics instead of services. I have not found a solution you can close the issue if you want though.

I've just run into what seems to be exactly the same issue, but using micro_ros_arduino.
Service calls never return, and the values passed into the service callback seem to be nonsense. Can replicate with the below minimal example:
#include <Arduino.h>
#include <micro_ros_arduino.h>
#include <rcl/error_handling.h>
#include <rclc/executor.h>
#include <rclc/rclc.h>
#include <std_msgs/msg/int64.h>
#include <std_srvs/srv/set_bool.h>
#include <stdio.h>

rcl_node_t node;
rclc_support_t support;
rcl_allocator_t allocator;
rclc_executor_t executor;

rcl_service_t service;
rcl_wait_set_t wait_set;

std_srvs__srv__SetBool_Response res;
std_srvs__srv__SetBool_Request req;

static char res_message = '\0';

#define RCCHECK(fn)                                                            \
    {                                                                          \
        rcl_ret_t temp_rc = fn;                                                \
        if ((temp_rc != RCL_RET_OK)) {                                         \
            while (1) {                                                        \
            };                                                                 \
        }                                                                      \
    }
#define RCSOFTCHECK(fn)                                                        \
    {                                                                          \
        rcl_ret_t temp_rc = fn;                                                \
        if ((temp_rc != RCL_RET_OK)) {                                         \
        }                                                                      \
    }

void service_callback(const void *lreq, void *lres) {
    std_srvs__srv__SetBool_Request *req_in =
        (std_srvs__srv__SetBool_Request *)lreq;
    std_srvs__srv__SetBool_Response *res_in =
        (std_srvs__srv__SetBool_Response *)lres;

    if (req_in->data == true) {
        digitalWrite(LED_RED, HIGH);
    } else if (req_in->data == false) {
        digitalWrite(LED_RED, LOW);
    }

    res_in->success = true;
}

void setup() {
    pinMode(LED_RED, OUTPUT);

    set_microros_transports();
    delay(1000);

    allocator = rcl_get_default_allocator();

    // create init_options
    RCCHECK(rclc_support_init(&support, 0, NULL, &allocator));

    // create node
    RCCHECK(rclc_node_init_default(&node, "set_bool_rclc", "", &support));

    // create service
    RCCHECK(rclc_service_init_best_effort(
        &service, &node, ROSIDL_GET_SRV_TYPE_SUPPORT(std_srvs, srv, SetBool),
        "/setbool"));

    // create executor
    RCCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator));
    RCCHECK(rclc_executor_add_service(&executor, &service, &req, &res,
                                      &service_callback));
}

void loop() {
    RCSOFTCHECK(rclc_executor_spin(&executor));
}

@conroy-cheers please open an issue in the proper repo and mention this one. Also, detail which board and transport are you using.

where is the client running? if you use ROS Rolling on Linux (Agent), make sure you use FastRTPS as DDS middleware:
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
https://github.com/ros2/rmw_fastrtps


How to upload a large io.ReadCloser() stream

The high-level APIs provide convenience abstractions such as uploading a large stream to a block blob (using multiple PutBlock requests).

Which API shall i use?  (I know we can PutBlock(s) and PutBlockList, but this is not the high-level API)
So is  BlobURL.StartCopy the high-level API? Is it support 4TB ?

@seguler , thx
I have been using storage sdk for months. (with the azure-sdk-for-go). I experienced the pain there.
The only reason I want to look into the new sdk is basically, the high-level API features.
For UploadFileToBlockBlob  function, is there another function takes io.ReadCloser as input ? This is the most common input type.

Then why not use PutBlock and PutBlockList instead ?
The reason this function takes *os.File is so that we optimize for throughput by the use of memory mapped files and concurrent connections. If we took io.ReadCloser we couldn't do that, could we ?
@giventocode @JeffreyRichter to comment

@seguler , we already did that with azure-sdk-for-go. (We don't want to stay on the deprecating sdk)
This is not blocking us. It is blocking us to onboard the new sdk. I want to see the gain to adopt new sdk.

In or deer to support retries, the new SDK requires a ReadSeeker passed to all upload apis. Your steam may also offer Close and or API will call it if it does.
How are you getting your steam? If from a file, then it will support seeking and if from a memory buffer, you should also have seeking.
-- Jeffrey Richter (watch Architecting Distributed Cloud Appshttps://aka.ms/RichterCloudApps on YouTubehttps://aka.ms/RichterCloudApps or edXhttps://aka.ms/edx-devops200_9x-about)

From: Jingtao Ren<EMAIL_ADDRESS>Sent: Thursday, March 1, 2018 11:49 AM
To: Azure/azure-storage-blob-go
Cc: Jeffrey Richter; Mention
Subject: Re: [Azure/azure-storage-blob-go] How to upload a large io.ReadCloser() stream (#31)
@segulerhttps://github.com/seguler , we already did that with azure-sdk-for-go. (We don't want to stay on the deprecating sdk)
This is not blocking us. It is blocking us to onboard the new sdk. I want to see the gain to adopt new sdk.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-storage-blob-go/issues/31#issuecomment-369691085, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACK0v7HyJPs_6umsPlfsrzLCdaciK1nrks5taEJ9gaJpZM4SYv15.

Actually, if you don't have a file, then you can call UploadBufferToBlockBlob. UploadFileToBlockBlob calls this internally but it is a public function you can call directly if you have a buffer and not a file.

@JeffreyRichter yeah, i checked the source code. And saw UploadBufferToBlockBlob  and UploadFileToBlockBlob , and one calls another.
The assumption that

the new SDK requires a ReadSeeker passed to all upload apis.
is not quite right.

Reading this thread https://stackoverflow.com/questions/37718191/how-do-i-go-from-io-readcloser-to-io-readseeker
if you want to upload something from a simple http.Response.Body (io.ReadCloser), we have to cache it to buffer/file, then upload?
I guess the reason you had the assumption of ReadSeeker, is because of parallel uploading ?
I think there is no harm to have one upload to take io.ReadCloser, but potentially could be slow.

If you want to upload from the network to a blob, then YOU must read the network data into a temporary buffer and then pass a ReadSeeker for the buffer into our SDK upload methods. The reason we require this is to give you retry support. We can perform retries for you over a non-seekable network steam because the data would be lost.
We don't do this for you because we want to let you control the buffer sizes and number of buffers so the you control performance and resources consumption.
-- Jeffrey Richter (watch Architecting Distributed Cloud Appshttps://aka.ms/RichterCloudApps on YouTubehttps://aka.ms/RichterCloudApps or edXhttps://aka.ms/edx-devops200_9x-about)

From: Jingtao Ren<EMAIL_ADDRESS>Sent: Thursday, March 1, 2018 12:37 PM
To: Azure/azure-storage-blob-go
Cc: Jeffrey Richter; Mention
Subject: Re: [Azure/azure-storage-blob-go] How to upload a large io.ReadCloser() stream (#31)
@JeffreyRichterhttps://github.com/jeffreyrichter yeah, i checked the source code. And saw UploadBufferToBlockBlob and UploadFileToBlockBlob, and one calls another.
The assumption that
the new SDK requires a ReadSeeker passed to all upload apis.
is not quite right.
Reading this thread https://stackoverflow.com/questions/37718191/how-do-i-go-from-io-readcloser-to-io-readseeker
if you want to upload something from a simple http.Response.Body (io.ReadCloser), we have to cache it to buffer/file, then upload?
I guess the reason you had the assumption of ReadSeeker, is because of parallel uploading ?
I think there is no harm to have one upload to take io.ReadCloser, but potentially could be slow.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-storage-blob-go/issues/31#issuecomment-369705834, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ACK0v0hNQAEAkbX4AIGz33UWOPeLp3fsks5taE4OgaJpZM4SYv15.

We can perform retries for you over a non-seekable network steam because the data would be lost.

I think you mean, we cannot ?

Yes he meant we CANNOT. We can't seek back to retry

Let me share with you guys what s3 takes.
https://github.com/coreos/etcd-operator/blob/master/pkg/backup/writer/s3_writer.go#L45-L50
I am trying to write similar functionality in etcd-operator project, with this new sdk.  You can see how verbose if using the current functions.
Btw, the interface is this
Write(ctx context.Context, path string, r io.Reader)
If S3 can take io.Reader, why we cannot ?

What is not very evident, is that ultimately, the S3 implementation checks if the reader is seekable and if not, copies the data into a buffer, therefore making it seekable.
https://github.com/aws/aws-sdk-go/blob/b3c93653d2e47b82c5f48d721a2db7778f4e33a8/service/s3/s3manager/upload.go#L542
Under high-stress scenarios, this could significantly increase heap allocations  - even if a pool is used. So is better to provide a seekable stream.
IMHO, explicitly asking for a seekable helps the caller by requiring this functionality upfront instead of giving the impression that seekable/non-seekable streams can be used without an additional impact.

I want to clarify, I am not talking about implementation details. ( I do know how they did this, and why we don't do this.)
I am talking about user friendly interfaces. AWS S3 is setting up the standard. We want to catch. The first thing is to follow. Especially, we are creating this new sdk.

@JeffreyRichter - it may be worth adding samples to the repo that shows how to read from a non-seekable stream into PutBlob etc...
@rjtsdl - I do not agree. We are not trying to catch up. We are trying to provide the best possible experience, and we decided not to provide APIs that may result in bad programming choices: like buffering a non-seekable stream which will result in bad memory management. By requiring seekable stream, we are being transparent on what is being done in this SDK. Having said this, I am sure this thinking may change/evolve if we get many requests for this.

I have a ton of respect for what AWS/S3 has done but this does not mean that they have done everything perfectly. My goal is to be a partner to our customer and to help them use Azure Storage correctly and efficiently. Some times, there is a trade-off between giving the user something easy for them to use today but this thing could also burn them later when they are running into resource efficiency problems, or performance issues, or debugging problems. I tried to design our SDK with all these things in mind and my hope is that it is an SDK that provides customers with long term benefit; not just a simple API that works today but hurts them tomorrow.  I also think we are able to show some thought leadership here that may surpass what AWS has dome in some areas. I'd prefer to continue to show thought leadership as opposed to simply following/copying the competition.

For the sake of technical posterity, I’d like to talk about the issues related to uploading of non-seekable streams. To start, I have decades of experience working with distributed systems and, when it comes to cloud scenarios, success comes from architecting with failure in mind. Specifically, due to the Fallacies of Distributed Computing (http://www.rgoarchitects.com/Files/fallacies.pdf), the only way to get just once semantics is for the client to retry operations and for the service to implement its operations idempotently (I talk about this in depth in a YouTube video here: http://bit.ly/2t7AVew).
So, I feel strongly that our SDKs should have a robust retry mechanism and, to accomplish this, the data being uploaded to the service must be “replayable.” The most efficient way of accomplishing this is by requiring streams to be seekable; so that, on retry, our SDK can seek back to the beginning of the stream in order to resend the same data. We believe that most of our customers’ scenarios involve uploading file data or in-memory buffer data. As both data sources are naturally seekable, our SDK requiring a seekable stream places no hardship on these customer scenarios.
Of course, some customer scenarios may involve a non-seekable data source. For example, data coming over the network to a PC which, in turn, uploads that data to our service. To accomplish this scenario, each call to our SDK to upload data requires that the network be placed in a buffer first and then a seekable stream over the buffer is passed to our SDK method so that our method can appropriately execute retry operations if necessary.
Now, you could argue that our SDK should offer this buffering for you automatically. But, let’s think about how this might work. First, what should happen if a failure occurs when reading from the non-seekable stream? Our SDK has no idea how that stream came into existence and has no way to retry whatever operation was used to acquire the stream. So, our SDK can simply fail the operation and your code should manually retry the operation to reacquire the non-seekable stream and call our SDK method again. When passing a seekable stream to our SDK, our SDK method can just retry the operation on your behalf making your code easier to write and maintain.
With a seekable stream, we can seek to the end, get the size, and then seek back to the beginning to upload it. This allows our SDK to make decisions about how to do the upload (in parallel or not) and, we can perform a parallel upload because multiple goroutines/threads can read from different parts of the seekable stream in parallel.
For a non-seekable stream, our SDK methods would have no way of knowing how much data is going to be sent to our service. If you, the customer, knows that the data is 256MB or less, then you can trivially allocate a 256MB buffer, read data from the non-seekable stream into and then call our SDK’s PUT BLOB method to upload the data to our service with retry support. This is very easy for you (about 2-3 lines of code), is inexpensive (one I/O operation to our service) and you can reuse this same memory buffer for other uploads if you’d like so your application is using memory resources efficiently.
If our SDK automatically allocated a buffer for you, then we don’t know what size to make it; we must pick an arbitrary size and we’d allocate a new buffer with each call to our SDK method and so the buffer is not reusable. This places a larger burden on the garbage collector adversely impacting the performance of your application. One reason why we couldn’t reuse the buffer is because our SDK also doesn’t know if you are calling methods concurrently by multiple goroutines (or threads) and since we must ensure that no corruption occurs, each goroutine/thread must have its own buffer. If each SDK method call allocated a 256MB buffer and you had 10 goroutines/threads calling the method concurrently (not an unreasonable amount), then our SDK is allocating more than 2.5GB on your application’s behalf! We have seen other SDKs that do this cause out-of-memory conditions and garbage collection performance issues in customer’s apps and we don’t want to be responsible for this customer hardship.
Again, if the customer controls the buffers, then the customer has many options for managing buffer sizes, reusing buffers, controlling concurrency, etc. The customer doesn’t have to understand or reverse engineer what we have done in our SDK to make sure their application runs as they intend it to.
If the size of the data your reading from the non-seekable stream is greater than 256MB, then more questions come into play. Since the non-seekable stream must be read sequentially, there is dubious benefit to performing parallel uploads to our service to increase performance. If reading from the non-seekable stream is faster than uploading to our service, then performance could be improved by allocating multiple buffers and reading from the non-seekable stream into them but again, how many buffers should our SDK allocate? How big should each buffer be? How much faster does the non-seekable stream need to be as compared to the time it takes to upload the data to our service for us to allocate multiple buffers? Should our SDK consume all available memory, or should we leave some memory available for other things your application might want to do?
Again, the customer knows the character of their data, what kind of hardware their app runs on and if their app is running in the same datacenter as our service (where bandwidth is high) and so on. Our SDK is a general-purpose SDK and we would have to make too many assumptions here that could easily have too adverse an affect. For all these reasons (and more), we have decided not to natively support non-seekable streams in our SDK.

Hi Jeffrey, I remember a past discussion with you regarding this topic here: https://github.com/Azure/azure-sdk-for-go/issues/626#issuecomment-324450637
I'll quote you, if you don't mind:

Now, on top of this building block, a function can be easily implemented that streams a large mass by splitting it into blocks, uploading each block, and then after the last block, calls PutBlockList to assemble the full-size blob. I don't know if the current Go SDK for azure storage has this function but our future Go SDK will definitely have it.

It's common in linux to stream things from one binary to another, it's also a very common thing to do in go, that's why io.reader and io.writer are so powerful and so widely used.
My particular use case is uploading database backups to the cloud. This is very easy to do in Go because I can invoke a program (like xtrabackup, mysqldump, pg_dumpall, etc) and pipe the output into an io.reader.
Both AWS S3, Google Cloud Storage and Digital Ocean Spaces support that, and I had no problems uploading +1.5TB backups in the past. The SDK does consume some RAM, but I don't mind it, as its reasonable considering how big the stream is !
You pose lot's of questions about how this SDK can't know in advance a lot of variables (buffer size, parallelism, etc). Sorry but that is something very easy to solve: pick a sensible default and let the user configure the rest.
With S3, if you choose a small part size and the stream ends up being more than 10000 parts, the upload fails. If you choose a huge part size, the upload will be slower in case of a failure (a bigger part must be retried), and the memory requirements will be higher. That's the tradeoff the SDK user has to make

Also, I'm not a C# specialist, but I see that the net sdk seems to support it: https://github.com/Azure/azure-storage-net/blob/master/Lib/ClassLibraryCommon/Blob/CloudBlockBlob.cs#L309 making checks to source.CanSeek

I've been thinking a lot about this problem and we have figured out a way to give you what you want in a pretty efficient way. After we do some more testing, we'll add a UploadStreamToBlockBlob function to the azblob package.  This function will take an io.Reader a BlockBlobURL, and some options (like max buffers and buffer size) and read from the io.Reader stream to 1 (or more) buffers and then upload each buffer to (perhaps in parallel) to the blob. Stay tuned.

Thanks all in providing feedback to this proposal !
I am really looking forward to get this issue closed !

The new UploadStreamToBlockBlob function is now available here. Internally, it reads from an io.Reader into 1+ buffers sequentially but can upload those buffers in parallel to create the block blob. Buffers are also reused when they become available. You can configure the max number of buffers & their size. The function should be very efficient, provide good performance, and fully supports retrying/resilience when uploading a buffer to the blob.
FYI: By default their is no retry/resiliency if something goes wrong with the io.Reader stream. However, if the io.Reader is sourced from an HTTP request, then you could use our NewRetryReader. to make the reading side resilient too. This works with any kind of HTTP request not just HTTP requests to download blobs.

Great news! Looking forward to implement it in our next sprint.
Thank you guys


code re-structuring

Coverage remained the same at 100.0% when pulling e76ce57f5c45e3e314f0f7dccd920d926841f1e1 on proto into 9bb31df9774ac2cfb7bc4d96b9f2a0719320307b on main.


autoLinkWithJSON is not a function

I've used twitter-text in my JS project before and for maintaining reasons updated the project today. twitter-text was updated from 3.0.1 to 3.1.0 as per package.json.
Now I get the following error: "twitterText.autoLinkWithJSON is not a function".
Obviously sth. has changed in the way the package works. I'm clueless what though. Any help appreciated.

maybe same issue
Uncaught TypeError: twitter_text_1.parseTweet is not a function

It seems that's because package.json is a bit changed here
https://github.com/twitter/twitter-text/pull/310/files#diff-e51a40ac250c9696142466f114f754161e7e5102c0cdb5354548b757deb272f6R6
  "module": "dist/esm",

I'm not sure why the line is added, but when I removed the line (which means we use dist/index.js, not dist/esm/index.js), there's no error

maybe same issue
Uncaught TypeError: twitter_text_1.parseTweet is not a function

It seems that's because package.json is a bit changed here
https://github.com/twitter/twitter-text/pull/310/files#diff-e51a40ac250c9696142466f114f754161e7e5102c0cdb5354548b757deb272f6R6
  "module": "dist/esm",

I'm not sure why the line is added, but when I removed the line (which means we use dist/index.js, not dist/esm/index.js), there's no error


Game softlocks on "Saving world" when exiting a single-player world (1.16.3)

Wasn't related to the mod... Was something else wrong with my setup.


Update libaom

Libraries are installed correctly, but tests fail.

You must update the aom-sys crate to 2.0.

https://github.com/xiph/rav1e/pull/2415 should go in first.

#2415 should go in first.

Ouch, I forgot to add that! Yep, it should go in first

@lu-zero
It doesn't work the same

Coverage increased (+0.01%) to 81.982% when pulling 25d418e331d41e7f5ceb2e0860d30e3ffc8aa707 on Luni-4:update-aom into 3b63cd0992b9941794d85c32780f93f3ac8cffcc on xiph:master.

Close in favor of #2323


Set reasonable defaults for cargo config

This sets build-std=core by default and uses the atmega328p as the
default target. Users will still need to specify alternate targets if
desired, but it makes the build process much easier for a default case.
In a similar vein as https://github.com/avr-rust/delay/pull/25 and
https://github.com/avr-rust/delay/pull/24, this makes it very simple for a very
common case (the default used in the README and the testing docker container);
if all of these are merged, users building for atmega328p should be able to
just git clone and cargo build --release and be on their way without need
for additional flags such as +nightly or build-std=core or --target...

The commit message should not have any references the web where the git repository is hosted.
So remove those references. Yeah, I did that on the previous two merge requests from @n8henrie and I done with keep doing that. github.com is nice packaging material (wrapping paper, bubble plastic) that has no reason to be present in all the cloned git repositories, the actual product we are working on.

The commit message should not have any references to the web server where the git repository is hosted.
So remove those references. Yeah, I did that on the previous two merge requests from @n8henrie and I done with keep doing that. github.com is nice packaging material (wrapping paper, bubble plastic) that has no reason to be present in all the cloned git repositories, the actual product we are working on.

No problem -- your house, your rules. I do think it's worth clarifying a few ideas though.

The commit message should not have any references to the web server where the git repository is hosted.

It doesn't -- I think you might be confusing the body of the pull request with the commit message, which I was trying to disambiguate here.
You're right that the commit message will end up in the git repo and log. However, the body of the pull request is a GitHub-specific feature; as far as I know, pull / merge requests aren't implemented by git itself.
My commit message doesn't reference github. You can prove this to yourself like so:
$ # clone the branch that this pull request originates from
$ git clone --branch=set-cargo-config --depth=1 https://github.com/n8henrie/avr-rust-delay.git
$ cd ./avr-rust-delay
$ git log --author='Nathan Henrie' | grep -i github
$ git log --author='Nathan Henrie'
commit 2f0f679c22212933791f298f39f8c1fb450afabb (grafted, HEAD -> set-cargo-config, origin/set-cargo-config)
Author: Nathan Henrie<EMAIL_ADDRESS>Date:   Sat Jun 11 06:18:05 2022 -0600

    Set reasonable defaults for cargo config

    This sets `build-std=core` by default and uses the atmega328p as the
    default target. Users will still need to specify alternate targets if
    desired, but it makes the build process much easier for a default case.

Having seen your strong feelings on commit messages, I tried to do accordingly with mine.

Yeah, I did that on the previous two merge requests from @n8henrie and I done with keep doing that.

I can see your edits on my prior two PRs, and I'm very confused as to your motivations. You're editing out reference to GitHub in comments that are only accessible through GitHub.

github.com is nice packaging material (wrapping paper, bubble plastic) that has no reason to be present in all the cloned git repositories, the actual product we are working on.

Again, as far as I know none of the content you've been editing ends up in the git repositories. All you're doing is editing content hosted by GitHub that does not go into the repository. If I'm wrong about this I'd be happy to have you show me!
@shepmaster @dylanmckay -- is this your understanding as well?
Is avoiding mentions of GitHub in pull request bodies and/or commit messages a core value for the avr-rust group? I'm sorry if this is documented somewhere, and I've missed it.
Further, I'd like to point out that these links -- for me and many others -- are important and helpful points of documentation. I add them intentionally so that people researching other branches, issues, PRs, and repos can see that a relevant topic has been mentioned in another thread. As a matter of fact, that's how I found this repo in the first place, and it's how I was notified about the recent (and very exciting) updates to the nightly compiler and llvm_asm -> asm macro updates in the avr-rust repos that allow compilation for atmega328p with a current nightly! And that's not to mention the handy ability to automatically close issues upon merge with commit messages...

The important thing is that the project moves forward.
Let see how the "This", written as
[This](This)

ends up in the git repo we care about.

Is avoiding mentions of GitHub in pull request bodies and/or commit messages a core value for the avr-rust group? I'm sorry if this is documented somewhere, and I've missed it.

The #24 and #27, above written as # 24 and # 27,  do I read as _leave the code you are working on, come to us, come feed us further, we love to lure you".

The important thing is that the project moves forward.

I agree, and I'm not trying to be a troublemaker here.
Can you find your comment above anywhere in the git repo itself? I doubt it, because I don't even know where one would look for it -- this PR is not yet merged into https://github.com/avr-rust/delay, and your comment is not anywhere to be found on my fork at https://github.com/n8henrie/avr-rust-delay, so where would it even be?
As another test, I created a test branch and test pull request at a dummy repo here: https://github.com/n8henrie/killed-9-example/pull/3
Please note the test in the pull request: This is a pull request message! It is relevant to https://github.com/avr-rust/delay/pull/26
I merged that PR. Let's see if it shows up in the git repo by searching for the word relevant:
$ git clone https://github.com/n8henrie/killed-9-example.git
$ cd killed-9-example
$ git checkout n8henrie-patch-1
$ git log --grep relevant
$ grep -rai relevant ./.git/
$

The pull request content is not found as far as I can tell.

New attempt on the formatting
"leave the code you are working on, come to us, come feed us further, we love to lure you"

above written as # 24 and # 27

That text is from your merge commit, not coming from my pull request. You control that content, I cannot.

 Users will still need to specify alternate targets if
    desired, but it makes the build process much easier for a default case.

commit 7032d81c5b4bee5ed4a28bc5c4c783a97ba5b7fb

So the This became indeed This, not [This](This).
What happend to
In a similar vein as https://github.com/avr-rust/delay/pull/25 and
https://github.com/avr-rust/delay/pull/24, this makes it very simple for a very
common case (the default used in the README and the testing docker container);
if all of these are merged, users building for atmega328p should be able to
just git clone and cargo build --release and be on their way without need
for additional flags such as +nightly or build-std=core or --target...
is unknown to me.

What happend to ... is unknown to me.

This is what I've been trying to explain above -- that text is all on GitHub as part of the pull request (a GitHub-specific feature) and not directly relevant to git or the git repo.


Fix SingleSignOnSessionsEndpoint.destroySsoSession

After calling destroySsoSession, TGT still exists in database.
Tested with MongoDB ticket registry.
There was no problem with CAS 6.1.
I don't know the real fix but this patch fixed the problem for me.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


can fixed the navigation bar, when left or right menu toggle?

Want the fonrt view navigation position fixed,donnot move.

I create other repo to implement this. https://github.com/fewspider/FFSideMenu


[DO NOT MERGE] Enhance the download section

Signed-off-by: nannanli<EMAIL_ADDRESS>A prototype where:

Download is a separate page
Clarified the relationship of the various download buttons
Expanded the useful information such as nightly builds, etc.

Screen captures of preview

Really great improvements @nannanli so thank you for creating the new layout.  Feedback:

At the top where there are four columns, can you group "Zowe z/OS Components" together and beneath/within that cover convenience build and SMP/E the way you have, so it's clear those are two ways to get z/OS components.  For the convenience the button says 1.11.0, but from the FMID and PTF it's not clear that the PTF is for 1.11.0 content also.
Put links to doc chapters for each of the installers (convenience, SMP/E, and CLI) somewhere in the info text ?
Past Releases being expanded is very nice.  Maybe name this "All Releases" and include the current release as well, so in your screen cap above 1.11.0 would be included which means at a glance a user can see the landscape of all downloads.
For Zowe CLI would it be possible to include a link to the CLI download chapter, and include text letting users know that the CLI is available on npmjs.org, e.g. Install CLI from on-line repository npmj.org
The Zowe Explorer download isn't mentioned.  I wonder if it'd be possible to give it the same real estate column area as the CLI and link to the doc chapter https://docs.zowe.org/stable/user-guide/cli-vscodeplugin.html#installing.
Build Zowe on your own - maybe label it as "Zowe source code is available", as to do a build there are additional steps a user would need to know so it feels like we need to design and write a doc chapter specifically for this, but having the link to the repos is good

Thank you !

New design:

Hi, thanks for this. I have a separate PR #91 to remove the CLI Pre-Release Build button entirely. Wonder if that should somehow be merged into this one.

@BrandonJenkins14 Good point. I think these two PRs can be combined to give people an overview of what the download section will look like moving forward. Will remove the pre-release build in this PR.

@jmertic
Hi John, this PR aims to redesign the Download section on zowe.org to address the feedback we've received. Not being an expert with website development, I want to get your advice on this design and how we could deliver this to benefit users asap, and if we need a designer to review this as well.  This design is a prototype and as a next step, I plan to get the community's feedback. Any feedback or advice are appreciated.
This PR addresses the following comments:

The download section is busy with buttons but the relationship and meaning of these buttons are not well-explained.
Important component like Zowe Explorer does not have much visibility in this section.
Many useful information such as release timeline are folded in the section and not easy to discover.

This PR contains the following changes:

Make Download a standalone page
Reorganized the download buttons, added Zowe Explorer download, added more details about these buttons and used cards to explain the relationship.
Expanded information like Release timeline, previous releases, nightly builds.
Removed CLI Pre-Release download to incorporate #91
Changed the What's Zowe tab name to be Home for that page contains more information than what's Zowe.
Added a CSS link to Bootstrap

@jmertic Awesome it works! Thank you for fixing all the issues in my change. I agree that a working session or design critique to review and discuss the download information will be helpful to gather input and feedback. I'm wondering if this session should go beyond just the download section to cover the whole zowe.org design so we could understand people's current experience, pain points, and ideas as a community.

That's definitely one route to take, but there is a balance to strike on pragmatism in solving the problem you are looking to solve. I'm not sure if the right approach is a deeper redesign at this point, which could result from such a discussion

I like the second design, but need to point out that an outcome of the current PI is to make a Docker download available as a beta, so eventually there will be a 3rd option in the server-side component box. Maybe over time there will be a 4th and a 5th, etc.
If you are ok with that, then it's fine. But another option would be to have a dropdown, maybe the description changes when the dropdown changes. Not sure. Just a thought... both are fine to me.

@nannanli - it looks as though you've collected a lot of great input from squad leads and others in the community and the design you have now is improved on the current layout where the buttons have no background explanation, to where they are now arranged with links to doc chapters and more information, as well as including the link to the Zowe Explorer marketplace which is great.
@jmertic - what are the remaining steps to make this go live on zowe.org ?  It'd be great to do this concurrent with 1.13 that is in the final stages of being built and should GA within the next week.


Anyone facing issue with angular universal using this carousel?

Hi , I've just experienced the following issue:

@sheikalthaf do you know how this issue can be solved? Thanks.

@AtanasChachev Fixed the issue. Thanks for reporting. Will push the update

@sheikalthaf love u

hello @sheikalthaf , same issue encountered. Pushed already the issue?

@AtanasChachev @seanlon no update not pushed. will push the update within few hours

@sheikalthaf  still waiting..

@AtanasChachev @seanlon Update now live v1.4.2. Thanks for the support and love

@sheikalthaf everything is okay now , god bless ya bro.

@sheikalthaf  llove you bro!!! 💋 👍  god bless you
@AtanasChachev thanks for raising this !!

@sheikalthaf One more issue but it's kinda rendering issue. When the carousel is initialized at first , everything is okay , but then when I start swiping/changing slides , the slider becomes kinda blurry ( the text and the image ) I've tried with translateZ(0) and other options  but don't work , I don't know if I`m the only one experiencing this. Since @seanlon is using your plugin as well , can you please tell if  you are experiencing that issue as well thanks!

@sheikalthaf  @AtanasChachev  for me this issue closed. Thanks!
@AtanasChachev  i didnt face the blurry image issue. Would you please close this issue and open a new open issue?


[#4581]feat(iceberg) support Gravitino-based multi catalog support for Gravitino Iceberg REST server

What changes were proposed in this pull request?
support Gravitino-based multi catalog support for Gravitino Iceberg REST server
Why are the changes needed?
improvement: #4581
Does this PR introduce any user-facing change?
add a property key
How was this patch tested?

add UT
manual test

@jerryshao @FANNG1 please help to review, Thanks.

@FANNG1 All comments have been resolved. Could you review it again? Thanks

LGTM except minor comments

@theoryxu , thanks for your contribution!


Original fix for Sak 33397 joinable sites dialog is not styled caused regression SAM-3390

Original fix for Sak 33397 joinable sites dialog is not styled caused regression 'SAM-3390 Navigation text bar when creating a question is super small and centered'

Sorry, I'm not sure if I created this pull request properly.  The commits includes 'Merge branch 'master' into SAK-33397'.  I didn't realize that that would also be included in the PR.  However, the files changed looks correct.

Yeah, that probably is the safer place for it. I'll look at this a little more too today. Thanks for the fix!


define the local dir to upload

Is this a similar or duplicate feature request?

[ ] I don't know. I will go check it.
[x] No.

Is your feature request related to a problem? Please describe.
NO
Describe the solution you'd like
define the local dir to upload.
in my project, the output dir would upload to server map the remote dir /xxx/xxx/web
but i can not define the local dir in my project.
the file index.html in output,when i upload to server, it upload to  /xxx/xxx/web/output/index.html
i just think output/index.html can upload to /xxx/xxx/web/index.html
Describe alternatives you've considered
now, i make a soft link with ln -s
Does this project help you?

[x] Yes. SFTP IS AWESOME!
[ ] Yes. I want to support you.

"context": "./out"


Fix windows keyword typo

Caused windows not to be listed as a platform on Cordova Plugins page

:+1:


content gaps in auth token docs

fields used in token generation need to be clarified. e.g, where do i get the user_id / room_id from?
https://www.100ms.live/docs/javascript/v2/foundation/security-and-tokens#app-token

This is added now.


Use area weighted regridding in wflow diagnostic

This uses the area weighted regridder for the wflow diagnostic (instead of linear).

Tasks

[ ] Create an issue to discuss what you are going to do, if you haven't done so already (and add the link at the bottom)
[x] Give this pull request a descriptive title that can be used as a one line summary in a changelog
[x] Make sure your code is composed of functions of no more than 50 lines and uses meaningful names for variables
[x] Circle/CI tests pass. Status can be seen below your pull request. If the tests are failing, click the link to find out why.
[x] Preferably Codacy code quality checks pass, however a few remaining hard to solve Codacy issues are still acceptable. Status can be seen below your pull request. If there is an error, click the link to find out why. If you suspect Codacy may be wrong, please ask by commenting.
[x] Please use yamllint to check that your YAML files do not contain mistakes
[x] Update documentation for the recipe to the doc/sphinx/source/recipes folder

If you need help with any of the tasks above, please do not hesitate to ask by commenting in the issue or pull request.

Hey @bouweandela ,
Although I think the implementation looks straightforward and works, the performance of the area-weighted regridder is not great. Long run times and memory bottlenecks were the reason to try and make regridding lazy in the first place.
I've done some tests for the Rhine

With preprocessor / linear:

real	8m24.848s
user	33m33.133s
sys	7m0.583s

Without preprocessor / linear:

real	31m57.236s
user	41m59.245s
sys	28m58.079s

With preprocessor / area-weighted

Not finished within time limit (1h) (Running a longer job now, I'll update this)

Without preprocessor / area-weighted

Not finished within time limit (1h)

Simulatenously, I'm running our preprocessor notebook for all catchments. For smaller catchments, the area-weighted runs were handled quite smoothly when I re-introduced the preprocessor.
Thus, removing the extract-region preprocessor seems to deteriorate the performance, even though it saves writing the intermediate netCDF files. I guess we're still loading the entire globe into memory for each time block (and weighting it!?), which makes the source chunks the main bottleneck. Perhaps, rather than discarding the preprocessor altogether, we could move it to the diagnostic, so that a only the relevant lat/lon part of the cube is realized for the regridding?
Furthermore, I think we need to re-evaluate whether the huge cost of this regridder is actually worthwhile. But it's nice that we now have an easy option to switch back to linear :-)

Hi Peter,
Moving extract_region to the diagnostic will probably not help, because the runtime increase comes from the much larger amount of data that needs to be preprocessed/saved before the diagnostic can start. However, half an hour looks like quite an acceptable runtime to me. The problem is that area weighted regridding does not work if you apply the extract_region preprocessor first. On my laptop it took about 2 hours to process a single year with area weighted regridding, but that was before I increased the chunk size by a factor of 5.

The problem is that area weighted regridding does not work if you apply the extract_region preprocessor first.

Why is that?
Note that the half hour is for linear regridding, 10 years.
It took appr 45 minutes to run 1 year for the Rhine, but I did re-introduce the preprocessor.

because the runtime increase comes from the much larger amount of data that needs to be preprocessed/saved before the diagnostic can start.

No, actually the preprocessor is still quite quick. The runtime increase seems to come from the diagnostic.
This is for 10-year runs for the Rhine with linear regridding

with preprocessor: Preprocessing steps took 2:11 mins; Diagnostic took 6:08 minutes
without preprocessor: Preprocessing steps took 3:21 mins; Diagnostic took 28:33 minutes

I did re-introduce the preprocessor.

This doesn't work if the catchment crosses the prime meridian (e.g. try the Meuse, as in the recipe here), because CMOR requires a longitude coordinate between 0 and 360 and then iris does no longer recognize that the coordinate and bounds are contiguous, which is apparently required for the area-weighted regridder.

No, actually the preprocessor is still quite quick.

I guess it depends on the hardware then, I got different results when running on my laptop, but that has only two cores.

Let's leave it for now.


Unknown node status

fixes #153

Codecov Report

Merging #155 into v2-master will decrease coverage by <.01%.
The diff coverage is 59.09%.

@@              Coverage Diff              @@
##           v2-master     #155      +/-   ##
=============================================
- Coverage      53.28%   53.27%   -0.01%
=============================================
  Files            846      846
  Lines          22129    22152      +23
  Branches        3752     3765      +13
=============================================
+ Hits           11791    11802      +11
- Misses         10338    10350      +12


CHEBI:139706, please update structure

Hi Adnan,
The current structure is not consistent with the usual way to depict CoA compounds. The attached compound is. I hope you will use it.
Cheers,
Kristian
CHEBI_139706.txt

structure updated.

structure updated.


docs(prototypes): remove MenuButton

We have a MenuButton component, there is no more need in this prototype.

Warnings

:warning:
There are no updates provided to CHANGELOG. Ensure there are no publicly visible changes introduced by this PR.

  Generated by :no_entry_sign: dangerJS


Is there a java chaincode sample for external-chaincode mode?

Hi~
I'm learning the external-chaincode mode, and the sample is in golang.
Is there any sample for java chaincode?
Thanks!

Hello @KaiQiu9527
asset-transfer-basic/chaincode-java sample also supports running as an external chaincode.
https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic/chaincode-java
The following page includes end-to-end instruction for chaincode as a service with test-network.
https://github.com/hyperledger/fabric-samples/blob/main/test-network/CHAINCODE_AS_A_SERVICE_TUTORIAL.md#end-to-end-with-the-the-test-network

@satota2 Thanks for the info!
Btw, I found a spelling mistake here😊

@KaiQiu9527 Thank you for reporting the typo. Do you plan on creating and submitting a patch to fix this typo?

Sure😄

I believe the original issue has been resolved, so I close this issue.


Draggable Controls

With the various systems in place and as well as a healthy collection of primitives and components, we can start truly exploring how we can systematize design tool elements and interactions.
One aspect would be to explore how drag-based controls could be systemized.
Things to consider would be:

Drag contraints (a bounding box that contains the draggable control)
Drag axis locking (e.g. holding down shift to lock x axis while dragging)
Snapping
Persistent dragging interactions (drag values update, even if the cursor goes outside the draggable element)
(Async) state update - Need super fast performance for this to work/feel right
Multi-component awareness (e.g. drag-resizing of multiple columns)

An example of a draggable control maybe this (for positioning box shadow)

We have a couple of drag gestures in Gutenberg! Notably the NumberControl, allowing users to drag to increment/decrement values.

Closing this for now. Gesture-based controls have been added to the base TextInput. We can revisit this in the future :)


(feature request) Include the message id on the Message object by default (maybe in extras property?)

BotMan Version: 1.5
PHP Version: 7.1
Messaging Service(s): Facebook
Cache Driver: File

Description:
Would be great to have access to the message ID (mid) on the Message object by default -- it seems if a bot doesn't reply quickly enough to a message, Facebook will post another request with the same message ID a few times before "giving up", which could potentially build up a back stack of replies. Having access to the message ID would provide the means necessary to handle the issue.

Can't you access it using $bot->getMessage()->getPayload() ?

I had this "issue" too with a chabot project. We ended up checking the mid if it is the same like before, if it is we do not send it through. (Was a project without BotMan) Also think you should get it like @mpociot mentioned.

@mpociot sorry I forgot to follow up on this one, I was able to get it off the payload, thanks for the tip; it seems it wasn't much use anyway though, because postbacks don't have an mid


AGAIN (?): No Energy entity for CK-BL602-SWP1-01(182) by coolkit

Thanks for your great work so far - I really enjoy it with our fleet of SonOff PowR devices.
It looks to me like an old friend has reappeared even though back then I had not had such device, mine is brand new:
issue #1084 was about no energy entity and right now I got the same issue from a brand new
CK-BL602-SWP1-01(182) by coolkit, but with maybe 1 difference from first look: Firmware: 1.1.1
I have no energy entity as described in #1084 or at least it looks to me quite the same.

I am running HA on a Pi 4 with latest HA from yesterday, latest HACS and most recent SonoffLAN as you can see in the diagnostics.
Not sure what is going wrong cause my PowR316 and 316D are working great like the older PowR V2, but this new one is differently in the sonoff app and here too.
SonOff - CK-BL602-SWP1-01(182) by coolkit.txt

You need to enable it


Bull Bear market

Hi,
I think the statement about bear bull market is wrong.
If default customer is labeled as 1 in the response label:
I think under Bull market, precision is more important.
In contrast, under Bear market, recall is more important. You want customers "that are not classified as bad by your model" to be all genuine good customers, aka, you allow some good customers to be wrongly classified as bad.
Best,

Hi, thanks for the feedback.
I feel like there is a confusion here between recall and precision. Kindly refer to these two links:
https://jfin-swufe.springeropen.com/articles/10.1186/s40854-022-00366-1
https://www.reddit.com/r/datascience/comments/qdai89/i_just_explained_recallprecision_to_a_nonds_and/?rdt=51113
Best,


The future of the project

tl;dr: I can't see myself returning here, and I'm asking you to decide the fate of this project.
When I started working on taplo, I wanted it to be a tool that puts TOML on par with YAML and JSON in terms of dev experience and perhaps even surpass them, in some aspects I think I achieved that and I'm happy that it ended up being useful for many. However the project was pretty much a learning experience for me, it was the first parser I have written, the first LSP, etc. and it really shows.
I still have a lot of plans, for example:

rework the parser so that it is not a mess (e.g. I really liked the approach I ended up with in rhai LSP, I think rust-analyzer has a similar architecture)
adjust the code that builds on top of it so that it won't rely on an accidentally introduced behavior that actually makes no sense
rethink/rework whatever the hell is happening after syntax parsing, to date I still have no idea how to efficiently and cleanly turn TOML into a DOM with its arbitrary rules and parent nodes appearing out of order
rebase the LSP onto a maintained library, like tower-lsp
rework the formatter so that it handles line breaks and nesting properly, something like prettyplease or rhai-fmt (that was also based on prettyplease).
fix filepath/URL handling, I think there is still confusion around this (unless the windows<->everything else conflicts were fixed while I was away)
schemas and in general position querying (which TOML node maps to which property in schemas) is quite buggy
... probably many more (looking at the open issues)

I have practically disappeared from this project for the past 1-2 years, and now it is safe to say that whatever my plans are, they are very unlikely to be fulfilled. Nowadays I have a lot less free time, and even in that free time I code less as a hobby. On top of that being a maintainer really feels like a 2nd or 3rd job and I have a lot of respect for people who can pull it off, I definitely cannot.
On top of that, I don't feel like that the amount of work I listed above (probably a month worth?) is worth putting into this tool, while it is useful, I don't feel anyone would really miss it if it disappeared overnight.
So now I'm officially stepping down as a maintainer/owner/whatever, I practically haven't been one for years anyway.
Thank you @panekj @ia0 @JounQin and everyone else who helped keep this alive.
My question is what should we do with all of this?

transfer everything to an organization?
keep the current state up with sporadic maintenance until the TOML spec changes and everything breaks?
just abandon/archive everything?
ultimately is there anyone who would like to pour time into this and take over?

The following needs to be thought of:

[ ] this repo
[ ] access to the extension on openvsx
[ ] access to the extension on the vscode marketplace
[ ] access to the @taplo organization on NPM
[ ] access the taplo package on pypi (I don't have anything to do with this)
[ ] access to the libraries on crates.io

I'm open to anything really and suggestions are welcome.

The orgnization permission model is much more flexible IMO.

Thanks @tamasfe for all the efforts and care you've put into this project.
While I'm still not planning to help maintain this project, I believe this is an important project for the Rust community (for Cargo.toml formatting). That's why I'll give my opinion to try to maximize the project chances of success.
I agree with both @panekj and @JounQin that a GitHub organization should be preferred. My rationale is that the set of maintainers is going to change over time and no maintainer is expected to survive the project. So a GitHub organization will provide the maximum stability to the project.
If we don't find an initial set of maintainers or if we don't reach a good enough quota of commitment, we could ask https://users.rust-lang.org/ for help.

Thank you for everything @tamasfe! Taplo has been and still is a great project, even if there are things you wish you could improve.
While I have not personally contributed to this (yet), I would like to echo that moving to an organization is probably for the best.
To help attract new contributors, it would also be amazing to try and flesh out some of the ideas you have above. In my experience, creating an overarching tracking issue (like I have done in Pact-Python) can provide a lot of help for new contributors to see what they can/should contribute to. This would really help pass on all the stuff you have thought of and help make it concrete for others to take over (though it is still a fair bit of work to create such a tracking issue).

Thank you all for the input, it looks like an organization is the way to go then. I will try to set one up as well as collect ideas/thoughts/TODOs like @JP-Ellis suggested for a proper handoff before I disappear (again).

I'd like to suggest also reaching out to the rust-analyzer owners to see if there's some scope to pull this into their responsibility area. While this isn't purely a Rust specific tool, there's quite a bit of overlap in the techniques and goals between rust-analyzer and this that could benefit from some cross pollination.


Fixes issue with formatter not being defined for relative formats

The relative formatter was not defined ... now it is.
resolves https://github.com/danielroe/nuxt-time/issues/301

Summary by CodeRabbit

New Features

Enhanced date formatting for relative time display, ensuring accuracy and consistency with locale settings.

Bug Fixes

Improved error handling and control flow for the formatter, leading to more reliable time representation.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 48.88%. Comparing base (9341b00) to head (044b5de).
Report is 133 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #310      +/-   ##
==========================================
- Coverage   55.24%   48.88%   -6.36%
==========================================
  Files           5        5
  Lines         143      135       -8
  Branches       14       16       +2
==========================================
- Hits           79       66      -13
- Misses         64       69       +5

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


Set up Mailgun for Keeping Pace

Email not currently working (e.g. for password reset).
We can set it up ourselves and keep track of admin items which Rumi should later receive control over in this doc: https://docs.google.com/document/d/1Kel5c00bimbFeuTfliSJ8ak32dxDRw0SdnfyiS8sLho/edit

Wrong repo.


ci: SECOPS-2525 - add semgrep job

Motivation / Implements
This PR adds or updates the necessary configuration to enable Semgrep to run on PRs on this repo. The Apollo Security team uses Semgrep to test our source for potential security vulnerabilities.
Once this is accepted and merged, the Security team plans to make a passing Semgrep check a requirement for PRs to merge into this repo. This will prevent net-new severe issues from being introduced. The job proposed by this PR runs in a diff-aware mode, so it will only alert if net-new issues are introduced in a branch.
In the event that a severe issue is detected on a PR, the CI job will add a comment to the PR associated with the detection to provide instructions on how to properly resolve the detection. The comment added to PRs will also include instructions on how to get further support if needed.
If maintainers reviewing this PR have questions, please reach out in the #security channel in Slack or contact Matt Peake directly at<EMAIL_ADDRESS>Changed

Updated .circleci/config.yml to include appropriate configuration to enable Semgrep as a CI check.

Detected SAST Vulnerabilities


5948 remove user history and login events tab

https://dev.azure.com/cyrovalente/IAM Project/_sprints/backlog/IAM Project Team/IAM Project/Sprint 55?workitem=5948
Acceptance criteria:
-Remove these tabs on the frontend, including the calls to the backend.
-Remove the view-events role from all users and groups.
Out of scope:
-The backend resource can stay.
-The roles can stay.


small fix setting filename in "quickstart.md "

Description
When performing "Create your first index" on quickstart, I noticed that the config file name specified in the CLI command was different from the config file name displayed.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

thanks @higumachan!


oauth: move RequestingToken to library-go

RequestingTokens is used in multiple places (oc, e2e tests in origin, and, soon, e2e tests in the authentication operator), we should therefore move it to a library that's shared among these sources to prevent the need of copy-pasting this code.
cc @deads2k @s-urbaniak @soltysh

/lgtm

/approve

adding label manually... the only change there requiring top-level approver is go.mod modification.


New buttons and improved UI for resource overview page

Example 1

Example 2

There are some issues for small screens

There are still small issues

Final version:


fix scrollEnable get override issue

in the case that lockScrollWhileSnapping={true} and enableMomentum={false}. scrollEnabled gets override even when it was set to false.
Platforms affected
Android
What does this PR do?
It make sure to check scrollEnabled from props before reset this._scrollEnabled
What testing has been done on this change?
set lockScrollWhileSnapping={true}
set enableMomentum={false}
set scrollEnabled={false}
manually call snapToNext() to move to next item
made sure this._scrollEnabled is still false
Tested features checklist

[x] Default setup (example)
[x] Carousels with and without momentum enabled (prop enableMomentum)
[x] Vertical carousels (prop vertical)
[x] Slide alignment (prop activeSlideAlignment)
[x] Autoplay (prop autoplay)
[x] Loop mode (prop loop)
[x] ScrollView/FlatList carousels (prop useScrollView)
[x] Callback methods
[x] ParallaxImage component
[x] Pagination component
[x] Layouts and custom interpolations

Thanks for the PR @JakeRawr!
I'm merging it and publishing a new minor release immediately after.

Hey @JakeRawr,
There apparently is a huge bug introduced by your PR. Could you take a look at #392 and see if you can manage to fix it? Otherwise, I'll sadly have to revert back...
Thanks!

#393 should fix the problem
I tested manually setting scrollEnbled to true and false, but failed to test when scrollEnabled is not set.
Hopefully this fixes the issue. But please double check this PR
@bd-arc


changes in client page and team icon

Notion card
https://www.notion.so/6afc9500b2cc42af86be55f37894fb09?v=185bd45b9dc24dfcad9c57c07d32a7c0&p=48fb0572542b48f0a71cd2d752b74955&pm=s
https://www.notion.so/6afc9500b2cc42af86be55f37894fb09?v=185bd45b9dc24dfcad9c57c07d32a7c0&p=f61d0a98ec9f435eb31e395a11382458&pm=s
Summary

Updated team icon in side navigation
UI changes on client page

Preview

Type of change

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

How Has This Been Tested?
Check for UI changes on client page from notion list
check for team icon on left navigation for team
Checklist:

[x] I have manually tested all workflows
[x] I have performed a self-review of my own code
[x] I have annotated changes in the PR that are relevant to the reviewer
[ ] I have added automated tests for my code

Before there was too much white space between the client name and email and now after this PR there would be a white space between email and hours logged and also after hours logged.
@Ankita012 @supriya3105 Before this PR

After this PR

@Ankita012 Please check the CSS for the clients page in the designs and fix the spacing issues between the three columns.
Reach out to @AkashKale in case you have any queries about it.

@Ankita012 Please check the CSS for the clients page in the designs and fix the spacing issues between the three columns.
Reach out to @AkashKale in case you have any queries about it.

Fixed


Disable rewriting of language or template specific parts.

Hi,
we want to use gulp-inline-css to put css into our mail templates.
But there is a big problem with your implementation, as you can see here:
https://github.com/jonkemp/gulp-inline-css
is there any possibility to make jsdom OPTIONAL?
thanks and a happy new year.
Timo

Did you find a workaround for this? @kaiserkoenig

we want to use gulp-inline-css to put css into our mail templates.
But there is a big problem with your implementation, as you can see here:
https://github.com/jonkemp/gulp-inline-css

What is the problem exactly? Your link just links to to the github repo with no further details.
jsdom cannot be easily made optional.

as described in the issue ( https://github.com/jonkemp/gulp-inline-css/issues/4 ) there is a problem with template specific parts, like html characters. the developer there says he can't do anything, so i'm writing here. maybe there's a solution he and you can talk about.
thx

@kaiserkoenig v1.0.0 should resolve these issues. I just added some test cases using the examples in jonkemp/gulp-inline-css#4 that passed without any issue.

There are some test cases now that cover almost exactly what is in jonkemp/gulp-inline-css#4 so I'm going to close this as resolved