Tutorial03 Failure

I've been trying to run the tutorial on Ubuntu 18.04.  There seem to be a couple places where it breaks down, but I've been able to work through the issues until now.
In Tutorial03 at TinyTest a Module, the script fails to execute meteor test-modules & in UnitTestAModule_functions.sh.
I think test-modules is supposed to be defined in the scripts section of  ~/${PARENT_DIR}/${PROJECT_NAME}/package.json, but this is what is in my package.json:
{
  "name": "proj1",
  "private": true,
  "scripts": {
    "start": "meteor run",
    "test": "meteor test --once --driver-package meteortesting:mocha",
    "test-app": "TEST_WATCH=1 meteor test --full-app --driver-package meteortesting:mocha",
    "visualize": "meteor --production --extra-packages bundle-visualizer"
  },
  "dependencies": {
    "@babel/runtime": "^7.0.0-beta.51",
    "meteor-node-stubs": "^0.4.1"
  },
  "meteor": {
    "mainModule": {
      "client": "client/main.js",
      "server": "server/main.js"
    },
    "testModule": "tests/main.js"
  }
}

meteor & works great, but meteor test-modules & fails with the following message:
'test-modules' is not a Meteor command. See 'meteor --help'.
If anyone knows how to test the  ${MODULE_NAME} package in ~/${PARENT_DIR}/modules/${YOUR_UID}, let me know.

It is a long time since I worked with Meteor, but I believe TinyTest no longer exists.

It looks like the root of the failure is that meteor changed its naming of 'modules' to 'packages'.  For instance, Tutorial03_UnitTestAModule\UnitTestAModule_functions.sh(247) tries to execute meteor test-modules &, but 'test-modules' is not a valid option in meteor <IP_ADDRESS>.  However 'test-packages' is a valid option, and meteor test-packages & successfully runs TinyTest.
In the next step of Tutorial03, the ./tests/tinyTests/test-all.sh script attempts to grep test scripts from the modules subdirectory.  But, the structure created by meteor has a packages subdirectory.
I'm guessing there are other places the tutorial scripts will break on the modules --> packages change.

I don't want to create confusion since I am very new to the martinhbramwell/Meteor-CI-Tutorial project, and fairly new to Meteor, but the Meteor Guide recommends putting all application code inside the ~/${PARENT_DIR}/${PROJECT_NAME}/imports/ directory.  (They also recommend that client/main.js and server/main.js are the only code outside imports/.)
Should these tutorials match that recommendation?
https://guide.meteor.com/structure.html#example-app-structure

I really hate to see you bashing your head against the wall with this repo.  Have you not noticed that it is two years old?  I no longer work with Meteor at all, and do not intend to put any further effort into this tutorial.  In fact it was broken by changes in Meteor, so I gave up.

Can I suggest you confirm that you can, in fact, get all the way through the tutorial, before trying any pull requests?  Did you know that CircleCI has dramatically changed their work flow model, for example? The stuff in part 8 to do with Aysnc should be rewritten with promises, right?


installButton: add dynamic whitelist fetching

Untested because I don't care to try to fight lune to get it to build the sass file.

Terribly sorry I never saw the PR, I ended up implemented this myself.


Set up automatic minification, concatenation and transpilation through Gulp

http://gulpjs.com/
Mostly, follow the official TypeScript through Gulp tutorial:
https://www.typescriptlang.org/docs/handbook/gulp.html
Set up a gulpfile that automatically does at least the following:

Minifiation (through uglifyjs2)
Concatenation (through the generated RequireJS modules being auto-concatenated by Browserify, same as the tutorial does)
Transpilation (TS -> JS, obviously)

Once you have all of these files being autogenerated by Gulp, you'll be able to change your index.html to point to the 2 autogenerated .js output files:

Let's call this one lib.js for all the JS library code
Let's call this one app.js for our actual JS app code.

Spent almost an hour trying to debug issues with tsify in the Gulp tutorial. @eyuelt took a look at it as well. I'll try to coming back to it tomorrow

I'm unsure of what's causing that build, but it seems like we're probably doing too much work for this ticket.
Let's start our client-side "Hello World" over again off of an existing seed project that thousands of other developers are also basing their work off of:
https://github.com/mgechev/angular2-seed
Then we can go backwards and deploy it to App Engine using your existing code.

So I've got Travis deploying the app to GAE but the default angular2-seed project is looking for minified assets inside the node_modules dir (which isn't on the GAE server). You can see this at http://tessa3-uxgraph.appspot.com/. I'm guessing I'll need to incorporate Browserify in some way to fix this issue but I'm not quite sure which approach yet.

Finally got it working

Nicely done.


added a blog (signed CLA)

Fixes # 1.

[x] Add Blog Header, including title, author, date.
For example:
---
title: "Your Great Blog Title"
author: your_github_id
image: /assets/2020/08-your-blog-slug/teaser.jpg
---

YOUR_FIRST_SENTENCE_SHOULD_BE_A_SUMMARY_FOR_YOUR_POST

[x] Keep all filenames & url as lowercase, and use - to connect words instead of space. e.g. 2017-10-06-wechat-pc-impactor instead of 2017-10-06-WeChat PC Impactor,

[x] Embed the photo & video before publishing, save all external file to a folder named by ${MONTH}-${YOUR_BLOG_SLUG}/ under /assets/2020 directory.

[x] Add teaser image for the blog

[x] Add your self as an author to the author data file at https://github.com/wechaty/wechaty.js.org/blob/master/_developers/YOUR_GITHUB_USERNAME.md with your GitHub username. And please also remember to reference yourself with the Github username in your blog post, so that we can have nice author information besides your blog after we published it!

To read more about the contribute guideline, visit: https://github.com/wechaty/wechaty.js.org#contribute-guideline

Please make GitHub Pages CI  green and then I can review this PR.

Please make GitHub Pages CI green and then I can review this PR.

Test passed.

@lijiarui Please help review it.

Thank you very much for sharing this great post, the blog is online with URL https://wechaty.js.org/2020/09/30/wechat-file-schedule-box-clafixed

You've invited hywhuangyuwei to Wechaty! They'll be receiving an email shortly. They can also visit https://github.com/wechaty to accept the invitation.

I have invited you to join the Wechaty Contributor Team on our GitHub Wechaty Organization, please accept it by visiting https://github.com/wechaty
We have a WeChat room for Wechaty Contributors only, if you'd like to join, please contact @lijiarui on WeChat.

Please see my point N.O. 2 in my previous post to learn how to join the contributors Wechat room.

Please see my point N.O. 2 in my previous post to learn how to join the contributors Wechat room.

But I DO NOT know how to contact @lijiarui on Wechat.. I DO NOT have his/her Wechat ID.

@hywhuangyuwei You can contact her by joining our Wechaty Developers' Home and then mention her by @李佳芮.
We have put a QR Code at https://wechaty.js.org, you can add our Friday BOT first then send wechaty to it so that it can invite you to join the developers' room.


Error in git bash

Describe the bug
Incorrect work in windows git bash
To Reproduce
Steps to reproduce the behavior:

Run vuh uv -pm=BACKEND
See error
getting main version fatal: ambiguous argument 'origin\main;.vuh': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' (vuh : ERROR) Failed to read remote configuration file origin/main:.vuh! (vuh : WARNING) vuh will use local configuration to get remote version from origin/main origin/main: 0.4.1

Alert happend on line
git show origin/main:.vuh
fatal: ambiguous argument 'origin\main;.vuh': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
Git bash git showcan't work properly with files started with dot
Desktop (please complete the following information):

Windows 11
git version 2.45.1.windows.1 [Git Bash]
Vuh version 2.2.0

Fixed in 2.5.3 (https://github.com/Greewil/version-update-helper/releases/tag/v2.5.3)
Seems like it's really problem with git show in gitbash (somewhere there https://github.com/git-for-windows). It automatically converts ':.' construction to ';.'.
So I changed getting main version mechanism in vuh. Now it will clone repo to /tmp dir to get all needed files from origin/main.


Setup hangs when adding environment variables

╰─○ bash <(curl -s https://raw.githubusercontent.com/brikis98/docker-osx-dev/master/setup.sh)
[INFO] Updating HomeBrew
Already up-to-date.
[WARN] Cask is already installed by HomeBrew, skipping
[WARN] Found command VBoxManage, assuming VirtualBox is already installed and skipping
[WARN] Boot2Docker is already installed by HomeBrew, skipping
[WARN] Found command docker-compose, assuming Docker Compose is already installed and skipping
[WARN] fswatch is already installed by HomeBrew, skipping
[WARN] GNU core utilities is already installed by HomeBrew, skipping
[INFO] Installing rsync in the Boot2Docker image
[INFO] Adding /usr/local/bin/docker-osx-dev
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15257  100 15257    0     0  12443      0  0:00:01  0:00:01 --:--:-- 12444
[INFO] Adding dockerhost entry to /etc/hosts so you can use http://dockerhost URLs for testing
[INSTRUCTIONS] Modifying /etc/hosts requires sudo privileges, please enter your password.
Password:
[INFO] Adding DOCKER_HOST to /Users/noah/.zshrc

<< indefinite hang. zsh is maxing out CPU. >>

I made sure to clear /etc/hosts and ~/.zshrc of any old Docker stuff.
I can successfully run shellinit:
─○ boot2docker shellinit
Writing /Users/noah/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/noah/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/noah/.boot2docker/certs/boot2docker-vm/key.pem
    export DOCKER_CERT_PATH=/Users/noah/.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://<IP_ADDRESS>:2376

I can also see that DOCKER_HOST was written to ~/.zshrc.

That part of the code does have a while loop that looks like this:
while read -r export_line; do
  # [...]
  log_info "Adding $var_name to $env_file"
  # [...]
done <<< "$boot2docker_exports"

The fact that your log output shows [INFO] Adding DOCKER_HOST to /Users/noah/.zshrc indicates that the code is making it into the while loop, but never getting out of it. Is it possible that read -r works differently in zsh?

Your scripting skills are far superior to mine but I'll dig around and see what I can find ;-)

@noahsw: I just added some unit tests for setup.sh that specifically execute this while loop. They pass for me locally and in the CircleCI build. However, both use bash, so if this is a compatibility issue with zsh, I'll need some help to repro. Could you try running the setup.bats unit tests and tell me if they pass for you? Check out the contributing section of the README for instructions.

─± ./test/setup.bats
 ✓ index_of doesn't find match in empty array
 ✓ index_of finds match in 1 item array
 ✓ index_of doesn't find match in 1 item array
 ✓ index_of finds match in 3 item array
 ✓ index_of doesn't find match in 3 item array
 ✓ index_of finds match with multi argument syntax
 ✓ index_of returns index of first match
 ✓ log called with color, log level, and message prints to stdout
 ✓ log called with color, log level, and multiple messages prints them all to stdout
 ✓ log called with color and log level reads message from stdin stdout
 ✓ log called with disabled log level prints nothing to stdout
 ✓ join empty arrays
 ✓ join arrays of length 1
 ✓ join arrays of length 3
 ✓ join arrays with empty separator
 ✓ join arrays passed in as arguments
 ✓ assert_non_empty exits on empty value
 ✓ assert_non_empty doesn't exit on non-empty value
 ✓ env_is_defined returns true for USER variable being defined
 ✓ env_is_defined returns false for non-existent variable being defined
 ✓ determine_boot2docker_exports_for_env_file handles empty string
 ✓ determine_boot2docker_exports_for_env_file shows an error for an unexpected boot2docker shellinit output
 ✓ determine_boot2docker_exports_for_env_file parses a single new export
 ✓ determine_boot2docker_exports_for_env_file parses multiple new exports
 ✓ determine_boot2docker_exports_for_env_file skips environment variables already defined
 ✓ determine_boot2docker_exports_for_env_file parses multiple new exports and skips environment variables already defined

26 tests, 0 failures

I'm not an expert on bash shells, but does bats run "within" zsh? I ran the tests in my normal terminal window.

Hm, looking briefly at the bats source code, I think you're right in that it executes using bash and not zsh. I guess the best option is if you run one of those tests by hand.
For example, I'd be curious what happens if you do this:
> source src/setup.sh -t
>   shellinit="
export NEW_ENV_VARIABLE_1=VALUE1
export USER=$USER
export HOME=$HOME
export NEW_ENV_VARIABLE_2=VALUE2"
> determine_boot2docker_exports_for_env_file "$shellinit"

╭─noah at MacBook-Pro-2013 in ~/Projects/docker-osx-dev  (master ✔)
╰─± source src/setup.sh -t
╭─noah at MacBook-Pro-2013 in ~/Projects/docker-osx-dev  (master ✔)
╰─± shellinit="
dquote> export NEW_ENV_VARIABLE_1=VALUE1
dquote> export USER=$USER
dquote> export HOME=$HOME
dquote> export NEW_ENV_VARIABLE_2=VALUE2"
╭─noah at MacBook-Pro-2013 in ~/Projects/docker-osx-dev  (master ✔)
╰─± determine_boot2docker_exports_for_env_file "$shellinit"

╭─noah at MacBook-Pro-2013 in ~/Projects/docker-osx-dev  (master ✔)

Did you change something? Because now it installs without hanging:
─± bash <(curl -s https://raw.githubusercontent.com/brikis98/docker-osx-dev/master/src/setup.sh)
[INFO] Updating HomeBrew
Already up-to-date.
[WARN] Cask is already installed by HomeBrew, skipping
[WARN] Found command VBoxManage, assuming VirtualBox is already installed and skipping
[WARN] Boot2Docker is already installed by HomeBrew, skipping
[WARN] Docker Compose is already installed by HomeBrew, skipping
[WARN] fswatch is already installed by HomeBrew, skipping
[WARN] GNU core utilities is already installed by HomeBrew, skipping
[INFO] Installing rsync in the Boot2Docker image
[INFO] Adding /usr/local/bin/docker-osx-dev from https://raw.githubusercontent.com/brikis98/docker-osx-dev/master/src/docker-osx-dev
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16537  100 16537    0     0  56057      0 --:--:-- --:--:-- --:--:-- 56248
[WARN] /etc/hosts already contains dockerhost, will not overwrite
[INFO] Adding new environment variables to /Users/noah/.zshrc:
# docker-osx-dev
export DOCKER_HOST=tcp://<IP_ADDRESS>:2376
export DOCKER_CERT_PATH=/Users/noah/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
[INSTRUCTIONS] To pick up important new environment variables in the current shell, run:
	source /Users/noah/.zshrc
[INFO] docker-osx-dev setup has completed successfully.
[INSTRUCTIONS] You can now start file syncing using the docker-osx-dev script and run Docker containers using docker run. Example:
	 > docker-osx-dev
	 > docker run -v $(pwd):/src some-docker-container

Haha. Well, I did refactor the code while adding tests (here is the commit). The while loop is largely the same, so... I'm not really sure what the difference is.
I guess I'll close the bug for now and if something like this comes up, I can re-open it. It's a bit unsettling to not know what was the root cause, but at least now there are some tests in place, so overall, the work was a net win :)


SourceSets being added to test CP

Hi folks,
In 1.8.0 there is a documented change where all sourcesets are added to the test CP. This is causing me problems with the checkstyle-idea plugin.
One of the features of the plugin is that we allow users to select multiple versions of the Checkstyle JAR to use, and load these via an appropriate classloader. We're using Gradle sourcesets to isolate the code to do this, and also to isolate a set of tests used to iterate over the supported JARs and test each of them individually. As such, we very definitely don't want this version testing sourceset available to all test tasks, instead linking it to custom test tasks created for each relevant version.
Could you please consider adding more granularity to this feature, so we can control which sourcesets are included, or consider some guidance as to why this exists so I can try and come up with a long-term workaround (if possible)?
Thanks very much!

Can you please verify that with 1.13.3?

It appears to be working perfectly - thanks very much!


dropdown.js line 471

Incidentally, while creating my own dropdown class that has no jQuery dependencies, I came across this peculiar line:
[...] (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) [...]
which, by all logical means, will always be true. Should it be && ?
Line 471, dropdown.js :)

indeed, well spotted. https://github.com/twbs/bootstrap/pull/27787

@patrickhlauke Also, hide() does not set aria-expanded = false :)

Maybe it can help you @emilmuller we already wrote our Dropdown plugin without jQuery here: https://github.com/twbs/bootstrap/blob/v4-without-jquery/js/src/dropdown.js

@Johann-S Thanks! I'm replacing my code now :)


[semver:minor] update go version

Updating the go version to 1.21 for ticket BAC-343

I will open a separate PR with some updates to the Readme. I am not quite sure where this skip tests is coming from and why its not running.


support custom user content function

To help the creation of extensions that will simplify use of plotly or other html rendering library like
import plotly.express as px
import pandas as pd

df = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv")

figure = px.scatter(df, x="sepal_length", y="sepal_width", color="species")

md = """
# Taipy Plotly test

<|{figure}|plotly|height=50vh|>
"""

Good catch, tx
On Sat, Nov 18, 2023, 13:12 dinhlongnguyen @.***> wrote:

@.**** approved this pull request.
LGTM
In src/taipy/gui/gui.py
https://github.com/Avaiga/taipy-gui/pull/1017#discussion_r1398198682:

@@ -686,27 +686,48 @@ def _get_user_content_url(
return f"/{Gui.__USER_CONTENT_URL}/{path or ''}?{urlencode(qargs)}"

 def __serve_user_content(self, path: str) -> t.Any:

   if hasattr(self, "on_user_content") and callable(self.on_user_content):

       self.__set_client_id_in_context()

   self.__set_client_id_in_context()

   qargs: t.Dict[str, str] = {}

   qargs.update(request.args)

   qargs.pop(Gui.__ARG_CLIENT_ID, None)

   cb_function_name = qargs.get("custom_user_content_cb")

   cb_function = None

   if cb_function_name:

       cb_function = self._get_user_function(cb_function_name)

       if not callable(cb_function):

           parts = cb_function_name.split(".", 2)

From what I am seeing in the code we only make use of 2 items in the
split. Max split should be 1 instead of 2 if you want a list of 2 elements
according to this https://www.w3schools.com/python/ref_string_split.asp.
—
Reply to this email directly, view it on GitHub
https://github.com/Avaiga/taipy-gui/pull/1017#pullrequestreview-1738391014,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVQBA5F4IUK7E6Y5BN6CEOTYFCQ4FAVCNFSM6AAAAAA7QHBBLKVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMYTOMZYGM4TCMBRGQ
.
You are receiving this because you were assigned.Message ID:
@.***>


Tests

Prepare at least one severe test scenario to enhance our test suite (currently almost empty).

Thanks, @KukovecRok


[KYUUBI #3951][FOLLOWUP] Audit the rest request params

Why are the changes needed?

Before:
user=anonymous(auth:BASIC) ip=<IP_ADDRESS> proxyIp=null    method=GET      uri=/api/v1/operations/5e286c5d-2880-443f-a4e8-633964dcd699/rowset      protocol=HTTP/1.1       status=200

After:
user=anonymous(auth:BASIC) ip=<IP_ADDRESS> proxyIp=null    method=GET      uri=/api/v1/operations/5e286c5d-2880-443f-a4e8-633964dcd699/rowset      params=maxrows=2&fetchorientation=FETCH_NEXT       protocol=HTTP/1.1       status=200

params=maxrows=2&fetchorientation=FETCH_NEXT

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[x] Run test locally before make a pull request

cc @lightning-L
with this pr, we can know the current max_rows specified by customers, and notify them to make change.
and set up the server side limitation (#4388 )

thanks, merged to master and branch-1.7


[Feature]: jsx runtime should be synced between tsconfig and swc

What problem does this feature solve?
See https://github.com/web-infra-dev/rslib/blob/f9f1751a304051947ea27d47146d072b9c448da1/examples/react-component-bundle/rslib.config.ts#L39
When tsconfigjson.jsx is set to react. We need to set swc react runtime to classic explicitly. It's pretty error-prone and trivial.
What does the proposed API look like?

Automatically read from tsconfig: @rsbuild/pluigin-react's config automatically follows tsconfig.
Or, only check're the configuration are matched and emit a warning when conflict.

Rsbuild does not want to be associated with the fields in tsconfig.json, we may do config check in Rslib.

I don't want to make Rslib detect and modify @rsbuild/plugin-react's existence, as React is not a built-in solution nor anything special in Rslib.
I prefer to check the consistency of tsconfigjson.jsx and jsc.transform.react.runtime and emit warning.

jsx related tests in Modern.js Module: https://github.com/web-infra-dev/modern.js/blob/main/tests/integration/module/fixtures/build/jsx


Coersion to ssc_number_t results in loss of precision

Describe the bug
It appears that when doubles are converted to var_data and coersed to ssc_number_t, there are differences in the original and output calculations.  A good example of this is to consider a very large system, and then look at the annual energy calculated within the compute module, and then the value that is returned to the user-interface.

In interconnection branch, the computed annual_energy is 457534758, as seen in cmod_grid.cpp:

Yet, when passed to var_data, it gets changed, as seen in lib_util.h:

So, something is something strange is happening
generic (2).zip

ssc_number_t is a float. We should consider moving to doubles to maintain the same precision as we use in calculations.

Good point, I thought we were dynamically deciding whether ssc_number_t was a double or float based on the OS.  Unclear that we need to maintain as floats in today's computational age.

We've moved ssc_number_t to double, in the develop branch.


Adding azure accounts APIs

Latest improvements:
MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and have all been fixed in this PR.
[ ] The OpenAPI Hub was used for checking validation status and next steps.

 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.:x: omarelhariry sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Automation for azure-sdk-for-js

Automation for azure-sdk-for-python

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-java

Automation for azure-sdk-for-go

Automation for azure-sdk-for-node

Hi @omarelhariry,
Have you reviewed changes with Azure API Review Board?
Feel free to contact me alias: yuanyang for further information.

Please check the output of https://travis-ci.org/Azure/azure-rest-api-specs/jobs/460227670 and fix the errors

Hi @omarelhariry, any update from API review board?

I believe @sarangan12 review is sufficient for that as per their response.


Mavlink message for passing ALL IMU data

In the present implementation with the ROS bridge, we need to stream 2 types of mavlink messages (ATTITUDE and HIGHRES_IMU) for the full complement of IMU data (linear acceleration, angular velocity and orientation computed by AHRS)
Now, if we are streaming offboard at high rates (say for example 100hz) , it would be better to stream a single message at 100Hz rather than 2 separate messages at 100Hz each. This could be implemented as a option, not activated by default.
I can do this, if we have a standard message for all the data in one go. @LorenzMeier What do you think?
Kabir

Hi there guys!
I am currently building up a ROS-based rover using the PX4, so I found this posting doing some research. I managed to get the mavros bridge working and I am able to see the HIGHRES_IMU data for example. One of my questions was already answered by Lorenz, it was about the difference between ATTITUDE and HIGHRES_IMU, since we want the same as mhkabir, orientation AND IMU data in one message.
My oder question is in general about the correspondencies between the mavlink streams , eg "HIGHRES_IMU" and the resulting published rostopics. Is there any documentation available which data is streamed in Mavlink under what data stream, and under which topic this will be published under ROS using mavros? The official docu of MAVLINK (https://pixhawk.ethz.ch/mavlink/)  is not very helpful to me at this place and I hope you can help me =)
best regards
Marcel

I just found this one which covers nearly all of my questions : http://wiki.ros.org/mavros#Utility_commands
Thanks a lot guys, writing all this stuff down helped a lot :D

@mstuettgen @mhkabir hi guys, I just got a Qualcomm Snapdragon Flight and installed px4 Firmware onto it. May I know how you those IMU message ot HIGHRES_IMU data? as in which rosnode or roslaunch file I need to run to get those topics?
Thanks a lot


Prohibition against prefixing interfaces with "I"

The Typescript Handbook tells the developer not to prefix interfaces with I. This needs more detail. Lots of .NET developers are familiar with I-prefixed interfaces. Simply stating that the concept is broader is not sufficient. If it's an antipattern, let's describe why. If it's not an antipattern, then let's say "it is not necessary to prefix interfaces with I, and Typescript Contributors do X"

I'm not entirely sure what more to write. .NET is the one with the rule (always prefix interfaces with I), not TypeScript. TypeScript code also generally shouldn't write names like lpcstrName like Win32 C code does. It's just a statement of "You shouldn't bring in this other framework's naming rules just because the keyword for the declaration is the same".
Any constructive ideas on how to phrase this?

"It is not necessary to prefix interfaces with 'I', as is done in C#."
Otherwise, what it sounds like you mean is that prefixing with I is a great way to encounter the ancient demons of code collision or bad coding practices. Right now it says "Do not", which is prohibitory language, not advisory language.
If there is a recommended style (like postfixing with Interface or Type or the like), that would be even better to note, rather than the discouraged prefix.

not to sound pedantic, but necessary/not necessary is not the right word, i do not think it is necessary to add I in C# nor is it in TS. i would say "you shouldn't use 'I'" is more accurate.

Agreed with @mhegazy.

@mhegazy prefixing namespaces with I in c# is common sense how would you else like your code written using I distinguishes interfaces and abstracted classes ex: CarBase describes a abstract base for cars and the interface IAccelerate describes the method which incises the speed of the car not prefixing this with I means it could be anything i would never in the world work with code that dont prefix interfaces with I in c# its absurt.

@robgha01 this is a style choice. you are free to write C# code with no I prefixes, as well as TS code with them. This is a style recommendation we make, and one we use in our internal code base. the compile does not enforce any rules regarding names of interfaces or classes.

I 'IS' for Interface. Nothing to do with .Net (although common sense prevails there).
Reasons are obvious and I fail to understand why anyone would not prefix an interface with 'I'.

Clearly identifies that it IS an interface.
2.) Clearly distinguishes between an interface and an implementation.
What are you going to call the implementation if the interface is not prefix with I.
e.g. Interface Foo. Err FooImpl as they do in Java. Please no!! IFoo and Foo makes it very clear.

I kind of feel the world has gone a little mad and lost it's marbles! Please prefix ALL interface with 'I' because 'I' IS for Interface.

Everyone knows to follow C++ naming conventions, so the class will be called CFoo thus there is no conflict. 🙄

Most complete answer for this topic I found in this stackoverflow answer:
https://stackoverflow.com/a/41967120/4676238

I just ran across this issue and read @Raketar stackoverflow link. The first response  is a very logical and reasoned answer. The ability to decipher an interface from an abstraction or implementation by simply seeing an "I" in front of it will speed up anybody trying to process what they are reading (instead of having to go to the file). In Berkov's post he says 'choose appropriate name for abstraction and concrete implementation' but then uses the implementation example 'FileBasedAutosuggestManager' and interface 'AutosuggestManager', yet 'FileBasedAutosuggestManager' could just as easily been an interface also... which seems to be overlooked here.
It appears this whole thread boils down to preference not correctness. Whether someone wants to write Async at the end of their methods to denote async/await is preference, or Base at the end of an abstraction. Languages borrow conventions all the time. It's what people get used to. If that helps speed up learning and development then use it, unless something better comes along. But this is one of the cases for me at least, there's not clear evidence that dropping the 'I' as a convention is more beneficial.

I don't understand the confusion. Classes should always start with a three-letter prefix:

Your own classes should use three letter prefixes. These might relate to a combination of your company name and your app name, or even a specific component within your app. As an example, if your company were called Whispering Oak, and you were developing a game called Zebra Surprise, you might choose WZS or WOZ as your class prefix.

Objective C Handbook?

@RyanCavanaugh Theres no confusion, context is important. If someone is writing a pull request into typescript, you should be using typescript convention, .Net use "I" for interface.... etc. Cavanaugh is just establishing a convention for the library which is fine.
The whole "what about" argument for the three-letter prefix boils down to context IMO. If its the convention of the library (albeit a terrible one IMO for numerous reasons), that's the end of it. So you could either have a argument over the correctness of the pattern or you could state the preference for the library.

@UTGuy
In my post on stackoverflow I just mentioned possible reasons why TypeScript team has guideline do not use I-prefix for interfaces.
When my team started using TS we also used I-prefix for interfaces. C# influence, I assume.
Then I read TypeScript team's guideline about not using I-prefix. It took me several weeks to realize it. I was eagerly searching for information why they have such rule.
After a time I realized: I-prefix for interfaces is a flaw (at least in TypeScript), it causes more problems than provides benefits.
There is one more reason for not using I-prefix. I call it "when in Rome..." rule (play by the rules of a used framework). TypeScript team has such guideline, Angular2+ has such guideline, rxjs is written in such manner.

The prefix in the .NET world was never necessary it only added confusion, some people reads the prefix as if it is the pronoun I which is wrong.
@JonathanYates

Clearly distinguishes between an interface and an implementation.

In practice an interface name in the .NET world shouldn't match the implementation name.
Interfaces in the .NET world should be small and implementations should be composed of multiple interfaces and if you have a single interface that describes an implementation and you want to distinguish between them a better convention could have been something like this Engine (interface) and DefaultEngine (Implementation) even though it doesn't say much but I find it a lot better than 'IEngineandEngine, however, today some people do this IEngineandDefaultEngine` where the prefix is really redundant.
Consumers shouldn't know whether Engine is an interface or an abstract class because this should be an implementation detail, you can always start with an interface and transition to an abstract class but because of the naming convention you can't do it and this is part of the reason we're going to have Default Interface Members but it is what it is. :)

Ideally, you should always use an interface, and so dropping the prefix makes sense to me.  Let the abstract and implementation classes be explicit with verbose prefix and/or suffix, and let the interfaces be the pure function name.

@atodd-geoplan what you are suggesting is called Hungarian notation. It is past stage of programming languages development. Hungarian notation is not used in contemporary frameworks. C# has I prefix (and this the only prefix in C#) for interfaces due to historical reasons (COM). In retrospect one of .NET architects (Brad Abrams) thinks it would have been better not using I prefix. TypeScript is COM-legacy-free thereby it has no I-prefix-for-interface rule.

People here have been suggesting that we shouldn't need to distinguish interfaces and abstract classes.
However, it is important to distinguish the above from actual implementations. Are we making this clearer by just removing the I in the naming? If we name interfaces/abstract classes similarly, how do we avoid other developers from blurring the line of actual implementation and abstraction?

@stasberkov Brad Abrams in retrospect regretted using I prefix, he would have rather used the Interface suffix.

The only prefix used is “I” for interfaces (as in ICollection), but that is for historical reasons. In retrospect, I think it would have been better to use CollectionInterface as the name—it is clearer and follows the guidelines.

I think you two are talking about different things.

@stasberkov a really poor argument for against. sorry.

@leoskyrocker

how do we avoid other developers from blurring the line of actual implementation and abstraction

-- clear naming? Actual implemenation must have in name what particular implemenation of abstraction it is. E.g. SportsCar->Car. Forbidding I prefix forces developers choosing distingished names. Not just Car -> ICar.

@atodd-geoplan If you are a C# lover then you will like this post from .net architect Krzysztof Cwalina API Design Myth: Interface as Contract. Interface is not contract, it is just syntax. Every class has interface part. There is no need in monkey-work of duplicating interface part.

Interfaces separate syntax from implementation, which is not that useful, and the myth provides a false sense of doing the right engineering.

-- Krzysztof Cwalina

@stasberkov that is just one one-sided view. I am sure you can find arguments that promote the use of Design by Contract as a design pattern.

@stasberkov Even in the above article he suggested using Contracts (via abstract class).
In the naming he actually used the "Contract" prefix.... I think every articles you posted are suggesting some prefixes/suffixes in their own naming schemes...
When thinking more about your example of SportsCar -> Car, in typescript it becomes:
class Car {
    startEngine(): void;
}

class SportsCar implements Car {
    startEngine() {
        console.log('Engine Starting...');
    }
}

While other develops can start coming in and use this car class by extending it:
class CoolerSportsCar extends Car { }

and he changes Car to be:
class Car {
    startEngine(): void {
        console.log('I have a default implementation');
    };
}

In this case, as people add additional behavior in the interface, how do we avoid breaking the original contract that other callers depend on?

It is necessary to come to a realization that the violation of encapsulation doesnt lie in the naming itself, but on the languages' restrictions. For example, in Java, there's no way to implements a class and you can only implements an interface. The violation of encapsulation automatically happens when someone tries to use an interface.
Yet, I have arrived at a unanswered question for myself: does it necessarily mean something is bad as soon as we coin it as a violation of some rules? In this case, we have seen no problems of having these language restrictions.

If you came here looking for answers as I did, just check TypeScript's handbook <3.

Indeed. Since the first comment was posted more than 4 years ago, we have not received a response. So why you decided that it's better to avoid using i-prefix  for interfaces naming? Is there any significant reason or is it just the wishes of the specific developers of your team?

I'm not sure what you're after?
This question was answered right away by multiple team members, and the opinion of the team hasn't changed in the last 5 years to be honest.

I'm not entirely sure what more to write. .NET is the one with the rule (always prefix interfaces with I), not TypeScript. TypeScript code also generally shouldn't write names like lpcstrName like Win32 C code does. It's just a statement of "You shouldn't bring in this other framework's naming rules just because the keyword for the declaration is the same".

For example, we also don't prefix our types with T either:
type TThing = {}

You're all welcome to make your own decisions about this on a per-team basis, and if your teams come from C# then maybe that is keeping an I around, but there's no need to bring another language's conventions over when you can conform to JavaScript's conventions.

@leoskyrocker

how do we avoid other developers from blurring the line of actual implementation and abstraction

-- clear naming? Actual implemenation must have in name what particular implemenation of abstraction it is. E.g. SportsCar->Car. Forbidding I prefix forces developers choosing distingished names. Not just Car -> ICar.

Car -> ICar cases, i.e. having an interface + a reference implementation that will be used directly 99% of the time (while leaving room for alternative implementations just in case), are WAY too common to disallow optimizing for.

@leoskyrocker
1. Name decoration is not needed in contemporary dev environments. It is atavism. Statement that prefix is helpful for immediately grokking (peeking) is an appeal to Hungarian notation.

Stop this slippery slope fallacy. Please. Just stop. No one will start writing 'lpcstr' in JS, let alone in TS.

2. I-prefix violates encapsulation principle. Let's assume you get some black-box.

Yes, let's ASSUME you get some black-box, and let's stick to that assumption regardless of whether the box has "I" written on it or not.

3. [Naming things is hard](https://martinfowler.com/bliki/TwoHardThings.html).

... and what is hard is precisely what shouldn't be deliberately made harder.

4. Major ts-based frameworks like Angular [discorage](https://angular.io/guide/styleguide#style-03-03) using `I` prefix for interfaces. Rxjs also do not use `I` prefix.

That's their problem.

@RyanCavanaugh
Simple example:
type FbEvent = 'post' | 'repost' | 'comment';    // Error: Duplicate identifier 'FbEvent'

export interface FbEvent {    // Error: Duplicate identifier 'FbEvent'
    type: FbEvent
    data: object
}

Why I must not use prefixes in similar cases?
type FbEvent = 'post' | 'repost' | 'comment';    // No errors

export interface IFbEvent {    //  No errors
    type: FbEvent
    data: object
}

@FlamesoFF in your case, I believe you've created a false dilemma. I wouldn't agree with the naming of your type FbEvent, regardless of I- prefix or not for the similarly named interface. Your event is composed of a type and some data. It would not make sense to name the type enumerating the potential values for type as the event itself, because it lacks data.
Normally, when modeling a type like this, I'd personally start with an anonymous type for FbEvent.type, like so.
export interface FbEvent {
    type: 'post' | 'repost' | 'comment';
    data: object;
}

Then, if I wanted to derive a type from FbEvent.type, I'd usually follow the pattern of combining the parent name and the property name, so FbEventType. Thus:
export type FbEventType = 'post' | 'repost' | 'comment';

export interface FbEvent {
    type: FbEventType;
    data: object;
}

Note, in this case, we're not naming FbEventType with a -Type suffix because it is a type, but because it is derived from the anonymous type of the FbEvent.type property (and thus not a suffix at all). If we renamed FbEvent.type to FbEvent.flavor, I'd change the FbEventType type name to FbEventFlavor. I also only do this when it makes sense. I prefer not to break out types like this unless necessary for avoiding lots of duplication, because it makes refactoring type to flavor or FbEvent to FacebookEvent also mean refactoring any types I derived from that name.
Note, I'm not saying the above should be a code guideline. I'm just saying that using an I- prefix on the interface to prevent name collision is a false dilemma, because it would be solved by more specific naming. Though, it does align with the Car -> ICar argument in the sense that using I- can lead to choices in design that would be better solved with more specific, appropriate names.
In general, I do think this argument boils down I- being a legacy of a legacy of Hungarian Notation (via COM/C#), and you can agree with Hungarian Notation or not, but it does seem odd that some language concepts get prefixes/suffixes, and some do not. You could argue that interfaces are special and need the prefix, but we don't need the rest of HN. That could be refuted by the rather large existing code bases in TypeScript that don't follow the rule, and get along just fine. Add on to the pile that architects of the C# language think the I- prefix is a mistake, and there's heavy weight against changing this guideline given lack of evidence of harm.


Use -e multiple times in oc new-app

In the section Create a new app from an image (method 3), the command succeeds, but with a warning that it no longer accepts comma-separated lists of values.
This changes the command to pass them each separately with -e.

lgtm

not valid anymore


support negative times for CTF files

So I didn't know this but it seems like CTF has the ability to start its recordings with negative times by using a sync trigger and asking the scanner to include a baseline period.
Other packages Brainstorm (and presumably fieldtrip) respect this field and adjust their time arrays accordingly.
MNE reads in the required field
https://github.com/mne-tools/mne-python/blob/855edbf48835bcee80e773eb7047d0a4caa14a1c/mne/io/ctf/res4.py#L126
and adjusts annotations and bad_segments to account for it.
https://github.com/mne-tools/mne-python/blob/855edbf48835bcee80e773eb7047d0a4caa14a1c/mne/io/ctf/ctf.py#L147-L156
That MNE shifts other stuff and not the time array leads me to believe that MNE can't have negative time values in raw objects. Is that true?
This cropped up because I was doing some custom event marking for an experiment using mne and the resulting events were read into brainstorm and were all shifted by 1 second. In this particular case, I'm time shifting the events before I save them out, solving my immediate issue but it still seems a bit like a bug?
-Luke

To me it’s related to first_samp attribute from neuromag / FIF files. Are you exploiting this first_samp attribute in CTF reader?

I've never been very clear on the first_samp attribute, but if I recall correctly it specifies how many samples passed after the neuromag 'start' button was pressed (is this the time in meas_date?) that the actual file recording starts. Its thus always positive.
I don't think it will help in this case because I want raw.times[0] = -1 which I think would need a negative first_samp which would probably cause all types of issues.
My guess is I'll just add a big warning to the reader so users (me?) aren't surprised that the timing is different then in other software packages.

raw.times always starts at zero even if for example you crop to remove the first second of data as raw.crop(1, None). Thus .times is always relative to whenever the current instance's data begins (and that time is raw.times[0]=0).
I would expect this CTF data to maybe have first_samp=-sfreq, but in any case raw.times is the wrong place to look for any absolute time.


Change tolerations from map to array

What changes were proposed in this pull request?
Changes the type of tolerations to prevent errors when configuring them. Currently, it is configured to be map; where it is, in fact, the array in the PodSpec.
It solves the following warnings:
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-kafka'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-zookeeper'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-helm-charts'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-helm-charts'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-kafka'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]
2019/12/05 21:10:55 Warning: Merging destination map for chart 'cp-zookeeper'. Overwriting table item 'tolerations', with non table value: [map[effect:NoSchedule key:node-role.kubernetes.io/kafka operator:Exists]]

How was this patch tested?
Tested on local machine using helm template that both outputs are the same.

@confluentinc It looks like @srolija just signed our Contributor License Agreement. :+1:
Always at your service,
clabot

gotta love yaml, huh ;)
Thanks for PR.


flexget: 3.8.5 -> 3.8.6

Diff: https://github.com/Flexget/Flexget/compare/refs/tags/v3.8.5...v3.8.6
Changelog: https://github.com/Flexget/Flexget/releases/tag/v3.8.6
Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[x] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 249035 run on x86_64-linux 1

2 packages built:

flexget
flexget.dist


entrance to the house

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
when the battery is charging from the sun, it also shows the battery charging in the house, it is possible to somehow add settings so that the battery can be turned off so that it does not fall into the house as energy that goes into the house
Expected behaviour
when the battery is charging from the sun, it also shows the battery charging in the house, it is possible to somehow add settings so that the battery can be turned off so that it does not fall into the house as energy that goes into the house
Possible Solutions
No response
Mode
lite
Context / Reason
when the battery is charging from the sun, it also shows the battery charging in the house, it is possible to somehow add settings so that the battery can be turned off so that it does not fall into the house as energy that goes into the house

Hi. Yes I can fix that. The current logic assumes prioritized load, i.e. solar goes to load first, then battery. I've added a conditional check (see below) for the next release that evaluates the entity priority_load_243: switch.toggle_priority_load and adjusts available PV for the load. You can create a template switch that returns on and off and since you prioritize battery set it to false.
       const pvPercentage_raw = total_pv === 0
            ? 0
            : priority === 'off'
                ? battery_power > 0  //the battery is discharging
                    ? (total_pv / essential) * 100
                    : ((total_pv -  Math.abs(battery_power)) / essential) * 100 //pv goes to battery first
                : (total_pv / essential) * 100; //default assumes priority load

Fixed in https://github.com/slipx06/sunsynk-power-flow-card/releases/tag/v4.7.3


Check referenced types

Fixes #9

Coverage increased (+0.89%) to 92.58% when pulling 7f4a8b7520d55247771227cacd7b1dd7b00df281 on task/check-referenced-types into aef0d8224f553461eb8cadc8716aa2bafda1173e on master.

Coverage increased (+0.89%) to 92.58% when pulling 7f4a8b7520d55247771227cacd7b1dd7b00df281 on task/check-referenced-types into aef0d8224f553461eb8cadc8716aa2bafda1173e on master.


jspsych-markdown-form

Per @erikasf's comment, create a markdown parser that renders html forms for use in experiments.
Going off the ideas in this comment, I think we'd want the following jspsych-html-form-* plugins:

[ ] jspsych-html-form-checkboxes (see jspsych-survey-multi-select)
[ ] jspsych-html-form-radiobuttons (see jspsych-survey-multi-choice)
[ ] jspsych-html-form-textboxes (see jspsych-survey-text)
[ ] jspsych-html-form-dropdown

Each of these plugins would take javascript objects as their primary input, but with an option for raw html input as a fallback option. We could wrap a markdown parser around it to implement the markdown interface as jspsych-markdown-form.
See #135

To implement this, we would need a way to have long strings as inputs for plugins. Giving an entire markdown document as a JS string is a bad idea partly because it clutters the code, and additionally other plugins could benefit from a "long string" data type. I suggest we use the html document to store LongString data. To use this plugin as an example, I suggest an implementation like:
<html>
  <head>
    <script src='jspsych.js' />
    <script src='plugins/jspsych-html-markdown-form' />
  </head>
  <body>
    <div id="markdown-form" class="long-string">
      Lorem ipsum dolor sit amet
      [ ] Foo?
      [ ] Bar.
      [ ] Biz!
    </div>
  </body>
  <script>
    var form = {
      type: 'html-markdown-form',
      id: 'markdown-form'
    };

    jsPsych.init(...);
  </script>
</html>

And the plugin could then perform an operation like:
plugin.trial = function( display_element, trial ) {
  var longstring = document.getElementById(trial.id).innerText;
  var form = MarkdownParser( longstring );
  display_element.innerHTML = form;
}

Cool! But would that work if you have a different trial on the timeline before the form trial? I'm wondering because most plugins clear the screen with display_element.innerHTML = "" at the end of the trial, so that would wipe out the markdown-form div, right? If so, I suppose you could set the markdown-form div's visibility to hidden and create a separate div in the body that serves as the display_element (passed to the jsPsych.init settings), but it'd be nice if there was an easier way...

I assumed Core added a child to the body tag which it used as the display_element, but it turns out that's not strictly true. You can specify an ID for the display element in jsPsych.init(), but it defaults to the <body> tag if none is provided. This would probably require a change to Core where it creates/uses a sub-element of the body tag by default.

Actually, wait, it seems to distinguish DOM_container and DOM_target where DOM_container is the <body> tag (or whatever you specify) and DOM_target is a <div> sub-element that actually gets updated by the plugins. I need to read through core more to figure out how these get passed


use superflat telemetry

Uses the superflat telemetry package
Testing with the python COS sample app
Writeside

Failure on Writeside

Readside

API

Failure on API - insufficient balance

Failure on API - entity not found

@AntonioYuen Please have you QA it and every is working as expected?

@AntonioYuen Please have you QA it and every is working as expected?

@Tochemey Looks like it to me.


Media Player - Sending Power On instead of Power off.

It seems that when i click the power button for media player (platform universal) it powers on correctly, but does not power off.  The HA logs show it getting a power on command.  The app sees the correct state, it just is sending the incorrect command.

This can be closed.  The media player didn't return a status of 'on' when it was on so the app did not think it was on.  I changed the status template of the media player to return on/off and everything works fine.


x/tools/cmd/godoc: broken links

On https://golang.org/pkg/net/http/#DefaultTransport
There are links like this one: https://golang.org/pkg/net/http/#ExpectContinueTimeout
They are all broken. (the anchor is invalid)

CC @griesemer

Quick fix: godoc.org does not display links on ExpectContinueTimeout:
https://godoc.org/net/http#DefaultTransport


workflows: build_and_deploy: Rename to match the action

The workflow is now deploying on master release tag and not PR merge.
Chanelog-entry: Rename workflow
Signed-off-by: Alex Gonzalez<EMAIL_ADDRESS>

@balena-ci rebase

@balena-ci I self-certify!


Dawntrail struct updates

Some updates for Dawntrail

Can be merged already, I don't mind opening new PRs.

Oh wait, it can't.


Bring demographics schema in line with data model standard spec

Species has been nixed
Profession, nationality, and ethnicity have been added: All optional string fields. In the future should be validated against a data dictionary.

In the future, profession and nationality will be validated against data dictionaries (no free text entry); ethnicity will have a data dictionary but the option to write in free text

 Updates to schema based on standard spec

Codecov Report

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

@@             Coverage Diff             @@
##           master     #256       +/-   ##
===========================================
+ Coverage   59.14%   93.04%   +33.90%
===========================================
  Files          14       16        +2
  Lines         399      187      -212
  Branches       87       28       -59
===========================================
- Hits          236      174       -62
+ Misses        163       13      -150

Impacted Files
Coverage Δ

...ata-serving/data-service/src/model/demographics.ts
100.00% <ø> (ø)

...cation/curator-service/ui/src/util/display-date.ts

...cation/curator-service/ui/src/components/Users.tsx

...ation/curator-service/ui/src/components/Navbar.tsx

...r-service/ui/src/components/CompletenessCharts.tsx

verification/curator-service/ui/src/index.tsx

verification/curator-service/ui/src/setupProxy.js

...urator-service/ui/src/components/LinelistTable.tsx

.../curator-service/ui/src/components/NewCaseForm.tsx

...ator-service/ui/src/components/FreshnessCharts.tsx

... and 21 more

Continue to review full report at Codecov.

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


Uncaught TypeError: Cannot read property 'CodeActions' of null

Atom Version: 1.8.0
System: Mac OS X 10.11.5
Thrown From: omnisharp-atom package, v0.30.4
Stack Trace
Uncaught TypeError: Cannot read property 'CodeActions' of null
At /Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:227

TypeError: Cannot read property 'CodeActions' of null
    at /Users/aul/.atom/packages/omnisharp-atom/dist/features/code-action.js:69:40
    at FilterSubscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/operator/filter.js:81:37)
    at FilterSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at FilterSubscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/operator/filter.js:88:30)
    at FilterSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at RefCountSubscriber.Subscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:125:26)
    at RefCountSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at Subject.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subject.js:55:25)
    at ConnectableSubscriber.Subscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:125:26)
    at ConnectableSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at SwitchMapSubscriber.notifyNext (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/operator/switchMap.js:123:30)
    at InnerSubscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/InnerSubscriber.js:23:21)
    at InnerSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at MergeAllSubscriber.OuterSubscriber.notifyNext (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/OuterSubscriber.js:19:26)
    at InnerSubscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/InnerSubscriber.js:23:21)
    at InnerSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at FilterSubscriber._next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/operator/filter.js:88:30)
    at FilterSubscriber.Subscriber.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:89:18)
    at Subject.next (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subject.js:55:25)
    at SafeSubscriber._error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/omnisharp-client/lib/reactive/reactive-client.js:185:32)
    at SafeSubscriber.__tryOrUnsub (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:223:16)
    at SafeSubscriber.error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:184:26)
    at Subscriber._error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:128:26)
    at Subscriber.error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:102:18)
    at TimeoutSubscriber._error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/operator/timeout.js:90:26)
    at TimeoutSubscriber.Subscriber.error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subscriber.js:102:18)
    at AsyncSubject.Subject.error (/Users/aul/.atom/packages/omnisharp-atom/node_modules/rxjs/Subject.js:70:21)
    at StdioDriver.handlePacketResponse (/Users/aul/.atom/packages/omnisharp-atom/node_modules/omnisharp-client/lib/drivers/stdio.js:280:30)
    at StdioDriver.handlePacket (/Users/aul/.atom/packages/omnisharp-atom/node_modules/omnisharp-client/lib/drivers/stdio.js:264:22)
    at StdioDriver.handleData (/Users/aul/.atom/packages/omnisharp-atom/node_modules/omnisharp-client/lib/drivers/stdio.js:257:22)
    at Interface.<anonymous> (/Users/aul/.atom/packages/omnisharp-atom/node_modules/omnisharp-client/lib/drivers/stdio.js:152:31)
    at emitOne (events.js:77:13)
    at Interface.emit (events.js:169:7)
    at Interface._onLine (readline.js:210:10)
    at Interface.<anonymous> (readline.js:340:12)
    at Array.forEach (native)
    at Interface._normalWrite (readline.js:339:11)
    at Socket.ondata (readline.js:86:10)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at readableAddChunk (_stream_readable.js:146:16)
    at Socket.Readable.push (_stream_readable.js:110:10)
    at Pipe.onread (net.js:523:20)

Commands
  4x -0:06.0 core:move-up (atom-text-editor.editor.omnisharp-editor.is-focused)
     -0:05.1.0 editor:move-to-first-character-of-line (atom-text-editor.editor.omnisharp-editor.is-focused)
     -0:03.9.0 core:save (atom-text-editor.editor.omnisharp-editor.is-focused)

Config
{
  "core": {
    "audioBeep": false,
    "disabledPackages": [
      "atom-sharp",
      "autosave",
      "json-schema"
    ],
    "themes": [
      "one-dark-ui",
      "base16-tomorrow-dark-theme"
    ]
  }
}

Installed Packages
# User
Sublime-Style-Column-Selection, v1.5.1
atom-beautify, vundefined
atom-yeoman, v0.3.15
autocomplete-clang, v0.9.4
clang-format, v1.25.0
editor-settings, v1.1.0
filesize, v0.4.2
language-antlr4, v0.1.0
language-bnf, v1.1.0
language-fsharp, v0.8.4
language-plantuml, v0.2.0
language-powershell, v2.1.1
line-ending-converter, v1.3.2
linter, v1.11.14
markdown-scroll-sync, v2.1.2
omnisharp-atom, v0.30.4
plantuml-viewer, v0.7.0
set-syntax, v0.3.0
sync-settings, v0.7.2
tabs-to-spaces, v1.0.2
wordpress-api, v1.2.2

# Dev
No dev packages

The same error here
Atom Version: 1.8.0
System: Mac OS 10.12.5
Thrown From: omnisharp-atom package, v0.31.2
It's my first attempt to C# and unity3D (ver. 2017.1). The default script editor is not very well so I decided to try with Atom but I can't because of this error :(

I am having this issue too.
Windows 10. Trying to use C# and Unity3D, it would be great to have this fixed.


Query building through active record models is now a thing!


RWA-2057 Updating Gradle Version to 7.6

Change description
RWA-2057 Updating Gradle Version to 7.6
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[x] No

Can be closed as version is already updated to 7.6.2


native: implement filters and fuzzy search in main list

fixes TLON-2229
looks like this:
https://github.com/tloncorp/tlon-apps/assets/1221094/5a40a843-5b48-4d81-a5bb-82cd40b1be7a

Building a one-off to test in hand.

Works great! One minor nit - we revert to the "Home" text on scroll when you hit the top of the scroll. See the latter half of this video. We probably just need to make that as dynamic as the rest of the title-text logic.
https://github.com/tloncorp/tlon-apps/assets/748181/6db03fea-446b-447b-8ab2-4d0fe7df9ecd

Playing good-cop/bad-cop: if we rip the fuzzy search input out and just show the tabset on overscroll, that would go a long way. We can rectify in another unit of work.


The 2D MPR doesn't work.

I installed this app,then run yarn install and yarn run dev, it run
but when I click the 2D MPR, it went wrong. and this also happed on my mates's PC, so it looks not my falut
Reactdevtools throw erros as Cannot read property 'isAttributeUsed' of null
and there was a modal said ViewerMain: Cannot read property 'isAttributeUsed' of null
I never change any code.
please help me ! :)

its the same error to #2400


spec: NMT and wrapper

Specifying and completely defining the NMT algorithm, including all proof types and edge cases (for prover and verifier), is of high priority for builders and in order to do proper audits.
The same applies to the erasured NMT wrapper in app.

completed with https://github.com/celestiaorg/nmt/pull/101 and other nmt PRs


[Node Version] FROM node:0.10.33 - Docker

Hello !
Thank you for  your work.
I encounter that issue on Docker :
$ docker-compose up
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

 Linux 4.9.49-moby
npm ERR! argv "node" "/usr/local/bin/npm" "install" "--production"
npm ERR! node v0.10.33
npm ERR! npm  v2.1.11

npm ERR! Invalid version: "2.0.x"
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! Please include the following file with any support request:
npm ERR!     /opt/loowid/npm-debug.log
ERROR: Service 'loowid' failed to build: The command '/bin/sh -c cd /opt/loowid && npm install --production' returned a non-zero code: 1

Do you know what is the pb ?

Can you please tell me if I can install loowid with the latest version of node.js ?
The docker file rended the node:0.10.33 version
Regards,

Hello, thanks for alerting us about the problem. Yes, it's about the version format in the package.json. I've just corrected it and I've pushed again the image to the docker repository.
By the other hand the question about the version. Currently loowid only supports the 0.10.x. We have in mind to do a refactory to make it work with newer versions. I hope it'll be before the year ends.
Cheers,
Alex

thanks !


Want to add more volume servers to master server

I used these commands to start multi servers. After uploaded some files, I tried to add a new volume server to this cluster server. There was not connection issue between the new volume server and master servers, then I tried to upload some other files to the volume server, however no matter how many times  I tried, the new volume server still had no volume. All files were uploaded to the preview volume servers.
Commands to start multi servers:
./weed -logdir=./data/log/master server -ip=<IP_ADDRESS> -master.port=9333 -master.dir=./master -master.defaultReplication=100 -master.peers=<IP_ADDRESS>:9333,<IP_ADDRESS>:9333,<IP_ADDRESS>:9333 -dir=./volume/vol1 -volume.port=8080 -dataCenter=dc1 -filer=true -filer.port=8888 -filer.peers=<IP_ADDRESS>:8888,<IP_ADDRESS>:8888,<IP_ADDRESS>:8888
./weed -logdir=./data/log/master server -ip=<IP_ADDRESS> -master.port=9333 -master.dir=./master -master.defaultReplication=100 -master.peers=<IP_ADDRESS>:9333,<IP_ADDRESS>:9333,<IP_ADDRESS>:9333 -dir=./volume/vol1 -volume.port=8080 -dataCenter=dc1 -filer=true -filer.port=8888 -filer.peers=<IP_ADDRESS>:8888,<IP_ADDRESS>:8888,<IP_ADDRESS>:8888
./weed -logdir=./data/log/master server -ip=<IP_ADDRESS> -master.port=9333 -master.dir=./master -master.defaultReplication=100 -master.peers=<IP_ADDRESS>:9333,<IP_ADDRESS>:9333,<IP_ADDRESS>:9333 -dir=./volume/vol1 -volume.port=8080 -dataCenter=dc2 -filer=true -filer.port=8888 -filer.peers=<IP_ADDRESS>:8888,<IP_ADDRESS>:8888,<IP_ADDRESS>:8888
Command to start new volume server:
./weed -logdir=./data/log/volume volume -dir=./volume -mserver=<IP_ADDRESS>:9333,<IP_ADDRESS>:9334,<IP_ADDRESS>:9335 -ip=<IP_ADDRESS> -port=8080 -dataCenter=dc1 &

Pre-allocate volumes https://github.com/chrislusf/seaweedfs/wiki/Master-Server-API#pre-allocate-volumes
Or run volume.balance in weed shell

Could you please be more specific about how to run volume.balance?

check volume.balance -h in weed shell.


Unable to Connect with VM - -- UR polyscope.

Hi Roman
I am unable to connect UR3 Unity with UR3 Polyscope. Is there any need to change any IP in script file. Unable to connect VM --polyscope UR3. Please help ....

Dear @rajmeetsng,
To verify communication, you can try my simple program here:
https://github.com/rparak/UR_Robot_data_processing/
You may have an incorrect IP address from your Polyscope device. Open URSim UR3 and then open the installation robot and network.
Please also watch my video where I demonstrate the connection with the simulation:
https://www.youtube.com/watch?v=kReuJdESdz0&t=50s
If you are using the UR-e version of the robot, you need to change lines 93 and 97 in the C# script for the Unity3D app.
Link:
https://github.com/rparak/Unity3D_Robotics_UR/blob/main/Universal_Robots_Unity_App/Assets/Scripts/UR3/ur_data_processing.cs
This change is necessary because the communication rate of the CB version of the robot I used is 125 Hz (8 ms), while the new one operates at 500 Hz (2 ms). Simply change the time step value from 8 to 2.
If the problem persists, try enabling the remote control (UR-e version only). The first generation of UR robots (non UR-e), such as UR3, UR5, and UR10, already has the Remote Control option enabled by default.
To enable Remote Control on the UR robot controller if you have a UR-e robot (UR3e, UR5e, or UR10e), follow these steps:

Select the Settings menu from the top right button.
Choose System-Remote Control.
Select Enable.
Change the mode of operation to Remote Control.

I hope that's clear to you.
Have a nice day.
Best Regards,
Roman Parak

Thank Roman
Nice explanation.
Now works and is connected to URSIM polyscope.
Roman, If I want to add a gripper to the end of UR3 and control via some
control button. Any tutorials or documents You have ?
kindly share.
I want to develop a digital twin of UR3 for pick and place applications.
Thanks alot
Regards
Rajmeet
PhD Robotics
On Tue, Oct 10, 2023 at 1:35 AM Roman Parak @.***>
wrote:

Dear @rajmeetsng https://github.com/rajmeetsng,
To verify communication, you can try my simple program here:
https://github.com/rparak/UR_Robot_data_processing/
You may have an incorrect IP address from your Polyscope device. Open
URSim UR3 and then open the installation robot and network.
Please also watch my video where I demonstrate the connection with the
simulation:
https://www.youtube.com/watch?v=kReuJdESdz0&t=50s
If you are using the UR-e version of the robot, you need to change lines
93 and 97 in the C# script for the Unity3D app.
Link:
https://github.com/rparak/Unity3D_Robotics_UR/blob/main/Universal_Robots_Unity_App/Assets/Scripts/UR3/ur_data_processing.cs
This change is necessary because the communication rate of the CB version
of the robot I used is 125 Hz (8 ms), while the new one operates at 500 Hz
(2 ms). Simply change the time step value from 8 to 2.
If the problem persists, try enabling the remote control (UR-e version
only). The first generation of UR robots (non UR-e), such as UR3, UR5, and
UR10, already has the Remote Control option enabled by default.
To enable Remote Control on the UR robot controller if you have a UR-e
robot (UR3e, UR5e, or UR10e), follow these steps:

Select the Settings menu from the top right button.
Choose System-Remote Control.
Select Enable.
Change the mode of operation to Remote Control.

I hope that's clear to you.
Have a nice day.
Best Regards,
Roman Parak
—
Reply to this email directly, view it on GitHub
https://github.com/rparak/Unity3D_Robotics_UR/issues/6#issuecomment-1754420189,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AR53UES63TSEHL3KFJEZV5TX6TNAPAVCNFSM6AAAAAA5ZPYTLSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONJUGQZDAMJYHE
.
You are receiving this because you were mentioned.Message ID:
@.***>

One of my most recent projects published on Unity3D also involves working with an end-effector. More information can be found at the following link:
https://github.com/rparak/Unity3D_ABB_CRB_15000_GoFa_EGM
You can apply the same principle in Unity3D for UR, but for real-world communication, you need to extend my code with signal control.
I will probably improve my project, but I don't have time for other research projects at the moment.
Thank you for your feedback. It will help me in the future with ideas for extension.


Consolidate gh-r version string logic into one function

This consolidates all the matching logic into the .zinit-get-latest-gh-r-version function where it's reply can be used in both .zinit-setup-plugin-dir and .zinit-update-or-status. This is my go at it anyways to give a start to the function described here: https://github.com/zdharma/zinit/pull/232#issuecomment-575440083
Currently Binary release already up to date is still printed if [[ ${#list} -eq 0 ]]. I haven't looked at hiding it conditionally.

Could this PR be re-submitted? I might have time to look at it.

Sure, opened a new pull request.


Use ACL generated firewall rules for peer in the client.

Describe your changes
Update the client's engine to apply firewall rules received from the manager (results of Rego ACL policy execution).
Issue ticket number and link
Checklist

[ ] Is it a bug fix
[ ] Is a typo/documentation fix
[x] Is a feature enhancement
[x] It is a refactor
[x] Created tests that fail without the change (if possible)
[ ] Extended the README / documentation, if necessary

Consolidate firewall changes in different PR after rebasing all related branches.


Allow custom http(s) agent to be used

Currently a default http(s) agent is provided via Yakaa if the agent configuration option is not set. If it is set though the agent is completely omitted from the connectionParams object. This change will maintain existing behavior of providing a default agent but also allows users to specify one of their own.

@elliotttf, thanks for the PR. Before we can consider your contribution, though, our lawyers need a signed CLA on file. (You’ll only have to do that once.)
Again, thanks and let me or @wooldridge know if you have questions or concerns.

@jmakeig @wooldridge sent, let me know if you need anything else in that department, otherwise I'm happy to respond to any questions or feedback for this review.

These updates have been cherrypicked onto the develop and 1.0-develop branches.


add support for eu-north-1 region

Add support for the latest region in northern Europe. #1246

Thanks!


Views From "Suggested" Source Missing

Hi there, first of all, I would like to express my appreciation for the great work of @MShawon and for constantly improving this bot. I just want to know how to gain views from the "suggested" source. When I tried the latest version, the traffic source is only "external". Thanks in advance.

on how many videos you are running the bot?

on how many videos you are running the bot?

It was one video link only.

you will need at least two video to enable that feature

thank you so much!


Getting started with pynumad and Ansys

Hello, I am testing out the pynumad to see if I can get it to generate and solve in Ansys. I have previously used numad and work with the pyansys codes.
There are some minor issue in the APDL scripting (and in the future, maybe it can be moved over to pymapdl: https://mapdl.docs.pyansys.com/version/stable/).
I found some issues when running the ansys_example.py file.
I am trying to run it in my python virtual environment and that wasn't super straightforward. But some of my issues were and might be related to a py venv. (path issues also).
Notes:
I am trying to run the ansys_example.py code on windows but there is a line in the run.py file that is using linux/posix syntax.
run.py
line 12: 'export kmp_affinity=' is linux/posix? For windows one needs to use 'set kmp_affinity='
forces.src
The forces.src file starts the node loads at node 0 which don't exist in APDL, likely this is just an oversight.
The write.py file has a mpwrite that fails
line 1178 in write_ansys_loads fails because a previous /post1, mpwrite needs to be called from prep7. Add a /prep7 right before.
If I try to load the myBlade_Modified.mac file in APDL I get a lot of shape errors (I used a not recommended SHPP, OFF to avoid that issue) but then the last errors come up that the last few EMODIF commands are being ignored since the elements don't exist (last two or three in my file at least).
When I was trying to debug this i was finding that some of the spar elements were labeled ! 11_28_LP_TE_FLAT    sectype,348,shell and these were causing rigid body motion when I tried to solve.
And the filname command in the ansysAnalysis.mac fails because it needs to be called in the BEGIN processor. You can just add a FINI command right before it in the main_ansys_analysis.py, line 118.
Right now I get a the blade flying off because of the spar element error. The model solves for a modal analysis but the modes are just the spar and not the entire model/blade. The element appears to be connected but something else seems to go wrong. Might be the esys and mat/section definition.
I am very interested in helping get this to work and hope my issues are not just a user error (I am in Germany and hope some language settings are not the cause).
You can @mcMunich if there is anything more i can provide. Or post it here and I will get in touch.

@mcMunich Hi, mcMunich. I have also encountered the same problems that you mentioned above. Do you have a good solution for these issues now? Thank you for your help in advance.
Email<EMAIL_ADDRESS>

Hello,
Thanks for this issue, but there is no line 1178 in the write.py file. How do i implement that /prep7.  Also while running the ansys example i encounter such issue:
mesh_data=shell_mesh_general(blade, forSolid=False, includeAdhesive=False, elementSize=elementSize)
getting blade mesh
getting element orientations
C:\Users\Veli\pyNuMAD\src\pynumad\mesh_gen\element_utils.py:241: RuntimeWarning: divide by zero encountered in scalar divide
v2 = (1.0/mag)*v2
C:\Users\Veli\pyNuMAD\src\pynumad\mesh_gen\element_utils.py:241: RuntimeWarning: invalid value encountered in multiply
v2 = (1.0/mag)*v2
getting adhesive mesh
Did you encounter this issue too?
Thanks in advance


I guess EAT project is available on only Windows?

I saw some path values working on only Windows such as "C:\Users". So I guess it's better replace such path values to work with on other OS.

Thank you @ryukato , But it not true.
I guess you might be see it on example config.json, there are some configuration values to easy understand meaning.
But if not, could you leave code. (it should be changed)

Hi @ryukato
I remove useless code in the pom.xml
Could you review the code which a Pull Requested?

LGTM, I can compile and install the projects.
But I need to look at more deeper and run the example scenarios.
Anyway, this PR is looking good.
Thanks,


Fixed duration on certain show steps

When adding LED "flashers" to my lighting shows over the weekend, I came up with some specific timings to replicate the flashing look of old-school flasher lights. When adding these flashers to shows, however, I was dismayed because any variation in the show speed would scale the flasher timing, either faster (so fast it didn't even flash) or slower (so slow it's just on, not "flashing").
I played with a few options to remedy this situation and was happiest with the addition of a show step setting fixed_duration. When True, this setting prevents a show's playback speed from scaling that particular step.
Here's an example of how that setting could be used: A show with a double-flash of an LED flasher and a long interval for looping. Currently, a designer would have to create a separate one of these shows for each interval period, or create a series of delay-callback combos to manually loop the show. With fixed_duration, a designer can use the show speed to scale the interval up and down while keeping the flash timing intact.
shows:
  flasher_show_double:
    - duration: 100ms
      fixed_duration: true
      lights:
        (flashers): off
    - duration: 100ms
      fixed_duration: true
      lights:
        (flashers): off
    - duration: 100ms
      fixed_duration: true
      lights:
        (flashers): on
    - duration: 10s
      lights:
        (flashers): off

I'd love some perspective on this issue from folks who've been around a while, especially anybody who helped transition away from flashers: and into the common lights: settings.
My working implementation of the feature is here: https://github.com/missionpinball/mpf/compare/dev...avanwinkle:show-step-fixed-duration

I like the idea to have fixed length steps in shows. You could use flasher_player in your show (flashers section) to achieve constant length flashes. However, that show step would scale again. So yeah this makes sense.
We could even bring this to the next level by allowing templates for the duration of a step. The default would be:
duration_template: duration/speed
That would allow more dynamic stuff as well. What do you think?

I like the idea, lots of possible uses for variable durations. I'm thinking of flashers that automatically get faster as a timer counts down, or shows that speed up every time a counter is hit. Neat! What do you suppose the overhead cost would be of recalculating the speed every iteration of the show, though? Too much?
In that case, the fixed duration would be duration_template: duration and use the standard dynamic value formula for the rest.

Overhead should be fine since the usual delay will be larger than 1ms and our templates should a lot faster than that.

Hey @jabdoa2, thanks for the feedback!
To your first point, I've taken a look but I'm not sure it would be easy to replace duration with the duration_function approach—unless we considered it a breaking change. Currently a float/int duration value is divided by speed, whereas a float/int duration_function value becomes a fixed amount. Combining the two would require every existing config to add " / speed" to every duration setting, right?
To your last point, I can see how that might not be clear. In the show init code all steps are converted to have a duration value, regardless of whether it's specified in "duration" or "time". I think of "time" as simply a convenience to the user, but MPF only thinks in terms of "duration". Since duration_function is calculated at runtime, there is no "time" for it to consider. I'm open to ideas on how to clarify that.
And yes, there currently are error catches for using time after duration, as you suggest.

@avanwinkle makes sense. Ok let's merge it then.
I want to make sure that time/duration/duration_function are not contradicting. So there should be either duration_function or duration or time in the next step. We can add that validation later though. Absolute times and duration_function would also be contradicting.

This should also fix #235

@avanwinkle should we merge your changes? I guess we forgot about them.


Support the functionality to use given api-version for operations

Some of our advanced users of the SDK might need to pass in an api-version other than the default one (which is hard-coded in the SDK code)
Related issue: https://github.com/Azure/azure-sdk-for-js/issues/20590

Yes, we have a plan for this. We haven't heard any customer ask for this yet? So, it's been a low priority feature that we just haven't implemented yet.

Yes, we add a string field to azcore.ClientOptions and a ServiceVersion policy that we add to the pipeline. The policy sets a header, query parameter, or maybe a path segment in the URL.

@ArcturusZhang can this wait to post-GA?

We will review this design post-GA

Since AKS migration is requiring such feature, let's discuss the potential signature change here.
One way is to add a new APIVersion option to policy.ClientOptions and for each client, add a new apiVersion property and set it when construct the client. Then for each operation of the client, set api-version with either customize api-version or default api-version. Sample code is as follows.
azcore:
// ClientOptions contains optional settings for a client's pipeline.
// All zero-value fields will be initialized with default values.
type ClientOptions struct {
	// Cloud specifies a cloud for the client. The default is Azure Public Cloud.
	Cloud cloud.Configuration

	// Logging configures the built-in logging policy.
	Logging LogOptions

	// Retry configures the built-in retry policy.
	Retry RetryOptions

	// Telemetry configures the built-in telemetry policy.
	Telemetry TelemetryOptions

	// Transport sets the transport for HTTP requests.
	Transport Transporter

	// PerCallPolicies contains custom policies to inject into the pipeline.
	// Each policy is executed once per request.
	PerCallPolicies []Policy

	// PerRetryPolicies contains custom policies to inject into the pipeline.
	// Each policy is executed once per request, and for each retry of that request.
	PerRetryPolicies []Policy

	// APIVersion customizes api-version for each client operations
	APIVersion string
}

VirtualMachinesClient:
// VirtualMachinesClient contains the methods for the VirtualMachines group.
// Don't use this type directly, use NewVirtualMachinesClient() instead.
type VirtualMachinesClient struct {
	host           string
	subscriptionID string
	pl             runtime.Pipeline
	apiVersion     string
}

// NewVirtualMachinesClient creates a new instance of VirtualMachinesClient with the specified values.
// subscriptionID - Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms
// part of the URI for every service call.
// credential - used to authorize requests. Usually a credential from azidentity.
// options - pass nil to accept the default values.
func NewVirtualMachinesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualMachinesClient, error) {
	if options == nil {
		options = &arm.ClientOptions{}
	}
	ep := cloud.AzurePublic.Services[cloud.ResourceManager].Endpoint
	if c, ok := options.Cloud.Services[cloud.ResourceManager]; ok {
		ep = c.Endpoint
	}
	pl, err := armruntime.NewPipeline(moduleName, moduleVersion, credential, runtime.PipelineOptions{}, options)
	if err != nil {
		return nil, err
	}
	client := &VirtualMachinesClient{
		subscriptionID: subscriptionID,
		host:           ep,
		pl:             pl,
		apiVersion:     options.ClientOptions.APIVersion,
	}
	return client, nil
}

Create request method for one of the operations:
// createOrUpdateCreateRequest creates the CreateOrUpdate request.
func (client *VirtualMachinesClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, vmName string, parameters VirtualMachine, options *VirtualMachinesClientBeginCreateOrUpdateOptions) (*policy.Request, error) {
	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}"
	if resourceGroupName == "" {
		return nil, errors.New("parameter resourceGroupName cannot be empty")
	}
	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
	if vmName == "" {
		return nil, errors.New("parameter vmName cannot be empty")
	}
	urlPath = strings.ReplaceAll(urlPath, "{vmName}", url.PathEscape(vmName))
	if client.subscriptionID == "" {
		return nil, errors.New("parameter client.subscriptionID cannot be empty")
	}
	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
	req, err := runtime.NewRequest(ctx, http.MethodPut, runtime.JoinPaths(client.host, urlPath))
	if err != nil {
		return nil, err
	}
	reqQP := req.Raw().URL.Query()
	if client.apiVersion != "" {
		reqQP.Set("api-version", client.apiVersion)
	} else {
		reqQP.Set("api-version", "2022-08-01")
	}
	req.Raw().URL.RawQuery = reqQP.Encode()
	req.Raw().Header["Accept"] = []string{"application/json"}
	return req, runtime.MarshalAsJSON(req, parameters)
}

Customer usage:
client, err := armcompute.NewVirtualMachinesClient("{subscription-id}", cred, &arm.ClientOptions{ClientOptions: policy.ClientOptions{APIVersion: "2022-04-01"}})
if err != nil {
	log.Fatalf("failed to create client: %v", err)
}

Another way is to provide a policy which could customize the api-version and add some helper method for customer to use such policy. Sample code is as follows:
New policy:
// CustomizeAPIVersionPolicy changes request's api-version with customized one.
type CustomizeAPIVersionPolicy struct {
	// customized API version
	apiVersion string
}

// NewCustomizeAPIVersionPolicy creates a policy object that changes request's api-version with customized one.
// apiVersion: customized API version.
func NewCustomizeAPIVersionPolicy(apiVersion string) policy.Policy {
	return &CustomizeAPIVersionPolicy{apiVersion: apiVersion}
}

// Do set request's api-version
func (p *CustomizeAPIVersionPolicy) Do(req *policy.Request) (resp *http.Response, err error) {
	query := req.Raw().URL.Query()
	query.Set("api-version", p.apiVersion)
	req.Raw().URL.RawQuery = query.Encode()
	return req.Next()
}

Helper for arm options:
// ClientOptions contains configuration settings for a client's pipeline.
type ClientOptions struct {
	policy.ClientOptions

	// DisableRPRegistration disables the auto-RP registration policy. Defaults to false.
	DisableRPRegistration bool
}

// WithAPIVersion add CustomizeAPIVersionPolicy to PerCallPolicies
func (options *ClientOptions) WithAPIVersion(apiVersion string) {
	options.ClientOptions.PerCallPolicies = append(options.ClientOptions.PerCallPolicies, runtime.NewCustomizeAPIVersionPolicy(apiVersion))
}

Customer usage:
options := arm.ClientOptions{}
options.WithAPIVersion("2022-04-01")
client, err := armcompute.NewVirtualMachinesClient("{subscription-id}", cred, &options)
if err != nil {
	log.Fatalf("failed to create client: %v", err)
}

I prefer the former one because the efficiency. Any concern? @ArcturusZhang @jhendrixMSFT @JeffreyRichter


java.lang.NullPointerException: Attempt to invoke virtual method on a null object reference: EmailPasswordActivity.createAccount

Step 2: Describe your environment

Android device: Emulator (Nexus 6 API 25 x86)
Android OS version: 7.1.1
Google Play Services version: 3.2.0
Firebase/Play Services SDK version: 12.0.0

Step 3: Describe the problem:
I'm trying to test out the quick start Auth test project, but when I try to create a new account after launching the EmailPasswordActivity I get a NullPointerException.
Steps to reproduce:

Run app
Select Email/Password Activity
When the login screen appears enter email and password
select "create account"

Observed Results:
03-25 14:41:08.278 6575-6575/com.google.firebase.quickstart.auth E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.google.firebase.quickstart.auth, PID: 6575
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.android.gms.common.api.GoogleApi.zzb(com.google.android.gms.common.api.internal.zzde)' on a null object reference
at com.google.android.gms.internal.zzdza.zzb(Unknown Source)
at com.google.android.gms.internal.zzdzh.zza(Unknown Source)
at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source)
at com.google.firebase.quickstart.auth.EmailPasswordActivity.createAccount(EmailPasswordActivity.java:89)
at com.google.firebase.quickstart.auth.EmailPasswordActivity.onClick(EmailPasswordActivity.java:235)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
03-25 14:41:08.297 6575-6616/com.google.firebase.quickstart.auth W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
03-25 14:41:08.308 6575-6616/com.google.firebase.quickstart.auth W/GooglePlayServicesUtil: Google Play services out of date.  Requires 12210000 but found 1194748
Expected Results:
To have account created successfully
Relevant Code:
Error has something to do with this block of code:

     // [START create_user_with_email]
      mAuth.createUserWithEmailAndPassword(email, password)
              .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                  @Override
                  public void onComplete(@NonNull Task<AuthResult> task) {
                      if (task.isSuccessful()) {
                          // Sign in success, update UI with the signed-in user's information
                          Log.d(TAG, "createUserWithEmail:success");
                          FirebaseUser user = mAuth.getCurrentUser();
                          updateUI(user);
                      } else {
                          // If sign in fails, display a message to the user.
                          Log.w(TAG, "createUserWithEmail:failure", task.getException());
                          Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                                  Toast.LENGTH_SHORT).show();
                          updateUI(null);
                      }

                      // [START_EXCLUDE]
                      hideProgressDialog();
                      // [END_EXCLUDE]
                  }
              });
      // [END create_user_with_email]
  }

Seems to be specific to the emulator.  I tried running this on my device and it ran successfully.

@begunfx thanks for following up.  It's probably the case that your emulator has an out of date version of Google Play services and no way to update it.  I think this issue is already being tracked, but I will report it to the Auth folks anyway.

You can see it in this log line:
03-25 14:41:08.308 6575-6616/com.google.firebase.quickstart.auth W/GooglePlayServicesUtil: Google Play services out of date.  Requires 12210000 but found 1194748

Hi Sam, Thanks for the response to my post.  Yeah, after some investigating myself it seems that this is the issue.  However it isn't really clear how to get google services updated on the emulator.  The play store app isn't available for most emulator builds.  Do you have any suggestions?

@begunfx normally if you update the emulator image itself (via Android studio) you will get an image with the latest version of Google Play services.
Sometimes there's a bit of lag on when this happens versus when the SDK comes out, especially on the older images.
I agree with what you're probably thinking - this is a bad developer experience - and I am doing what I can to advocate for a better system.

Yeah, I'm having trouble with the emulators not running the latest Google Play services and it seems that several of the SDKs don't have the latest version (and have no way to easily update them).  This is definitely a problem as you pointed out for the developer experience, and any potential growth in adopting Firebase.  I'm just trying to get the Auth quick start app working so I can look to move my app over to using it.  This doesn't instill a lot of confidence in using Firebase.
Thanks for your support and response.  I'll try to find a workaround so I can get this working.

Yep, you can follow along with me here:
https://issuetracker.google.com/74401291
Feel free to chime in!

Thanks @samstern will do!


[Feature Request] - Make joinRoom and makeAction suitable for use as React Hooks.

Make joinRoom and makeAction idempotent so that they can be used as React hooks!

This should be relatively well-doable. Create some custom hooks with the makeAction() code: https://react.dev/learn/reusing-logic-with-custom-hooks
And include a closure variable that checks if the function with the same parameters has already been called for a specific peerId.

Now supported in 0.15.0, see: https://github.com/dmotz/trystero#react-hooks


UUIDField: Don't redundantly remove hyphens

This works just fine in any version of python.
$ python
Python 2.7.9 (default, Dec 13 2014, 22:20:22)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uuid; uuid.UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
>>> exit()
$ python2.6
Python 2.6.9 (unknown, Sep  9 2014, 15:05:12)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uuid; uuid.UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
$ python3
Python 3.4.3 (default, Feb 25 2015, 21:28:45)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import uuid; uuid.UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
$ pypy
Python 2.7.9 (9c4588d731b7fe0b08669bd732c2b676cb0a8233, Mar 31 2015, 07:55:22)
[PyPy 2.5.1 with GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>> import uuid; uuid.UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')
UUID('a6bdbb77-a2d7-4989-bf16-eb1b147141b4')

Also worth noting the docstring in cpython's source: https://github.com/python/cpython/blob/2.7/Lib/uuid.py#L103-L126
Technically, a bunch of different string formats are acceptable.

Yes, - are replaced inside https://github.com/python/cpython/blob/84e6c51592bc10875c889564b2b1418fc09062fd/Lib/uuid.py#L131

merged in 8a54526592b3484b648b5acdf00fb3687586bb95, thanks.


WIP: Fix chart issues

Fixes #31 #29 #28 #27 #26 #23 #22 #21 #20 #17

@usamaahmadkhan Chart: application Dry Run successful

@usamaahmadkhan Chart: application Dry Run successful

@usamaahmadkhan Chart: application Dry Run successful


support for templates at initialization

Is your feature request related to a problem? Please describe.
i use daily notes , and i want to fill a preset template at the start of the day.
Describe the solution you'd like
ability to add new entry under a predefined heading like file+heading in org-capture
Describe alternatives you've considered
i  tried org capture but

the date (prefix+format)   will come after the whole template if i do the capture first
if i initialize the entry first then do a capture then subsequent entries may go to end while the first one being at the top

i have searched all the internet for this but could not find a good solution, please give me some help in this , not having such a workflow is a deal breaker for me as i track alot of things in templates daily and i really don't know how to achieve this in org journal

ok so i have done alot of hacky stuff and i think the issue is resolved on my side. thanks .


Pasting into submit title box freezes the app

I cannot reproduce this either

We can re-open if it comes back