review issues

I'm giving it a new try, thanks for the fixes and sorry for my bad time-management.

I'm testing with python 3.11
on the test-dataset; which is not ideal because it tests with the same dataset, but I dont have another dataset available.

Let's first play naive user, without reading the docs / how-to online

I really like that you have a proper help for the CLI tool, very cool!!
I could not find out what this error means:
fmristroke: error: the following arguments are required: analysis_level
Here: https://fmristroke.readthedocs.io/en/latest/usage.html I found kind of an explanation - I didnt understand that the {participant} means I should select from the 1-tuple (participants) the only implemented option right now - and that this is referred by analysis_level. This should be easily adressable by just adding two words to the help or so
ok, now it can't find my bids-folder: ❯ fmristroke FCStroke_2009_deriv out_test participant  results in
ValueError: BIDS root does not exist: /store/users/ehinger/peerreview/fmristroke/fmristroke/data/tests/None - not sure where the None comes from? Also "cding" into the folder and running with ./ did not help. Ah I see, the right command is:
fmristroke FCStroke_2009 out_test participant --participant-label sub-027 --fmriprep_dir=FCStroke_2009_deriv

Which runs me into my next problem:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) database is locked
Okay, specifying a work directory -w /tmp/fmristroke fixed it.
It is now running and doing things ;)

I guess following the documentation proper would have alleviated these problems - given that the docs clearly state to specify
fmristroke data/bids_root/ out/ participant -w work/ --fmriprep_dir derivatives/ - but maybe my tour still helps

Finally now I understood what you wrote in #14 that this is just dummy data (indeed, now I noticed the files are all empty anyway). I couldnt find any other prepared dataset as you mentioned in https://github.com/alixlam/fmristroke/issues/14#issuecomment-2084615050
I simply assumed the data are somewhere when you closed the issue, but I cant seem to find any pointers to it.

Hi @behinger ! thanks for your time and your first feedback  !
You can find some test data here:  https://osf.io/5z4ry/ since the files are a bit heavy I did not include them in the repo :)

Thanks! On that dataset I run into a new problem:
          File "/home/ehinger/micromamba/envs/fmristroke/bin/rapidtide", line 23, in <module>
            rapidtide_workflow.rapidtide_main(rapidtide_parser.process_args(inputargs=None))
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/rapidtide/workflows/rapidtide.py", line 425, in rapidtide_main
            raise ValueError(
        ValueError: magnitude of lagmin exceeds 5.0 - invalid
Traceback:
        Traceback (most recent call last):
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 453, in aggregate_outputs
            setattr(outputs, key, val)
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/traits_extension.py", line 330, in validate
            value = super(File, self).validate(objekt, name, value, return_pathlike=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
            self.error(objekt, name, str(value))
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/traits/base_trait_handler.py", line 74, in error
            raise TraitError(
        traits.trait_errors.TraitError: The 'output_corrmap' trait of a RapidTideOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/tmp/fmristroke/fmristroke_0_1_wf/single_subject_M2121_wf/lesion_conn_ses_258_task_rest_run_17_space_T1w_desc_preproc_wf/hemodynamic_wf/rapidtide/concat_desc-maxcorr_map.nii.gz' <class 'str'> was specified.

        During handling of the above exception, another exception occurred:

        Traceback (most recent call last):
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 400, in run
            outputs = self.aggregate_outputs(runtime)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 460, in aggregate_outputs
            raise FileNotFoundError(msg)
        FileNotFoundError: No such file or directory '/tmp/fmristroke/fmristroke_0_1_wf/single_subject_M2121_wf/lesion_conn_ses_258_task_rest_run_17_space_T1w_desc_preproc_wf/hemodynamic_wf/rapidtide/concat_desc-maxcorr_map.nii.gz' for output 'output_corrmap' of a RapidTide interface

fmristroke . derivatives/out_test participant --fmriprep_dir=derivatives -w /tmp/fmristroke

This seems similar to an error experienced before by SRSteinkamp. I should have fixed it, did you pull the code recently ?

the version was 0.1.0 - I upgraded it maybe ~1 week ago?
I now used
❯ python -m pip install git+https://github.com/alixlam/fmristroke.git --upgrade
Resolving to
  Resolved https://github.com/alixlam/fmristroke.git to commit 47e02c135efe03e9f6cefd5cb12faca79e5386be
which is the newest one.
rerunning: same result

Might this be the issue, that the example dataset does not have enough data to run rapitide on? So adding --session-level might help here?

Yes it looks like this issue, the run 17 is too short for rapidtide, but I should have added a check of bold size and skips the ones that are too short (and adding a warning) if the --session-level is not on. Will try to run on my side with a clean environment.

@behinger do you have a similar output on your terminal, especially the last part ?

Nope - but I get a ton of output; how do you run yours with less output?
241108-14:12:53,780 nipype.workflow IMPORTANT:
         Running fMRIStroke version 0.1.0
241108-14:12:54,42 nipype.workflow IMPORTANT:
         Building fMRIStroke's workflow:
           * BIDS dataset path: /scratch/data/fmristroke.
           * fMRIPrep path: /scratch/data/fmristroke/derivatives.
           * Participant list: ['M2112', 'M2121'].
           * Run identifier: 20241108-141247_5236511b-d6e1-4c16-ba4a-d0e58d1540b0.
           * Output spaces: MNI152NLin2009cAsym:res-native.
           * Denoising pipelines: ['SimpleGS', 'SimpleLesionGS', 'ICLesionCompCorGS', 'Minimal'].
           * Atlases: ['Scheafer'].
241108-14:13:00,151 nipype.workflow INFO:
         fMRIStroke workflow graph with 488 nodes built successfully.
241108-14:13:02,906 nipype.workflow IMPORTANT:
         fMRIStroke started!
241108-14:13:05,925 nipype.workflow INFO:
         [Node] Setting-up "fmristroke_0_1_wf.single_subject_M2121_wf.lesion_conn_ses_258_task_rest_run_17_space_T1w_desc_preproc_wf.connectivity_wf.atlas_info" in "/tmp/fmristroke/fmristroke_0_1_wf/single_subject_M2121_wf/lesion_conn_ses_258_task_r
un_17_space_T1w_desc_preproc_wf/connectivity_wf/_atlas_Scheaffer/atlas_info".
241108-14:13:05,925 nipype.workflow INFO:
         [Node] Outdated cache found for "fmristroke_0_1_wf.single_subject_M2121_wf.lesion_conn_ses_258_task_rest_run_17_space_T1w_desc_preproc_wf.connectivity_wf.atlas_info".
241108-14:13:05,928 nipype.workflow INFO:

It is normal to have a ton of outputs, and I have not implemented a version with less. What is not normal is that you don't have the Warning at the beginning ...

Since I have not changed the version when doing those commit, it is possible that your version is not upgraded. It might be worth uninstalling and reinstalling.

indeed, that worked now. Sorry - I simply hate pip for doing that - but I ran into new errors :|
241108-16:35:01,644 nipype.workflow INFO:
         [Node] Finished "select_boldmask_0", elapsed time 0.000703s.
241108-16:35:03,478 nipype.workflow ERROR:
         Node select_boldmask_1 failed to run on host ccs-ws01.
241108-16:35:03,478 nipype.workflow ERROR:
         Saving crash info to /scratch/data/fmristroke/derivatives/sub-M2121/log/20241108-163432_19f04bdd-ca0c-48b9-a9dd-42c5b5b7560c/crash-20241108-163503-ehinger-select_boldmask_1-89490208-3e59-46d6-873f-0006f98a13a2.txt
Traceback (most recent call last):
  File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
    raise NodeExecutionError(msg)                                                                                nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node select_boldmask_1.

Traceback:
        Traceback (most recent call last):
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 400, in run
            outputs = self.aggregate_outputs(runtime)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/base/core.py", line 429, in aggregate_outputs
            predicted_outputs = self._list_outputs()  # Predictions from _list_outputs                                                                                ^^^^^^^^^^^^^^^^^^^^
          File "/home/ehinger/micromamba/envs/fmristroke/lib/python3.11/site-packages/nipype/interfaces/utility/base.py", line 412, in _list_outputs
            out = np.array(self.inputs.inlist, dtype=object)[
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        IndexError: index 1 is out of bounds for axis 0 with size 1

                                                                                241108-16:35:04,521 nipype.workflow INFO:
         [Node] Setting-up "_acc_msk_tfm0" in "/tmp/fmristroke/fmristroke_0_1_wf/single_subject_M2112_wf/lesion_preproc_ses_262_task_rest_run_10_space_T1w_desc_preproc_wf/lesion_confounds_wf/acc_msk_tfm/mapflow/_acc_msk_tfm0".
241108-16:35:04,522 nipype.workflow INFO:

Ooh I see, I fixed this error in my last commit today, sorry about that. You actually should have all the derivatives in your output folder, I just forgot to stop some part of the processing for the bold runs that are too short so it raises some errors that have no impact on the desired outputs. These error messages are fixed in the  newest version of the code.

Nice ! thank you ! I fixed the issue about the boilerplate, so no more error message.
Thank you for trying on the latest fmriprep version ... It is hard to test all the version since new versions come out quite regularly. I added some info in the docs about fmriprep version, for now I recommend using versions prior to 24.0.0.
Closing this issue, thank you again for your time and valuable feedbacks !


Fix community engineering slack channel link

Purpose of this pull request
This pull request (PR) fixes community engineering slack channel link.
Affected pages

https://developer.adobe.com/commerce/extensibility/amazon-sales-channel/

I support this update. @keharper can you approve?


Better processing of errors in named address assignment (Move.toml)

Move cli internally chops off in all addresses assigned in Move.toml the initial prefix if it exists.
The  "Ox10" will become a simple "10" and then works ok. Not sure the actual numeric value is ever important.
But "0xF" will fail, since if will be converted to "F" and then the parser (in cli) will fail to match a number.
In this PR I simply reject the decimal format. It is probably enough, since I did not find any example where they are used.
And I'm trying to return from the parser a readable informative message.
If we ever need to support the decimals in assignment, we may probably need to go deeper into manifest processing.
Labelling this both: as Bug - for dec format fixing, and as Enhancement - for better error msg.

LGTM. I guess some tests are pending?

LGTM. I guess some tests are pending?

As I was working on the tests I also found that the arguments in -p and -c options incorrectly processed if they were relative paths. I will fix this too.

The reported failure works on my system:
sol@dev-equinix-new-york-2:~/work/git/move/language/tools/move-mv-llvm-compiler:081423-better-msg-in-addr-error *$%$ LLVM_SYS_150_PREFIX=/home/sol/work/git/platform-tools/out/rust/build/x86_64-unknown-linux-gnu/llvm PLATFORM_TOOLS_ROOT=/home/sol/.cache/solana/v1.35 cargo test -p move-mv-llvm-compiler --test ir-tests
   Compiling move-mv-llvm-compiler v0.1.0 (/home/sol/work/git/move/language/tools/move-mv-llvm-compiler)
    Finished test [unoptimized + debuginfo] target(s) in 0.92s
     Running tests/ir-tests.rs (/home/sol/work/git/move/target/debug/deps/ir_tests-747d9954b97fadb1)

running 7 tests
    Finished dev [unoptimized + debuginfo] target(s) in 0.32s
ignoring tests/ir-tests/small.mvir
test run_test::small.mvir ... ok
test run_test::expected-fail.mvir ... ok
test run_test::struct-pair.mvir ... ok
test run_test::friend.mvir ... ok
test run_test::empty-module.mvir ... ok
test run_test::struct.mvir ... ok
test run_test::struct_arguments.mvir ... ok

test result: ok. 7 passed; 0 failed; 0 filtered out

LGTM.  However, I would prefer to keep move-mv-llvm-compiler a simple tool for translating Move bytecode to LLVM, and not building into it capabilities of move-cli.  Maybe, it's a better idea to extend actual move-cli so that it could invoke move-mv-llvm-compiler to generate BPF .so files.

LGTM. However, I would prefer to keep move-mv-llvm-compiler a simple tool for translating Move bytecode to LLVM, and not building into it capabilities of move-cli. Maybe, it's a better idea to extend actual move-cli so that it could invoke move-mv-llvm-compiler to generate BPF .so files.

It would be something very different. We do not enter Move compiler "thru the front door", but rather use some available api.


Putting mage/range weapon on long range shows as melee

When you have a mage or range weapon set to long range it highlights your melee armor instead of your mage or range armor

Please don't create duplicate issues, it just causes me to take extra time to reply to each individually.
https://github.com/BraveH/gear-switch-alert/issues/19#issuecomment-2384703943


feat: get compose attachments

Closes #657

Hey there and thanks for the patch!
This looks like great stuff, and I'm all for it. You cleaning up all whitespaces and stuff creates  bit of a messy PR, but I guess it's worth just getting done, so don't sweat it over that.
Please note that it seems like you have extended the API with new calls and new types, and when we do that, we also need to update the type-definitions. Can you handle that? :smile:
Could you bring them in line with your code-changes, and maybe also add your new functional call to the readme?

Updated the type definitions and readme

Looks good to me. Let’s rock! Thanks for contributing!


tedge cert upload c8y: ambiguous file/folder not found error - missing path in error message

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

When trying to upload the device certificate to Cumulocity IoT using tedge cert upload c8y, the command failed with a No such file or directory error, however it did not mention which file/folder does not exists which makes it very difficult to fix the issue.
The following shows the error messages printed to the console:
$ tedge cert upload c8y --user<EMAIL_ADDRESS>Enter password:
Error: failed to upload root certificate

Caused by:
    0: I/O error
    1: No such file or directory (os error 2)

After doing my own debugging it was found that the ca-certificates package was not installed, so most likely the command was failing because the /etc/ssl/certs folder did not exist.
Describe the solution you'd like

The above error message should always included the path to the file/directory which does not exist to better explain to the user why the command failed so that they can fix the issue.
Describe alternatives you've considered

Additional context

To verfiy the fix:
Install   thin-edge

sudo tedge config set c8y.root_cert_path /etc/ssl/certs_test

sudo tedge cert upload c8y --user <user>

The output of the above command must be as below
Root certificate path /etc/ssl/certs_test does not exist

Revert the root path to default value
sudo tedge config unset c8y.root_cert_path

QA has thoroughly checked the feature and here are the results:

[x] Test for ticket exists in the test suite.
tests/RobotFramework/tests/tedge/tedge_upload_cert.robot
[x] QA has tested the function and it's functioning according description.


Issues with hyperdeck: Goto Clip (name) function

I'm currently using companion to control the playback of clips from a Hyperdeck mini recorder. I have assigned individual clips to separate buttons which directly play and loop the clips when activated.
I have re-named each clip on the SD cards so that I can easily select them by using the "hyperdeck: Goto Clip (name)" function.
This function works ok until new clips are recorded onto the SD cards. Whenever a new clip is recorded, the buttons no longer activate the correct clips.
It appears that the "hyperdeck: Goto Clip (name)" function is retrieving clips based on their position on the SD cards and not by their actual file names. This creates a problem when new clips are recorded onto the SD cards. When new clips are recorded, they are mixed in with existing clips and this changes the order in which the clips appear on the cards. This results in the wrong clips being triggered.
Is there a way of changing the "hyperdeck: Goto Clip (name)" function to retrieve clips based on their actual file name and not the order that they appear on the SD cards?
Regards,
Rod

Indeed, such retrieve function by clip name would be great ! Even though it would be tough code-wise to get instance feedback based on the same variable.  But this would be nice indeed.

The Hyperdeck protocol does not, in and of itself, support targeting a clip by name. The companion module is trying to get around this by building a dictionary of file names for the user, but underneath it is storing the clipID and using that when the action is triggered.
This obviously causes issues when there are clips on the deck with non-standard names since, as you have discovered, newly recorded clips can result in a change of clip order (Hyperdeck sorts clips by name, so if all clip names are auto-generated and sequential this shouldn't happen).
The code, as written, doesn't account for the possibility of the clip order changing. Fixing this will not be entirely trivial, as the assumptions of the code need to change and expand.
One solution may be to change the name option from a drop-down list to a text field; this require prior knowledge and entering the name manually & accurately, but then the actual name would be stored in the action, rather than an ID that is not directly linked to a name. The matching up with and ID would then be performed at action time, so would always match to the correct ID.
@baltedewit I think this was your code. Thoughts?

Is there a way of changing the "hyperdeck: Goto Clip (name)" function to retrieve clips based on their actual file name and not the order that they appear on the SD cards?

Not possible with the API, unfortunately. We've had to some "smart" stuff to get around this but only so much we can do.

This function works ok until new clips are recorded onto the SD cards.

if you are using companion for this I would suggest prefixing the name with the clip count variable. (I think that's possible?) That way a new clip will not mess up the existing indexes.

One solution may be to change the name option from a drop-down list to a text field;

We should simply change the id of the dropdown to be the clipName instead, possibly filtering out duplicates. Good idea to do this lookup at rundown!

I'm thinking about changing the Goto Clip (name) function to take a text field as input, rather than a dropdown. This would have the advantage of allowing actions to be programmed without having a live connection to a deck with the correct media inserted at the time. It would also allow the use of variables in clip names.
Any opinion on this as a change would be useful. I'd rather not have two functions doing the same thing--with different input fields--as that seems more confusing, and there is certainly more flexibility and power from making it a text field, and I think the benefits outweigh having to type in clip names manually.

I think I recall creating this on request of @JeffreyDavidsz, so he may have opinions on this.

Changing the dropdown to a textinput field will make it harder for users to use the action in this module, you would need to extract the exact filename and type it in manually instead of just selecting it.
I would suggest to use the ClipName as ID as @baltedewit  said. then fetch the correct ID from the deck when pressed. (Assuming communication will be fast enough).

I agree with your point on ease with a dropdown. However, the counter argument is that, with a drop down it is only possible to programme a button where the clip already exists and is plugged into an active, connected deck, at the time of programming.
There there is the case I mentioned of using variables to dynamically control which clip is selected (a real use case I have been discussing with someone).
One solution would be to use a dropdown with tags--that would allow manually setting a name or choosing a clip from the list. This wouldn't deal with the variables issue though, I don't think? It's not mentioned in the Wiki but I'm guessing that variables are only parsed in textwithvariables options.
An other option is to create a new, separate action for "Goto Clip (name, text)".  Or the action could have a dropdown and a text field, both optional, with one taking priority in the case that both are set. However, both of these feel rather inelegant and potentially confusing.

The only issue to which I can't see a solution, is that this will be a breaking change for existing actions.

Converting it to a Goto clip (n) action makes the most sense

I would suggest to split the actions. The current one can be converted into Goto clip (n) as @baltedewit suggested. The new actions gets a new name and is perfect the way @sphlabs created it.
2 types of users; 1 getting each show different files, the can switch to the new action. 2 fixed SD Where the files are stored in order. You would need to check if the ID's are actually 0,1,2,3,4 etc.
In this case there are no breaking changes for old users. @sphlabs could you arrange this?

Moving discussion to slack


make pool roles optional

Main feature that's being added is:

The pools now can have explicitly optional roles. One can currently achieve this as well, by setting the role to some address that is publicly known to be key-less, but that's a bit janky. Now, roles can simply be set to None.
Now, a pool can express things like:

If I set my root to none, I will never change any of the roles again.
If I set my nominator to none, I will never change my nominations.
If I set my state_toggler to none, I will never be able to destroy this pool (unless if it gets slashed up to 90%, which should really rarely happen).
Note that governance can re-set any of the above if needed.

Any pool needs to set nominations at least once. To prevent mistakes about this, the create call MUST specify all roles. Then, a call to update_roles can remove any of the roles that should no longer exist. Similar to a chain, a pool can operate for a while with root and then destroy it.
Other than this

I added a test to demonstrate a confusion that you cannot bail out of slashing, if you unbond in the same era

made a small change to make maybe_merge_pools a bit more comprehensible. This function is only used in a few instances and should be trivial to check.

[x] (unfortunately) Needs a migration that moves the current pool roles in westend and kusama to the new format. This should be fine. This is exactly for now we proposed deploying pools on kusama with a bound on the maximum number of pools (128), so we can do such surgeries easier.

To avoid needing to migrate Polkadot pools as well, we should merge this before 0.23 and deploying anything to Polkadot.
polkadot compnaion: https://github.com/paritytech/polkadot/pull/5524

bot merge


release semaphore on exit from startfarm

Small bugfix of the issue when bots that finished farming were ignoring !stop command. This was because of semaphore not always released in StartFarm.

Thanks for pointing that out, but this solution won't fix it, actually it'll cause more semaphore released than acquired, because Semaphore.Release() is called in Farm() function as well.

True, haven't seen it. But releasing in the end of the StartFarming is still required, because this would occur if nothing to farm.

Yeah I'm working on better solution because you pointed me on the right track.

You can try latest pre-release to see if it fixed all your issues -  https://github.com/JustArchi/ArchiSteamFarm/releases/tag/<IP_ADDRESS>-pre1
Personally I can't reproduce anything anymore, so hopefully everything is fixed and thread-safe now.

I switched to pre-release now (had to change timeouts again, but that's another issue), if I would meet any issues I'll inform you as soon as possible.


Updates to run from source and build app on MacOS

Gah, this is frustrating.  It works fine from source, and it works ONCE from the compiled binary app...but only once.  On the SECOND call to DeviceFinderUSB.bus_polling, it dies — not on the call to usb.core.find(), but on the attempt to iterate the returned generator...

"Gah" fixed.


fix(kit): InputSlider fix decimal limit

PR Checklist
Please check if your PR fulfills the following requirements:

[ ] The commit message follows Conventional Commits
[ ] Tests for the changes have been added (for bug fixes / features)
[ ] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?

[x] Bugfix
[ ] Feature
[ ] Refactoring
[ ] Code style update
[ ] Build or CI related changes
[ ] Documentation content changes

What is the current behavior?
Closes #1212
What is the new behavior?
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 81.395%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
35

Relevant Lines:
43

💛  - Coveralls


update vendor for qcloud cos-go-sdk

这个 PR 实现什么功能/修复什么问题:
修正：更新vendor
是否需要 backport 到之前的 release 分支:

release/2.11
release/2.12
release/2.13

/area util
/cc @zexi @yousong

Codecov Report

Merging #3724 into master will increase coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff            @@
##           master   #3724      +/-   ##
=========================================
+ Coverage    6.93%   6.94%   +0.01%
=========================================
  Files         500     500
  Lines       84057   84057
=========================================
+ Hits         5829    5838       +9
+ Misses      77734   77723      -11
- Partials      494     496       +2

Flag
Coverage Δ

#aFlag
6.94% <ø> (+0.01%)
:arrow_up:

Impacted Files
Coverage Δ

pkg/cloudcommon/db/lockman/fifo.go
80% <0%> (-10%)
:arrow_down:

pkg/cloudcommon/cronman/cronman.go
54.85% <0%> (+5.33%)
:arrow_up:

Continue to review full report at Codecov.

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

/lgtm
/approve


There isn't any code

This application doesn't work. There isn't any code.

Closing as this is a feature, not a bug.


Everyone can see your stats by adding + after your shortened link

I recently discovered that with bit.ly, if the user has not set his bit.ly settings to private, anyone can see the stats on the bit.ly link (allowing for very interesting competitor analysis).  It appearls that yourls links have the same problem
http://yourls.org/di+ shows you all the link stats for example.
Is there a way we can make it private?
Thanks.
Debbie

Explained in the readme.


'Restore' feature to restore Kubernetes Resources from S3 backup

Restoring a Kubernetes environment (from a previous backup https://github.com/kubernetes-incubator/kube-aws/pull/507) may be executed through the use of a bash script
The script was designed to be used by the cluster provisioner and assumes that their local machine has:

'kubectl' installed locally
'aws' installed locally
'jq' installed locally
'kubeconfig' configured correctly
'jq' configured correctly
cluster is reachable

The script will (kubectl) create Kubernetes resources per namespace. All namespaces (and associated resources) are restored by default with the exception of namespaces: 'kube-system' and 'default'.
To whitelist namespaces, include the desired namespace names as additional arguments after the initial BUCKET_URI argument.
The BUCKET_URI argument is the URL of the timestamped folder.
Implementation

The script will initially validate that the namespaces it is to restore are not already existing.
Kubernetes resources common to all namespaces (such as StorageClass) are created.
For each namespace to restore, the namespace is created and Kubernetes resources within the namespace are created.

Considerations

Restoring PersistentVolumes does not provision new volumes from AWS - it assumes such volumes already exist in AWS.
You may have to tailor the script for your specific needs.

Codecov Report

Merging #535 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #535   +/-   ##
=======================================
  Coverage   38.06%   38.06%
=======================================
  Files          46       46
  Lines        3145     3145
=======================================
  Hits         1197     1197
  Misses       1752     1752
  Partials      196      196

Continue to review full report at Codecov.

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

@jollinshead Thanks for the PR!
I especially like the well-written documentation 👍
One nit for now: Would you mind moving your script under contrib like e.g. contrib/cluster-backup/restore.sh?
Also, having a seperate OWNERS file at contrib/cluster-backup/OWNERS like cluster-autoscaler does would also help us maintain the script.
If you're ok with that, please fill your name in the approvers and reviewers section of the file.

@mumoshu Done 👍

@jollinshead Thanks for your efforts 👍


SCComplianceSearchAction 'Preview' type is not handled correctly

Details of the scenario you tried and the problem that is occurring

I create a new compliance case search
i click on save & run
preview results are created
after a while Get-ComplianceSearchAction -Case 'SomeCase'  will return a search action that has Action set to Preview

This causes some errors to popup during the extraction process.
Verbose logs showing the problem
xception calling "IndexOf" with "2" argument(s): "Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: startIndex"
At C:\GitProjects\Office365DSC-SysKit\Modules\Office365DSC\DSCResources\MSFT_SCComplianceSearchAction\MSFT_SCComplianceSearchAction.psm1:463 char:5
+     $end = $ResultString.IndexOf(';', $start)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ArgumentOutOfRangeException

Get-TargetResource : Cannot validate argument on parameter 'Action'. The argument "Preview" does not belong to the set "Export,Purge,Retention" specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command
again.
At C:\GitProjects\Office365DSC-SysKit\Modules\Office365DSC\DSCResources\MSFT_SCComplianceSearchAction\MSFT_SCComplianceSearchAction.psm1:433 char:42
+             $result = Get-TargetResource @params
+                                          ~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Get-TargetResource], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Get-TargetResource

Suggested solution to the issue
something like this: https://github.com/SysKitTeam/Office365DSC/pull/7/files
I would create a pull request on this repo, but we are more focused on the extraction process and could not verify that the Set-TargetResource works as it should.
The DSC configuration that is used to reproduce the issue (as detailed as possible)
The operating system the target node is running
Version of the DSC module that was used ('dev' if using current dev branch)
dev

Thanks @vinkobedek please proceed with the PR's creation. I will validate the Set logic.


gentx - marco

Please make sure your node is up and running now. Join #validators on Discord for help: https://discord.gg/QeJWCrE.


Unable to type Korean 3-letter syllabic blocks

Describe the bug
Korean combines characters to build syllabic blocks. Currently it's not possible to type some combinations on Android with some keyboards.
To Reproduce

Pixel 5 Android 11 emulator
Use gboard, add the 2-bulsik Korean keyboard layout
In a TextBox press ㅅ + ㅓ + ㄴ
See 서ㄴ

Expected behavior
선
Avalonia version
11.2.999-cibuild0051694-alpha
OS
Android
Additional context
https://github.com/user-attachments/assets/ac46b8fc-aa5c-4f49-8670-731db6a02776

This is very finicky.

On Pixel 7, gboard is failing to create any syllabic blocks, but this happens both within Avalonia and OS itself.
On Pixel 5 (as shown above), there's clearly a problem with gboard specific to Avalonia and its IME handling.
SwiftKey appears to work fine across devices.

@emmauss, sorry for the ping, just wanted to check that this issue has not been buried untriaged (it's hard to tell without any tags) as these Android IME problems are quite painful and very disruptive for users. Forgive me if you have indeed noticed;).

@kerams if you want to put priority on any issue you can do it in case you have a support agreement. Otherwise this is as any open source project and done when anyone has picked up the issue. Or you can try to file a PR if you manage to debug it on your own. Thanks for your understanding m

Reproduces on iOS with the same 3 characters and built-in keyboard.

So I stepped through AvaloniaInputConnection.cs, and am confused by the fact that when 서 is typed, FinishComposingText is invoked for some reason, so ㄴ then starts a new block. Surely one is not expected to handle this on the application level? But then how is it possible that the same keyboard can produce 선 in Chrome?

This is how Korean ime works. It replaces the previous symbol with a new one if the next input forms another syllable.

Please reread what the issue is.

Yeah, thanks, but 서 + ㄴ should form 선.

Yeah, thanks, but 서 + ㄴ should form 선 instead of creating 2 syllabic blocks, hence my confusion why FinishComposingText is called already after the first 2 characters (ㅅ + ㅓ).

The Korean IME usually deletes the previous composed syllable. Each key stroke forms a totally valid input that could stand as is. So the issue with Android and iOS is that the previous syllable that should be replaced isn't replaced.

Each key stroke forms a totally valid input that could stand as is

Be that as it may, the sequence of those 3 characters in an empty text box should always form one syllable (that's what SwiftKey does everywhere, and what gboard does outside of Avalonia). What I am trying to find out is what mechanism gboard uses to inform the application that a previously finished composition should change. There are some extra methods on IInputConnection - I thought commitCorrection was promising - but they don't seem to get called.
It's indeed odd that this exact problem manifests on iOS too (again, no issue outside of Avalonia), even though the implementations are completely different.


fix(rules): remove response body from logs

Since the response body could contain personal/sensitive data, it should not be logged and stored anywhere.
A false positive intercepted by a rule could contain unwanted data on logs.
This PR removes all ctl:auditLogParts=+E from all rules

E: Intermediary response body (present only if ModSecurity is configured to intercept response bodies, and if the audit log engine is configured to record it. Intercepting response bodies requires SecResponseBodyAccess to be enabled). Intermediary response body is the same as the actual response body unless ModSecurity intercepts the intermediary response body, in which case the actual response body will contain the error message (either the Apache default error message, or the ErrorDocument page).

Did we come up with a policy for this? Several meetings ago (I guess a couple of months ago?), we agreed to define a policy of "when does CRS apply auditLogParts=+E to rules", as currently it is inconsistent.
Unless, of course, that decision has been made and the policy will be "CRS will never apply auditLogParts=+E" :slightly_smiling_face:

I really would love a policy for this. I remember that we talked about logging request and response body, but I can't remember if we come out with a decision. Maybe we can talk about this at the next meeting

Negative. We talked about this a bit in issue chat July 2021 (https://github.com/coreruleset/project-chat-archive/blob/master/chat-archive-2021-07-19.md), scheduled for August 2021, but then only pointed to https://github.com/coreruleset/coreruleset/issues/2139 which I think is more limited.

@dune73 @RedXanadu What's the decision here then?

@fzipi We still don't have a policy on how to approach this.
I'll add it as a "project discussion" for January's meeting.

Thought about this again. I'm team @RedXanadu. Let's get rid of it and people can enable it themselves if they want to.
Reasoning: If you know there is an audit log, you know how to navigate it and you know to read it, then you are also able to write a rule to write it.
It's not core functionality for us and very hairy anyways. If somebody sees a need, then write a plugin.

Then this makes sense to me also. So provided four people (@theMiddleBlue, @RedXanadu, @dune73 and @fzipi) already said 👍 , let's merge this one.


Fix flaky scrollbar in FileSharing UI tests

What

Added html, body, and .Root styles that apply width and height of 100% to UI test app for Chat just like in our sample apps. This avoid scrollbars outside of composites that cause transient scroll bars when new messages don't fit the browser screen.
I got a build error on storybook shown in this log https://github.com/Azure/communication-ui-library/runs/6856612900?check_suite_focus=true. So I ran rush add -p browserslist@latest on packages/storybook
Why

https://skype.visualstudio.com/SPOOL/_workitems/edit/2883029
How Tested

Tested locally
https://user-images.githubusercontent.com/79475487/173290869-d38714ad-a4cc-48eb-8fe9-4d9bdbb2f081.mp4
Process & policy checklist

[ ] I have updated the project documentation to reflect my changes if necessary.
[ ] I have read the CONTRIBUTING documentation.

Is this a breaking change?

[ ] This change causes current functionality to break.

there is a interesting timing issue with these messages being sent. is this something to do with the fake adapter?


Could not find artifact org.ensime:server_2.10:jar:2.0.0-SNAPSHOT

When I run "mvn ensime:generate", I get the following error:
[ERROR] Could not find artifact org.ensime:server_2.10:jar:2.0.0-SNAPSHOT in central (https://repo.maven.apache.org/maven2) -> [Help 1]

Issue #38 and #35 address this issue.
I am not sure why org.ensime:server_2.10:jar:2.0.0-SNAPSHOT is not found maybe org.ensime has dropped the SNAPSHOT? or do you have snapshots repository added to your build?
<distributionManagement>
    <snapshotRepository>
      <id>sonatype-nexus-snapshots</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

Here is pom.xml:
`

4.0.0
groupId
artifact
1.0-SNAPSHOT
jar
artifact

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

org.ensime.maven.plugins
ensime-maven
0.0.6

Here is ~/.m2/settings.xml:

org.ensime.maven.plugins

`

Can you add this to your pom.xml file and report if it still has issues:
<distributionManagement>
    <snapshotRepository>
      <id>sonatype-nexus-snapshots</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>sonatype-nexus</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

I'm getting same error.

That is a bit strange, are you sure you have added the snapshot repository correctly, can I see the pom.xml after adding the repo? According to this the ensime_2.10 version 2.0.0-SNAPSHOT is in the repo:
https://oss.sonatype.org/content/repositories/snapshots/org/ensime/server_2.10/2.0.0-SNAPSHOT/
Can you confirm that when you tried it you were connected to internet? Thank you again for using ensime and the maven plugin.

Just to let you know, a new version is within sights, tomorrow or the day after, that will polish some rough edges of the plugin.

Can you try version 1.0.0 of the plugin? basically bump the version of ensime-maven from 0.0.6 to 1.0.0

Oh, wow, that's fast. It works, thanks! But I think you should bump the version here http://ensime.org/build_tools/maven/ as well.

Thanks for confirming that it works. The official site will be updated as soon as its PR gets approved.


token sent issue

Hi , may check how to send token? been try this but it failed, it prompt error
[JsonRpcException] -32002 : Transaction simulation failed: This program may not be used for executing instructions
 var instruction = SolanaWeb3.TransactionInstruction(keys: [
    SolanaWeb3.AccountMeta(
      senderIDx,
      isSigner: true,
      isWritable: true,
    )
  ], programId: programId1);

  //final solTransaction = SolanaWeb3.Transaction();

  final transaction = SolanaWeb3.Transaction(
      feePayer: senderIDx,
      recentBlockhash: (await connection.getLatestBlockhash()).blockhash);
  transaction.add(instruction);
  transaction.add(SystemProgram.transfer(
      fromPublicKey: senderIDx,
      toPublicKey: receiver1,
      lamports: SolanaWeb3.solToLamports(1)));

  String tx1 = await connection
      .sendAndConfirmTransaction(transaction, signers: [walletSolana]);

Hi @manking502,
I should be able to help you with this.
How did you generate senderIDx?
If senderIDx is a Keypair, you could try the following:
// Your keypair
final senderIDx = Keypair.generate();

// Create transaction
final tx = Transaction();

// Add transfer instruction
tx.add(
    SystemProgram.transfer(
        fromPublicKey: senderIDx.publicKey,
        toPublicKey: receiver1,
        lamports: SolanaWeb3.solToLamports(1),
    )
);

// Send transaction to cluster and wait for confirmation.
String signature = await connection.sendAndConfirmTransaction(tx, signers: [senderIDx]);


Add NameLookup Type to make looking up entities by name easier

Objective
Looking up an entity by name is somewhat difficult, and only done within bevy_animation. The actual code is difficult to read, and outside crates also have a need to lookup entities by name. To facilitate an easier interface, I've created a NameLookup type (which implements SystemParam), and provided a few methods for looking up entities.
Motivation
I'm currently working on a Inverse Kinematics solver for Bevy, which requires the ability to lookup bones in an armature by name (in the same way an animation does).
Solution
I've provided an implementation of a NameLookup type, which implements SystemParam.
The interface is roughly:
impl NameLookup {
    pub fn lookup_any(&self, path: &EntityPath) -> Result<Entity>;
    pub fn lookup(&self, root: Entity, path: &EntityPath) -> Result<Entity>;
}

This also avoids the need to use loop labels (sort of a goto), be refactoring into multiple methods.
There is a note in the current code that lookup by EntityPath can be optimized for better performance. By refactoring it into an independent method, we isolate the lookup itself, and allow benchmarking & testing of the lookup code independent of the rest of the animation logic. Because this is also a public type, external crates can also benefit from performance improvements. Finally, this is also a unified place to implement caching (if possible), to avoid repeated lookups.

I'm not sure if animations is the right place to put this, since it might belong in core or ecs (given that is could be used more generally, even if animations aren't enabled).

Yep, I'd put this in core :)

I'm not sure if animations is the right place to put this, since it might belong in core or ecs (given that is could be used more generally, even if animations aren't enabled).

In or next to https://github.com/bevyengine/bevy/blob/main/crates/bevy_core/src/name.rs please!
I would also like a few tests on those functions.

After some analysis, I think it might be possible to remove EntityPath altogether. My initial assumption was that the EntityPath matched the gltf format, but after looking into the format, it doesn't appear to be the case. Rather, by reordering some code within the GLTF file loader, it's actually possible for AnimationClip to store the actual Entity id, rather than the path. This also provides support for animating nodes without names (since we don't need them). This also removes the need for external crates to lookup by path, since AnimationClip would provide the actual id, rather than the path.

Rather, by reordering some code within the GLTF file loader, it's actually possible for AnimationClip to store the actual Entity id, rather than the path. This also provides support for animating nodes without names (since we don't need them). This also removes the need for external crates to lookup by path, since AnimationClip would provide the actual id, rather than the path.

Fantastic, I like the sounds of that direction. Can you make sure to update the PR description and title to match the actual work done in the PR when you're ready?

it's actually possible for AnimationClip to store the actual Entity id, rather than the path

That's actually not possible because an AnimationClip can be applied to several entity hierarchies, which is why we are using path with names.
The scenario you're describing would only work for an animation on only one scene, but would break if one was to spawn the same scene multiple time and reuse the same animation. Also, it's often the case to distribute animations and models in different gltf files, in which case there are no knowledge shared of entities.

it's actually possible for AnimationClip to store the actual Entity id, rather than the path

That's actually not possible because an AnimationClip can be applied to several entity hierarchies, which is why we are using path with names.
The scenario you're describing would only work for an animation on only one scene, but would break if one was to spawn the same scene multiple time and reuse the same animation. Also, it's often the case to distribute animations and models in different gltf files, in which case there are no knowledge shared of entities.

I'm not sure how to distribute animations and models between multiple gltf files, especially since the gltf format uses indicies internally. I guess maybe you could duplicate the bones into a separate files, but I'm not sure how common this actually is.
I'm not a fan of the current name based approach, and I don't think applying the same animation to several entity hierarchies is necessarily worth while. That being said, it is something I'm going to have think about.
Spawning the same scene multiple times is a major issue though. I see things like SkinnedMesh work because they are components (so they can update to point at the new entities). It might be interesting to move the AnimationPlayer to be on the SceneInstance, which holds the internal references within the scene. This is going to require some more thought.
Overall, I don't like the name approach, and I would like to come up with a better option. I'm going to mark this as a draft for now, but I'd like to tackle this.

You should look at https://github.com/bevyengine/rfcs/pull/49 (and https://github.com/bevyengine/rfcs/pull/51 while you're there)

After careful reflection, I've chosen to revert back to my original goal with this PR, and open a new PR when and if I have a more complete solution. For now, I'm looking at contributing to the discussion around the RFCs listed above.

CI seems to be lost with your force pushes. Could you push a new commit to trigger it?
And put the PR out of draft if you're happy enough with its state 🙂

CI seems to be lost with your force pushes. Could you push a new commit to trigger it? And put the PR out of draft if you're happy enough with its state 🙂

At this point, I'm still looking into writing tests, so it's not quite ready. I think the actual issue is that my branch is out of date, and CI is does a merge with master before running tests.

@the10thWiz do you have the time to drive this PR to completion? This would be super useful in simplifying our animation code, and I'd like to see it completed. If not, we can mark this PR up for adoption, your commit history and credit to you will be retained.

Removing the Animation label since animation is no longer reliant on name lookups after #11707.

Backlog cleanup: closing due to inactivity, and in favour of #11842 which itself is a little stalled right now. If Discord wills it, I'll create a tracking issue.


Error while installing helm chart from duplicate runAsNonRoot

Hey thanks for this project. I was trying out the helm chart, and I'm currently getting this error:
Helm install failed for release default/sk8l with chart<EMAIL_ADDRESS>error while running post render on files: map[string]interface {}(nil): yaml: unmarshal errors:
  line 30: mapping key "runAsNonRoot" already defined at line 29

With this as my values so far:
namespace:
  create: false
  name: default
  labels: []

I'll open a PR if I find the fix later on. Just wanted to open an issue. Thanks!

Hey! Thank you for taking a look and testing this project! I'm sorry to hear that you're having issues installing it via helm.
At 1st I thought the problem happened because of how short your values are but I tried to replicate the issue with the same values and so far I haven't been able to encounter this problem. I need more info to shine a light on the cause of this problem.
Could you please share the command you used to install the chart? And also knowing your helm version might be of help.
I used the following to install it on the default namespace as you are doing and it worked:
helm upgrade --install sk8l sk8l/sk8l -f values-issue.yaml --set serviceAccount.metadata.namespace=default

I'm passing serviceAccount.metadata.namespace=default because sk8l is hardcoded in the values and I'm assuming every user would want to set their own.
I ran the command with 2 helm versions, both installed correctly:
version.BuildInfo{Version:"v3.13.0", GitCommit:"825e86f6a7a38cef1112bfa606e4127a706749b1", GitTreeState:"clean", GoVersion:"go1.19.2"}

version.BuildInfo{Version:"v3.14.3", GitCommit:"f03cc04caaa8f6d7c3e67cf918929150cf6f3f12", GitTreeState:"clean", GoVersion:"go1.19.2"}

Thank you and I'll keep an eye on this.

Nice, ok just tried with:
serviceAccount:
  metadata:
    name: default

And I get the error:
error while running post render on files: missing metadata.name in object {{v1 Namespace} {{ } map[] map[]}}

Which sounds like I need the namespace section defined, so I ran with:
namespace:
  create: false
  name: default
  labels: []
serviceAccount:
  metadata:
    name: default

And then I'm back to this error:
error while running post render on files: map[string]interface {}(nil): yaml: unmarshal errors:
  line 30: mapping key "runAsNonRoot" already defined at line 29

Oh and I'm using Flux to install it, not using helm directly. Here's what my HelmRepository and HelmRelease objects look like if you're curious... it's a pretty nice tool:
---
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: HelmRepository
metadata:
  name: sk8l
  namespace: flux-system
spec:
  interval: 1m
  url: https://sk8l.io/charts
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: sk8l
  namespace: flux-system
spec:
  interval: 5m0s
  targetNamespace: default
  chart:
    spec:
      chart: sk8l
      version: "0.10.0"
      sourceRef:
        kind: HelmRepository
        name: sk8l
        namespace: flux-system
  # Default values:
  # https://github.com/danroux/sk8l-api/blob/main/charts/sk8l/values.yaml
  values:
    namespace:
      create: false
      name: default
      labels: []
    serviceAccount:
      metadata:
        name: default

I'm not attached to the default namespace though. I'll be back online to experiment more on this later on in the day.
I think other charts I've used follow a different pattern for the namespace. I think they reference the namespace passed to helm at install time (like helm install --namespace foo). It looks like you can then reference it with {{ Release.Namespace }}.
This is speaking out of inexperience a little bit, as I haven't maintained a helm chart before, only have used them so far.

Ah wait, I think I see the issue. I templated it out locally:
helm template sk8l sk8l/sk8l | less

And searched for runAsNonRoot, and there's a duplicate:

Going to make a PR for this real quick...


Protractor tsconfig jesus

This is my proposed solution for #1556
Basically it is Ward's idea but instead of ts-node to compile the test, I compile every test before hand (and only the filtered ones).
Works perfect.
I would need to remove the need of a global typescript, but I will do that if we end merging this.

googlebot, those commits are ok to be contributed.

Added that feature because travis won't pass without that.

Superseded by PR #1561


Ammend fund proposal

Creating PR to pull in update project extrinsic changes

LGTM, lets merge if CI passes


[gitlab] remove allow to fail from integration_tests_otel

What does this PR do?

Remove allow_to_fail from integrations_tests_otel
Motivation

This job ensures that agent modules used by otel do not contain CGO dependencies and that can compile with Go 1.21.0.
The job is stable on branches, failures were expected
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


[Ensou song select] Folder issues with Recently played songs

While opening 2 specific folders (Recently played songs and one of the folders containing songs displayed within the Recently played songs folder), the following issues occur :

By closing the 2nd folder, the songs within the Recently played songs folder disapear
In some cases the display for the Recently played songs folder is broken and the 2nd folder contents aren't displayed

It's a pretty rare bug and usually very rarely occurs if you don't directly aims for it, folders are also restaured after closing the Recenty played songs folder, please avoid opening the 2 folders at the same time for the moment.

Issue seems to be more like a parent node issue, closing the 2nd folder removes all it songs in common with the recently played songs, and navigating issues consider the one in recently played songs is actually owned by the 2nd folder

The problem is that considering both song nodes (On both Recently played songs and og folder) refer to the same object (Shallow copy), opening both folders create a confusion while fetching the "On which folder is this song ?" thing, and changing it do a Deep copy/clone would create a different issue (Clears/Ranks not being updated for both after clearing one, since it would be two distinct objects in this case), I'll flag this as won't fix for the time being.

Fixed by #269


chore(deps): updates topology and tekton plugin

Description
Update topology and tekton plugin to include the latest features and fixes.
Which issue(s) does this PR fix
Toplogy Features:

fix to layout nodes correctly on first load (#1194)
stop polling after log streaming completes (#1122)
added default runtime icon to topology nodes (#1157)

Tekton Features:

fix #922 and #962 by using full width for pipeline visualization
external sbom view action should not open logs modal (#1152)
fix #947: Reset pagination when changing any filter (#1140)
stop polling after log streaming completes (#1122)

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[ ] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

/cc @karthikjeeyar
/cc @rohitkrai03
/cc @debsmita1
/cc @divyanshiGupta

Tested locally, everything works as expected.
/lgtm

/approve


Internal error while processing swagger2-2.0.2

and current master 863b414893da1db41da6a6e22dc4933684e29da9
    Warning: Data.Swagger.Lens: could not find link destinations for:
        ~
    Warning: Data.Swagger.Internal.Schema: could not find link destinations for:
        ~
    Warning: Data.Swagger.Schema: could not find link destinations for:
        ~
    haddock: internal error: spliceURL UnhelpfulSpan

EDIT happens when trying to find line to print Source for instances methods:
-      UnhelpfulSpan _ ->
-        error "spliceURL UnhelpfulSpan"
+      UnhelpfulSpan _ -> "very-weird-line"

IIRC those are template-haskell derived classes and instances: so the definition site is not-so-clear. The easy fix would be to drop line- anchor for now (i.e. make line variable of type Maybe String), I'm no idea how to make proper fix, or if it possible inside haddock at all.
EDIT2 The above consumes link has the correct line anchor. Links from external modules have the format of .../doc/swagger2-2.0.2/src/Data.Swagger.Lens.html#consumes i.e. by name!

I'm quite sure https://github.com/haskell/haddock/issues/505 is the same, as I noticed that the error is not always printed while trying to workaround the issue.

I see the fix has merged into ghc-head.  I suppose I could install a bleeding-edge haddock+ghc to generate docs, but it would be nice if there was some known workaround to hobble along until GHC 8.0.2 is released.  Any ideas?

I'm getting bitten by this UnhelpfulSpan. I thought the fix might have found it's way into 2.17.3 but upgrading from 2.17.2 to 2.17.3 doesn't fix it.
Is there another way to work around the problem? I'm pulling in Haddock via Stack on lts-8.5.

A new release is on its way. But you can try this
https://github.com/haskell/haddock/tree/<IP_ADDRESS>-spanfix until we cut a
release.
Steven Shaw<EMAIL_ADDRESS>schrieb am Mo., 3. Apr. 2017, 07:33:

I'm getting bitten by this UnhelpfulSpan. I thought the fix might have
found it's way into 2.17.3 but upgrading from 2.17.2 to 2.17.3 doesn't fix
it.
Is there another way to work around the problem? I'm pulling in Haddock
via Stack on lts-8.5.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/haskell/haddock/issues/508#issuecomment-291052263,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AByiiSJHe58yFjUeFvwuIQbvIMLnaXM-ks5rsISQgaJpZM4IkOjJ
.

Thanks @alexbiehl, I'll give that a shot. Any idea if there's a way of providing an alternative haddock version to use with Stack? I'm thinking I may settle for clobbering ~/.stack/programs/x86_64-osx/ghc-8.0.2/bin/haddock.

@steshaw that's what I have been doing, overwriting the haddock binary there.

Thank you @alexbiehl and @phadej. Works here!


Add use of VK_EXT_debug_marker

Hey! I'm playing evangelist for a bit :).
This PR adds the use of new functions exposed in VK_EXT_debug_marker, to allow object labelling and command buffer annotation. Currently RenderDoc supports this in the latest version (v0.29), but I imagine other tools and likely the validation layers will support it in future.
I've committed the latest header from the KhronosGroup/Vulkan-Docs repository, but if you want you can wait until the next SDK drop to merge this and replace that commit with the vulkan header from that SDK, it's up to you.
I also added example usage to the bloom sample - you don't have to take that commit either I just wanted to show what it would look like. Here's some screenshots of RenderDoc showing some of what it does:

Awesome :smile:
Just downloaded the recent RenderDoc release and testing with a more advanced Vulkan demo and VK_EXT_debug_marker sounded like an awesome idea.
Will add this to all of the examples this week :+1:

Finally got around merging this. Note that I did not merge the changes to the bloom example but only the changes to the base files.
This is because rather than just adding the debug markers to an existing example I'll be doing a separate example to demonstrate the debug marker extension and also want to do a small write up (or tutorial) on implementing the debug marker and using it RenderDoc.

Thanks! That's totally fine, I just included the bloom example to show how it could be used :smile:.


Toonify and clean up materials

Toon all the things
Delete/replace unused/obsolete materials
Fix normal maps in toon shader (transform from tangent to world space)
Reorganize file structure for models and materials

Note to self: try spawning players in empty children of the current spawnpoints

discrete bloom steps

Do note that bloom and specular highlights are not the same, and I think you mean discrete specular steps here. Before making the specular highlights discrete, we may need to fix the normals of several models in order to avoid  results that are further exaggerated by discretizing the steps. I haven't looked into discretizing the bloom effect yet, and I'm not certain that we should do so.

Seeker material fixed

I think we should set the AuctionToon material's smoothnes to 1.
We might consider setting smoothness to 1 on the materials of models that are currenty broken (like the antenna in cratertown).
I think also setting the smoothness of the plates in grand canyon to about 0.9 might be better? I think my main gripe with grand canyon is that the plates looks so much darker, maybe we could just the color/brightness to compensate? 🤔
Previous (lighter material colors):

Current (darker colors):


warning Failed to resolve ...  with declaration references. This link will break in v0.24.

Search terms
warning Failed to resolve
Expected Behavior
No warning
Actual Behavior
warning Failed to resolve {@link https://stackoverflow.com/questions/92720/jquery-javascript-to-replace-broken-images} in data/employee.getFallbackImage with declaration references. This link will break in v0.24.
Steps to reproduce the bug
/**
*	Return a fallback image if user image not found
*
*	Usage {@link https://stackoverflow.com/questions/92720/jquery-javascript-to-replace-broken-images}
*	Usage {@link https://stackoverflow.com/questions/8124866/how-does-one-use-the-onerror-attribute-of-an-img-element}
*	@returns {string} - The path to the fallback image
* 	@example img.onerror=getFallbackimage()
*/
export function getFallbackImage(): string {
	return 'xxx';
}

Environment

Typedoc version: 0.23.5
TypeScript version: 4.7.4
Node.js version: 18.4.0
OS: maCOS 12.2

Web links are not a valid declaration reference, this is a valid warning. You should use a markdown link instead.
This might be something that I could be convinced to add support for given that JSDoc for some reason decided to allow it, but I'm not aware of any reasons to use it over a regular markdown link.

@Gerrit0 Could you elaborate on what a markdown link is or how this @link would need to be rewritten. Just using regular html markdown like Usage does not seem to end up in the documentation.

Markdown links: https://www.markdownguide.org/basic-syntax/#links
Your html should work too with the default settings, maybe you're rendering to markdown and giving it to some other pipeline which doesn't support in-line html?

I have with the markdown syntax as well, but it does not seem to work as expected.
typedoc.json:
{
	"entryPoints": [
		"./src"
	],
	"entryPointStrategy": "expand",
	"out": "doc",
	"exclude": [
		"node_modules"
	]
}

source:
/**
 * Return the total of two numbers.
 *
 * 	Duck Duck Go
 * 	[Duck Duck Go](https://duckduckgo.com)
 *
 * @params p1 - The first number
 * @params p2 - The second number
 * @returns The total
 */
export function add(p1: number, p2: number): number {
	return p1 + p2;
}

result:

You indented it by 4 spaces. That's (one of several) markdown syntaxes for a code block. TypeDoc does very little processing, and passes your comment on to Marked, which is responsible for this behavior.

It was actually a tab but thank you very much for finding the problem.
Given the tricky markdown syntax, I think it would be nice to support the @link syntax with an external URL.

At this point, I'm leaning towards not allowing this. Using a tag implies that the link is intended to be resolved by TypeDoc. There's no point in giving this link to TypeDoc unless you're expecting it to do something with the link... and it doesn't.
There are several markdown alternatives to this:
http://example.com (if you have marked's gfm option on to make it behave more like GitHub's markdown)
<http://example.com>
link text
[link text](http://example.com)

Notes:

You can override marked's configuration with the markedOptions option
Marked's options are listed at https://marked.js.org/using_advanced#options

@Gerrit0 According to TSDoc spec, URLs are allowed in {@link}:
https://tsdoc.org/pages/tags/link/
/**
 * Let's learn about the `{@link}` tag.
 *
 * @remarks
 *
 * Links can point to a URL: {@link https://github.com/microsoft/tsdoc}
 *
 * Links can point to an API item: {@link Button}
 * ...
 */

I'm fine with using markdown links, however they don't work very nicely in a `@see` tag, at least in VS Code.

An example of using `{@link <URL>}` in a `@see` tag is also shown in TSDoc documentation:

https://tsdoc.org/pages/tags/see/

```ts
/**
 * Parses a string containing a Uniform Resource Locator (URL).
 * @see {@link ParsedUrl} for the returned data structure
 * @see {@link https://tools.ietf.org/html/rfc1738|RFC 1738}
 * for syntax
 * @see your developer SDK for code samples
 * @param url - the string to be parsed
 * @returns the parsed result
 */
function parseURL(url: string): ParsedUrl;

What a markdown link looks like in VSCode. Functionally its fine, though the syntax highlighter isn't fond of it. (I realize that isn't in the scope of TypeDoc, but wanted to document it here for reference)

@frank-weindel Thank you for the update. I still believe that support for @link syntax with an external URL would be a helpful feature.

... no idea how I missed that when adding support for declaration references. I guess I started with https://tsdoc.org/pages/spec/overview/ and never actually looked at @link.

Thank you!


The RawGameController.GetCurrentReading method doesnt work. It only returns the value for the axis, however the Switchposition and Button values are always on their default values - SwitchPosition.Center and False respectively

[Enter feedback here]
When you Poll the stick the buttons will always stay false even though they are pressed and all the switches on the controller will be centered even tho they are not centered.... Only the axis values seem to change....

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

ID: 010c28ba-ca95-3878-b3b7-8a31aed9ca21
Version Independent ID: 07d4cab6-e3e3-a86a-0e14-f33d967a75e6
Content: RawGameController.GetCurrentReading(Boolean[], GameControllerSwitchPosition[], Double[]) Method (Windows.Gaming.Input) - Windows UWP applications
Content Source: winrt-api-build/xml/Windows.Gaming.Input/RawGameController.xml
Product: uwp
Technology: winrt-reference
GitHub Login: @Karl-Bridge-Microsoft
Microsoft Alias: kbridge

Sorry everyone bug in code, it was my fault... tested it and everything works fine.
Thanks  and sorry again :)


Save levels variables.

Save Auto mid point, logarithmic, etc to config. Do not save the white/mid/black points though.

Fixed in 288ee381b86594accc7a74003d1d99ad6098c1f9


Add support for additional where* methods to route groups

This PR addresses the change originally mentioned in #43509 and reverted in #43523.
Unlike the original PR, it adds support for all of the additional where* methods available on a route, to a route group, by adding the CreatesRegularExpressionRouteConstraints trait.
It works directly on the router, handled by Router::__call with an explicit check for beginning with where, that proxies to the method. There is no check to see if the method exists, because if it does not, it will be passed to the RouteRegistrar::attributes method automatically, so will achieve the same without the requirement for an additional condition.
Route::whereIn(['foo', 'bar'], ['one', 'two'])->prefix('/{foo}/{bar}')->group(function () {});

And on a RouteRegistrar, using the trait.
Route::prefix('/{foo}/{bar}')->whereIn(['foo', 'bar'], ['one', 'two'])->group(function () {});

This PR also adds 8 tests that test both of the approaches, as they are slightly different. No changes have been made to RouteRegistrar::allowedAttributes because the trait turns them into where attributes.

@ollieread Have you tested this with route caching enabled?

@ollieread Have you tested this with route caching enabled?

I have not, but I'm confident that I do not need to. Route groups already support where attributes, and these methods are wrappers for the where attribute. There is nothing new created because of this, it's just easier.


Need to make attack script

Right now InventoryItem has a variable (Use) of type Monoscript. Hammer (ID 0002) is set up to use a script called Use0002 in its InventoryItem. There needs to be an attack script that listens for left clicks while !InvIsOpen and calls the Use() method inside the Monoscript variable of the InventoryItem component of the HotbarSelect.EquippedItem.

This now functions: after adding the IUseable interface, having use scripts inherit from this interface allows their use method to be called from the monoscript container. All items can now have their own individual functionality.


Remove manual blend stack spilling and rely on scratch memory instead

This replaces the old register based blend stack (+manual allocation for spill) with one that relies on the shader compiler to spill the variables to private/scratch memory. It has been reliably spilled in my testing and I think it's probably OK to rely on it because:

No GPU could hold array this large in register.
No GPU AFAIK can index registers (one has to use shared or global memory), therefore the compiler would spill larger arrays regardless whether they would fit into registers.

It's worth noting that while the scratch memory is backed by global memory, it also goes through the L1 cache, making most of the loads as fast as shared memory.
The benefits of this approach are:

Better occupancy. kernel4's command list reading has a extremely high latency, and reducing register usage can improve GPU utilization quite a bit.
Code simplicity. Nothing can beat the simplicity of just indexing into an array. Simple, branch-free code also leads to better compiler code generation. The old code avoided global memory access, but it came at the cost of compiler transform based register indexing, which generated long code sequences.
Low allocation overhead. The old spilling logic had to do various synchronization. In this implementation the scratch memory is allocated by the hardware scheduler which seems to be quite fast.

The memory usage due to overallocation might be a concern, but I think it's probably acceptable. My Radeon 5700 XT has 40 CUs and can execute up to 40 wave64s per CU. Therefore, the peak memory usage due to the spilling is:
40 CU * 40 wave64/CU * MAX_BLEND_STACK (=256) * 4 (bytes/entry) * 64 (waves/wavefront) = 104.9 MB
The required memory is proportional to the compute capacity of the GPU; therefore this should be equally negligible on lower-end GPUs. If this is still a concern, then lowering MAX_STACK_SIZE is also an option.
I'm seeing around 15% improvement with the default test case (clip_test + alpha_test + things in render_scene). The new code itself is actually a little bit more expensive I think, but the extra occupancy (and other improvements) compensates for that.
One alternative to explore in the future is to use shared memory to store a small part of the array. This avoids writes to global memory/L2 cache and can give more consistent cache behavior. But currently I feel that the simple logic in this PR would be good enough.

Please compare https://github.com/linebender/piet-gpu/pull/75/commits/22507dea0e15b003bcac8dad215e3e80921ff78a which simplifies kernel4 without imposing hard limits on clip depth. It does so by computing the maximum depth of the clip stack in coarse.comp, and allocating scratch space before running kernel4. In my tests, the performance is ~unchanged, even when doubling the stack entry size to support RGBA output.

Ah, will take a look at that shortly, didn't realize it was also addressing the same issue. Let's hold off on merging this until I've had a chance to look.

With #75 merged, I believe we can use this work as a potential optimization of the clip stack. Specifically, I sugges we maintain a stack of N (MAX_BLEND_STACK in this PR) clip states to thread local memory (blend_stack in this PR). Then, add two new commands to ptcl.rs: BeginClipLocal and EndClipLocal. They behave like BeginClip/EndClip but use the thread local stack instead of global memory. Finally, change coarse.comp to use BeginClipLocal/EndClipLocal for the topmost N clip operations, and BeginClip/EndClip for the remaining.
It may be worth keeping the thread local RGBA colors in a vec4 to avoid the sRGB conversions. It may also be worth adding specialized BeginClipLocal0, BeginClipLocal1... commands for low values of N.

Those surely sounds like some interesting optimizations to explore. Though, given the potential complexity (and the fact that it's probably low impact) I'm not going to prioritize this right now.

OK, so while I'm on this, writing down some thoughts:
The "fast" path could using shared memory instead of private memory because it can reliably avoid global memory traffic. (Raph mentioned that "dirty entries at the end of workgroup can simply be discarded rather than written all the way through", but that probably wouldn't happen in current gen hardware because all the faster caches are writethrough.) But shared memory is also pretty scarce, so we can only have around 1–3 entries in that.
But at the end of the day, shared memory on most GPUs is just L0/L1 cache without the adaptive replacement capabilities, so I'm not sure if it's even worth doing that. So the more naive private memory approach is probably still better.

Rebased. Sample scene output looks OK, but I mostly forgot how the rgba blending works so I'd appreciate someone double checking this.
Given the context in #83 the direction is to use a fixed limit which hopefully is fine (at least for typical vector documents that are not too creative).
I'm still unsure regarding https://github.com/linebender/piet-gpu/pull/77#discussion_r607391319: I chose panic mostly due to laziness (and the lack of proper logging integration in piet-gpu), and I mostly think this is fine until someone actually trips the limit. But maybe we should make it a bit more future proof.

Actually hold on a bit, I'm getting TDR on this for whatever reason.

It was a leftover piece, the TDR is now fixed.

Hmm, looks like I broke something and I now see glitches in the test scene. I'll try to come up with a fix soon, but we can also revert this if necessary.

I'm not seeing glitches in the test scene (also Windows, Radeon 5700XT). It's quite plausible there's something wrong, it's not hard to trigger nondeterministic behavior, but I'd like to get this tracked down. Any hints about how to repro would be helpful, especially as I plan on rebasing new work (gradients right now) on top of this.

At the time of test I was using the 20.5.1 HWS driver. I tested with it again and the issue was still there. I think downgrading the driver is enough to reproduce the issue.
Then I upgraded the driver and the corruption is gone. So this is why it didn't reproduce on your end, and at least I can blame the driver if I don't find the root cause ;)
The corruption looked like this, with random green-ish artifacts changing position every frame: (sorry it's not 1:1 canvas resolution since my device is at 125% scale)

I captured a Radeon Graphics Profiler profile if you want to look at the shader assembly without reinstalling the driver. (Open, go to events tab, select "Event Timing", choose the kernel4 shader which is the bottommost invocation, then go to "Instruction Timing" to view the ISA.) I tried to compare code from this and a new driver version, but unfortunately codegen has changed too much and it wasn't feasible to analyze the difference.
winit-20210812-110625.zip


Dynamic component rendering

First of all, thanks for your great work!
I have an application which consist of a navbar and a component, i.e.
<navbar />
<router />
.
However, on my login page I don't want the navbar and the div.
My solution:
<top-nav></top-nav>
<router></router>

where I add and remove class container to page depending of authorized (which, of course is an observable). This works most of them time except for when you get logged out without page refresh. What I ideally want is:
<router/>
but since only one instance of <router> is allowed, this is not possible. Of course I could just put the navbar in the components, but it's not their responsibility.
Would you happen to have any (better) suggestions for this?
Best :)

Of course I could just put the navbar in the components, but it's not their responsibility.

So, I would do this, but with a caveat. Instead of adding the nav-bar to each view, I'd add an intermediate route for the authenticated (all non-login) routes.
import { Router, Route } from '@profiscience/knockout-contrib-router'

function authenticatedMiddleware(ctx) {
  const authenticated = isAuthenticated() // some function to check if authenticated
  if (!authenticated) {
    ctx.redirect('/login')
  }
}

ko.components.register('app-view-component', {
  template: `
    <top-nav></top-nav>

      <router></router>

  `
})

Router.useRoutes([
  new Route('/login', 'login-view-component'),
  new Route('/',
    // middleware to redirect to login if not authenticated
    authenticatedMiddleware,

    // intermediate component w/ the top-nav and wrapper
    'app-view-component',

    // our child routes, in this case all of the authenticated "app" routes
    [
      new Route('/', 'home-view-component'),
      new Route('/profile', 'profile-view-component')
    ]
  )
])


chore: Spelling comments

What do these changes do?
Fixes spelling errors in comments per https://github.com/alibaba/GraphScope/pull/3547#issuecomment-1950933992
Related issue number

Merged. Thank you, @jsoref!


[4.2] SILGen: Cope with overloads when emitting artificial main for @UIApplicationMain.

Explanation: Overloading UIApplicationMain in the UIKit overlay would cause an assertion failure.
Scope: Allows a compatibility break introduced by changes to the iOS SDK to be handled in the overlay.
Issue: rdar://problem/42352695
Risk: Low. Replaces an assertion failure on overloading with a check to filter out non-ObjC-defined declarations of UIApplicationMain.
Testing: Swift CI, compatibility suite
Reviewed by: @slavapestov

@swift-ci Please test

@swift-ci Please test source compatibility

The source compat suite "failed" with a bunch of UPASSes. Expected? Do we have known breakage due to the UIApplicationMain issue?

@swift-ci Please nominate


Add Web App

Creates a cool looking web app with Primer CSS
Will be hosted via GitHub Pages.

This project would not be possible with GitHub pages due to Backend issues

We can go ahead and use Netlify - or maybe vercel.
Azure Static Web Apps is another great option

bro i am broke

Discussed elsewhere. Please merge.


Net.scala does not seem to learn. For instance, the reported "ll" value keeps alternating between two values.

BIDMach version: 9ee9e43cfac02ee17a526fd63b8bb96790cd0b57 (i.e., as of yesterday)
BIDMat version: aec11c71bd1e785b1310886ff88477d4f26a5640 (i.e., as of yesterday)
Computer: Linux ("bitter", actually)
I'm using the Net.scala class for regression and so far I'm unable to get the network to learn anything meaningful. I am using the following four data matrices, which are in the florian_data directory on my bitter directory:
grasp_data_00.fmat.lz4
grasp_data_01.fmat.lz4
grasp_target_00.fmat.lz4
grasp_target_01.fmat.lz4

Where the two 'data' matrices have 1598 rows (i..e, features), and around 120k columns (i.e., data instances), and the two 'target' matrices have just one row. The target values are all between [0,1] so the network is performing regression.
I am using the following script to run BIDMach's Net, which is based on the scripts/testnet.ssc script. I am calling it scripts/testnet_daniel.ssc. I also added some comments for readability. (Best viewed on Github rather than email.)
import BIDMach.networks.Net
val dir = "florian_data/"

// Training data
val a0 = loadFMat(dir + "grasp_data_00.fmat.lz4")
val c0 = loadFMat(dir + "grasp_target_00.fmat.lz4")
val rr = rand(c0.ncols,1);
val (ss, ii) = sort2(rr);
val train_features_shuffled = a0(?,ii);
val train_targets_shuffled = c0(?,ii);

// The test data, which we predict on. Use one file number for this, I suppose.
val test_features = loadFMat(dir + "grasp_data_01.fmat.lz4")(?, 0->123000)
val test_targets = loadFMat(dir + "grasp_target_01.fmat.lz4")(?, 0->123000)

// One main confusion: why two "opts" stuff? Is one for training and the other for the architecture?
val opts = new Net.LearnOptions
opts.aopts = opts
opts.batchSize = 2000
opts.reg1weight = 0.0001
opts.npasses = 1
opts.addConstFeat = false;
opts.links = iones(1,1); // I'm *pretty* sure this should have just one row based on other examples ...
opts.lrate = 0.01f
opts.texp = 0.4f
opts.nweight = 1e-4f
opts.what

// Last parameter is an integer from 1 to 4 and represents the non-linearity.
val net = Net.dnodes(7, 1000, 0.75f, 1, opts, 2);
val (nn,opts0) = Net.learnerX(train_features_shuffled, train_targets_shuffled);
opts0.nodeset = net
opts0.npasses = 100
opts0.batchSize = 10000
opts0.lrate = 0.01f
opts0.what
val dnn = nn.model.asInstanceOf[Net]
nn.train

// Now predict. Strangely, the batch size here means we ignore the last "(# cols) mod 1000" elements.
val (mm,mopts) = Net.predictor(dnn, test_features);
val dmm = mm.model.asInstanceOf[Net]
mopts.batchSize = 1000
mm.predict

val predictions = FMat(mm.preds(0))
size(predictions)
size(test_targets)
val diff = abs(predictions - test_targets)
mean(diff)

I changed the training and testing data so that the training and testing were files numbered "00" and "01", respectively. Notice that the batch size is 10k, and that I'm running this for 100 iterations. Finally, I am using the dnodes method, with 7 layers. This means the network looks like this:
1598 as input ==> 1000 fully connected layer (w/sigmoid) ==> 1000*0.75 fully connected layer (w/sigmoid) ===> output
However, when I run this script, I get the following output for the first few passes:
pass= 0
16.00%, ll=-0.25474, gf=1642.817, secs=0.1, GB=0.13, MB/s=1031.61, GPUmem=0.946021
100.00%, ll=0.00000, gf=2190.271, secs=0.8, GB=0.79, MB/s=979.35, GPUmem=0.944169
pass= 1
16.00%, ll=-0.66177, gf=2159.099, secs=0.9, GB=0.92, MB/s=1005.76, GPUmem=0.944169
100.00%, ll=0.00000, gf=2241.659, secs=1.6, GB=1.58, MB/s=1002.33, GPUmem=0.944169
pass= 2
16.00%, ll=-0.25483, gf=2222.833, secs=1.7, GB=1.71, MB/s=1015.81, GPUmem=0.944169
100.00%, ll=0.00000, gf=2261.256, secs=2.3, GB=2.37, MB/s=1011.09, GPUmem=0.944169
pass= 3
16.00%, ll=-0.26091, gf=2247.492, secs=2.5, GB=2.50, MB/s=1019.97, GPUmem=0.944169
100.00%, ll=0.00000, gf=2271.183, secs=3.1, GB=3.16, MB/s=1015.53, GPUmem=0.944169
pass= 4
16.00%, ll=-0.25766, gf=2260.380, secs=3.2, GB=3.29, MB/s=1022.14, GPUmem=0.944169
100.00%, ll=0.00000, gf=2278.356, secs=3.9, GB=3.95, MB/s=1018.73, GPUmem=0.944169
pass= 5
16.00%, ll=-1.22978, gf=2269.441, secs=4.0, GB=4.08, MB/s=1023.99, GPUmem=0.944169
100.00%, ll=0.00000, gf=2283.163, secs=4.6, GB=4.74, MB/s=1020.88, GPUmem=0.944169
pass= 6
16.00%, ll=-0.26548, gf=2276.058, secs=4.7, GB=4.87, MB/s=1025.46, GPUmem=0.944169
100.00%, ll=0.00000, gf=2287.031, secs=5.4, GB=5.53, MB/s=1022.61, GPUmem=0.944169
pass= 7
16.00%, ll=-1.24147, gf=2280.426, secs=5.5, GB=5.66, MB/s=1026.34, GPUmem=0.944169
100.00%, ll=0.00000, gf=2290.312, secs=6.2, GB=6.32, MB/s=1024.08, GPUmem=0.944169

What's interesting is that by the time we get to five passes, the reported log likelihood keeps alternating between two values. This continues to the end:
pass=95
16.00%, ll=-1.36909, gf=2232.413, secs=75.3, GB=75.21, MB/s=998.68, GPUmem=0.944169
100.00%, ll=0.00000, gf=2232.428, secs=76.0, GB=75.87, MB/s=998.20, GPUmem=0.944169
pass=96
16.00%, ll=-0.25814, gf=2231.849, secs=76.1, GB=76.00, MB/s=998.42, GPUmem=0.944169
100.00%, ll=0.00000, gf=2231.869, secs=76.8, GB=76.66, MB/s=997.95, GPUmem=0.944169
pass=97
16.00%, ll=-1.36689, gf=2231.326, secs=76.9, GB=76.79, MB/s=998.18, GPUmem=0.944169
100.00%, ll=0.00000, gf=2231.466, secs=77.6, GB=77.45, MB/s=997.77, GPUmem=0.944169
pass=98
16.00%, ll=-0.25805, gf=2230.957, secs=77.7, GB=77.58, MB/s=998.02, GPUmem=0.944169
100.00%, ll=0.00000, gf=2231.184, secs=78.4, GB=78.24, MB/s=997.64, GPUmem=0.944169
pass=99
16.00%, ll=-1.36408, gf=2230.681, secs=78.5, GB=78.37, MB/s=997.89, GPUmem=0.944169
100.00%, ll=0.00000, gf=2230.964, secs=79.2, GB=79.03, MB/s=997.54, GPUmem=0.944169
Time=79.2290 secs, gflops=2230.94

The predictions aren't really that helpful. I've printed some of them out (same to three decimal places, I think):
predictions: BIDMat.FMat = 0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10313,0.10314,0.10322,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10322,0.10313,0.10313,0.10313,0.10313,0.10322,0.10321,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10322,0.10315,0.10313,0.10322,0.10321,0.10313,0.10313,0.10323,0.10313,0.10313,0.10312,0.10313,0.10313,0.10312,0.10313,0.10323,0.10313,0.10313,0.10322,0.10323,0.10313,0.10316,0.10320,0.10313,0.10319,0.10313,0.10313,0.10323,0.10319,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10322,0.10313,0.10313,0.10313,0.10318,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10312,0.10313,0.10312,0.10313,0.10313,0.10313,...

Here's what I've tried:

Using dnodes4 instead of dnodes
Using 3 or 5 layers instead of 7
Changing the batch size of opts0 (not opts). There are about 120k training instances so the batch size should probably be on the order of maybe 10k to have one significant held-out set.
Using the opts0.hasBias parameter.
Changing the learning rate of both opts and opts0 (there's two of them). For opts.lrate the default was 0.4 and I tried 0.01, 0.001, etc., but that seems to change the magnitude of predictions, not the accuracy. For the opts0.lrate, the default is one and I tried 0.01f.

I suspect this is an issue with the learning rate, given that Python's theano library can learn with this data. Do you have any suggestions on how to diagnose this?
Thanks,
Daniel

Hi Daniel,
Please mail me first if you have questions about the Learner. It doesnt
make sense to post issues until you're sure that they're issues with the
toolkit vs learning how to use it.
-John
On 2/15/2016 11:03 AM, Daniel Seita wrote:

BIDMach version: 9ee9e43
https://github.com/BIDData/BIDMach/commit/9ee9e43cfac02ee17a526fd63b8bb96790cd0b57
(i.e., as of yesterday)
BIDMat version: aec11c71bd1e785b1310886ff88477d4f26a5640 (i.e., as of
yesterday)
Computer: Linux ("bitter", actually)
I'm using the Net.scala class for regression and so far I'm unable to
get the network to learn anything meaningful. I am using the following
four data matrices, which are in the |florian_data| directory on my
bitter directory:
|grasp_data_00.fmat.lz4 grasp_data_01.fmat.lz4 grasp_target_00.fmat.lz4
grasp_target_01.fmat.lz4 |
Where the two 'data' matrices have 1598 rows (i..e, features), and
around 120k columns (i.e., data instances), and the two 'target'
matrices have just one row. The target values are all between [0,1] so
the network is performing regression.
I am using the following script to run BIDMach's Net, which is based
on the |scripts/testnet.ssc| script. I am calling it
|scripts/testnet_daniel.ssc|. I also added some comments for
readability. (Best viewed on Github rather than email.)
|import BIDMach.networks.Net val dir = "florian_data/" // Training data
val a0 = loadFMat(dir + "grasp_data_00.fmat.lz4") val c0 =
loadFMat(dir + "grasp_target_00.fmat.lz4") val rr = rand(c0.ncols,1);
val (ss, ii) = sort2(rr); val train_features_shuffled = a0(?,ii); val
train_targets_shuffled = c0(?,ii); // The test data, which we predict
on. Use one file number for this, I suppose. val test_features =
loadFMat(dir + "grasp_data_01.fmat.lz4")(?, 0->123000) val
test_targets = loadFMat(dir + "grasp_target_01.fmat.lz4")(?,
0->123000) // One main confusion: why two "opts" stuff? Is one for
training and the other for the architecture? val opts = new
Net.LearnOptions opts.aopts = opts opts.batchSize = 2000
opts.reg1weight = 0.0001 opts.npasses = 1 opts.addConstFeat = false;
opts.links = iones(1,1); // I'm pretty sure this should have just
one row based on other examples ... opts.lrate = 0.01f opts.texp =
0.4f opts.nweight = 1e-4f opts.what // Last parameter is an integer
from 1 to 4 and represents the non-linearity. val net = Net.dnodes(7,
1000, 0.75f, 1, opts, 2); val (nn,opts0) =
Net.learnerX(train_features_shuffled, train_targets_shuffled);
opts0.nodeset = net opts0.npasses = 100 opts0.batchSize = 10000
opts0.lrate = 0.01f opts0.what val dnn = nn.model.asInstanceOf[Net]
nn.train // Now predict. Strangely, the batch size here means we
ignore the last "(# cols) mod 1000" elements. val (mm,mopts) =
Net.predictor(dnn, test_features); val dmm =
mm.model.asInstanceOf[Net] mopts.batchSize = 1000 mm.predict val
predictions = FMat(mm.preds(0)) size(predictions) size(test_targets)
val diff = abs(predictions - test_targets) mean(diff) |
I changed the training and testing data so that the training and
testing were files numbered "00" and "01", respectively. Notice that
the batch size is 10k, and that I'm running this for 100 iterations.
Finally, I am using the |dnodes| method, with 7 layers. This means the
network looks like this:
1598 as input ==> 1000 fully connected layer (w/sigmoid) ==> 1000*0.75
fully connected layer (w/sigmoid) ===> output
However, when I run this script, I get the following output for the
first few passes:
|pass= 0 16.00%, ll=-0.25474, gf=1642.817, secs=0.1, GB=0.13,
MB/s=1031.61, GPUmem=0.946021 100.00%, ll=0.00000, gf=2190.271,
secs=0.8, GB=0.79, MB/s=979.35, GPUmem=0.944169 pass= 1 16.00%,
ll=-0.66177, gf=2159.099, secs=0.9, GB=0.92, MB/s=1005.76,
GPUmem=0.944169 100.00%, ll=0.00000, gf=2241.659, secs=1.6, GB=1.58,
MB/s=1002.33, GPUmem=0.944169 pass= 2 16.00%, ll=-0.25483,
gf=2222.833, secs=1.7, GB=1.71, MB/s=1015.81, GPUmem=0.944169 100.00%,
ll=0.00000, gf=2261.256, secs=2.3, GB=2.37, MB/s=1011.09,
GPUmem=0.944169 pass= 3 16.00%, ll=-0.26091, gf=2247.492, secs=2.5,
GB=2.50, MB/s=1019.97, GPUmem=0.944169 100.00%, ll=0.00000,
gf=2271.183, secs=3.1, GB=3.16, MB/s=1015.53, GPUmem=0.944169 pass= 4
16.00%, ll=-0.25766, gf=2260.380, secs=3.2, GB=3.29, MB/s=1022.14,
GPUmem=0.944169 100.00%, ll=0.00000, gf=2278.356, secs=3.9, GB=3.95,
MB/s=1018.73, GPUmem=0.944169 pass= 5 16.00%, ll=-1.22978,
gf=2269.441, secs=4.0, GB=4.08, MB/s=1023.99, GPUmem=0.944169 100.00%,
ll=0.00000, gf=2283.163, secs=4.6, GB=4.74, MB/s=1020.88,
GPUmem=0.944169 pass= 6 16.00%, ll=-0.26548, gf=2276.058, secs=4.7,
GB=4.87, MB/s=1025.46, GPUmem=0.944169 100.00%, ll=0.00000,
gf=2287.031, secs=5.4, GB=5.53, MB/s=1022.61, GPUmem=0.944169 pass= 7
16.00%, ll=-1.24147, gf=2280.426, secs=5.5, GB=5.66, MB/s=1026.34,
GPUmem=0.944169 100.00%, ll=0.00000, gf=2290.312, secs=6.2, GB=6.32,
MB/s=1024.08, GPUmem=0.944169 |
What's interesting is that by the time we get to five passes, the
reported log likelihood keeps alternating between two values. This
continues to the end:
|pass=95 16.00%, ll=-1.36909, gf=2232.413, secs=75.3, GB=75.21,
MB/s=998.68, GPUmem=0.944169 100.00%, ll=0.00000, gf=2232.428,
secs=76.0, GB=75.87, MB/s=998.20, GPUmem=0.944169 pass=96 16.00%,
ll=-0.25814, gf=2231.849, secs=76.1, GB=76.00, MB/s=998.42,
GPUmem=0.944169 100.00%, ll=0.00000, gf=2231.869, secs=76.8, GB=76.66,
MB/s=997.95, GPUmem=0.944169 pass=97 16.00%, ll=-1.36689, gf=2231.326,
secs=76.9, GB=76.79, MB/s=998.18, GPUmem=0.944169 100.00%, ll=0.00000,
gf=2231.466, secs=77.6, GB=77.45, MB/s=997.77, GPUmem=0.944169 pass=98
16.00%, ll=-0.25805, gf=2230.957, secs=77.7, GB=77.58, MB/s=998.02,
GPUmem=0.944169 100.00%, ll=0.00000, gf=2231.184, secs=78.4, GB=78.24,
MB/s=997.64, GPUmem=0.944169 pass=99 16.00%, ll=-1.36408, gf=2230.681,
secs=78.5, GB=78.37, MB/s=997.89, GPUmem=0.944169 100.00%, ll=0.00000,
gf=2230.964, secs=79.2, GB=79.03, MB/s=997.54, GPUmem=0.944169
Time=79.2290 secs, gflops=2230.94 |
The predictions aren't really that helpful. I've printed some of them
out (same to three decimal places, I think):
|predictions: BIDMat.FMat =
0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10313,0.10314,0.10322,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10322,0.10313,0.10313,0.10313,0.10313,0.10322,0.10321,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10322,0.10315,0.10313,0.10322,0.10321,0.10313,0.10313,0.10323,0.10313,0.10313,0.10312,0.10313,0.10313,0.10312,0.10313,0.10323,0.10313,0.10313,0.10322,0.10323,0.10313,0.10316,0.10320,0.10313,0.10319,0.10313,0.10313,0.10323,0.10319,0.10313,0.10313,0.10313,0.10323,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10322,0.10313,0.10313,0.10313,0.10318,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10313,0.10312,0.10313,0.10312,0.10313,0.10313,0.10313,...
|
Here's what I've tried:

Using |dnodes4| instead of |dnodes|
Using 3 or 5 layers instead of 7
Changing the batch size of opts0 (not opts). There are about 120k
training instances so the batch size should probably be on the
order of maybe 10k to have one significant held-out set.
Changing the learning rate of both opts and opts0 (there's two of
them). For opts.lrate the default was 0.4 and I tried 0.01, 0.001,
etc., but that seems to change the magnitude of predictions, not
the accuracy. For the opts0.lrate, the default is one and I tried
0.01f.

I suspect this is an issue with the learning rate, given that Python's
theano library can learn with this data. Do you have any suggestions
on how to diagnose this?
Thanks,
Daniel
—
Reply to this email directly or view it on GitHub
https://github.com/BIDData/BIDMach/issues/95.

Your script is setting the minibatch size to 100000 (almost the whole dataset), and its creating the net before the options are set. I put a cleaned up sample script in testnet.ssc. It works fine on that dataset and is quite insensitive to learning rate. We havent released the Net code yet and its not fully documented but it doesnt make sense to post issues related to its use.
See also testgrasp.ssc which runs GLM, Net and Random Forests on the grasp data.

Thanks John, it works now.
By the way, there might be a slight confusion, given that in this previous comment (https://github.com/BIDData/BIDMach/issues/50) you mention that DNN is being replaced by the Net class. I assume that neither were completed but that the Net is the most up to date, so if there are any future issues I will report for Net.scala.
Thanks again.

PS: Would it be possible if you could add testgrasp.ssc to the scripts directory? It does not seem to be there.


Update Set-CsClientPolicy

The -AddressBookAvailability parameter does not apply to Skype for Business Online. As indicated earlier in the article (see https://docs.microsoft.com/en-us/powershell/module/skype/set-csclientpolicy?view=skype-ps#description) and through error messages when attempting to run on 365 tenant. Error reads: 'you are not permitted to invoke set-csclientpolicy with the following parameters: addressbookavailability'. Ran as a GA.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

skype/skype-ps/skype/Set-CsClientPolicy.md
:white_check_mark:Succeeded
View (skype-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Thank you for your contribution @digitaltorres  !! It is greatly appreciated!


Fix #106 -- discard alpha channel on PNGs

@codingjoe this is a very simple draft made to start a discussion and see your opinion on how things should be handled here. Questions to consider:

do we want to discard alpha channel or allow users to select a handling strategy?
should we log this situation as a warning?
shall we consider other modes, like "P" or "LA"?

As we discusse, I took the time to address the issue. Thanks for your patch anyways :)