Implement internal audio/video recording for devices >= …

…Android.Q
REQUIRED STEPS to activate screenrecord feature:

adb shell pm grant io.appium.settings android.permission.RECORD_AUDIO
adb shell pm grant io.appium.settings android.permission.WRITE_EXTERNAL_STORAGE
adb shell appops set io.appium.settings PROJECT_MEDIA allow

TO START SCREENRECORD:

adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.recording.ACTION_START --es "recording_filename" "abc.mp4"

TO STOP SCREENRECORD:

adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.recording.ACTION_STOP

TO PULL RECORDED MP4 FILE:

adb pull /storage/sdcard0/Android/data/io.appium.settings/files/abc.mp4 abc.mp4

cc @KazuCocoa @mykola-mokhnach

addressing https://github.com/appium/appium/issues/13177

It works flawlessly as far as I tested it on my android device with latest appium, note: io.appium.settings apk which includes this commit must be built and installed and above 3 adb commands need to be issued first, here is sample test script including recording https://gist.github.com/sirmordred/4c505ddce96f7513bfbe49d38ef041be

AFAIK app sound would only be recorded if the particular app allows that. Also, does the appops command below suppress the confirmation dialog that Media projection usually shows before starting the recording?

thank you so much for your review and feedbacks, i'll address them asap i hope, im doing this in my free time and i'll be on vacation for a while, after that i will continue to work on it and try to address your questions etc. thanks

thank you so much for your review and feedbacks, i'll address them asap i hope, im doing this in my free time and i'll be on vacation for a while, after that i will continue to work on it and try to address your questions etc. thanks

Sure. We appreciate your contribution

i am currently updating codebase commit-by-commit but will squash all of them into single commit when all feedbacks are addressed, addressed lots of them now, there are some left that i am currently working on it 👍

Thank you. Is there any reason why you did not add this feature in https://github.com/appium/appium-uiautomator2-server , for example, as a mobile: command? https://github.com/appium/appium-uiautomator2-driver (kind of a basic question as my out of curiosity)
[updated]
ah, this was for the below comment in the linked issue?

Which means one can simply install any sound recording app, control it using UIA2 to start/stop recording process and be happy about it %)

yeah since recording on android via public android APIs are only available on application level, thats why i targeted io.appium.settings app and for future direction, i think yeah the start/stop recording commands can be folded into much less lenghty commands like mobile: startRecordingEtc.

AFAIK app sound would only be recorded if the particular app allows that. Also, does the appops command below suppress the confirmation dialog that Media projection usually shows before starting the recording?

yeah there are limitations imposed by android for recording, not %100 sure but AFAIK system apps can record audio from apps whether or not app allows it and if we can find a way to trigger recording via adb-only or adb-executed-java-code (with shell process uid/gid 2000) this can mimic system app and can record all audio from all apps (or i am wrong?)
and yeah appops command suppress the mediaprojection confirmation dialog 👍

okay i completed round 2, there are now 2 feedbacks left that i'm currently working too 👍
https://github.com/appium/io.appium.settings/pull/88#discussion_r867667721
https://github.com/appium/io.appium.settings/pull/88#discussion_r879363641

okay done another round 👍

okay i rewrote most of the parts of the code, refactored according to convention you stated that i also fully agree 👍  https://github.com/appium/io.appium.settings/pull/88#discussion_r889584371

I eliminated lots of class variables and also this.xx usage 👍

okay ready 👍

The CLA bot is still complaining about the unsigned CLA. WE will be unable to merge the PR unless it is signed. Could you please verify your local git email address matches the one used to sign CLA?

The CLA bot is still complaining about the unsigned CLA. WE will be unable to merge the PR unless it is signed. Could you please verify your local git email address matches the one used to sign CLA?

yeah i currently didn't sign EasyCLA but will do as soon as possible 👍  also do you prefer to squash all commits into one-single commit? i can do that 👍 and last, before merging it, do you have a chance to try it on different phones? i tried it several times after each commit i made, on my dev phone which is Huawei P40 Lite running Android 10, it works great 👍 but dont know the situation on 11 and 12 👍

Okay, i got a chance to try it on Samsung A53 running Android 12, it was crashing due to width/height, somehow even though we clamp our width/height corresponding to encoder's capabilities https://github.com/sirmordred/io.appium.settings/blob/master/app/src/main/java/io/appium/settings/RecorderThread.java#L346 encoder was crashing if width/height larger than 1080x1920 so i set another clamp that act as maximum resolution we support which is 1080x1920 https://github.com/sirmordred/io.appium.settings/blob/master/app/src/main/java/io/appium/settings/RecorderThread.java#L351
and another obstacle, really big one, was android's latest Storage Access Framework SAF (https://medium.com/androiddevelopers/android-11-storage-faq-78cefea52b7c) which is enforced on Android 11&12 (is permissive on 10)
the old way which we are supplying file absolute path (simply String) into MediaMuxer https://github.com/sirmordred/io.appium.settings/blob/dc8dc277448fb3e401559698c10ab17ca8030193/app/src/main/java/io/appium/settings/RecorderThread.java#L368 is not working on Android SAF, in android SAF, it seems Google blocked raw file access via it's path, also there is no problem in application-specific-directories(/data/data/com.xx or /sdcard/Android/data/com.xx) in SAF but adb is not able to pull file from application's-specific-directories on SAF anymore (permission denied), so i needed to find a common path across different phones and android versions, which must be writable-by-application-itself and plus it must be pullable-by-adb, so i came up with MediaStore.Downloads.EXTERNAL_CONTENT_URI https://github.com/sirmordred/io.appium.settings/commit/9177d64d487d94e3773552652174587675425b09#diff-0d9c9092f6e43c01e7c8a51982fb0c221bcb9f3944fdf0349d792453df871a22R199  (there is also no file path terminology on SAF mostly Uris) the real path of that Uri is phone's external storage(sdcard) + Downloads folder + OurVideoFilename.mp4 or /storage/emulated/0/Downloads/AppiumRecord.mp4 that file path is both writable-by-app and pullable-by-adb, and with these updates, recording started to work great on Android 12 too 👍 as far as i tested it on Samsung A53
but there is a problem, since absolute path of MediaStore.Downloads.EXTERNAL_CONTENT_URI Uri which we are saving output videos into it, do not correspond real path or MAY CHANGE across different android phones and versions (i am not %100 sure about that but it is possible i think), we need to find a path dynamically inside app itself and give it to user instead of hardcoded path like /storage/emulated/0/Downloads/AppiumRecord.mp4 👍 and we can probably do it without problem via adb and broadcast intents like we already do for Location data https://github.com/sirmordred/io.appium.settings/blob/master/app/src/main/java/io/appium/settings/receivers/LocationInfoReceiver.java#L38 but at cost, we will require another command to all users of this feature :/ (START, STOP, GETPATH, PULL)
also we should keep in mind that getting real path from Uri is somehow not so official way :/ take a look https://gist.github.com/tatocaster/32aad15f6e0c50311626 (but i tried it on Samsung Android 12 and it worked good)
sorry for that long explanation but unfortunately that is because Google really messed up storage on latest version of android :)
What do you think, thanks

I think you could still pull files from app directories using adb using one small trick: https://github.com/appium/appium-android-driver/blob/89da9a1728c39aeceae18a1eb8f04e7bf0ba9602/lib/commands/file-actions.js#L93
The key here is to call run-as

Hmm i wasn't aware of that thanks 👍  also while investigating more different storage paths, i realized that old way is still working on android 12, i mean https://github.com/sirmordred/io.appium.settings/blob/master/app/src/main/java/io/appium/settings/Settings.java#L141 but in the first run, it was not working (or i am wrong?), after some investigation of that method, i learned that in the 1st call of that method getExternalFilesDir(null) OS creates a subfolder in the external storage for us /storage/emulated/0/Android/data/io.appium.settings/files but it seems subfolder creation does not work on 1st call of that method sometimes, so it needs to be called twice (as per https://www.androidbugfix.com/2021/10/getexternalfilesdirnull-returns-null-in.html) so i double called it and it now works perfectly 👍
other changes:

I disabled the "default file name" logic in case of user typed invalid filename because it creates confusion for user i mean user typed a"/.mp4 but instead of exiting, we still continue and create record file with Appium_2020xx.mp4  after record, user will not find recorded file in an expected path /storage/xx/a"/.mp4  but instead /storage/xx/Appium_2020xx.mp4 https://github.com/sirmordred/io.appium.settings/commit/f6624c58686e351e83bba6a7aa2294993ccdbbfc
I moved some of the helper methods into its own util class to not pollute Settings class https://github.com/sirmordred/io.appium.settings/commit/f878b4952ac850549b1414d7a311650ef4c67de6
After creating also RecorderUtil class, we now have 4 class for recording feature, so to organize it more, i moved them into separate sub-folder https://github.com/sirmordred/io.appium.settings/commit/deae0f79e0357d87fccca216073f7db9d235b2e4 they deserve it :)
Addressed some of your last feedbacks 👍  https://github.com/sirmordred/io.appium.settings/commit/d1ae86a57fff381f4fd5469fcc818001cb16e3bb

now there are 2 feedbacks left:

https://github.com/appium/io.appium.settings/pull/88#discussion_r889719451
https://github.com/appium/io.appium.settings/pull/88#discussion_r889719965

after addressing them, we can revisit the --es parameters (there is 1 param now which is --es recording_filename) which we will expose to users and to whole internet :) before adding into official appium app, i am %100 open to any name/parameter changes, replacements 👍

Also good news is we probably can eliminate the need of adb shell pm grant WRITE_EXTERNAL_STORAGE because we are already writing data to app-specific-directory (/storage/emulated/0/Android/data/io.appium.settings/files) 👍
Refs:

https://stackoverflow.com/a/34469525
https://developer.android.com/training/data-storage

Okay fixed all feedbacks 👍

there can be another round of feedback no problem 👍 (We may revisit argument names i.e recording_filename recording_max_duration etc they seems a bit lengthy so i can re-name these to anything you want 👍 ) and if everything is okay, i can squash all commits into one single commit and then  -> sign EasyCLA to prepare for merge 👍

okay while i was testing recording in different emulators (even if it worked perfect on real devices, Huawei Android 10 and Samsung Android 12) it crashed on emulators (media encoder was crashing while configuring it with given width/height resolutions) and i realized that this is because media codecs and its capabilities as well as device display resolutions vary device-to-device very much and the core problem is media encoder/decoder (encoder in our case) is not GUARANTEED to encode/decode in given any resolutions (width/height)
in the past, we were giving raw display width/height to media encoder https://github.com/sirmordred/io.appium.settings/blob/203ef2dd68231f69d368a3a64a1909f614f3aaa8/app/src/main/java/io/appium/settings/recorder/RecorderThread.java#L372 of course we were clamping it, but clamp was not not working reliably, even if we clamp width/height against media encoder's capabilities, it was resulting values like 1080x1823 (some devices have notch or virtual back/home button fields some not) and media encoder was crashing with these type of values,
so i deep dive into media encoder and its capabilities, i saw that media encoder can support up to 5 different resolution modes, i got that assumption from CTS tests, see https://github.com/aosp/cts/blob/08e720f8ee9a1170d995b03b748528098f22e101/tests/tests/media/src/android/media/cts/VideoEncoderTest.java#L1346 and above,  since all released android phones MUST pass CTS tests, we can safely assume that media encoder can support these resolution modes, so i added these resolution modes and helper functions to detect supported max resolution on-device, and media encoder is now works without crashing as far as i tested it on both real-devices and emulators 👍  i also added user-selectable-resolution-mode argument to making it dynamic (didnt test different resolutions yet, only tested max supported resolution on device, but will test it ASAP 👍 )
other changes:

i was giving display density as hardcoded while configuring VirtualDisplay https://github.com/sirmordred/io.appium.settings/commit/4a0e029fdf26e942b38926894686be3333ee24da#diff-423e8dd14708c0aa3b8df6ff5c75cd8a780ea48625ac50a32a194b167cfe1259R138 so i changed it to dynamic since we can get value from device directly
I added additional control that checks if media projection permission is granted or not (user typed adb shell appops project_media allow command or not) https://github.com/sirmordred/io.appium.settings/commit/203ef2dd68231f69d368a3a64a1909f614f3aaa8 to make recording more solid (tested it on different phones and works great) 👍

Voilaa 💯  i tested different resolution modes and it works perfect 👍 and resulting output videos are really smaller in size (as expected) we now support different resolutions 👍

AFAIK the AVC video encoder used here supports pretty wide set of resolutions. One of main requirements to these resolutions is, though, that both width and height must be divisible by two. You could also use https://stackoverflow.com/questions/44902334/how-to-get-max-resolution-of-mediacodec-before-configuring to check if the particular width, height and frame rate are supported by the selected codec instead of hardcoding the limits. Usually one  would only provide the scale value to keep the original aspect ratio rather than both width and height

In iOS, for example, we set the scale value to 2, which means the video resolution is by default half of the original device resolution

AFAIK the AVC video encoder used here supports pretty wide set of resolutions. One of main requirements to these resolutions is, though, that both width and height must be divisible by two. You could also use https://stackoverflow.com/questions/44902334/how-to-get-max-resolution-of-mediacodec-before-configuring to check if the particular width, height and frame rate are supported by the selected codec instead of hardcoding the limits. Usually one would only provide the scale value to keep the original aspect ratio rather than both width and height

i thought the same but in android's AVC/H264 codec, i saw and experienced supported resolutions are not really that much wide, for example try the following code on any high-end phone or low-end phone (it doesn't matter)
`try {
String videoMime = MediaFormat.MIMETYPE_VIDEO_AVC;
MediaCodec videoEncoder = MediaCodec.createEncoderByType(videoMime);

MediaCodecInfo.VideoCapabilities videoEncoderCapabilities = videoEncoder.getCodecInfo().
        getCapabilitiesForType(videoMime).getVideoCapabilities();

boolean a1 = videoEncoderCapabilities.isSizeSupported(176, 144);
boolean a2 = videoEncoderCapabilities.isSizeSupported(320, 240);
boolean a3 = videoEncoderCapabilities.isSizeSupported(720, 480);
boolean a4 = videoEncoderCapabilities.isSizeSupported(1280, 720);
boolean a5 = videoEncoderCapabilities.isSizeSupported(1920, 1080);
boolean a6 = videoEncoderCapabilities.isSizeSupported(2560, 1440);

Log.e("OGIX", a1 ? "yes1" : "no");
Log.e("OGIX", a2 ? "yes2" : "no");
Log.e("OGIX", a3 ? "yes3" : "no");
Log.e("OGIX", a4 ? "yes4" : "no");
Log.e("OGIX", a5 ? "yes5" : "no");
Log.e("OGIX", a6 ? "yes6" : "no");

} catch (Exception e) {
e.printStackTrace();
}`
it will print "yes" for all resolutions from 176x144 to 1920x1080 range but it will print "no" for the last one -native 2K resolution 2560x1440- even though it is divisible by 2, so we are much likely limited to these resolutions i guess

Okay i have done everything in my mind/which i noted 👍 also tried on the following devices and i can confirm its working good without problem 👍

Huawei P40 Lite running Android 10
Samsung A53 running Android 12
Xiaomi MI5 running Android 12 (customized ROM, LineageOS)
[Emulator] Pixel C Tablet running Android 11
[Emulator] Pixel 2 Phone running Android 11
Nearly all devices have also different resolutions and dpi as well as display sizes

thank you so much for the review @mykola-mokhnach 👍
after resolving last feedback https://github.com/appium/io.appium.settings/pull/88#discussion_r897789127 and receive LGTM from you 👍 i'll squash all commits into single one (not doing this for now because of information loss of commits) and sign EasyCLA 👍

Okay i squashed all changes into single commit but individual commit history can be seen through here (i opened another branch) https://github.com/sirmordred/io.appium.settings/tree/recording_feature and also signed EasyCLA and after all changes, i double-checked that it runs without problem on my real test phones 👍

FUTURE DIRECTIONS:

Add user selectable argument/flag to support the following modes separately A) Audio-only recording B) Video-only recording C) Audio/Video Mixed recording(currently supported)
Add user selectable FPS argument/flag to dynamically control frame rate
Add real orientation support with runtime rotation change handled(by manipulating/rotating frames via GL/MatrixTransformer utils) (Side note: setup the maximum video resolution as (max(W, H) x max(W, H)), which could potentially fit both portrait and landscape orientation modes)
Add and implement START/STOP/PULL commands into appium-android-driver https://github.com/appium/appium-android-driver to fold and shorten current start/stop commands and make life easier for appium users :)
Change activity-initiated-recording adb shell am start xxx into broadcast-initiated-recording adb shell am broadcast xxx to eliminate current activity open/close requirement (this is currently impossible AFAIK because result intent data of MediaProjectionManager.createScreenCaptureIntent() must be retrieved through onActivityResult and only-activity-classes can define, initiate and handle onActivityResult)
Try to support larger resolutions than Full HD 1920x1080 (current maximum supported resolution)


Fix empty last line returned by tokenizer

Fixes #76
This PR fixes an issue where tokenizer returns the empty string for the last line if no NEWLINE exists at the end of the source.
Python's tokenize module injects a NEWLINE if the source does not end with one. The injected token has the empty string for its line but Pegen's tokenizer remembers that empty string as the content of the last line of the source.
Since source does not change over tokenization, once self._lines[i] is set for some i, it does not need to be set again with later tokens. I added a check to only update self._lines only if tok.start[0] is not set. With this change, NEWLINE injected by the tokenize module will not override self._lines with the empty string.
I also added a test case for this change.

@MatthieuDartiailh Updated the changelog in 487ebe07d7a02b4c450806f9217125ac11ddd083


Show long help output with defaults on usage errors

This makes optparse-applicative show the long version of help output.
Its default behavior is not to do this since the showHelpOnError
setting defaults to False.  This turns it on.

What a nice elegant fix, thanks.


🐛: Missing Kisao definition from api causes files and metadata to fail to display

Contact Details
No response
Location
runBiosimulations
What happened?
Submitted a simulation run. Loading the files and metadata tabs shows errors
What made it happen?
The http logs show that the API responded with the files, metadata and specifications as expected. However, the call to https://api.biosimulations.dev/ontologies//KISAO/KISAO_0000019 failed with a 404. This is due to the extra "/" in the url.
The call to https://api.biosimulations.dev/runs/61b26393155eb3c5c3340493/summary fails due to missing simulators from the database
Version
Development (Deployed on a .dev domain)
What browsers are you seeing the problem on?
No response
Relevant log output
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

The URL issue comes from a bug introduced in the restructuring of endpoints.
The missing simulators shouldn't happen in the org deployment. This can happen if dev resources are created with org simulators.

Whoops, sorry didn't mean to assign you.  Has the dev simulators database been modified? Not sure why tellurium would stop working

I copied the simulators over from org to dev yesterday. In general, they will diverge until we re-sync them. One way they diverge is different versions. They can also diverge if we migrate the schema and content, but don't update each entry in the dev database.

:tada: This issue has been resolved in version 8.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Fix working directory for blog build

Q
A

Is bugfix?
✔/❌

New feature?
✔/❌

Breaks BC?
✔/❌

Fixed issues
comma-separated list of tickets # fixed by the PR, if any

@rustamwin, @xepozz merge or?

Only some functional tests fail, maybe something is wrong with yii-testing?

Backend fails with 5xx status


Check for file extension casing issue

See https://github.com/dnnsoftware/Dnn.Platform/issues/4338

@valadas we need to close this issue, as I was unable to reproduce the issue in this Resource Manager.


Investigate using GraphQL

Research GraphQL and determine if changing from REST endpoints to a GraphQL service would be worthwhile.

It is tough questions, I had ruined my self in researching interactive graphs solutions :)
There are a tone of options how to implement interactive visualisation. Standalone graph libraries , ready to work interactive dashboard solutions, integrations between graph libraries and dashboard solutions :) The most easiest dashboard solution is steamlit, Plotly has their own solution Dash to build interactive dashboards. They have integration with GraphQL, but it could be a commercial solution.
My idea was to create 2 column dashboard, left column with interactive options , year slider, score slider, couple checkbox (kickstarter, normalize distribution, etc.), and all the graphs (distribution, scatterplot) in the right column.
There is also a possible to build interactive dashboard inside a jypeter notebook with ipywidgets, but I failed to build a stable solution, my interactive graphs work very slow and unstable in in pycharm.
I've started from Altair , than I'de found that there is a hard to draw text object (for a example the value of a mean on vertical line on a distribution graph), so I have switched to the Plotly now.


defaultStyleOf buttons should use splashFactory from theme

currently, instead of using theme's splash factory, buttons hardcode this to InkRipple.splashFactory
https://github.com/flutter/flutter/blob/457985f2900230ba07bd252b05073029862a52a7/packages/flutter/lib/src/material/text_button.dart#L349

cc @HansMuller

also, why are defaultStyleOf and themeStyleOf not static @factorys? they make you to instantiate an additional button class for no reason

The default splash factory for the new Material button widgets is InkRipple because that's the correct default per the Material Design spec. Apps can override it per button or per button class using he corresponding themes.
The protected defaultStyleOf and themeStyleOf methods are protected because they're only intended for subclasses. Despite the intriguing names, they're not intended to support statically looking up default property values.  It would be generally useful if Material widgets could statically reveal their defaults, which I assume is what you're implying. Unfortunately, that's a difficult request, because the defaults can have complex dependencies on the theme's brightness, and the widget's state. For now, one-off buttons that are intended to share defaults with the Material buttons, are most easily constructed by subclassing.

@HansMuller ok I missed that default theme value is InkSplash.splashFactory. It is planned to change default value to InkRipple.splashFactory (see https://github.com/flutter/flutter/issues/73163). Could you reopen this, so we can revisit it after that change?
About defaultStyleOf - I get the point about subclassing. Though if method is static, nothing prevents from fetching defaults from context, I'm still pretty much sure we could add a static method for each of the existing button class in the framework that would expose defaults, without touching defaultStyleOf. Though the naming is getting kinda confusing with this


trie node has no value node and no child

According to the comment in code:

A trie node should at least have one child, except if it has a value node then no child is a possibility.

I add following assert to iterator htrie_hash::erase(iterator pos):
if(pos.m_read_trie_node_value) {
    tsl_assert(pos.m_current_trie_node != nullptr && pos.m_current_trie_node->val_node() != nullptr);
    tsl_assert(pos.m_current_trie_node->nb_children() > 0); // here
    pos.m_current_trie_node->val_node().reset(nullptr);
    m_nb_elements--;
    return next_pos;
}

And write a test case:
BOOST_AUTO_TEST_CASE(stest_empty_trie_node) {
	tsl::htrie_set<char> set = { "k1", "k2", "k3", "k4" };
	set.burst_threshold(4);
	set.insert("k");
	set.erase("k1");
	set.erase("k2");
	set.erase("k3");
	set.erase("k4");
	set.erase("k");
}

It cause the assert fail. Is it a bug?
By the way,  code coverage testing will make unit tests more complete.
Thanks for your implement.

Thank you very much for the report.
It seems to be effectively a bug. It should not affect the find and insert methods but may cause problems when incrementing an iterator.
I'll not be able to really investigate that this week but I'll provide a correction next week.

The reason I do the test is that I saw there is no check whether node has children when remove the val node of node:
if(pos.m_read_trie_node_value) {
	tsl_assert(pos.m_current_trie_node != nullptr && pos.m_current_trie_node->val_node() != nullptr);

	pos.m_current_trie_node->val_node().reset(nullptr);
	m_nb_elements--;

	return next_pos;
}

And I found that in clear_empty_nodes, when parent has val node, the hash_node child will be simply removed, which may make its parent have no child:
else if(parent->val_node() != nullptr || parent->nb_children() > 1) {
    parent->child(empty_hnode.child_of_char()).reset(nullptr);
}

Hope this infomation can help you.

Sorry for the delay, I was a bit busy.
I made the correction, it effectively can cause problems on iterations (but not find, erase, ... outside of taking a bit more memory).
Regarding the second point in clear_empty_nodes it's alright if the child is removed. A trie_node must either have at least one child and/or a value_node (which the else if makes sure of).


Fix typos found by codespell

Summary of changes
Fix typos found by codespell in documentation, code comments, and name of a variable that is actually not used.
Pull Request Checklist

[ ] Changes have tests
[ ] News fragment added in changelog.d/.
(See documentation for details)

Thank you!


arangodb: 3.3.4 -> 3.3.5

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/arangodb/versions.
These checks were done:

built on NixOS
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangobench --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangobench --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangodump --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangodump --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangoexport --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangoexport --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangoimp --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangoimp --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangorestore --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangorestore --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangosh --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangosh --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangovpack --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangovpack --version and found version 3.3.5
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangod --help got 0 exit code
ran /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangod --version and found version 3.3.5
found 3.3.5 with grep in /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5
directory tree listing: https://gist.github.com/337ef8c0118bd40661d6f7e5ee70d7b0

cc @flosse for review

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: arangodb
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowBroken = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowBroken = true; }
to ~/.config/nixpkgs/config.nix.

Success on aarch64-linux (full log)
Attempted: arangodb
Partial log (click to expand)
shrinking /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/bin/arangoexport
shrinking /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/bin/arangodump
shrinking /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/bin/arangobench
gzipping man pages under /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/share/man/
strip is /nix/store/3zq400fri5dv7d30lpxlqm2v9y1iis6j-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/bin  /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/sbin
patching script interpreter paths in /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5
checking for references to /build in /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5...
moving /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/sbin/* to /nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5/bin
/nix/store/x3pnd0yqf2j3pxl0i6k16ajpsa30x887-arangodb-3.3.5

Success on x86_64-linux (full log)
Attempted: arangodb
Partial log (click to expand)
shrinking /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangobench
shrinking /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin/arangoimp
shrinking /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/sbin/arangod
gzipping man pages under /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/share/man/
strip is /nix/store/fzcs0fn6bb04m82frhlb78nc03ny3w55-binutils-2.28.1/bin/strip
stripping (with command strip and flags -S) in /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin  /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/sbin
patching script interpreter paths in /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5
checking for references to /tmp/nix-build-arangodb-3.3.5.drv-0 in /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5...
moving /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/sbin/* to /nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5/bin
/nix/store/q4bysqkv943yxr5bbyg5ph26py192q04-arangodb-3.3.5


Create "contact me" form

Look into formik and react-hooks forms to produce a simple form to contact.
Then research and implement ways to automate emails through this.

https://www.gatsbyjs.org/docs/building-a-contact-form/


Python: planner json malformed

https://github.com/microsoft/semantic-kernel/blob/f9bef6375cbb07dfe18948047a56ae9ab722ff62/python/semantic_kernel/planning/action_planner/action_planner.py#L116C24-L116C24
Frequently the json from the planner is erroring for being malformed, and I believe it's because of this line - it goes from, for example:
generated_plan_raw_str = '{"plan":{\n"rationale": "the list does not contain functions to generate apologies or any form of communication",\n"function": "",\n"parameters": {\n}}}\n#END-OF-PLAN'
To
generated_plan_str = '{"plan":{\n"rationale": "the list does not contain functions to generate apologies or any form of communication",\n"function": ",\n"parameters": {\n}}}'
Note the value of "function" in the json blob is now malformed.
Not sure why this line is here, perhaps it's dealing with a common issue elsewhere? But it seems to be the culprit...
Running against openai gpt-4

Hi @silarsis, are you able to provide this exact code so we can easily repro it? Or is it a notebook/kernel example you're following? Thanks.

Ah, it's my own project - have a look at https://github.com/silarsis/assistant/blob/ab96ddefcb4dd48d6cbf48b0b80325eb66eb13e5/agent/models/guide.py#L157 but it's a bit of a dog's breakfast atm, being converted from guidance to sk. But that call should be relatively straightforward, and the prompt that go tit there was "apologies for the debugger".
I think the problem is the planner isn't finding a function it can use so generating json with a blank string for the function name, and then the regexp is killing it.


Token error

Hi - I upgraded to the new versions; this gave some errors in the log (specifically the addon) - specifically "return code not 200"; I deleted everything subsequently and now only installed the new add-on which provides the following errors:
2021-11-20 18:24:30.379  INFO Eufy Security server listening on port 3000
2021-11-20 18:24:31.292  INFO Switching to another API_BASE (https://security-app-eu.eufylife.com/v1) and get new token.
2021-11-20 18:24:31.385  ERROR Status return code not 200
{
  status: 204,
  statusText: 'No Content'
}
2021-11-20 18:24:31.391  ERROR Token error

Anyone else experiencing this?

I see its raised elsewhere. Will close

https://github.com/bropat/eufy-security-client/issues/67


Issue #459: Deprecate StringHistogram for backward compatibility

Description
Fixes #459
Type of change
Bug Fix to ensure backward compatibility within new versions.
Checklist:
Here is the list of things you should do before submitting this pull request:

[x] New feature / bug fix has been committed following the Contribution guide.
[x] Add logging to the code following the Contribution guide.
[x] Add comments to the code (make it easier for the community!).
[x] Change the documentation.
[x] Add tests.
[x] Your branch is updated to the main branch (dependent changes have been merged).

How Has This Been Tested? (Optional)
This will be tested with an old table written with histogram transformation and version 0.7.0 of Qbeast Spark.

After discussion, we agreed on:

Allow writing with StringHistogramTransformer and StringHistogramTransformation.
Use superseded and merge methods to change between StringHIstogram and CDF for the moment.
Add a method to change from histogram to cdf metadata.


Display files that we are receiving from other side

On desktop - files that we are receiving from the phone
On phone - files that we are receiving from the desktop

55df270, fa51fba

I am going keep it open due to the changes not being merged into master yet

https://github.com/rakivo/droppa/pull/32


I updated answer for secret password in the assignment.md

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
I updated answer for secret password in the assignment.md.
What did you learn from the changes you have made?
I practiced how to use command cd to open the folder, dir to show the contains in the folder, cat to open the file in the folder.
I also learned how to clone git repo onto my computer.
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
No.
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
As a student new to github, it takes me long time to understand how to do the submission. The tutorials of 🍴How to Fork a Repository - NEW! and 💾 How to Submit an Assignment - NEW! really helps!
How were these changes tested?
Can't test the changes.
A reference to a related issue in your repository (if applicable)
N/A
@mentions of the person or team responsible for reviewing proposed changes (At least 2 people)

Checklist

[X] I can confirm that my changes are working as intended

pamwa@Pam MINGW64 ~
$ cd onedrive
(base)
pamwa@Pam MINGW64 ~/onedrive
$ dir
Desktop    Email\ attachments   Pictures
Documents  Personal\ Vault.lnk  desktop.ini
(base)
pamwa@Pam MINGW64 ~/onedrive
$ cd desktop
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop
$ cd dsi
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi
$ dir
dir1  dir3         hello.txt     my_new_repo  shell         testfile1
dir2  dsi_c3_demo  my_directory  newfile.txt  testfie2.txt
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi
$ cd shell/02_assignments/
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments (assignment)
$ dir
assignment.md  clues
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments (assignment)
$ cat clues
cat: clues: Is a directory
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments (assignment)
$ cd clues
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ dir
albums  food  movies  shows
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ dir
albums  food  movies  shows
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ dir
albums  food  movies  shows
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ cd movies
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies (assignment)
$ dir
hanger_games  space_wars
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies (assignment)
$ cd hanger_games
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ dir
movie_1.txt  movie_2.txt  movie_3.txt  movie_4.txt
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ cat movie_4.txt
Hanger Games & the Stars of Darkness
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ ^C
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ ^[[200~$ cd clues
bash: $'\E[200~$': command not found
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ cd clues
bash: cd: clues: No such file or directory
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ cd desktop
bash: cd: desktop: No such file or directory
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ cd..
bash: cd..: command not found
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies/hanger_games (assignment)
$ cd ..
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies (assignment)
$ cd .\

cd .
bash: cd: too many arguments
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/movies (assignment)
$ cd ..
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ dir
albums  food  movies  shows
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues (assignment)
$ cd food
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food (assignment)
$ dir
cake
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food (assignment)
$ cd cake
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ dir
chocolate_cake.txt  red_velvet_cake.txt  vanilla_cake.txt
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cd chocolate_cake.txt
bash: cd: chocolate_cake.txt: Not a directory
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cat chocolate_cake.txt
Milk
Cake Flour
Eggs
Cocoa Powder
Dark Chocolate
Baking Powder
Sugar
Vanilla Extract
Butter
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cd ..
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food (assignment)
$ dir
cake
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food (assignment)
$ cd cake
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ dir
chocolate_cake.txt  red_velvet_cake.txt  vanilla_cake.txt
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cat red_velvet_cake.txt
Baking Powder
Milk
Vanilla Extract
Red Food Colouring
Eggs
Cocoa Powder
Sugar
Butter
Cake Flour
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cd .
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ dir
chocolate_cake.txt  red_velvet_cake.txt  vanilla_cake.txt
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cat vanilla_cake.txt
Milk
Sugar
Baking Powder
Cake Flour
Eggs
Butter
Vanilla Extract
Paper Rings
(base)
pamwa@Pam MINGW64 ~/onedrive/desktop/dsi/shell/02_assignments/clues/food/cake (assignment)
$ cd ...
bash: cd: ...:


Extract additional triple details from serialized Swift ASTs.

Unfortunately things like the vendor name can affect Swift's ability
to find the correct stdlib.
Backported for Linux fix from bf4f8fe for Swift 5.1.4
rdar://problem/45766181

This is a backport of #2060

@swift-ci please test 5.1

@adrian-prantl can you kick off tests and merge as necessary?

It looks like this was already back-ported in https://github.com/apple/llvm-project/commit/2079772a6616ef13e91e606f2d8aaa49f4fd2f21


Failure in guessing col_types result in warnings an NA-values

When a column in the excel-file have numeric values in the first rows, and text further down in the column, the "guess col_types" will set col_types to numeric. The import will give warnings and the non-numeric values will be NA.
Suggestion is to re-evaluate the content of whole column if the error-message appear, and then import with suitable format.
Another solution may be to just fall back to set col_types for that column to "text" and reimport if there's a error message of not matching data types.
I've linked 2 example docs from my dropbox, one working and one failing.
https://www.dropbox.com/sh/8mzk6z12f99ye4w/AABe-C7fxCzm1lomNyge1pw_a?dl=0
File "working_numeric_import_small.xlsx" have non-numeric data in early rows, so that import works by just runng read_excel("working_numeric_import_small.xlsx")
The file "error_numeric_import.xlsx" have numerical data in the first rows, but other characters in later rows.
Running 'read_excel("error_numeric_import.xlsx")' will give the following warnings:
Warning messages:
1: In read_xlsx_(path, sheet, col_names = col_names, col_types = col_types,  ... :
[181, 3]: expecting numeric: got '555-55555'
2: In read_xlsx_(path, sheet, col_names = col_names, col_types = col_types,  ... :
[184, 3]: expecting numeric: got 'tel +46-70-55555888'
3: In read_xlsx_(path, sheet, col_names = col_names, col_types = col_types,  ... :
[294, 2]: expecting numeric: got '123736/1''
...
...

This is not the philosophy of readxl (and readr) - if you have column types that don't read in correctly by default, you'll need to supply the types explicitly. Hopefully the warnings are a hint to do this.  (I need to document this better, and probably provide a nicer way to override the defaults)

Any suggestion of R-code to use with read_excel to identify the problematic columns, define those as text, and use the automatic detection for the columns that's correctly identified?

I'm probably going to change the format of the warnings so that you can get a data frame that includes rows and columns of the errors. Then you'd be able to write what you need.

In r markdown proj documentation have {r opts, echo=FALSE, message=FALSE, warning=FALSE} yet readxl still produced warnings on cols not part of the analysis. Adding  {r readxl, echo=TRUE, eval=TRUE, warning=FALSE} again in the data import code block solved the problem. Would be nice to suppress on import.


[Feature/Bug] Validate Nostr key input into extension, if it's actually Nostr private key

Feature description
Looks like now in private key field one can paste npub and it derives another npub out of it

it confuses users, example
Describe the solution
validate whether pasted key is correct (if it starts with nsec....) - not sure if that's more difficult with hex format though
Describe alternatives
No response
Additional context
No response
Are you working on this?
None

I think it's impossible to know with hex, but most people will not use hex these days. We could possibly add a warning if you paste a hex key that it cannot be verified? @stackingsaunter

Now, if someone pastes his public key npub1myprivatekey into nsec field, it doesn't validate - the extension just changes it to nsec1myprivatekey and then derives a new public from this private one


Remove check for endOfFile in advance

Instead, let the lexer produce .eof itself. This will be needed for regex literal lexing, where the lexer may still want to produce an empty regex literal pattern when at the end of the file, before the .eof token.

@swift-ci please test

@ahoppen FWIW it seems this is a minor performance win too, parsing MovieSwiftUI:

time: ~16ms -> ~15ms
instructions: ~128,670,000 -> ~128,400,000


[ISSUE-186][Feature] Use I/O cost time to select storage paths

What changes were proposed in this pull request?

Solve #186
Why are the changes needed?

A better strategy to select remote path.
Does this PR introduce any user-facing change?

Three config added.

rss.coordinator.remote.storage.select.strategy support APP and IO, APP selection strategy based on the number of apps, IO selection strategy based on time consumption of reading and writing files.
rss.coordinator.remote.storage.schedule.time , if user choose IO, file will be read and written at regular intervals.
rss.coordinator.remote.storage.file.size , the size of each read / write file.

How was this patch tested?

Added ut.

Codecov Report

Merging #192 (83fbe69) into master (e1b9b80) will increase coverage by 0.53%.
The diff coverage is 86.97%.

@@             Coverage Diff              @@
##             master     #192      +/-   ##
============================================
+ Coverage     58.45%   58.99%   +0.53%
- Complexity     1272     1309      +37
============================================
  Files           158      160       +2
  Lines          8437     8596     +159
  Branches        782      798      +16
============================================
+ Hits           4932     5071     +139
- Misses         3254     3266      +12
- Partials        251      259       +8

Impacted Files
Coverage Δ

...iffle/coordinator/AppNumSelectStorageStrategy.java
72.34% <72.34%> (ø)

...apache/uniffle/coordinator/ApplicationManager.java
90.17% <89.47%> (+6.47%)
:arrow_up:

...iffle/coordinator/IOCostSelectStorageStrategy.java
90.99% <90.99%> (ø)

...rg/apache/uniffle/coordinator/CoordinatorConf.java
96.82% <100.00%> (+0.42%)
:arrow_up:

...org/apache/uniffle/server/LocalStorageChecker.java
67.74% <0.00%> (-1.83%)
:arrow_down:

...rg/apache/uniffle/storage/common/LocalStorage.java
43.66% <0.00%> (-1.02%)
:arrow_down:

...org/apache/uniffle/server/ShuffleFlushManager.java
78.33% <0.00%> (-1.00%)
:arrow_down:

...java/org/apache/uniffle/common/config/RssConf.java
28.47% <0.00%> (-0.50%)
:arrow_down:

.../org/apache/uniffle/common/util/UnitConverter.java
47.36% <0.00%> (+0.22%)
:arrow_up:

...he/uniffle/server/buffer/ShuffleBufferManager.java
83.19% <0.00%> (+0.42%)
:arrow_up:

... and 1 more

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

It may not correct enough to sample the I/O cost time.

Before reviewing this PR, I have some questions

How to disable this strategy in conf? If we only specify one path, there is no need to do storage selection, like specifying single s3a path.
IO cost time maybe meaningless depending on the single w/r      time to construct the rank. But I think it’s ok to check whether the dfs namespace is healthy by this way
Can u share some requirements on your production env. From my side, dfs can be as a big and stable enough store for storing shuffle data.

Thank you for your questions. My answers are as follows:

If the parameter rss.coordinator.remote.storage.select.strategy is set to APP, it will be the original selection strategy.
The reason why this strategy is adopted at present is to prevent some exceptions in the HDFS path under different namespaces. We can avoid selecting this path.
At present, we want to support multiple clusters, but the pressure of each cluster is different. We want to select the cluster with the least pressure to write data, instead of writing data to each cluster evenly. In fact, our understanding of configuring multiple HDFS paths can play a certain role in disaster recovery.
@jerqi @zuston

Now the core of this PR is to enable multiple HDFS paths to have certain disaster tolerance capability. IIRC, the metrics of HDFS can only be obtained through the rest API, and it may not be very stable through HTTP. WDYT?

Now the core of this PR is to enable multiple HDFS paths to have certain disaster tolerance capability. IIRC, the metrics of HDFS can only be obtained through the rest API, and it may not be very stable through HTTP. WDYT?

Now the core of this PR is to enable multiple HDFS paths to have certain disaster tolerance capability. IIRC, the metrics of HDFS can only be obtained through the rest API, and it may not be very stable through HTTP. WDYT?

Could we separate this pr into two pull requests? One is to refactor the interface, the other is to add the other strategy.
If we want to avoid the HDFS which was broken, I think we should a RemoteStorage HealthChecker.
Why is  the http metrics unstable? If HDFS provide a http metrics, it only means that we can't access it frequently. If I am wrong, you can point out.

I think what you said is reasonable. I agree to divide into two PRS. However, at present, the load of the cluster can not be perfectly evaluated. However, the read-write time can directly compare the I / O speed of the cluster. Moreover, for HDFS metrics, there is no metric that can directly reflect the pressure of the cluster.

I think what you said is reasonable. I agree to divide into two PRS. However, at present, the load of the cluster can not be perfectly evaluated. However, the read-write time can directly compare the I / O speed of the cluster. Moreover, for HDFS metrics, there seems to be no metric that can directly reflect the pressure of the cluster.

Read-write time can't  reflect the overall situation of the cluster.

Maybe you can collect the write speed from shuffle servers.

I think there are many metrics that can directly reflect the pressure of the cluster.

Thanks for your reply @smallzhongfeng

At present, we want to support multiple clusters, but the pressure of each cluster is different. We want to select the cluster with the least pressure to write data, instead of writing data to each cluster evenly. In fact, our understanding of configuring multiple HDFS paths can play a certain role in disaster recovery.

Got your thought. In our internal company, we have a router filesystem to support fault tolerance between namespaces. So there is no such requirement.

Moreover, for HDFS metrics, there seems to be no metric that can directly reflect the pressure of the cluster.

Can we implement a HDFS checker to check the w/r time whether to exceed the threshold?

It seems difficult to determine a reasonable threshold, so it may be better to directly compare the time consumption from different path. @zuston

If the speed of writing to one of the paths of the shuffle servers is collected, the other paths may never be written.

I think there are many metrics that can directly reflect the pressure of the cluster.

There are indeed some metrics that can reflect the load of the cluster, but will the Read-write time be more critical for these shuffled temporary files.

Time consumption actually is not meaningful. For example. one namespace cost 10s, but another namespace cost 10.1 s. For my side, there is no difference on two namespaces' performance .

Yes, because of the instantaneous value obtained at present, I have replaced it with the mean value over a period of time.

I think there are many metrics that can directly reflect the pressure of the cluster.

There are indeed some metrics that can reflect the load of the cluster, but will the Read-write time be more critical for these shuffled temporary files.

Em ... I can't agree with it.  Because read-write time is just a sample and you can't write much data, it's not accurate.

Just give my advice, you should verify the feature in your production environment.

It doesn't matter. Maybe you're right. After all, it's also a process of discussion. Then, this solution has been deployed in our online cluster for nearly a month.

Sorry, I can't disclose it, but this is a related log.

Sorry, I can't disclose too much, , but this is a related log.

Sorry, I can't disclose too much, but this is a related log.

Do you have measure the performance of two clusters? Is the data written to them proportional to the number of nodes?

At present, the data we Read-write is 10m, so it is fast in theory, and this has nothing to do with the number of nodes. Reading and writing should depend on the performance of the disk. Right?

There are more DataNodes, the cluster can provide more IO capability, we should allocate more data to this cluster.

I think this comparison may be a bit unreasonable, because it may be related to the model, disk type, and some other factors, we can't say that a machine with 80 ssd disks is necessarily slower than a machine with 200 hdd disks. But the most direct way may be to read and write files, which can directly reflect the pressure of DataNodes at that time.

How to evaluate the throughout of the HDFS cluster? I use the throughout of the DataNode *  the number of throughout. Don't care the single write and read time too much.

If you use the hdfs metrics system, which metric do you think is better to measure? The length of callqueue or the ratio of the load of dn to the number of dn

If use the hdfs metrics system, which metric do you think is better to measure? The length of callqueue or the ratio of the load of dn to the number of dn

Maybe you can ask your company internal HDFS colleagues.

Maybe we can use the number of threads reading and writing files of DN to judge the load of the cluster. The general idea is as follows:
DistributedFileSystem dfs = (DistributedFileSystem) fs;
DatanodeStorageReport[] datanodeStorageReports =
        dfs.getClient().getDatanodeStorageReport(HdfsConstants.DatanodeReportType.LIVE);

Do you mean the xceiverCount? If DN use a fix size thread pool, thread number won't stand for the load of DN. It depends on the implement of DN.

Yes, but the load of the HDFS metrics is the sum of xceiveCount of this DN, which also enables relatively accurate path selection.

If you just use the single w/r time to judge whether HDFS is usable or not, it's ok. But you use the single w/r time as the metric of system load, it seems wrong. Could we get some metrics of HDFS? It may be more accurate. I don't know whether HDFS provide similar metrics.

Just my opinion, our goal is to choose a faster cluster, and from this point of view it makes the most sense to use w/r speed for evaluation. There are many factors that affect the w/r speed, such as NameNode RPC, DataNode IO, Network, we don't need to care about these.

If you just use the single w/r time to judge whether HDFS is usable or not, it's ok. But you use the single w/r time as the metric of system load, it seems wrong. Could we get some metrics of HDFS? It may be more accurate. I don't know whether HDFS provide similar metrics.

@jerqi Just my opinion, our goal is to choose a faster cluster, and from this point of view it makes the most sense to use w/r speed for evaluation. There are many factors that affect the w/r speed, such as NameNode RPC, DataNode IO, Network, we don't need to care about these.

W/R speed is ok. But I don't think we can meaure the speed by writing 10MB data every some minutes. @smallzhongfeng we also need to avoid too many applications to choose the same HDFS, Because many applications will start at 0 o'clock. They will choose the fatest HDFS at that time if we use your strategy. We ever met similar problems, we allocate too many applications to the shuffle servers. so we raise a pr https://github.com/Tencent/Firestorm/pull/3/files.

I can understand what you mean, if it is the service of the shuffle server, load balancing is very critical, otherwise the load of the server will increase, but we are currently only writing the temporary data of the shuffle, and only the dn node of hdfs is under pressure. I don't think the load of dn needs to be compared with the pressure of shuffle server. Even if the data of all apps are written to the same path, there will not be too much pressure on dn. We just want to choose a faster cluster to write data. And when the load of dn is very high, it will also affect the time to read and write data.

Because the original strategy of allocating paths based on the number of apps still exists, you only need to change the parameters to meet the original requirements. At the same time, for other users, like us, they just want to provide a means of disaster recovery, so configure multiple path, but if you want to write to a cluster with faster writing speed as much as possible, is the new strategy more suitable?

Because the original strategy of allocating paths based on the number of apps still exists, you only need to change the parameters to meet the original requirements. At the same time, for other users, like us, they just want to provide a means of disaster recovery, so configure multiple path, but if you want to write to a cluster with faster writing speed as much as possible, is the new strategy more suitable?

OK, but we should give the class another better name and add some comments to explain why we need this strategy.

OK, but we should give the class another better name and add some comments to explain why we need this strategy.

OK. I'll add some comments later and what do you suggest for the name of this class.

@smallzhongfeng For this update, agree @jerqi to add the common interface with the default strategy. I prefer to add common strategy in the project, for specific strategy, it can be implemented by user as a plugin.
The current strategy to test HDFS's workload depend on the communication between Coordinator and DN, so it can't tell if shuffle server has problem with HDFS. On the other hand, we don't know when the shuffle process happen after registration, maybe 10s, maybe 1 hr, and situation will be different from registration.

OK, but we should give the class another better name and add some comments to explain why we need this strategy.

OK. I'll add some comments later and what do you suggest for the name of this class.

AvailabilitySelectStorageStrategy or HealthSelectStorageStrategy, but I don't these names are good enough.

OK, but we should give the class another better name and add some comments to explain why we need this strategy.

OK. I'll add some comments later and what do you suggest for the name of this class.

like AvailabilitySelectStorageStrategy or HealthSelectStorageStrategy, but I don't these names are good enough.

Maybe HealthSelectStorageStrategy will better than AvailabilitySelectStorageStrategy . Because availability should consider the HDFS service capacity.

Thanks for your explanation, you and I are on the same page.@colinmjj Agree with you @jerqi , HealthSelectStorageStrategy seems be better than others. I will change it later，how about AppNumSelectStorageStrategy change to AppBalanceSelectStorageStrategy.

Thanks for your explanation, you and I are on the same page.@colinmjj Agree with you @jerqi , HealthSelectStorageStrategy seems be better than others. I will change it later，what about AppNumSelectStorageStrategy change to AppBalanceSelectStorageStrategy.

AppBalanceSelectStorageStrategy is ok for me.

Is IOSampleSelectStorageStrategy a better name? HealthSelectStorageStrategy is a little general.

Is IOSampleSelectStorageStrategy a better name? HealthSelectStorageStrategy is a little general.

I still worry about the name ...  HealthSelectStorageStrategy and IOSampleSelectStorageStrategy aren't good enough.

The comparison of  IO sample isn't meaningful. Do we remove it?

The comparison of IO sample isn't meaningful. Do we remove it?

I want to say that the reading and writing time is of certain reference value. For us, the writing speed of large clusters is faster than that of small clusters.

The comparison of IO sample isn't meaningful. Do we remove it?

I want to say that the reading and writing time is of certain reference value. For us, the writing speed of large clusters is faster than that of small clusters.

Em... just one time WR, why will the large clusters be faster than small clusters? They process the same request pressure?

Because some requirements of the current parameter configuration of the two clusters are different, the reading and writing speeds are not the same.

In general, I hardly accept that we use sample IO speed to judge the speed HDFS. And it's a little weird that we use this strategy to judge whether HDFS is ok. It should be a common capacity to judge storage's health. Maybe we should use the shuffle server to judge whether HDFS is ok.

Because all shuffle servers access the same hdfs path at the same time, this is actually unnecessary. For the process of reading and writing, you can actually understand that this process is not only about calculating his time, but also whether it can read or write normally. Whether there will be exceptions in the process of reading and writing, this is actually an extra check on whether the cluster is abnormal.

Could we implement the check HDFS logic  in AppBalanceSelectStorageStrategy?

Because for us, a large and faster cluster needs to write more data, instead of writing to two clusters evenly, and this only provides a strategy. If we want to modify the original policy, maybe we can add these logic in another PR?

Because for us, a large and faster cluster needs to write more data, instead of writing to two clusters evenly, and this only provides a strategy. If we want to modify the original policy, maybe we can add these logic in another PR?

The measure of this strategy can't prove the cluster which you select is a larger and faster cluster.

The interface is ok for me. But the strategy is hardly acceptable for me. Maybe you can only modify the interface in this pr,  you can only maintain the strategy for your internal implement.

If you want to use the IO sample, please modify your sample method. One time is not enough, 10M may be two small. The value must be bigger than single buffer flush threshold.

Your suggestion is good for me and I added a parameter rss.coordinator.remote.storage.access.times for the number of times to read and write files. The default file size is 200m.

Actually, we don't need to write multiple times in one sample, you can collect multilple samples to caculate the IO cost time.

If we increase the sample times and you insist on the comparision of io sample, could we change the class name from  HealthSelectStorageStrategy to LowestIOSampleSelectStorageStrategy?

I'm sorry for the trouble my insistence has caused you, but this does have certain application scenarios in our company. At present, LowestIOSampleCostSelectStorageStrategy may be more suitable. I will change.

What changes were proposed in this pull request?
Solve #186
Why are the changes needed?
A better strategy to select remote path.
Does this PR introduce any user-facing change?
Three config added.

rss.coordinator.remote.storage.select.strategy support APP and IO, APP selection strategy based on the number of apps, IO selection strategy based on time consumption of reading and writing files.
rss.coordinator.remote.storage.schedule.time , if user choose IO, file will be read and written at regular intervals.
rss.coordinator.remote.storage.file.size , the size of each read / write file.

How was this patch tested?
Added ut.

Please update the description.

Please update the description.
Updated.

Thanks all. And thank you for your hard review. @jerqi


not found file of

i download this demo
i build the project that  time occur error is below
error: could not read data from '/Users/mypc/Downloads/Calendar-master-2/Pods/Target Support Files/OrderedDictionary/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.
could not read data from '/Users/mypc/Downloads/Calendar-master-2/Pods/Target Support Files/OrderedDictionary/Info.plist': The file “Info.plist” couldn’t be opened because there is no such file.

please help me...


Error after fresh install on Ubuntu 22.04

Issue Type
Bug
Issue Description
Just installed Ubuntu 22.04 and reinstalling everything, including Atom. The first package I installed was linter-eslint for v7+. It seems the linter is unable to start and immediately throws getRulesMetaForResults is not a function.
Bug Checklist

[ x] Restart Atom
[ x] Verify the eslint CLI gives the proper result, while linter-eslint-node does not
[ ] Paste the output of the Linter Eslint Node: Debug command from the Command Palette below

n/a

Does the “Linter Eslint Node: Debug” command not execute at all? The error message you posted is one that would be thrown when the package tries to lint a file, not beforehand. It will try to lint JavaScript files (in ESLint projects) if such a project is restored from a previous session on startup. If it gets that far, the package has initialized successfully.
That error message also suggests a situation where the package thinks it's successfully found a version of ESLint to load, but is wrong. I'm curious how the project in question is structured, and whether ESLint is installed globally or locally.

The error was definitely thrown when it tried to lint a file but I wasn't able to run the debug command. I tried both immediately after a fresh install and after a Atom restart as well as after a full system restart, just to see if that would make a difference. In any case eslint was installed locally (7.22.0) – I was in a hurry to reset everything after the Ubuntu upgrade so I simply downgraded to<EMAIL_ADDRESS>and everything seemed to be working as expected again (files linting on save, etc.) So I haven't bothered to go back and try again with linter-eslint-node.

This is related to #27 I think

This got fixed in #28. We're not publishing to Pulsar's package repo yet, but those who installed straight from GitHub (ppm install AtomLinter/linter-eslint-node) will get the update, I think.


CustomInfoWindow get properties inherit class from TKCustomMapPin

Hello all,
I'm building a customInfoWindow in my CustomMapRenderer following exemple of xamarin forms and the one given in this sample.
I have a CustomPin class that extends the TKCustomMapPin.
   public class CustomPin : TKCustomMapPin
    {
        public Object Object { get; set; }

    }

What I want is to access  object's properties from my CustomPin class in the CustomRenderer :
 Android.Views.View GoogleMap.IInfoWindowAdapter.GetInfoContents(Marker marker)
        {
 var pin = this.GetPinByMarker(marker);
            if (pin == null) return null;
 var infoTitle = view.FindViewById<TextView>(Resource.Id.InfoWindowTitle);
//Here get object properties but I only got those from TKCustomMapPin class, "Object" inacessible
infoTitle.Text = pin.Object.Text;
 }

But I dont think the TKCustomMapRenderer.GetPinByMarker can get me what I want as it returns the pin property and not the customPin itself ... I know its probably not a "TKPackage's matter" but probably I'm missing something :) .
Thanks.

Well I think I was not very clear.
What I'm trying to achieve is to access a propertie of my CustomPin class which inherits from TKCustomMapPin and I've also got a CustomMap that inherits from TKCustomMap.
How can I get my CustomPins in my customRenderer as GetPinByMarker returns the TKCustomMapPin.
Thanks.

No, even if it would be virtual, you wont be able to change the signature.
You can simply create your own method, something similar to this:
CustomPin GetRealCustomPinByMarker(Marker marker) => GetPinByMarker(marker) as CustomPin;

Eh eh did not think about that ... Thank you very much !


interrogator does not processing model.

it was fine until yesterday, today I am getting this error.
The size of tensor a (8) must match the size of tensor b (64) at non-singleton dimension 0
every time trying to interrogate image.
tried few other models, same problem.

same


Add digits in factorial

Have you read the Contributing Guidelines on Pull Requests?
YES
Description
The factorial operation is encountered in many areas of mathematics, notably in combinatorics, algebra, and mathematical analysis.
Checklist

[ X ] I've read the contribution guidelines.
[ X ] I've checked the issue list before deciding what to submit.
[ X ] I've edited the README.md and link to my code.

Related Issues or Pull Requests
issue: #2633

Hello @HarshCasper , please review the pr and can you help me resolve the conflicts, Thank you!


Update sys-dm-server-memory-dumps-transact-sql.md

Added  SQL Server 2008 R2 Service Pack 1 ( SP1 ) to indicate when the dynamic manangement view ( sys.dm_server_memory_dumps ) was introduced.

@DanielAdeniji : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@WilliamDAssafMSFT : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Thanks @DanielAdeniji for submitting this PR. I've added a collaborating commit. Your commit will be merged and this article update is in flight. After the updated article is published, GitHub will list you as an article contributor.
Thanks again for this feedback, your suggestions help improve our documentation.
#sign-off


Add residual monitor for checking for correct handling of essential boundary conditions

This branch adds a simple ResidualBCMonitor that can be used to check if essential b.c. are properly imposed on the initial guess, rhs, operator, and preconditioner.
To use this class simply add  something like
   ResidualBCMonitor bc_mon(ess_tdof_list);
   iter_solver.SetMonitor(bc_mon);

before the call to iter_solver.Mult.

PR
Author
Editor
Reviewers
Assignment
Approval
Merge

#1633
@v-dobrev
@tzanio
@barker29 + @jandrej
07/19/20
⌛due 08/02/20
⌛due 08/09/20

@v-dobrev  Thanks for adding this, that's a good idea! We'd have caught the issue fixed in https://github.com/mfem/mfem/pull/1563/commits/5c1f9b64af4574c3515e1cda226c5d675279e47d earlier.

@v-dobrev Thanks for adding this, that's a good idea! We'd have caught the issue fixed in 5c1f9b6 earlier.

@stefanhenneking, yes, this PR was inspired by that issue and I also tested it there.

LGTM

Merged in next for testing...


can not use this.$emit?

I've try to used this.$emit  in the some.component.js
this.$emit('myCustomEvent', 'Data to send');
but the browser show the error that
$emit is not a function
then I end up using
$scope.$emit('myCustomEvent', 'Data to send');

Reactive component has only meteor-mongo related things. Why it should also contain $emit, $broadcast and $on?
It works in different direction, Scope is extended by ReactiveScope, not the other way.

@kamilkisiela Thank you. I'm trying to send data from $mdDialog(angular material) to their parents.
Do you know how to do it?

@pacozaa look at the example https://material.angularjs.org/latest/demo/dialog
To send data back you can use $mdDialog.hide(answer) . answer is your data.
$scope.answer = function(answer) {
    $mdDialog.hide(answer);
  };

@Deadly0  Thank you :)


do you mind to add io_uring support?

i think it is possible and not hard to add new ioqueue and procs on common structures which will run syscalls through io_uring

It is possible, however this won't be done before the epoll backend is solid as we do need a reference to validate the queue.

i imagined it different, it still uses sort of ioqueue but there is no wait and events, io_uring did it all under the kernel. As we dont need to wait when socket will be available it can be blocked in kernel we can use all existed proc implementations (socket_posix.writeImpl for example already would work) changes would be with syscall module. it needed to replace read/write/open/… syscall procs with same trannsfering it through io_uring

It will become an offshoot module similar to ioqueue/iocp where a submission and wait functions will be provided (for iocp the submission is done by the read/write/etc syscalls directly, so it doesn't show up in ioqueue API)

i made a small experiment to showcase what changes can be made to adopt io_uring
https://github.com/blackmius/nim-sys (last 2 commits)


refactor: remove templated json generation

part of #362

Could you help me understand why it's an improvement? It feels approx the same performance and complexity overall

the json.encode_ident does not provide any performance improvement over the templated json, it is purely nice to have to allow more properties to be added to the platform sub-object conditionally without templating tricks. https://github.com/opencontainers/image-spec/blob/main/image-index.md#image-index-property-descriptions
I can revert that.
That said the use of write_file is unnecessary here and adds some performance overhead. eg: spawning some actions to write a file which is pure overhead given that we already write the same content to the BUILD file.

actually, now that I think about it more, I will keep that part the same just make it more ergonomic. eg: instead of two templates, just use one.

@alexeagle i took back the templated strings back and made an util function that can add variant as well. now we match crane pull 100% of the cases.
now we have the ability to write a starlark unit test for the util function.  see #138


Python azure function won't deploy due to datalake store not found error.

Repro steps:

Action: azureFunctions.deploy
Error type: ENOTFOUND
Error Message: getaddrinfo ENOTFOUND pacdatalakestore.blob.core.windows.net pacdatalakestore.blob.core.windows.net:443
Version: 0.18.1
OS: win32
Product: Visual Studio Code
Product Version: 1.38.0
Language: en

Call Stack
GetAddrInfoReqWrap.onlookup [as oncomplete] dns.js:57:26

@Manofdesign please add repro steps


Add .bg-center-bottom and .bg-center-top

I found that there was no way to center a background image at the top or bottom of the element using the available classes. It is possible to center it on the right and left borders, though.
Those two new classes should fix this

This is not necessary, because if only one value is specified in background-position, the second value is assumed to be center. So, background-position: bottom (i.e. bg-bottom) is the same as background-position: center bottom.

Going to close this since it seems unnecessary, happy to revisit it if we can prove it's actually needed but spec and testing seem to suggest it's not. Thanks for the contribution regardless!


⚠ Bofrost.fr has degraded performance

In 0aed5ae, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 866 ms

Resolved: Bofrost.fr performance has improved in 3f2c56e.


Test make dependencies on Travis

Trying to debug a related problem in bblfsh/dashboard, blocking https://github.com/bblfsh/dashboard/pull/105
https://travis-ci.org/bblfsh/dashboard/builds/361636871
reproduced here in bblfsh/client-go too at:
https://travis-ci.org/bblfsh/client-go/jobs/365140987
The problem in behinf is that running make dependencies causes an error because it executes go get that fails because there is missing stuff.
If it is run the cgo-dependencies before the go get, everything goes well.

@juanjux This is the problem we were talking about this afternoon
@mcuadros Since I reverted one change you introduced by https://github.com/bblfsh/client-go/commit/a015dd11f85f048fd55f7a478b3c3893f417fe65#diff-b67911656ef5d18c4ae36cb6741b7965R29 could you ptal?

Thank you! :heart:


expose diskus internals as library

Closes https://github.com/sharkdp/diskus/issues/12

Thank you very much for working on this!

Addressed commends

Thank you for the quick update!
Please don't rebase & force-push when addressing review comments. I know you probably just want keep the commit history clean (which is nice), but it's hard to review the updates because I cannot incrementally review the changes.
The doc-comment has not been moved, right? Also, can we please remove the fn foo() { .. part?

What are you referring to when you say doc-comment? Are you referring to the fn foo() {}?

Yes, the "basic usage" documentary comment that you wrote

Got it. Removed it

I think we should move it to lib.rs (as posted above), not remove it.

Oh got it. My bad, read 'move' as 'remove'. Fixed.

Thank you


I want specific descriptions about some sub-functions on the tomographicModels

Hi!
I'm very thrilled using the LEAP CT tool, adopting things i used on MATLAB.
Especially, the FDK runtime reconstructing my own real-data from C-arm felt brilliant.
Such fast and correct reconstruction was applied.
However, I have two problems using this tool on my research project.
First, for using the function " leapct.load_param(param_fn) " I can't guess what form of data would be appropriate for the "param_fn".
I want easily allocating the CT geometry parameters by using this function.
Second, I an really looking ahead for the projection tool on LEAP.
The example code shows that syntax like "  f = leapct.load_volume(img_fn)  " can help loading volumes for forward projection
but i also can't find the data form of img_fn . I tried really hard searching for guides, and leaked for the source code, but i have no idea about it. Please give me a guide and an example of the img_fn data.
Thank you.

Hello.
The function leapct.load_param(...) is just for loading CT geometry and CT volume parameters from a file with a specific syntax.  You don't need to use such a file; we just provide this as an option that is convenient sometimes.  Anyway, I added an example parameter file to the repo so you can see what it looks like.  You can find it here
Have you looked through the demo scripts here?
There are a lot of examples here that show you how to specify the CT geometry and CT volume parameters.
Now let's talk about the leapct.load_volume(...) function.  Again, you don't need to use this function to use LEAP.  It just loads volume data from a few commonly used file formats.  You are definitely welcome to use your own data loading methods.  The projection and volume data numpy arrays are assumed to be something like the following.
projection data
g = np.ascontiguousarray(np.zeros((numAngles,numRows,numCols),dtype=np.float32), dtype=np.float32)
volume data
f = np.ascontiguousarray(np.zeros((numZ, numY, numX),dtype=np.float32), dtype=np.float32)
Let me know if you have any further questions.

Did this resolve your issue?

Absolutely!
Now I can efficiently work about this projector tool!
Really busy throwing away Matlab, adopting every codes using LEAP...
Thanks a lot!


Provide optional parameters to support AZ redundancy for MySQL and Web App and HA for MySQL

Also includes additional, optional, parameters to configure MySQL SKU, storage, and IOPS.
New parameters for main.bicep:

mySqlSkuTier
mySqlSkuName
mySqlHighAvailability
mySqlStorageSizeGB
mySqlStorageIops
availabilityZonesEnabled

These parameters have default values which are the same as the current deployment without HA and AZ.

Also adds support for specifying a specific REDCap version to download from the REDCap community site.


XDPMP: add support for XDP_RX_ACTION_TX

Add support for XDP_RX_ACTION_TX to XDPMP, which unblocks testing of all eBPF programs via a native XDP driver.
Without support for XDP_RX_ACTION_TX or currently unobtainable static verifier analysis of the eBPF program, we don't know if it will return the TX action. Therefore, XDP must assume eBPF will return the TX action and reject any bindings to interfaces that do not support TX yet.

Converting to draft until our longhaul tests stabilize.


在retry的时候 retryingTimes 一直返回为基数是什么原因？

Before Issue

Please search on the Issues
Please search on the wiki
Please set FileDownloadLog.NEED_LOG=true and review the Logcat output from main process and :filedownloader process ( pay attention to Warn and Error level logcat)

Issue

What problem do you get?
Which version of FileDownloader are you using when you produce such problem?
How to reproduce such problem?
Do you set FileDownloadLog.NEED_LOG=true?
Could you please reproduce this problem and provide all main process and :filedownloader process logcat
Can you fix it by yourself and request PR, if not, what's problem do you get when you try to fix it

P.S. If you don't know how to get :filedownloader process, it's recommended to using pidcat to just filter all your application logcat, or define process.non-separate=true on filedownloader.properties

请在Issue前认真的跟进上面提到的建议，这样将可以极大的加快你遇到问题的处理。

多谢反馈。


Randomizer keeps producing the seed<PHONE_NUMBER> after running for an extended period of time

Fixed in v1.0.2


Spinner concept: HBO Max style

You seem to be adding lovely spinners regularly, so I figured I'd bring you a concept I noticed that you didn't quite have yet.
This is the spinner from HBO Max:

Looks sorta like a combination between ImSpinner::SpinnerFadeDots() and ImSpinner::SpinnerMovingDots(), with the exception that the dots only move or fade, never both at the same time.  (May be interesting if they scaled instead of faded, too!)
Feel free to close if you're not interested; thanks for all the lovely animations!

Nice spinner, thanks. Will add this soon

Done in 2553c1b

Fantastic -- I love the other you did based on it too that really gave it that 3D feeling. Great job!


Spyder finds a module, but not it's submodule. Works in terminal

Description of your problem
Spyder doesn't find the submodule of a module, although it finds the module fine. Thus it is finding the location but not recognising the file maybe? It loads the submodule fine in a python or ipython session of the terminal
What steps will reproduce the problem?

pip install git+https://github.com/markcwill/hashpy.git
run spyder
import hashpy

What is the expected output? What do you see instead?
Expected output is for it to load normally. It loads normally in a python or ipython session in the normal terminal window. However in Spyder, it seems to only find the normal module (hashpy) and not the submodule (libhashpy) and produces the following error:
import hashpy
Traceback (most recent call last):

  File "<ipython-input-4-c4b8cd1c5277>", line 1, in <module>
    import hashpy

  File "hashpy/__init__.py", line 13, in <module>
    from hashpype import HashPype, HashError

  File "hashpy/hashpype.py", line 22, in <module>
    from hashpy.libhashpy import (mk_table_add, angtable, ran_norm, get_tts, get_gap,

ImportError: No module named libhashpy

The file with libhashpy is directly within the normal module's folder:
/home/user/anaconda2/lib/python2.7/site-packages/hashpy

Please provide any additional information below
I have already done the following:

uninstalled and reinstalled Spyder
updated conda and spyder to the newest versions
uninstalled and reinstalled hashpy
added the exact path of hashpy's site-packages folder to the PYTHONPATH window in Spyder
ran out of ideas

Versions and main components

Spyder Version: 3.1.4
Python Version: 2.7.13 64bit
Qt Version: 5.6.2
PyQt Version: PyQt5 5.6
Operating system: Ubuntu 16.04 LTS

Dependencies
Please go to the menu entry Help > Optional Dependencies (or
Help > Dependencies), press the button Copy to clipboard
and paste the contents below:
jedi >=0.9.0     :  0.9.0 (OK)
matplotlib >=1.0 :  2.0.2 (OK)
nbconvert >=4.0  :  5.1.1 (OK)
numpy >=1.7      :  1.12.1 (OK)
pandas >=0.13.1  :  0.20.1 (OK)
pep8 >=0.6       :  1.7.0 (OK)
psutil >=0.3     :  5.2.1 (OK)
pyflakes >=0.5.0 :  1.5.0 (OK)
pygments >=2.0   :  2.2.0 (OK)
pylint >=0.25    :  1.6.5 (OK)
qtconsole >=4.2.0:  4.3.0 (OK)
rope >=0.9.4     :  0.10.5 (OK)
sphinx >=0.6.6   :  1.6.1 (OK)
sympy >=0.7.3    :  1.0 (OK)

What happens if you start Spyder from a terminal? Does importing hashpy work in that case?

I always start from terminal because, as you suggest, sometimes things don't work when started from a shortcut. And nope, it doesn't import correctly when spyder is started from a terminal. Does it work on your machine?

I'll try it and let you know what happens in my case.

Another note: It also doesn't work in the normal python console of the Spyder IDE. I'm not sure if it's a true, pure python console or if there's more happening behind the scenes but I would guess that that implies that it's something deeper not working than the iPython console?

The latest update to that project was 5 years ago. I do not think this is specific to Spyder. Closing.


Does SQLDelight support LIKE operator with wildcard?

I've been trying to create a statement which uses the LIKE operator with a wildcard (%) but seems like it might not be supported or I could just be doing it completely wrong. Below is my statement:
select_by_name_match:
SELECT *
FROM people
WHERE name LIKE ?
ORDER BY name;

^ This is actually valid but what I want is to return any name that starts with the given arg. I've tried WHERE name LIKE '%?' but this is not valid.

you'll want to pass the % wildcard in the parameter instead of part of the sqlite. So your original SQLite is correct and you'll want to pass in something like
database.rawQuery(SELECT_BY_NAME_MATCH, new String[] { "A%" }) // Returns names that start with 'A'

let me know if there are problems with that

@AlecStrong Thanks that works great!


loader promise never resolves when error thrown in params.parse from deep route

Which project does this relate to?
Router
Describe the bug
When the error is inside params.parse, it doesn't reset parent's routes loader states and the UI is stuck in the loading state.
Configuration:

__root.tsx with async loader + pendingComponent + notFoundComponent + wrapInSuspense: true
_reustarant.tsx just a template for inner routes, no logic
_reustarant/$pizzaType.tsx here I throw an error in params.parse, catch it in onError and re-throw it as throw notFound()

// ..._root.tsx`
export const Route = createRootRoute({
  component: RootComponent,
  notFoundComponent: () => (

      No pizza (this is expected)

  ),
  pendingComponent: () => (

      Loading...

  ),
  loader: async () => {
    function sleep(ms: number) {
      return new Promise((resolve) => setTimeout(resolve, ms));
    }

    await sleep(3000);
    return { ok: true };
  },
  wrapInSuspense: true,
});

// ..._reustarant/$pizzaType.tsx`
export const Route = createFileRoute('/_reustarant/$pizza')({
  component: Component,
  params: {
    parse: (p) => {
      if (p.pizza === 'rotten') {
        throw new Error('404 No rotten pizzas')
      }
      return {
        pizza: p.pizza,
      }
    },
    stringify: (p) => ({ pizza: p.pizza }),
  },
  onError: () => {
    throw notFound()
  },
})

Your Example Website or App
https://stackblitz.com/edit/github-efx5cv-t3bmly?file=README.md
Steps to Reproduce the Bug or Issue

Open example app
Click on "Click to go to /rotten"

Infinite pendingComponent will be shown 'Loading...'
Expected behavior
I expect to see notFoundComponent
Screenshots or Videos

Platform

OS: Windows
Browser: Chrome
Version: Version 129.0.6668.101 (Official Build) (64-bit)

Additional context
No response

could you provide a unit test as a PR?


Translation API

Hi,
I had been testing the Tangerine Purple edition v2.0.0-prerelease, but it looks like it doesn't implement the Translation API in the web UI.
I am using LibreTranslate, and Mastodon 4.2.3, and if no custom CSS is chosen, I can see the Translate button with toots that are not in English.

Hi :)
Tangerine UI v2.0.0 improves translation by turning the "Translate" button into an actual button in the post's action bar, in the bottom right.
Can you see that button?

That is entirely my bad, thank you!


Versioning mess and build errors on IDF 5.0  (AEGHB-93)

I have been trying for 2 days to get espnow to work at the same when wifi is connected. I have IDF 5.0 version that comes with internal ESPNOW version 1.0
I want to upgrade to ESPNOW 2.0  is this repo for that? I assume yes, so I went to component registry and installed the ESPNOW component 2.0. It says anything higher than IDF 4.3 is supported ...
/Users/,,,,/,,,,/..../managed_components/espressif__esp-now/src/debug/src/commands/cmd_wifi.c:322:67: error: implicit declaration of function 'ip_2_ip6'; did you mean 'ip_2_ip4'? [-Werror=implicit-function-declaration]   322 |         ESP_LOGI(TAG, "\n--- %s ping statistics ---", inet6_ntoa(*ip_2_ip6(&target_addr)));
Then this repo throw you to the docs of IDF which is only about ESPNOW 1.0
I am very frustrated, my whole experience with IDF is just very bad docs, broken links.. etc

@ramiws Please enable CONFIG_LWIP_IPV6 config.

@ramiws Sorry that it makes confusing to you. Here I would give some clarification, the ESP-NOW version 1.0 provided by ESP-IDF is the version of ESP-NOW protocol self, in order to simplify the use of ESP-NOW and provide some high-level functionalities, this repository/component provides application-level support for ESP-NOW, including these features, all these features are based on ESP-NOW protocol 1.0, the version of this component is not equal to the version of ESP-NOW protocol. We will update the document to make it more clear. For the compile issue, we will add some checks when IPv6 is disabled.
Thank you for the helpful information.

Okay, yes I reached the same conclusion after studying the 2.0 code. Making it clear in docs will save people time.


Should current tab change automatically activate?

We are having an issue in JupyterLab (https://github.com/jupyterlab/jupyterlab/issues/6648), when a tab is closed, current tab changes but new current tab doesn't get activated. Keyboard events are not received by the current tab.
In https://github.com/phosphorjs/phosphor/blob/master/packages/widgets/src/tabbar.ts there are a lot of places where currentChange is emitted but activate is only tied to user click. Why an activate is only happening at user click and not on the currentChanged?

The reason for this is because focus might be somewhere else in the application, for example the command palette, when the user closes the current tab. In that case, you wouldn't want the new current tab to steal focus from the command palette.
What we could probably do is check to see if the current tab has focus when the close button is clicked, and if so, activate the new tab when it is made current.

What we could probably do is check to see if the current tab has focus when the close button is clicked, and if so, activate the new tab when it is made current.

That makes sense.

What we could probably do is check to see if the current tab has focus when the close button is clicked, and if so, activate the new tab when it is made current.

This issue came up from closing tabs with a keyboard shortcut, so we probably need to trap this at a deeper level than a mouse click so we cover other ways of closing a tab. Perhaps on the actual child-removed message, since a child may decide to not remove itself on a close request, and we really want this behavior only if the close actually happened and the child is gone.


Improve the performance monitor display

Use dark colors when using a light theme for better visibility
Enable antialiasing (only effective when using the GLES3 renderer)
Make graph lines thinner but opaque
Scale graph line widths on hiDPI displays

Preview
100% editor scale, Dark theme

200% editor scale, Light theme

Thanks!


Thread leak when the connection timeout

What version of gRPC and what language are you using?
Python 3.6
We tried on grpc 1.25.0 and 1.27.1
What operating system (Linux, Windows,...) and version?
Found on MacOS / Linux
What runtime / compiler are you using (e.g. python version or version of gcc)
python 3.6
What did you do?
The method is stream-stream and the server close the connection.
.proto:
syntax = "proto3";

service Messaging {
   rpc search (stream Object) returns (stream Object);
}
message Object {
    uint32 field_1 = 1;
}

client.py :
logger = logging.getLogger("test")
while True:
    send_queue = SimpleQueue()
    try:
        with grpc.insecure_channel(Mediator.__url_messaging) as channel:
            stub = MessagingStub(channel)
            my_event_stream = stub.search(iter(send_queue.get, None))
            for object_streamed in my_event_stream:
                pass
    except grpc.RpcError:
        logger.info(f"{len(threading.enumerate())}")

server.py:
def search(self, object_iterator, context):
    rich_status = status_pb2.Status(
        code=code_pb2.ABORTED,
        message="Reached timeout")
    context.abort_with_status(rpc_status.to_status(rich_status))

What did you expect to see?
The client logger should show a constant number of thread
What did you see instead?
The number of thread keep increasing
Each call to _consume_request_iterator generate a new thread that stay alive when the connection timeout.
Sending None in the queue resolve the issue, however I never found any documentation about it
    except grpc.RpcError:
       send_queue.put(None)

ping

I'm also noticing this issue using code that is similar to @flokasper.


ARM support

Hello! This is a very promising project, congratulations.
I have deployed velero-ui using the Helm Chart. Our Kubernetes clusters only uses ARM. This is the result:
$ kubectl get pod -n velero --context=infra
NAME                                         READY   STATUS    RESTARTS      AGE
infra-velero-77c84b7b98-vjtqp                1/1     Running   0             44m
infra-velero-vui-api-7ff9d4c44-l8kch         1/1     Running   0             48s
infra-velero-vui-ui-74776c4bc8-jvz8h         0/1     Error     3 (29s ago)   48s
infra-velero-vui-watchdog-7895b8cdd7-7fxtv   1/1     Running   0             48s

As you can see both api and watchdog services are able to start without any issues. But the UI pod is failing with this error:
kubectl logs infra-velero-vui-ui-74776c4bc8-jvz8h -n velero --context=infra
exec /usr/local/bin/docker-entrypoint.sh: exec format error

This occurs because the docker image was not built to support ARM. I confirmed that the other docker repos are building the images with ARM support already (example: https://hub.docker.com/r/dserio83/velero-api).
Can you also build the velero-ui image with ARM support please? (https://hub.docker.com/r/dserio83/velero-ui)
Thank you very much in advance!

I have built the Velero-UI for ARM. Although I don't have the capability to test the image in a cluster that uses ARM, I believe there shouldn't be any issues. Please let me know if the system runs smoothly.

Thanks a lot! I'm using the new image (dserio83/velero-ui:0.1.16) and the pod is running like a charm.
But I can't confirm if everything works correctly yet. Although I can see the login page, once I enter the username and the password and I click the "Login" button, nothing occurs. I don't see any errors in the pods either:
$ kubectl logs infra-velero-vui-ui-74776c4bc8-zzw2g -n velero --context=infra

   ▲ Next.js 14.1.2
   - Local:        http://localhost:3000
   - Network:      http://<IP_ADDRESS>:3000

 ✓ Ready in 91ms

I tried changing the default password but didn't work. By the way, since I'm testing this service, for now I'm just using port-forwarding to access the service:
$ kubectl port-forward service/infra-velero-vui-ui-np -n velero 8080:80 --context=infra

And then opening the UI using http://localhost:8080. Not sure if this information is relevant.
Do you think this could be related to the ARM image? I mean, maybe some library used by the application is not supporting ARM?
Thanks again!