Detail how GitHub labels are used - set up specific ones

Following Carpentries Handbook https://docs.carpentries.org/topic_folders/maintainers/github_labels.html
https://beta.carpentries.org/blog/2018/04/2018-04-05-github-labels/

The page (currently broken) details how to apply labels across the organisation using an R script but also https://github.com/carpentries/github-skill-up-maintainers/blob/e0644550ee370dc46c5f52e0cc41247b13875b47/files/generate_example_repositories.py#L63 helps with setting up new repositories and using gh via Python

From Carpentries:
good first issue - Good issue for first-time contributors
help wanted - Looking for contributors
high priority - Need to be addressed ASAP
invalid - PR considered as spam
status:blocked

Progress on addressing issue blocked
status:duplicate - Issue or PR already exists
status:in progress
Contributor working on issue
status:need more info - More information needed
status:out of scope - Proposed changes are out of scope
status:refer to cac - Curriculum Advisory Committee input needed
status:wait - Progress dependent on another issue or conversation
status:wait - Waiting for Contributor to respond to maintainers comments or update PR
type:accessibility - improve content compatibility with assistive technology as well as unassisted access
type:bug
Content in the lesson needs to be fixed
type:clarification - Suggest change for make lesson clearer
type:discussion - Discussion or feedback about the lesson
type:enhancement - Propose enhancement to the lesson
type:formatting - Formatting needs to be fixed
type:instructor guide - Issue with the instructor guide
type:teaching example
PR showing how lesson was modified in a workshop
type:template and tools - Issue about template and tools
type:typo text - Typo in text for the lesson

But not all are required for NHS-R:
type:content
Changes or suggested corrections to content or text
type:discussion
Discussion or feedback about content or the community
type:clarification
Suggest change to make content or documentation clearer
type:accessibility
improve content compatibility with assistive technology as well as unassisted access
status:waiting for response
Waiting for Contributor to respond to maintainers comments or update PR
status:wait
Progress dependent on another issue or conversation
status:out of scope
Proposed changes are out of scope
status:need more info
More information needed
status:in progress
Contributor working on issue
status:blocked
Progress on addressing issue blocked
high priority
Need to be addressed ASAP
type:bug
Something needs to be fixed
documentation
Improvements or additions to documentation
status:duplicate
Issue or PR already exists
type:enhancement
Propose enhancement
good first issue
Good issue for first-time contributors
help wanted
Looking for contributors
invalid
PR considered as spam
question
Further information is requested


Invitation-only Exercises

User stories
As an Admin
I would like to create an 'Invitation only' exercise
So that I can invite a specific set of candidates to apply for the exercise
and no-one else can apply to the vacancy
As a candidate
I would like to know if I have been invited to apply for an exercise
So that I can find out more and start my application

Admin tasks
See admin#934

[ ] Website listing. Include a checkbox to specify 'Invitation only exercise'.
[ ] New page: Invitations. Should show only for invitation-only exercises. List of all current invitations plus a mechanism to add (and remove) email addresses. (this is similar to Dry Run QT).

Platform tasks
See digital-platform#421

[ ] Include the 'Invitation only exercise' flag in the exported vacancy documents
[ ] Ensure candidates can access their own Invitations and mark them as accepted/rejected

Apply tasks
See apply#507

[ ] The exercise will appear in the 'In Progress' vacancies list. The details page will be viewable however it will not be possible to apply
[ ] A banner will display to any logged in user invited to apply containing the text: "You are invited to apply for #LINK_TO_VACANCY_DETAILS#" (see visual below). This will only show whilst the vacancy is accepting applications and before the candidate has started an application
[ ] For invited users the vacancy details page will display a button to "Start application"

Proposed data model for Invitations documents
{
  vacancy: {
    id: String,
    title: String,
    referenceNumber: String,
  },
  candidate: {
    email: String,
    id: String,  <-- populated when candidate accepts/rejects the invitation
  },
  status: 'invited' | 'accepted' | 'rejected',
  statusLog: {
    invited: Timestamp,
    accepted: Timestamp,  <-- populated when candidate accepts the invitation
    rejected: Timestamp,  <-- populated when candidate rejects the invitation
  }
}


feature request - only auto close when cmd success (exit code 0)

Currently, when auto_close = true, FTerm always close window after cmd finished, success or failure. I think it's useful to check the error msg if a cmd failed. So I suggest we can keep the terminal window if cmd didn't exit with code 0.

For example, here's what I do with FTerm for now to only close window on exit code 0:
local open_cmd = function(cmd)
  local term = require('FTerm'):new({
    cmd = cmd,
    auto_close = false,
    dimensions = { height = 1, width = 1 }
  })

  term.config.on_exit = function(job_id, code, event)
    if code == 0 then term:close(true) end
  end

  term:open()
end

The on_exit seems not supporting self:close so I have to split config.on_exit away from :new call.

So I suggest we can keep the terminal window if cmd didn't exit with code 0.

I think your assessment is right. It would also be helpful in seeing the error message if the command didn't succeed.

Apologies for coming so late on this. Now this should be the default behavior. Ref: https://github.com/numToStr/FTerm.nvim/commit/a798d1c0a54ff35257cad17b448c783028b8437b

@numToStr 👍 This could be really helpful.


Made samples build independent from nonfree module

@alalek please review.

@asmorkalov Please add fix like this into CMakeLists.txt files:
- ocv_include_modules(${OPENCV_C_SAMPLES_REQUIRED_DEPS})
+ ocv_include_modules(${OPENCV_C_SAMPLES_REQUIRED_DEPS} opencv_nonfree)

:+1:


Twitch Integration

Are there plans to integrate Twitch into this API? The addition of Twitch would make it perfect for my needs.
Thanks,
jpcguy89

There is no plan to integrate any oauth provider.
Just try OAuthSwift with Twitch
If this work you can PR into the demo app and if not maybe open a real documented issue


Missing configurable AWS zones. Currently hardcoded to "eu-central-1".

This feature is marked as todo, but just adding a +1 to that :)
https://github.com/zalando-incubator/postgres-operator/blob/master/pkg/util/constants/aws.go#L8
I think I'll have to fork & build, hardcoding my own zone as the quickest possible fix
Thank you for all the hard work on postgres-operator!

As far as I can see this is a bug (hardcoded region, no config option), used here: https://github.com/zalando-incubator/postgres-operator/blob/cf663cb8417d7a58c88ccbde94d682b3c45b39f8/pkg/util/volumes/ebs.go#L23

Will it be fixed someday?

@angapov i'll open the pr for that this week


typeahead-loading is still true for short time after promise has finished

Hello,
Thanks for this nice project.
I'm using typeahead to autocomplete an input with data from a server.
I want to display a spinner while it is retrieving data, the problem is that the spinner continues to be shown (it is to say the variable in the typeahead-loading attribute is still true) even when the data are displayed, for a short time (let's say 1 or 2 seconds) which is weird.
Am I the only one having this ?
I wanted to get the data retrieved as workaround, meaning if the length of my array of data is not empty, that means I retrieved stuff and I have to hide the spinner, but I don't know how to do this since I use it like this :
uib-typeahead="data for data in myFunctionToRetrieveData($viewValue)"
Any clue ?
Thanks

@naokha, please do not use the issues forum for support-related requests.  Rather, please follow the instructions here as support-related questions are best served by and for the community.  The issues forum is reserved for bugs.  Thanks.


ng serve behaves inconsistently for subsequent calls

Basically i wanted to evaluate the integration of TinyMCE and Angular2 based on these tutorials:
https://www.tinymce.com/docs/integrations/angular2/
https://www.ephox.com/blog/angular-2-and-tinymce/
What i observed is:

i have an application that works correctly (i am sure, i tested)
run "ng serve"
at webpack compile state, it fails to find tinymce module and complains. ng cli remains in watching state
go to an editor, and break a binding in an angular template by mistyping something
it compiles now! (weird behavior 1) - compiles, but of course, doesn't work properly in the browser
go back to the editor and undo the changes
the previously not compilable code compiles now and works as intended! (weird behavior 2)

OS?

Mac OSX Sierra

Versions.
@angular/cli: 1.0.0-beta.30
node: 7.4.0
os: darwin x64
@angular/common: 2.4.7
@angular/compiler: 2.4.7
@angular/core: 2.4.7
@angular/forms: 2.4.7
@angular/http: 2.4.7
@angular/platform-browser: 2.4.7
@angular/platform-browser-dynamic: 2.4.7
@angular/router: 3.4.7
@angular/cli: 1.0.0-beta.30
@angular/compiler-cli: 2.4.7
Repro steps.
Created a git repo which demonstrates the problem:
https://github.com/legezam/angular-cli-error

ng serve the project (at commit 22d71dc7668bebb71a658aa22a3cd83e55841c2e - "Init")
observe that webpack fails to compile with the error below. Leave it in watch mode
break a binding in 'src/app/app.component.html' (8af4184cfb3a1f0881b1d3cb08fca1831a78a93c - "break it")
observe that it compiles the code now and doesn't complain for missing tinymce module
undo the last change and save
observe that the code that was not compiling at point 1. is being compiled now. on top of that, it works perfectly. (ebe11ccc437ed1dce53443e770846c0d9be6f9d8 - "fix again")

The log given by the failure.
fallbackLoader option has been deprecated - replace with "fallback"
loader option has been deprecated - replace with "use"
fallbackLoader option has been deprecated - replace with "fallback"
loader option has been deprecated - replace with "use"
fallbackLoader option has been deprecated - replace with "fallback"
loader option has been deprecated - replace with "use"
fallbackLoader option has been deprecated - replace with "fallback"
loader option has been deprecated - replace with "use"
** NG Live Development Server is running on http://localhost:4200. **
Hash: a3537ae69e7b49a18fc7
Time: 7555ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.map (polyfills) 228 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.map (main) 6.74 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.map (styles) 10 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.map (vendor) 4.08 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entry] [rendered]
ERROR in /NgTiny/NgTiny/src/app/tiny-editor/tiny-editor.component.ts (12,21): Cannot find module 'tinymce'.)
Please help me :)
Many thanks.

Please update to beta 32 and see if the error is still there.

Hi
Thanks for the suggestion, unfortunately it doesn't solve the problem: 1.0.0-beta.32.3 [1.0.0-beta.30]

Likely related to #5404.


Suggestion

Hi,  can we use Blazor instead of Razor pages ?
also see this :
https://dev.to/prisma/database-migrations-for-net-and-entity-framework-with-prisma-49e0

Hi, of course, you can use whatever you want.


Global labels in outline should be sub-items of the DAT block they are in

Title. This is possible, here's the C++ extension doing it:

Fixes committed, Will appear in v1.8.4 and later.

Oh, and thank you.  This is a fun and more importantly useful suggestion!


Fixed knife download cookbooks issue which used to corrupt the certificate files each time the command was fired.

Fixes https://github.com/chef/chef/issues/5363
Signed-off-by: aliasgar16<EMAIL_ADDRESS>

Nice job debugging @Aliasgar16. Any thoughts on a regression test for this behavior?

is this likely to cause line-ending issues when sharing text files between windows and unix?

@Aliasgar16 said on CLOGENG-404 (internal) about the existing state:

When a cookbook is downloaded through knife download cookbooks command, the files contained in the cookbook gets written in the Unix format and thereby results in difference in checksum of the files contained on the Chef_Server and on the local disk.

Converting the file on the local disk into dos format results in correct checksum being returned.

@Aliasgar16 We should clearly document what the current behavior is and what the resulting behavior is here in regard to line endings. If I create a file on linux, upload it, then download it on Windows and upload it, is it still the same line ending format?
@lamont-granquist wrote up a nice summary of line ending issues here: https://github.com/chef/chef/issues/4662

@btm @lamont-granquist I have tested multiple scenarios  for line ending issues against the fix for knife download cookbooks command, below are the results (with step-wise procedure that I have followed):
Behavior with current Chef code
Linux
Step-1: Create a cookbook and create a text file in that cookbook on Linux platform, upload the cookbook to ChefServer and then download the same cookbook on Windows platform.
Step-2: Check the file contents in the same cookbook on Windows and see if it only contains the LF character at the end of each line.
Actual Result: yes, it contains only LF character at the end of each line in the file on Windows.
Step-3: Upload the same file again from Windows.
Step-4: Download that same file on Linux.
Step-5: Check the file contents on Linux and see if it only contains the LF character at the end of each line.

Scenario-1: Upload from Windows without editing the file

Actual Result: yes, it contains only LF character at the end of each line.

Scenario-2: Upload from Windows after editing the file

Actual Result: yes, it contains only LF character at the end of each line.
Windows
Step-1: Create a cookbook and create a text file in that cookbook on Windows platform, upload the cookbook to ChefServer and then download the same cookbook on Linux platform.
Step-2: Check the file contents in the same cookbook on Linux and see if it contains the CRLF character at the end of each line.
Actual Result: yes, it contains the CRLF character at the end of each line.
Step-3: Upload the same file again from Linux.
Step-4: Download that same file on Windows.
Step-5: Check the file contents on Windows and see if it contains the CRLF character at the end of each line.

Scenario-1: Upload from Linux without editing the file

Actual Result: no, it contains only LF character at the end of each line.

Scenario-2: Upload from Linux after editing the file

Actual Result: no, it contains only LF character at the end of each line.
Behavior with new Chef code with changes for knife download cookbooks command fix
Linux
Step-1: Create a cookbook and create a text file in that cookbook on Linux platform, upload the cookbook to ChefServer and then download the same cookbook on Windows platform.
Step-2: Check the file contents in the same cookbook on Windows and see if it only contains the LF character at the end of each line.
Actual Result: yes, it contains only LF character at the end of each line in the file on Windows.
Step-3: Upload the same file again from Windows.
Step-4: Download that same file on Linux.
Step-5: Check the file contents on Linux and see if it only contains the LF character at the end of each line.

Scenario-1: Upload from Windows without editing the file

Actual Result: yes, it contains only LF character at the end of each line.

Scenario-2: Upload from Windows after editing the file

Actual Result: yes, it contains only LF character at the end of each line.
Windows
Step-1: Create a cookbook and create a text file in that cookbook on Windows platform, upload the cookbook to ChefServer and then download the same cookbook on Linux platform.
Step-2: Check the file contents in the same cookbook on Linux and see if it contains the CRLF character at the end of each line.
Actual Result: yes, it contains the CRLF character at the end of each line.
Step-3: Upload the same file again from Linux.
Step-4: Download that same file on Windows.
Step-5: Check the file contents on Windows and see if it contains the CRLF character at the end of each line.

Scenario-1: Upload from Linux without editing the file

Actual Result: yes, it contains CRLF character at the end of each line.

Scenario-2: Upload from Linux after editing the file

Actual Result: yes, it contains CRLF character at the end of each line.
Please let me know your comments on this.

After refreshing my memory about this history of line endings via that write-up I did 6+ months ago, I think I agree this smells like the right thing to do.  In general I think we want to binmode everything, which fixes the bulk of the problems with files being mangled by binmode and is consistent, and then there's still that open issue to create a per-resource flag on file resources.
I suppose this might be a breaking change to some users, but the existing condition is also breaking in a way that also makes simple use cases impossible.  This may cause some users to show up with regressions, but I think that means we need to address #4662 and I'm not sure why the feedback.chef.io bug got closed since we should really fix that one.


Showcase select maintainers & issues on website

I think we can consider it done. Feel free to reopen it if not :)


[FLINK-7649] [flip6] Extend JobTerminationHandler to support stop

What is the purpose of the change
Rename the JobCancellationHandler into JobTerminationHandler which is now responsible
for terminating jobs. Moreover, this commits adds two termination modes, cancel and stop,
which are specified by providing a query parameter.
Brief change log

Rename JobCancellationHandler into JobTerminationHandler being now responsible for the job termination (cancelling and stopping so far)
Introduce a TerminationModeQueryParameter which allows to specify the termination mode (stop and cancel)
Add stopJob to DispatcherGateway and stop to JobMasterGateway
Adapt JobTerminationHandler to either call cancelJob or stopJob on the Dispatcher depending on the mode (default is cancel)

Verifying this change
Tested manual that the right termination call is executed.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable)

Thanks for the review @zentol. You are right, that I should rather add a new JobTerminationHandler subsuming the functionality of the JobCancellationHandler and the JobStoppingHandler. Will change the PR accordingly.

I've reverted the changes to the JobCancellationHandler and instead created a new JobTerminationHandler directly extending AbstractRestHandler.

+1, feel free to merge once we concluded our discussions in #4697 :)

Thanks for the review @zentol. Rebasing onto the latest #4697 version.


Implement Dashboard View Settings

As a user ,
I want to make my view customization persistent ,
so that so that i dont have to re edit it everytime i relaod the app .
Hints / Details

Miro UI Concept Board : LINK

Add Save and Tile Settings icon to Dashborad page
Tile Settings UI like table settings UI
Grid tiles see miro board
CONSTRAINT On save click store in user settings
On reload load saved View or default View if not set

Acceptance Criteria

[ ] Save and settings icon existing
[ ] Tiles edtiable and saveable (user settings)

Out of Scope

Persisted user settings

needs #614

I copied the ticket as the original tickets were deleted due to a spam account.
Orginal Ticket: https://github.com/eclipse-tractusx/traceability-foss/issues/613


Help Compilation is not supported

hello when i try to clone the project it get this error ("work on android studio")
Compilation is not supported for following modules: social-app-android. Unfortunately you can't have non-Gradle Java modules and Android-Gradle modules in one project.
i don't know why cause i started by cloning the project and get me this error
Could not find com.crashlytics.sdk.android:crashlytics:2.6.7.

I'm facing the same problem

Hello, @fhsbatista and @jihedsghaier !
Thank you for the report of the bug. We've already fixed this issue and added changes to the repository. Please, check the updates.


Drop support for EOL Python 2.6-3.4

Replaces and closes https://github.com/lericson/pylibmc/pull/256.

Let's do that!

PR updated to drop EOL Python 3.5.


Suggestion: app_hello_square.cpp should show InputAssemblyState

Currently, 01_hello_triangle is intended as a 'tutorial' project for a beginner and is documented as such. The knowledge of setting primitives coming from OpenGL, however, is not documented and requires the user to have had experience with Vulkan in order to infer the usage of an InputAssemblyState.
The file of 01_hello_triangle could allow a soft introduction to the concept for something coming from OpenGL through specifying the InputAssemblyState, even though the default is already TRIANGLE_LIST

Good idea. I'll update the example to show this.


Merge prTesting_201906171135 branch to master branch

Docs Build status updates of commit daf6591:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

split/updateTestRef.md
:white_check_mark:Succeeded

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


Aggregate Functions Cypher

Awesome library! Exactly what i needed. Aggregate functions don't seem to work though
https://neo4j.com/docs/cypher-manual/current/functions/aggregating/

@jnayak1 looks like the amazing @jackboyla has fixed this in #45! give it a look and see if we can close this issue?

(oops, didn't mean to close yet!)


Update (use of) Phosphor

[x] Update Phosphor-all packager to make use of new Phosphor mono-package
[x] Make Flexx work with latest Phopshor version
[x] Make Flexx work better with latest Phopshor version. E.g. dispose phosphor widgets, TabPanel.current (fixes #181).
[ ] Allow Flexx to wrap Phosphor widgets at runtime this is real hard, needs more thought --- and an actual use case --- first
[x] Update CSS for specific layouts
[x] Apply "desktop-mode" better (without changing css of html or body elements?)
[ ] Revive GridPanel (cause Phosphor now has it)
[ ] Make Flexx use require() or something else that better aligns with Jupyterlab et al.
[ ] Make it possible for Flexx to not use it own shipped Phosphor, but the Phosphor that's already loaded in the browser.

What loader does jupyterlab use, anyway? Webpack?

Webpack?
Yes

Remaining tasks can be done in a new PR.


Bundle script instead of curl

This is an initial stab at creating a node-based bundling script so that you don't have to manually run curl. My idea was to have it as a command under react-native. It allows command line flags for dev and minify. It still requires the server to be up, but I hope to detect that and maybe automatically run the server in the future.
Wondering if this is a good idea and if so, the right approach.

Suggestion:
http.get(options, function(res) {
    var stream = fs.createWriteStream(OUT_PATH);
    res.pipe(stream);
});

Thanks @drkibitz, took your suggestion.

Thanks, that's really handy! We use something similar internally, but it's tied to our infra and build tools.
Actually react packager exposes API to create offline bundle without running the server, see buildPackageFromUrl. Would be awesome to use that instead of asking to run server manually. The only thing to keep in mind is ulimit - the OSX default 256 is way too low. @amasad - any thoughts on using graceful-fs?
And please update the comments in SampleApp's AppDelegate :)

@frantic I'll have to update multiple projects we depend on, and hopefully it doesn't cause any performance degradation (it will for people with lower ulimits). But I'm fine with that.

I've updated the patch. It now uses ReactPackager and does not need the server running.
Some todos:

[ ] Take care of ulimit problem (Is this only a problem on some computers? Mine seems to be unlimited and I don't remember ever changing it)
[ ] Add a command to choose platform (blacklist)
[ ] Add a command line argument for output path

@arthuralee - great job! I don't think you should be solving ulimit issue in this PR, that's a more general problem that might be relevant to other tools as well. We should probably either switch to graceful-fs, wrap react-native-cli in a shell script that calls ulimit or use something like node-posix to call setrlimit directly.
I'll take a closer look and merge this in soon.

Thanks @frantic, sounds good. I've added error handling to fs.writeFile.
Maybe we should address the ulimit problem in a separate issue. I can open one if there isn't one yet.

Makes sense, updated. I also updated the website docs.

Awesome thanks! If you are willing to make this even better, here is a suggestion - add a step to end-to-end tests that calls react-native bundle and makes sure iOS/main.jsbundle got updated (by checking file size or looking for a substring in the file)

Great to see this merged! Will look into e2e tests. :)

:dancers:

Nice work! When will this be released? Just noticed the live Docs has updated but the cli tool hasn't. May introduce confusions. :smile:

Good point. It's already been merged so its available on @latest, but not on 0.4.0 which is what people will get over npm install. Maybe at some point we'll need to versioning in the documentation...

does bundle command included correctly in 0.4.1?
i've recieve erro
ZapCourier [master●] % react-native bundle
Building package...

/Users/romanonthego/Code/ZapCourier/node_modules/react-native/node_modules/bluebird/js/main/promise.js:626
            throw e;
                  ^
Error: EMFILE, open '/Users/romanonthego/Code/ZapCourier/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js'

every time.
npm start + curl still works fine.

Thanks @romanonthego. I will look into this today. There have been a lot of new changes since this has been merged, so it might have broken something. Looks like I should've gone into e2e tests earlier! In the meantime, feel free to create an open issue for this.
As far as I know, @latest installs the latest tagged version, which is currently 0.4.1.

@romanonthego I could not repro the error. I tested both an empty project and an existing project. To further verify this, the file in question (/node_modules/react-native/node_modules/react-tools/src/browser/ui/dom/ViewportMetrics.js) seems to be bundled correctly and in main.jsbundle. Could you perhaps produce a minimal example of the bug?

@romanonthego - the problem is caused by too many files and low open files limit per process. Run ulimit -n 2560 in your terminal before running react-native bundle.
@arthuralee, it's hard to repro because different environments might have different ulimits, also some users will have more js files in node_modules and will hit the bug, wheres vanilla react-native can fit in standard 256 limit.

I've just cleaned npm cache and reinstall all global packages (react-native and react-native-cli including).
Bug is gone, all works like a charm.
@frantic i've used this fix and it didn't help at the moment (I've encountered with bug before, although it was in form Error: EMFILE, too many open files and not Error: EMFILE, open #{path}).


Refactor fix

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

:exclamation: No coverage uploaded for pull request base (protodrg@fe8c7ca). Click here to learn what that means.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files

@@             Coverage Diff             @@
##             protodrg      #15   +/-   ##
===========================================
  Coverage            ?   68.96%
===========================================
  Files               ?       76
  Lines               ?     5233
  Branches            ?        0
===========================================
  Hits                ?     3609
  Misses              ?     1624
  Partials            ?        0

Files
Coverage Δ

smartsim/_core/utils/telemetry/telemetry.py
78.88% <ø> (ø)


v.3.0 does not support combined temp/hum sensor

Hello,
I went with the option to update existing devices (I know, not recommended). Overall most devices seem to work and there are also a bunch of new ones. But few issues as well. WSDCGQ01LM Temp/hum sensor stopped reporting under the combined sensor (temp/hum). It was still updating the individual temp and hum sensor. I then tried first re-pairing, second I removed the existing temp/hum device and hoped it would be recreated but it was not. Third, I removed all devices aasociated with this sensor, removed it from zigbee network and added again. Rest of the devices are recreated but not the combiner temp/hum sensor. What should I do to make it alive again (in this case to be created again), is there a way for this plugin to force the (re-) creation of Domoticz devices?
The second issue is with IKEA Kadjril roller blinds. It seems up and down are inverted. This is ok as such, I can just switch them to type "blinds percentage inverted" but it seems that both 0% and 100% will now roll them down. 1% takes them almost up, then 0% again down. On/Off works but in scenes you have to set the percentage and thus scenes don't work anymore. Should I also try to re-create these devices? If so, how should I proceed?
Thanks for the great plugin! :)

Hi,
Regarding your issue with combined temp/hum sensor not reporting, I see the same behavior on another type of sensor, Sonoff SNZB-02, reported in ticket I linked below.
I have not tried yet to downgrade the plugin but I think / guess that would solve it since I have another installation where combined temp/hum still works, in that installation I have not upgraded the plugin after I saw this issue in my first installation.
https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin/issues/623

Oh, I did not notice your issue but indeed it looks to be very much similar that what I am experiencing. The main reason I updated was that I was not able to add my newest device due to compatibility and decided this is the only way to go to keep the system future proof.
I guess I can live with the separate temp and hum sensor but of course it would be nice to find out what is causing this and possibly help to get it fixed.

You can use the following workaround :
https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin/issues/621#issuecomment-817170817

Thanks, this is great - and there's even a PR for this now. I wonder if everything is ok with @stas-demydiuk as it seems he has not been active here for a while. Hope everything is ok. If Stas is busy with other activities, do you know if anyone else can merge PR's in this repo?

Added support for combined devices back, please update the plugin and check

2021-05-03 14:24:00.624 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11188, sValue=21.2;48.08;0
2021-05-03 14:24:00.624 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11313, sValue=14.3;44.34;0
2021-05-03 14:24:14.773 EventSystem: Event triggered: Flurlicht_2
2021-05-03 14:24:14.772 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11188, sValue=21.2;48.08;0
2021-05-03 14:24:14.772 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11313, sValue=14.3;44.34;0
2021-05-03 14:24:21.047 EventSystem: Event triggered: Nachtlicht Küche_2
2021-05-03 14:24:21.046 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11188, sValue=21.2;48.08;0
2021-05-03 14:24:21.046 Error: EventSystem: TEMP_HUM_BARO missing values : ID=11313, sValue=14.3;44.34;0

After deleting the device from Domoticz, it is back without a falter!
Everything OK!

Updated plugin with "git pull" restarted Domoticz and SNZB-02 combined temp / hum started to work instantly! Great work!
However my
LED1732G11 - TRADFRI LED bulb E27 1000 lumen, dimmable, white spectrum, opal white
LED1733G7 - TRADFRI LED bulb E14 600 lumen, dimmable, white spectrum, opal white
IKEA lamps stopped working after the update, if I try and turn them on via the "xxxxxxx_light" device that I had crated before I get this error in the Domoticz log,
2021-05-03 19:30:06.773 Status: User: Admin initiated a switch command (9250/Taklampa 2/On) 2021-05-03 19:30:06.810 Error: (Zigbee2MQTTplugin) 'onCommand' failed 'AttributeError':''CTLight' object has no attribute 'feature''. 2021-05-03 19:30:06.810 Error: (Zigbee2MQTTplugin) ----> Line 301 in '/home/pi/domoticz/plugins/zigbee2mqtt/plugin.py', function onCommand 2021-05-03 19:30:06.810 Error: (Zigbee2MQTTplugin) ----> Line 104 in '/home/pi/domoticz/plugins/zigbee2mqtt/plugin.py', function onCommand 2021-05-03 19:30:06.810 Error: (Zigbee2MQTTplugin) ----> Line 75 in '/home/pi/domoticz/plugins/zigbee2mqtt/devices_manager.py', function handle_command 2021-05-03 19:30:06.810 Error: (Zigbee2MQTTplugin) ----> Line 279 in '/home/pi/domoticz/plugins/zigbee2mqtt/adapter.py', function handle_command
If there is anything I can do to help test it let me know!


Button does not accept clicks on its entire size

Describe the bug
When a button has a big horizontal extend it has a relatively large area on the left and on the right where a click does not get accepted.
On mouse down the button shrinks and it seems to only accept clicks on mouse release on the shrinked button size.
https://github.com/AvaloniaUI/Avalonia/assets/125025268/2a3736bd-50f0-4d7b-ba9c-06e87c4905fb
To Reproduce
Should be reproducable with any large button but may depend on the theme and the styling.
Expected behavior
A button is accept clicks on its entire size
Avalonia version
11.1.0
OS
Windows
Additional context
No response

This is because Fluent theme shrinks the Button while pressed and Button requires the pointer to be within its bounds upon release for a click event to occur.
The easiest way is to replace the shrinking behavior below via styling:
https://github.com/AvaloniaUI/Avalonia/blob/master/src/Avalonia.Themes.Fluent/Controls/Button.xaml#L51-L53
See https://github.com/AvaloniaUI/Avalonia/discussions/16100 for details.

Thanks for the advise.
However I would consider this as an unexpected behaviour. In my opinion the click logic of a button should work on the original size of the button when the mouse is pressed down. Because otherwise the UI do feel unresposive when you hit the button at the wrong place.

Probably a duplicate of https://github.com/AvaloniaUI/Avalonia/issues/7626


UI issue in Intro Headers in ( Chess , Clock Web , Calculator ) Activity

Hey @llaske , I have found UI issues in following activities ( Chess , Clock Web , Calculator ) , The text and the button are not aligned ,
Please look at the snippets for the reference and allow me to fix them
Snippets

1)

2)

3)

I don't have the issue on my side.

But on my side the alignment for header are not correct
I have tested it on all screen sizes

But @llaske  on my side the alignment for header are not correct
I have tested it on all screen sizes (14 inch and 15 inch screens)
Tested it on : 1280x698 and 1536x793
Can you please try to test it by resizing your window

I guess it's screen resolution dependent.
These resolutions are not the most common for children, plus this is a minor drawback for a minor feature.
I think we could ignore it.


L2 Assets Frontend: Mobile designs

All the work up to this point was only on Desktop, this PR makes the frontend mobile friendly.

reg-viz triggers for some components because I've unified the margin between all elements in the summary, I'm aware of this change.

Double check mobile behavior on different scaling factors, please.
Also, it would be great to let other ppl take a look and see what's up with their opinions since my design taste - well - If it was up to me, I would be fine with plain HTML and only a sprinkle of CSS 😆


Requirement of UEFI_020

For UEFI_020, the requirement is to "Meet the 3rd Party UEFI Certificate Authority (CA) requirements on UEFI memory mitigations". Does this mean that the firmware needs to meet ALL requirements in “UEFI memory mitigations”? Such as:
CA signing requirements
No Execute (NX) memory protection
Page guards
Pool guards
CPU stack guard
Null pointer protection
Some of these are handled by the application/OS/compiler/CPU. If not, could we list all the necessary requirements in “UEFI memory mitigations”?

If you read the https://learn.microsoft.com/en-us/windows-hardware/drivers/bringup/uefi-ca-memory-mitigation-requirements page, you'll note some portions of the text say "must" yet others say "should". The document is sloppy in that it doesn't define must vs should, but it's fair to assume the intention follows something like https://www.ietf.org/rfc/rfc2119.txt.
I think my interpretation is reasonable, because if you were to treat this list as absolute requirements, then I believe you would be hard pressed to find compliant implementations. Certainly, the reference Tiano code doesn't do page/pool/stack guards (I'm a little skeptical that commercial UEFI impls have all of these, too, just from personal experience...). I believe the "Application of memory mitigation requirements" mostly explains what features the FW could enable if it assumed the alignments the document talks about.

Thanks for quick clarification, so the must requirements are:
1.Section Alignment of the submitted PE file must be aligned with page size. This must be 4 KB, or a larger power of 2 (for example, 64 KB).
2. Section Flags must not combine IMAGE_SCN_MEM_WRITE and IMAGE_SCN_MEM_EXECUTE for any given section.
I will check if these already covered in SCT test case.


mask the client for our exchanges

Closing this for now, since it's a breaking change. Let's reopen this once we need it again :)


Renaming repository to username.github.io

Renaming repository to username.github.io creates problem after forking this repository. It is not rendering css. I believes this repository has some problem with site.url.

did you ever figure out what the problem was here because I'm experiencing something similar, thanks!


Cannot specify -Dconfig.resource=/path/to/configFile when launching gatling integration test with sbt 1.0.2

steps

Specify sbt version 1.0.2 in build.properties:
sbt.version = 1.0.2
Specify scala version 2.11.11 in build.sbt:
scalaVersion := "2.11.11"
Add the following plugin in plugins.sbt:
addSbtPlugin("io.gatling" % "gatling-sbt" % "2.2.2")
Add gatling dependencies in build.sbt:

"io.gatling.highcharts" % "gatling-charts-highcharts" % "2.2.3" % "it,test",
"io.gatling" % "gatling-test-framework" % "2.2.3" % "it,test"

Enable integration test and gatling plugin in build.sbt:

lazy val root = (project in file("."))
  // Adds the predefined integration test configuration. This configuration is referred to by the name `it`.
  // For example, `it:test` executes integration test.
  .configs(IntegrationTest)
  // enable Gatling plugin
  .enablePlugins(GatlingPlugin)

Create the following integration test (which is a gatling simulation) under src/it/scala/:

import com.typesafe.config.ConfigFactory
import io.gatling.core.Predef._
import io.gatling.http.Predef._

class HealthcheckSimulation extends Simulation {

  // This works.
  //  val config = ConfigFactory.parseResources("loc-gatling.conf")

  // This does not work.
  val config = ConfigFactory.load()

  val base_url: String = config.getString("baseUrl")
  val version = "v1.0"

  val blogHttpConf = http
    .baseURL(base_url)
    .disableWarmUp

  val scenario1 = scenario("Healthcheck GET request")
    .exec(
      http("GET healthcheck request")
        .get("/healthcheck")
        .check(status.is(_ => 200))
    )

  setUp(
    scenario1.inject(rampUsers(1) over 1)
  ).protocols(blogHttpConf)

}

Create file _loc-gatling.con_f under src/it/resources/ with the following content:
baseUrl = "http://localhost:8080"

Execute the following sbt command in root directory of the project:
sbt -Dconfig.resource=/loc-gatling.conf gatling-it:test

problem
The following error occurs when executing sbt -Dconfig.resource=/loc-gatling.conf gatling-it:test:

[error] com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'baseUrl'
[error] 	at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:152)
[error] 	at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:170)
[error] 	at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:184)
[error] 	at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:189)
[error] 	at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:246)
[error] 	at HealthcheckSimulation.(HealthcheckSimulation.scala:13)

expectation
sbt should find the configuration file specified when executing sbt.
notes
We didn't have this issue when we were using sbt 0.13.16. I've already reported this issue in gatling's mailing list but they mentioned it might also be an issue of the new sbt version 1.0.2?
sbt version: 1.0.2

We have the very same issue: SBT 1.0.2 fails to resolve new dependencies if config.resource exists in JVM properties.
We can reproduce this issue with a build.sbt that contains just a single dependency:
libraryDependencies += "com.typesafe.akka" % "akka-http" % "3.0.0-RC1"

The actual dependency doesn't matter as long as its not in your Ivy cache!.
When we now run SBT with -Dconfig.resource we see the following error.  Note that the error disappears when you run sbt compile (without parameter) to resolve and download the dependency.  As soon as a dependency is cached, ie, doesn't need to be downloaded by SBT, it works, regardless of -Dconfig.resource.
$ sbt -Dconfig.resource=ci.conf
[info] Updated file /Users/sebastian.wiesner/Playground/project/build.properties: set sbt.version to 1.0.2
[info] Loading project definition from /Users/sebastian.wiesner/Playground/project
[info] Updating {file:/Users/sebastian.wiesner/Playground/project/}playground-build...
[info] Done updating.
[info] Loading settings from build.sbt ...
[info] Set current project to playground (in build file:/Users/sebastian.wiesner/Playground/)
[info] sbt server started at <IP_ADDRESS>:5905
sbt:playground> show sbtVersion
[info] 1.0.2
sbt:playground> compile
[info] Updating {file:/Users/sebastian.wiesner/Playground/}playground...
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: com.typesafe.akka#akka-http;3.0.0-RC1: jenkins.conf: java.io.IOException: resource not found on classpath: jenkins.conf
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn]
[warn] 	Note: Unresolved dependencies path:
[warn] 		com.typesafe.akka:akka-http:3.0.0-RC1 (/Users/sebastian.wiesner/Playground/build.sbt#L2-3)
[warn] 		  +- default:playground_2.12:0.1-SNAPSHOT
[error] sbt.librarymanagement.ResolveException: unresolved dependency: com.typesafe.akka#akka-http;3.0.0-RC1: jenkins.conf: java.io.IOException: resource not found on classpath: jenkins.conf
[error] 	at sbt.internal.librarymanagement.IvyActions$.resolveAndRetrieve(IvyActions.scala:331)
[error] 	at sbt.internal.librarymanagement.IvyActions$.$anonfun$updateEither$1(IvyActions.scala:205)
[error] 	at sbt.internal.librarymanagement.IvySbt$Module.$anonfun$withModule$1(Ivy.scala:229)
[error] 	at sbt.internal.librarymanagement.IvySbt.$anonfun$withIvy$1(Ivy.scala:190)
[error] 	at sbt.internal.librarymanagement.IvySbt.sbt$internal$librarymanagement$IvySbt$$action$1(Ivy.scala:70)
[error] 	at sbt.internal.librarymanagement.IvySbt$$anon$3.call(Ivy.scala:77)
[error] 	at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:93)
[error] 	at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:78)
[error] 	at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:97)
[error] 	at xsbt.boot.Using$.withResource(Using.scala:10)
[error] 	at xsbt.boot.Using$.apply(Using.scala:9)
[error] 	at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:58)
[error] 	at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:48)
[error] 	at xsbt.boot.Locks$.apply0(Locks.scala:31)
[error] 	at xsbt.boot.Locks$.apply(Locks.scala:28)
[error] 	at sbt.internal.librarymanagement.IvySbt.withDefaultLogger(Ivy.scala:77)
[error] 	at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:185)
[error] 	at sbt.internal.librarymanagement.IvySbt.withIvy(Ivy.scala:182)
[error] 	at sbt.internal.librarymanagement.IvySbt$Module.withModule(Ivy.scala:228)
[error] 	at sbt.internal.librarymanagement.IvyActions$.updateEither(IvyActions.scala:190)
[error] 	at sbt.librarymanagement.ivy.IvyDependencyResolution.update(IvyDependencyResolution.scala:20)
[error] 	at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:56)
[error] 	at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:38)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:91)
[error] 	at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:68)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$19(LibraryManagement.scala:104)
[error] 	at scala.util.control.Exception$Catch.apply(Exception.scala:224)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:104)
[error] 	at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:87)
[error] 	at sbt.util.Tracked$.$anonfun$inputChanged$1(Tracked.scala:149)
[error] 	at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:118)
[error] 	at sbt.Classpaths$.$anonfun$updateTask$5(Defaults.scala:2353)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error] 	at sbt.std.Transform$$anon$4.work(System.scala:64)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] 	at sbt.Execute.work(Execute.scala:266)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] 	at java.lang.Thread.run(Thread.java:748)
[error] (*:update) sbt.librarymanagement.ResolveException: unresolved dependency: com.typesafe.akka#akka-http;3.0.0-RC1: jenkins.conf: java.io.IOException: resource not found on classpath: jenkins.conf
[error] Total time: 1 s, completed 25.10.2017 15:55:39

To me this very much looks as if SBT's HTTP library would directly or indirectly attempt to initialize typesafe config.

Looks like this is caused by Gigahorse, SBT's HTTP library.  At least this library loads typesafe config.

Just FYI, if I disable gigahorse the dependency resolves successfully.  IOW, sbt -Dconfig.resource=ci.conf -Dsbt.gigahorse=false compile works perfectly.

Uff, I just spent 3 hours with this to finally find the cure here ... This is a nasty thing ...


ui: Display the (user)name of the currently logged in user

Please see the commits for details.
Resolves #645.

Thanks! Seeing the screenshot, I'm inclined for a more compact representation. Either just put the username after the existing "Logout" so it reads "Logout admin" (where the "admin" part could still be dimmed / italic / whatever, but does not have to be), or have a separate entry at the top that just shows the username ("admin" in this case) plus a separator to separate from the following "About" entry.
Once more looking at GitHub, the latter is what they do, as they combine that entry with a "Switch account" functionality, which is something we might also want to add in the future:

@mmurto any opinion as well?

@mmurto any opinion as well?

Agree. Maybe only the username seems to be the most common, or you could add an avatar with initials next to it. It may feel strange with admin user as there's also an admin link, but it's such an edge case so I would consider what it looks to like for real users.

@mmurto any opinion as well?

Agree. Maybe only the username seems to be the most common, or you could add an avatar with initials next to it. It may feel strange with admin user as there's also an admin link, but it's such an edge case so I would consider what it looks to like for real users.

Do we need an avatar now (I don't think we have a library for that yet), or do we add it later?

@mmurto any opinion as well?

Agree. Maybe only the username seems to be the most common, or you could add an avatar with initials next to it. It may feel strange with admin user as there's also an admin link, but it's such an edge case so I would consider what it looks to like for real users.

Do we need an avatar now (I don't think we have a library for that yet), or do we add it later?

We could use https://ui.shadcn.com/docs/components/avatar with just the fallback for initials, but feel free to do as you see fit.

We could use https://ui.shadcn.com/docs/components/avatar with just the fallback for initials, but feel free to do as you see fit.

I have free time, so maybe I'll go for the avatar 😄 as Johanna already did it for the other UI.

As a follow-up: Should the standard profile icon now also match the new initials-based icon from the menu, like GitHub does it?


Traceparent is incorrect when the incoming request contains large headers

Describe your environment
Docker
Nginx 1.23.1 (official image)
OpenTelemetry Webserver 1.0.3 x64 Linux
Node.js / Express app acting as a "backend" (Nginx proxy_pass requests to this backend)
Request > Nginx > Express app

Steps to reproduce

Set up Nginx and OpenTelemetry module as per the guide on https://opentelemetry.io/blog/2022/instrument-nginx/
Start the application
Using Postman or your HTTP client of choice, set up a request which includes a really large header (lots of key/value header pairs). For example, paste the following into the header "Bulk Edit" feature in Postman for speed:

aaaa: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbb: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
cccc: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dddd: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
eeee: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ffff: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
gggg: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
hhhh: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
iiii: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
jjjj: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
kkkk: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
llll: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
mmmm: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
nnnn: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
oooo: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
pppp: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
qqqq: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

What is the expected behavior?
The traceparent header logged within Nginx access logs and received by the backend application on its incoming request is valid and contains a single trace, for example 00-82c5500f40667e5500e9ae8e9711553c-992631f881f78c3b-01
What is the actual behavior?
The traceparent header contains lots of comma-separated traces, belonging to each of the internal Nginx modules, for example: 00-82c5500f40667e5500e9ae8e9711553c-992631f881f78c3b-01, 00-82c5500f40667e5500e9ae8e9711553c-6ec482f97a7806d7-01, 00-82c5500f40667e5500e9ae8e9711553c-02493c5c29e4be9e-01, 00-82c5500f40667e5500e9ae8e9711553c-585000d699b02a5e-01, 00-82c5500f40667e5500e9ae8e9711553c-d5e2b37e1d74fe9c-01
Additional context
Seems to be the exact same symptoms as the issue discussed here https://opentelemetry.io/blog/2022/debug-otel-with-otel/, but only reproducible with a large set of headers. Using a small set of headers does not trigger this bug.

Seeing this same issue, any resolution @jbmsuk ?


misc.merge: ensure that misc.none is never returned

Before this change:

misc.merge({a = misc.none}, {a = nil}) returned {a = misc.none}
misc.merge({a = nil}, {a = misc.none}) returned {a = misc.none}

(1) can cause error if a non-existing mapping is set to config.disable
(which is an alias for misc.none).
(2) does not cause any issue to date, but is inconsistent with the
expected behavior of misc.merge(…).
After this change:

misc.merge({a = misc.none}, {a = nil}) returns {a = nil}
misc.merge({a = nil}, {a = misc.none}) returns {a = nil}

Fixes #440.

LGTM! Great. Thank you.


How would I tweet the [current time] along with the rest of the tweet?

Trying to have it where it will go "Power went out at [time] today" or something like that.

I know its been a while since this was posted, but I would start by looking at the time module.
https://www.programiz.com/python-programming/time
Hopefully someone else with more knowledge will be able to help you specifically.


Dev/pointer offset

XRTK - Mixed Reality Toolkit Change Request
Overview
Overhauled the FocusProvider to give more accurate data from the focused object.
Added a SyncedTarget to enable the cursor to be locked to an object while an object is in motion. (this is most noticeable in the ManipulationHandler in the associated SDK changes.
You can now grab something with a pointer and sync the pointer with the object's transform by the grab point while getting updated hit information that's not the object you picked up. This is useful when you're trying to fit the object into a space and it needs to collide with a spatial mesh or other GameObjects.
This PR also has a lot of other noise from cleaning up Extension Methods and formatting.
I'll do my best to break these out into their own PRs when I can.
Target of the change:
Is this enhancement for:

Core

Breaking Changes:

FocusDetails.Object  -> FocusDetails.HitObject
IMixedRealityPointer.SyncPointerTargetPosition -> IMixedRealityPointer.SyncedTarget
Added lots of new properties to IPointerResult
Removed the IMixedRealityCursor.DefaultCursorDistance as it was a duplicate. Use IMixedRealityPointer.PointerExtent instead.

Ready for review

Build generating Mouse Pointer interface errors?

I'll check it out. Might have had a bad submodule merge


Update Error.java

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

@nimmadi thanks for the contribution! Please update the test cases and we can get this merged. Also if you don't mind, could you also add path as well? To fully support the June 2018 updates to the Error?
https://github.com/facebook/graphql/releases/tag/June2018
http://facebook.github.io/graphql/June2018/#sec-Errors

Will raise another PR after adding path field


chore(main): release 1.4.0

:robot: I have created a release beep boop
1.4.0 (2024-11-06)
Features

add account ent entity (a9db9b5)
add account repository (87791d5)
create account after first login (67272fc)
expose user accounts (2488821)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v1.4.0
:sunflower:


get shader output without painting on a canvas

Use case
The new ability to create shaders is amazing.
Sadly it's today impossible to get the result of a shader without drawing it to a canvas.
I'm trying to implement a fluid shader Using Jos Stam paper.
Today I've used a canvas to make the 20 iterations of computation.
I do every calculations using a customPainter and paint it to a canvas. (That I never render onto the screen).
CustomPainter currentPainter = ShaderPainter(shader: shader);
var previousFrame = await canvasToImage(currentPainter);

Future<ui.Image> canvasToImage(CustomPainter painter) {
    ui.PictureRecorder recorder = ui.PictureRecorder();
    Canvas canvas = Canvas(recorder);

    painter.paint(canvas, areaSize!);
    return recorder
        .endRecording()
        .toImage(areaSize!.width.floor(), areaSize!.height.floor());
  }

Once I have the ui.Image I can do a fragmentShader and pass it to my next shader
var currentFrameSampler2D = ImageShader(
    previousFrame,
    TileMode.repeated,
    TileMode.repeated,
    Matrix4.identity().storage,
  );

After the 20 iterations, I just have to render the last image.
Problem is that painting the shader result and transforming it to an image is slow.
Proposal
Could we imagine a way to get an ImageShader directly from a Shader ?
class Shader {
   /// process the shader computation and return result without drawing
   Future<ImageShader> process();
}

Thank you reading this.
I'm beginning with shaders and maybe my idea is dumb or not the best.

If you're willing to work closer to tip of tree, we recently added toImageSync on Picture and Scene which does not require scheduling a task on a slow background thread. That said, you still need to wire up and paint each canvas run.

Could we imagine a way to get an ImageShader directly from a Shader ?

 While we could automatically wrap the resulting texture in an ImageShader that would seem like it would be less flexible than the current API.
Perhaps what we'd need is someway to specify that Shader N runs on the output of Shader N -1, and so on - ideally allowing the engine to make more efficient use of textures?

We could also find someway to expose compute shaders, but support for those may not be widely available on mobile devices (and will definitely take a while on our end)

If you're willing to work closer to tip of tree, we recently added toImageSync on Picture and Scene which does not require > scheduling a task on a slow background thread.

Oh great 👍

Perhaps what we'd need is someway to specify that Shader N runs on the output of Shader N -1, and so on - ideally >allowing the engine to make more efficient use of textures?

That would be perfect for this kind of work.
The ability to make a pipeline of shaders without losing performance (currently my implementation needs 150ms to 300ms for each frame) would open many cool effects.

The ability to make a pipeline of shaders without losing performance (currently my implementation needs 150ms to 300ms for each frame) would open many cool effects.

I would temper your expectations about performance here

Based on this discussion, closing as compelted.


Pod install issue

Hello
I can't install SwiftyCam from podfile
I can see "Unable to find a soecification for 'SwfityCam'"
pod 'SwiftyCam'
Please help me what is problem
Thanks

I just tested and pod 'SwiftyCam' in the podfile works without issue.
You will need to provide more information

Documents.zip
I attach pod install issue screenshot and my pod file

I was just able to install all of your pods using a test project, including SwiftyCam.
I am unsure of your issue. Can you create a test project with Cocoapods , include SwiftyCam, and try to install the pods?

ok, it seems my pod version was old.
I have updated my cocoapods and now it works well
Thanks for your effort.


Revamping the Mattermost community FAQ

The Mattermost community FAQ is outdated and has limited content. It would benefit from a refresh for 2024, pulling from our experiences working with the community and answering their questions. Right now it has only 2 Q&As:

How can I contribute to Mattermost?
Can contributors add themselves to the Mattermost company page on LinkedIn?

The first question ("how") needs to be revised to point to "Why and how to contribute" so we're not duplicating work. And this Q&A doesn't offer much of an engagement hook currently.
The second question ("can") needs to be reworked -- does anyone even do this? I argue that the best way for contributors to show their Mattermost pride is with badges and certification, which is on my DevRel objective list for 2024.
I think this page needs several more Q&As to justify it's existence. Otherwise, it risks being hidden, duplicative information. Here are some potential questions to kick us off:

What is Mattermost and how can I contribute to its open-source projects?
Do I need to be skilled in a specific programming language to contribute to Mattermost?
How do I set up my development environment for Mattermost?
Can I contribute to Mattermost if I don't have a lot of experience in open-source projects?
How does Mattermost manage contributions and what is the process for getting my contributions accepted?
How can I stay updated with the latest developments and discussions in the Mattermost community?
What is the process for proposing a new feature or significant change to Mattermost?
Can I work on a bug or feature that's not listed as a 'Good First Issue'? How do I proceed?
How can I find a mentor or get more personalized guidance as I start contributing?
What are some common mistakes or pitfalls new contributors should avoid when contributing to Mattermost?

What do we think of those questions? Do we need all of them? Are there better substitutions or additions? Tagging some community-minded staff to kick off discussion. @cwarnermm @larkox @hmhealey @lindy65 @mickmister @spirosoik @M-ZubairAhmed @jasonblais @jespino @hanzei

Thanks @azigler! Excellent questions to start with. Do we know what areas our community can use more guidance / help around?
We also have some content in our handbook which can help:
https://handbook.mattermost.com/contributors/contributors
https://handbook.mattermost.com/contributors/contributors/ways-to-contribute
https://handbook.mattermost.com/contributors/contributors/community

Thanks @azigler - agree with Jason that these are all great questions to start with.
I'd be happy to work with you to include / improve QA community contributor information

@azigler Here are a few more. Some of them are just rephrasing some of your questions in a way I like them more. But leave up to you what is the best :stuck_out_tongue_winking_eye:

I want to contribute to Mattermost. Where do I start? (The idea here is to tell them to go to the issues and look for the up for grabs label, and explain what the other labels mean)
I submitted my PR. Now what? (Explain the review process: potential UX and Product reviews, 2 Dev reviews and 1 QA review)
I don't know how to code. Can I contribute to Mattermost? (Explain docs, translations and QA contributions programs, and not sure if we have any other)
I'm stuck on an issue. What do I do? (Explain how to interact with the staff in the community server)
Can I take more than one issue at a time? (This is something I have been asked a few times. The general answer is yes, but don't hoard, and don't take more than what you can handle)
I got really busy and cannot work on an issue I have assigned. What do I do? (Close the PR if it is open, and post a message in the issues list. Maybe we could add that help wanted issues are not time sensitive, and that they can take their time, but if they are sure they won't work on them, better close them and let someone else take the mantle)
My PR has been sitting for a while without anyone assigned. What should I do? (Remind them that we are human, and if more than X time passes, drop a line in the community server so someone looks at it)
I addressed the changes in my PR but I received no answer from the reviewers. What should I do? (Remind them they can push the "re-request review" button, if they have done that, remind them we are human, and if more than X time has passed, to feel free to leave a comment on the PR mentioning the reviewer)

If I think of any other question I will post it here.

@azigler a little more from my side

There is an issue assigned to a contributor, but it hasn't been addressed for some time. I'd like to take on the task. How can I proceed?
How can I run CI pipelines locally to avoid waiting for the PR CI?
I'm a bit hesitant to post a question in the open channel. How can I identify the person responsible for the open issue? In other words, who is the owner of the issue and can provide more context?
I started contributing, but now I'm stuck in the middle. How to share code (Open a draft PR)
I'm actively working on an issue, but it requires a license to unlock. How can I obtain the necessary license?

Troubleshooting the setup of a local server seems to be a significant hurdle for first-time contributors. I suggest creating a dedicated FAQ on this topic, compiling common troubleshooting steps. It could also be linked to existing conversations within the community. I'm open to suggestions and ideas.

Thanks for the input everyone. Closing this issue and will apply feedback as able.


Can we autosort object keys by length when order DOES NOT matter?

Given an object looking like this...

When order does not matter
Could we autosort the keys to be grouped into two groups...

shorthand properties
regular key/value properties

And then subsequently short by the length of the key for both groups?
So it would subsequently restructure the object to look like...
cy
.task('record:fast_visit_spec', {
  url,
  percentiles,
  browser: Cypress.config('browser').name
})

If an object has both the key/value then we'd also ignore the length of the value and only use key.length.
Example:
cy
.task('record:fast_visit_spec', {
  url,
  percentiles,
  foo: 'a really long string that's longer than the following value',
  browser: Cypress.config('browser').name
})

When order matters
If order matters, such as when using the spread operator syntax, then avoid sorting...
Example:
const obj = {
  ...veryLongObject,
  ...shortObj,
  foo, // this does not get sorted above the others...
  quux, // but this gets sorted
  lorem, // and this gets sorted
}

I have strong feelings about this. I would prefer alphabetical
cy
.task('record:fast_visit_spec', {
  browser: Cypress.config('browser').name,
  foo: 'a really long string that's longer than the following value',
  percentiles,
  url
})

and you say prettier is too opinionated?
Lets say I have the following code:
const myfuncs = {
  foo: () {
    ...
	...
	...
	...
	...
	...
  },

  bar: () {
   ...
   ...
   ...
   ...
   ...
   ...
  }
}

and I rename bar to getBar
the diff would be atrocious


Topic Extraction

Contact Details
<EMAIL_ADDRESS>Language
Python
Category
Data Processing and Enrichment
Description

Extracts top 5 one-word and two-word keywords and their respective counts from text
These extracted topics can be useful for data aggregation and analysis of text-heavy event properties, such as product reviews, user feedback, etc.

For example, applying this to a real product feedback submission adds this keyword breakdown to your event:
"keywords": {
  "oneWord": {
    "board": 11,
    "folder": 13,
    "manager": 11,
    "permission": 14,
    "permissions": 11
  },
  "twoWords": {
    "board manager": 11,
    "folder permission": 3,
    "manager level": 5,
    "permissions settings": 4,
    "specific folder": 4
  }
}

Code Block
def transformEvent(event, metadata):
    message = event["properties"]["message"]

    punctuation = ['"', "'", "!", "?", ".", "-", ":", ","]
    for mark in punctuation:
        message = message.replace(mark, "")

    stop_words = ["i", "me", "my", "myself", "we", "our", "ours", "ourselves", "you", "your", "yours", "yourself", "yourselves", "he", "him", "his", "himself", "she", "her", "hers", "herself", "it", "its", "itself", "they", "them", "their", "theirs", "themselves", "what", "which", "who", "whom", "this", "that", "these", "those", "am", "is", "are", "was", "were", "be", "been", "being", "have", "has", "had", "having", "do", "does", "did", "doing", "a", "an", "the", "and", "but", "if", "or", "because", "as", "until", "while", "of", "at", "by", "for", "with", "about", "against", "between", "into", "through", "during", "before", "after", "above", "below", "to", "from", "up", "down", "in", "out", "on", "off", "over", "under", "again", "further", "then", "once", "here", "there", "when", "where", "why", "how", "all", "any", "both", "each", "few", "more", "most", "other", "some", "such", "no", "nor", "not", "only", "own", "same", "so", "than", "too", "very", "s", "t", "can", "will", "just", "don", "should", "now"]

    lower_message = message.lower()
    words = lower_message.split()

    unigram_counts = {word: lower_message.count((word)) for word in set(words) if word not in stop_words}
    top_unigrams = dict(sorted(unigram_counts.items(), key=lambda item: item[1], reverse=True)[:5])

    bigrams = set([' '.join(words[x:x+2]) for x in range(len(words) - 1) if all([word not in stop_words for word in words[x:x+2]])])
    bigram_counts = {bigram: lower_message.count((bigram)) for bigram in bigrams}
    top_bigrams = dict(sorted(bigram_counts.items(), key=lambda item: item[1], reverse=True)[:5])

    event["properties"]["keywords"] = {"oneWord": top_unigrams, "twoWords": top_bigrams}

    return event

Input Payload for testing
[
  {
    "anonymousId": "8d872292709c6fbe",
    "channel": "mobile",
    "context": {
      "app": {
        "build": "1",
        "name": "AMTestProject",
        "namespace": "com.rudderstack.android.rudderstack.sampleAndroidApp",
        "version": "1.0"
      },
      "device": {
        "id": "8d872292709c6fbe",
        "manufacturer": "Google",
        "model": "AOSPonIAEmulator",
        "name": "generic_x86_arm",
        "type": "android"
      },
      "library": {
        "name": "com.rudderstack.android.sdk.core",
        "version": "1.0.2"
      },
      "locale": "en-US",
      "network": {
        "carrier": "Android",
        "bluetooth": false,
        "cellular": true,
        "wifi": true
      },
      "os": {
        "name": "Android",
        "version": "9"
      },
      "screen": {
        "density": 420,
        "height": 1794,
        "width": 1080
      },
      "timezone": "Asia/Kolkata",
      "traits": {
        "address": {
          "city": "Kolkata",
          "country": "India",
          "postalcode": "700096",
          "state": "West bengal",
          "street": "Park Street"
        },
        "age": "30",
        "anonymousId": "8d872292709c6fbe",
        "birthday": "2020-05-26",
        "createdat": "18th March 2020",
        "description": "Premium User for 3 years",
        "email"<EMAIL_ADDRESS>        "firstname": "John",
        "userId": "sample_user_id",
        "lastname": "Sparrow",
        "name": "John Sparrow",
        "id": "sample_user_id",
        "phone": "9112340345",
        "username": "john_sparrow"
      },
      "userAgent": "Dalvik/2.1.0 (Linux; U; Android 9; AOSP on IA Emulator Build/PSR1.180720.117)"
    },
    "event": "Feedback Submitted",
    "integrations": {
      "All": true
    },
    "messageId": "1590431830915-73bed370-5889-436d-9a9e-0c0e0c809d06",
    "properties": {
      "message" : "Once the 'Member Permissions' and/or 'Role Permissions' from the 'Board Manager' level is overrided from a Folder level, there's no way to revert 'Board Manager' to take control over (override) the Folder level modified permissions. Now, it is extremely important to be able to override permissions from the general 'Board Manager' level based on specific Folder permissions settings, but it is also extremely important to be able to override the specific Folder permission settings again by the 'Board Manager' permissions settings. This makes maintainance more difficult since it would require to adjust permissions Folder by Folder just a for quick update on those before returning them back as it was before, instead of simply do it from the 'Board Manager' level do all the required updates in all of the Folders and revert the permissions back as it was before from one single place (Board Manager). This could maybe be a button placed somewhere in the specific Folder settings with an initial disabled state when it is not overriding the Board Manager permissions settings, and automatically enable the state of the button once this Folder overrides the Board Manager settings, so this button text could say something like 'Clear All Specific Folder Permissions', causing that the Board Manager permissions settings take control over that Folder again. Additional to that, please add an option to override this in a more silent/transparent way, just by being able to simply turn off a permission from the Folder or Board Manager level, and once the permission is turned on again, the last one (whether is from the Folder or Board Manager level) would be the one that overrides the other."
    },
    "originalTimestamp": "2020-05-25T18:37:10.917Z",
    "type": "track",
    "userId": "sample_user_id"
  }
]

License

[X] I understand, that my code will be licensed under MIT license (copy of license is available in this repo)

Interesting use case. I can imagine that it can be useful in case of customer support teams as well.
If performance were not an issue, this could be further enhanced by creating embeddings and then using them to categorise the feedback/question could have helped routing the feedback to the right team in real-time.


How to use tagsStyles?

Hi there, I dont an example on how to use custom styling?

The styling documentation is here.
You can also check out the demo, it's full of useful examples.


Group Policies to enable shared computer activation | supported: Yes/No ?

Hi,
First, thanks for publishing this article.
However, there was something about Group Policies which was not clear. Between the first note and second note:
Note #1:
_- The Microsoft 365 Business Premium plan is the only business plan that includes support for shared computer activation. There are other business plans, such as Microsoft 365 Business Standard, that include Microsoft 365 Apps for business, But, those business plans don't include support for shared computer activation.
- Microsoft 365 Apps for business doesn't doesn't support the use of Group Policy, so you'll need to use another method to enable shared computer activation.

Shared computer activation isn't available for Office for Mac._

and Note #2:
_Here are some other ways that you can enable shared computer activation:

Download and run the Microsoft Support and Recovery Assistant.
- Use Group Policy by downloading the most current Administrative Template files (ADMX/ADML) for Office and enabling the "Use shared computer activation" policy setting. This policy setting is found under Computer Configuration\Policies\Administrative Templates\Microsoft Office 2016 (Machine)\Licensing Settings.
Use Registry Editor to add a string value (Reg_SZ) of SharedComputerLicensing with a setting of 1 under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Configuration._

In the first note you mentioned that Group Policy is not supported to enable shared computer activation. Then in the second note you mentioned that the use of Group Policy is a way enable shared computer activation.
This is confusing.
Could you please elaborate?
Thank you
Regards,
Chi-Kit Tse - CKIT

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

ID: 8ab31873-7ad3-afde-3c72-8a7fb4f2e551
Version Independent ID: 19f7f483-9f53-f577-1cd4-d360c0b234fc
Content: Overview of shared computer activation for Microsoft 365 Apps
Content Source: DeployOffice/overview-shared-computer-activation.md
Service: o365-proplus-itpro
GitHub Login: @jwhit-MSFT
Microsoft Alias: jwhit

Group Policies are a supported method to enable Shared Computer Activation as long as the Office license supports group policies. So if your are running Microsoft 365 Apps for business premium or Microsoft 365 Apps for enterprise you can use group policies, that's why these are listed. For other licenses it doesn't work, as those do not support group policies.

I've created PR #805 to incorporate your feedback into the deck.


MODEM subsystem: Parse fixed-length messages that are not terminated by a delimiter

Is your enhancement proposal related to a problem? Please describe.
Yes, we need to receive UBLOX messages from UBX-NEO-M8 GNSS device, and UBLOX messages are not terminated by a delimiter, but rather they are fixed length in nature.
Describe the solution you'd like
The CHAT in MODEM could include an option for parsing fixed length messages. Ex: UBLOX messages are identified by starting two bytes: 0xb5 and 0x62; After this "match" we could ask CHAT to return the next n bytes (say 8, as in the case of UBX-ACK-ACK message).
Describe alternatives you've considered
Apart from this I couldn't think of anything.
@bjarki-trackunit

PFA the format of a UBX frame. The fourth parameter determines the length of the current message and the message is ended by a checksum.

Hi. The chat module is designed specifically for char based messages, which are terminated and split by common chars. The UBX frames do not fit this description.
The solution I propose is to create a new modem module, modem_ubx which like modem_cmux, is designed specifically for said protocol :)
The API for the module would include the following:
struct modem_ubx_message {
        uint8_t message_class;
        uint8_t message_id;
        uint8_t payload;
        size_t payload_size;
};

typedef void (*modem_ubx_frame_handler)(const struct modem_ubx_frame *frame);

struct modem_ubx_config {
        modem_ubx_frame_handler frame_handler;
        modem_ubx_event_handler event_handler;
        uint8_t receive_buf;
        size_t receive_buf_size;
        uint8_t transmit_buf;
        size_t transmit_buf_size;
};

int modem_ubx_init(struct modem_ubx *ubx, const struct modem_ubx_config *config);
int modem_ubx_attach(struct modem_ubx *ubx, modem_pipe *pipe);
void modem_ubx_release(struct modem_ubx *ubx);
int modem_ubx_transmit_async(struct modem_ubx *ubx, const struct modem_ubx_message *message);
int modem_ubx_transmit(struct modem_ubx *ubx, const struct modem_ubx_message *message);

This keeps the separation of responsibilities clear between the modules and keeps them simpler :)

@bjarki-trackunit Thank you for the response.

Hi. The chat module is designed specifically for char based messages, which are terminated and split by common chars. The UBX frames do not fit this description.
Would it be possible to add support for ubx-like messages in modem_chat?
Because we don't need a specific module like modem_ubx. We need a generic module (like modem_chat) that would allow processing of ubx-like messages, i.e. messages whose 'start' is indicated by a unique sub-string and then 'length' is indicated in the message itself. Hence, we need a module like modem_chat to match the unique 'start' in the incoming byte stream and then return the next 'n' bytes from there (that would be our desired message).

Sorry, but I couldn't understand why we would need to create a modem module like modem_cmux. Could you please help me understand this? I thought we would need to create a modem module like modem_chat, because modem_chat determines which type of messages could be processed/parsed from the incoming byte stream.

@mayankmahajan-nxp modem_chat does not determine the type of byte stream, rather it works exclusively with one type of byte stream, ascii encoded text. Just like CMUX works with CMUX frames, and PPP works with PPP frames. If you have a byte stream containing UBX frames, you need a module specifically for said byte stream.
If you sending both text and UBX frames on the same pipe, you need to switch between the appropriate module depending on what you are sending/receiving ATM. This is how the cellular modem drivers work, they start sending text (AT commands) using the modem_chat module, then switch it out for CMUX, then later PPP connected through CMUX. See the *_release() and *_attach() calls in the modem_cellular.c driver to see an example of this :)


16% startup regression after including GraalPy

The stdlib startup benchmarks indicate startup time regression for:

Startup_empty_startup - 16%
Startup_hello_world_startup - 12%

The regression happened between Dec 1 and Dec 4 with the only two integrations being:

#8432
#8351

Given the #8432 is only a test change, the slowdown is probably related to #8351. Why? Python isn't used during the startup at all - e.g. there is no reason for it to slow startup down!

The additional startup time seems to be caused by the JVM boot module layer initialization.  There are some comments in the experiment explaining the results.
In other words, if we exclude graalpy-language-23.1.0.jar and its dependencies from --module-path, the startup time is 852 ms, if we include graalpy, the startup time is 1178 ms.

As noted in https://gist.github.com/Akirathan/9c30e10ec525eb09c91c3c94e2c36f40?permalink_comment_id=4808928#gistcomment-4808928, the total size of all the GraalPy Jars is 201 MB. All the GraalPy Jars that are additionally included are:
['bcpkix-jdk18on-1.76.jar', 'bcprov-jdk18on-1.76.jar', 'bcutil-jdk18on-1.76.jar', 'insight-tool-23.1.0.jar', 'llvm-api-23.1.0.jar', 'python-language-23.1.0.jar', 'python-resources-23.1.0.jar', 'truffle-nfi-23.1.0.jar', 'truffle-nfi-libffi-23.1.0.jar', 'xz-1.9.jar']

How to inspect what does JVM do with these Jars during boot? Please help @JaroslavTulach.

How to inspect what does JVM do with these Jars during boot?

Please use --profiling-path option.

What happens during the startup? I am not sure, but one of the hypothesis is: Python unpacks its resources. If so, then the solution would be somewhere along this copyResources method and the properties it mentions polyglot.engine.resourcePath & co.

How to inspect what does JVM do with these Jars during boot?

Please use --profiling-path option.

--profiling-path is only usable when you actually run some Enso code. If you just run enso --help (or enso --version), the profiler will not even start, resulting in an empty profiling file. The thing is that the slowdown is in the JVM initialization, without any org.graalvm.polyglot.Context.
I have a strong suspicion that the slowdown happens before the main method is executed.
Experiments with -Xlog
I have decided to do additional experiments with a combination of -Xlog flags (https://docs.oracle.com/en/java/javase/21/docs/specs/man/java.html#enable-logging-with-the-jvm-unified-logging-framework) (All these experiments run just enso --help):
-Xlog:class+load=trace to look into all the loaded classes. There doesn't seem to be a significant difference between how many classes are loaded: 3011 vs 3116. No classes from any graalpy module nor its dependencies are loaded, obviously.
-Xlog:module+load=trace to look into the modules loading. Number of loaded modules differ, obviously. The duration of loading python-language, or python-resources, or any other graalpy-related module is negligible. The log files generated with something like:
java --module-path <comp-dir> -Xlog:module+load=trace:file=small
-modules.txt:uptime,timenanos,level,tags -m org.enso.runtime/org.ensoEngineRunnerBootLoader --help

are small-modules.txt and big-modules.txt.
In these log files, we can see that the JVM loads java.base module as the very first module and that there is a delay before the second module is loaded. This delay is different for small-modules and big-modules. In small-modules.txt, the uptime of the second loaded module is 0.333s, which in big-modules.txt, the uptime of the second loaded module is 0.555s. So what happens after java.base module is loaded and before the second module is loaded, how do we find that out? The difference is 220 ms!

What happens during the startup? I am not sure, but one of the hypothesis is: Python unpacks its resources. If so, then the solution would be somewhere along this copyResources method and the properties it mentions polyglot.engine.resourcePath & co.

As mentioned in my previous comment, I am running these experiments with just enso --help. So no org.graalvm.polyglot.Context gets initialized. So no EnsoLanguage, neither PythonLanguage classes get loaded. The slowdown happens somewhere in JVM internals during boot, before main method is executed.

I am running these experiments with just enso --help.

The real benchmarks can be executed as:
./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run test/Benchmarks/ Startup

If you want to run exactly what "empty_startup" benchmark runs, then do:
./built-distribution/enso-engine-0.0.0-dev-linux-amd64/enso-0.0.0-dev/bin/enso --run test/Benchmarks/src/Startup/Empty_World.enso

if you add --profiling-path slow.npss to the above command, you'll see what the JVM does. I am attaching two .npss files FastAndSlow.zip for your convenience. They differ by 400ms. Now the question is why and where do they differ?

The slow.npss file seems to spend 100ms in JAR verification. Module constructor seems to be slower:

This is probably caused by having some signed JAR in the system. The JDK tries to verify it and slows things down.

I can confirm this observation. The signed JARs are bcpkix-jdk18on-1.76.jar, bcprov-jdk18on-1.76.jar and bcutil-jdk18on-1.76.jar. These JARs were added as separate modules in #8351. Moreover, org.enso.runtime module has declared dependency in https://github.com/enso-org/enso/blob/21d164ec3eb37b9eff0e030146dff8963de31ca8/engine/runtime-fat-jar/src/main/java/module-info.java#L11 because we use it for simple SHA1 digest computation in org.enso.interpreter.caches.ModuleCache. We already have a task to remove this dependency - https://github.com/enso-org/enso/issues/8362.
I have also tried to manually remove signatures from these Jar archives, but failed to do so. I have tried to remove checksum entries from META-INF/MANIFEST as well as *.DSA and *.SF files from META-INF, but enso still failed on ModuleInitializationError.
Previously (before #8351), the bouncycastle modules used to be assembled in runtime.jar fat jar, so there was no signature checking by the JVM.

org.bouncycastle dependencies were removed in #8664, but did not provide any benchmarks improvements.

if you add --profiling-path slow.npss to the above command, you'll see what the JVM does. I am attaching two .npss files FastAndSlow.zip for your convenience. They differ by 400ms. Now the question is why and where do they differ?

Here is a 3rd ZIP with t.npss file. It runs in 1800ms - e.g. just in the middle of FastAndSlow.zip. Looks like the #8664 fix helped to give us 50% of the time back. We still need to find the next 50%.

Also reported

#8692

Another startup initialization issue revealed: https://github.com/enso-org/enso/issues/8690. It's not related to GraalPy though.


grub installation fails, but nixos-anywhere doesn't

Using disko simple-efi.nix example:
installing the boot loader...
setting up /etc...
updating GRUB 2 menu...
Died at /nix/store/xlfyjbcgi8x6i4klw8r0rqx66hma7qzf-install-grub.pl line 586.
installation finished!
### Waiting for the machine to become reachable again ###
### Done! ###

Using systemd-boot solved it:
boot.loader.systemd-boot.enable = true;
          boot.loader.efi.canTouchEfiVariables = true;
          ```

Installation finished should be a message by nixos-install? Or do we print this?

That's what it printed.


README: Add ARM64 badge

Add ARM64 status badge

https://github.com/vectorgrp/sil-kit/pull/158 took care of it


Interrupted install does not gracefully recover

Bug report:
If interrupted, install script should be able to determine where it left off, and resume, especially from the Downloading and installing Homebrew phase, to at least to the point where brew update and/or brew doctor can reliable work.
Launching installer /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" made good progress until:
==> Downloading and installing Homebrew...
fatal: unable to access 'https://github.com/Homebrew/brew/': Empty reply from server
Failed during: git fetch origin master:refs/remotes/origin/master -n --depth=1

Ran brew update and got: -bash: brew: command not found (so naturally, brew doctor was the same).
Re-ran installer, but it returned the following:

It appears Homebrew is already installed. If your intent is to reinstall you should do the following before running this installer again:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
The current contents of /usr/local are azure bin include juniper lib libexec share .git

I suspect a network interruption, but regardless, I was unable to recover and proceed. Instead, I had to Uninstall Homebrew and start over. It would be better for the install script to be able to  resume where this was interrupted, and/or check that if brew update cannot run, that there are some additional fixup/repair tasks it should complete.

After uninstall script completed, and I re-ran install, it displayed the following progress:
==> This script will install:
/usr/local/bin/brew
/usr/local/Library/...
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew

Press RETURN to continue or any other key to abort
==> /usr/bin/sudo /bin/mkdir /Library/Caches/Homebrew
Password:
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown [user] /Library/Caches/Homebrew
==> Downloading and installing Homebrew...
remote: Counting objects: 496, done.
remote: Compressing objects: 100% (445/445), done.
remote: Total 496 (delta 31), reused 306 (delta 22), pack-reused 0
Receiving objects: 100% (496/496), 774.73 KiB | 80.00 KiB/s, done.
Resolving deltas: 100% (31/31), done.
From https://github.com/Homebrew/brew
 * [new branch]      master     -> origin/master
Checking out files: 100% (486/486), done.
HEAD is now at 66cda61 test-bot: fix diff_formulae
==> Tapping homebrew/core
Cloning into '/usr/local/Library/Taps/homebrew/homebrew-core'...
remote: Counting objects: 3706, done.
remote: Compressing objects: 100% (3588/3588), done.
remote: Total 3706 (delta 12), reused 2251 (delta 8), pack-reused 0
Receiving objects: 100% (3706/3706), 2.88 MiB | 87.00 KiB/s, done.
Resolving deltas: 100% (12/12), done.
Checking connectivity... done.
Checking out files: 100% (3709/3709), done.
Tapped 3583 formulae (3,732 files, 8.9M)
==> Installation successful!

This is exactly what I had hoped it would do when I first re-ran install.

@bcdady We'll welcome pull requests for this but this isn't something I really think we can improve much as it's going to be really difficult to differentiate between a partial and valid install.

I'm not proficient with Ruby, but I'll give it a try.
I'm assuming I'm missing some appreciation of the details ... why do we have to abort if
#{HOMEBREW_PREFIX}/.git/* (/usr/local/.git/ in most? default cases) is not empty (line 136)?
Is preemptively deleting the /.git/ directory problematic? I would suppose that most of the time, replacing that directory with a fresh copy of the brew repository will be the best option to get an interrupted/incomplete/partial install back on track, and ideally to a point where a new Homebrew user could then run brew help, brew update and/or brew doctor
I can take a crack at updating a copy and preparing a pull request, but please let me know if this proposal won't hold water ... e.g. if there are other install or prerequisite steps that like being repeated.

Is preemptively deleting the /.git/ directory problematic?

Yes, unfortunately so because it could be used by either an existing Homebrew installation or something else. This is why we can't really handle this automatically. What might be a better solution would be to modify the install script so it handles failures better and cleans up after itself so that running it again would be successful?


how to get base64

I has get URI (  console.log('Image URI: ' + results[i]); )  ,but I want to get base64 data, how to transfer??

This is not specifically something that the plugin should do for you, but the same question is on SO as well. Accepted answer seems to be:
function encodeImageUri(imageUri)
{
     var c=document.createElement('canvas');
     var ctx=c.getContext("2d");
     var img=new Image();
     img.onload = function(){
       c.width=this.width;
       c.height=this.height;
       ctx.drawImage(img, 0,0);
     };
     img.src=imageUri;
     var dataURL = c.toDataURL("image/jpeg");
     return dataURL;
}

Does this work for you as well?

it works well,thank you very much!


Engine "code-davinci-001" not found

Even if the new update changed the model name from 'davinci-codex' to 'code-davinci-001' calls to CreateCompletion still give the error openai.error.InvalidRequestError: Engine not found.
I tried a clean install and the problem persists.
I am using python 3.8.10, openai version 0.10.2, and vim 8.2

Are you sure you do have access to Codex? Having access to the OpenAI API is not enough.

https://github.com/tom-doerr/vim_codex/issues/4

Thank you for your quick response, my API is valid for the codex, and I
have been using this plug-in for months without any issue.
On Mon, 24 Jan 2022, 19:42 Tom Dörr, @.***> wrote:

#4 https://github.com/tom-doerr/vim_codex/issues/4
—
Reply to this email directly, view it on GitHub
https://github.com/tom-doerr/vim_codex/issues/12#issuecomment-1020422874,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AG6FHLXKQGNOOAR27MRMSPTUXWMSNANCNFSM5MV6CENA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.Message ID:
@.***>

You might want to contact<EMAIL_ADDRESS>

Were you able to fix the issue?

The plugin update was just a coincidence.
The error was caused by the API usage exceeding the available credits


Removed singular override for rights statement

This is a PR for https://github.com/antleaf/nims-mdr-development/issues/418

@anusharanganathan Thank you!