bad $-escape (literal $ must be written as $$)

I have some trouble with make px4_fmu-v5_default.
Error:ninja: error: build.ninja:13001: bad $-escape (literal $ must be written as $$)
os:ubuntu16.04
gcc:5.4.0 and 7.21.
cmake:3.5.1
ninja:1.5.1
amov@amov:~/Firmware$ make px4_fmu-v5_default
-- PX4 config file: /home/amov/Firmware/boards/px4/fmu-v5/default.cmake
-- PX4 config: px4_fmu-v5_default
-- PX4 platform: nuttx
-- PX4 lockstep: disabled
-- PX4 version: v1.9.2
-- cmake build type: MinSizeRel
-- The CXX compiler identification is GNU 7.2.1
-- The C compiler identification is GNU 7.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- ccache enabled (export CCACHE_DISABLE=1 to disable)
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")
-- Found PY_jinja2: /usr/lib/python2.7/dist-packages/jinja2
-- PX4 ECL: Very lightweight Estimation & Control Library v1.9.0-rc1
-- Building and including px4_io-v2_default
-- Using C++11
-- Release build type: MinSizeRel
-- Adding UAVCAN STM32 platform driver
-- ROMFS: px4fmu_common
-- ROMFS: Adding rc.board_defaults
-- ROMFS: Adding rc.board_sensors
-- Configuring done
-- Generating done
-- Build files have been written to: /home/amov/Firmware/build/px4_fmu-v5_default
ninja: error: build.ninja:13001: bad $-escape (literal $ must be written as $$)

Makefile:193: recipe for target 'px4_fmu-v5_default' failed
make: *** [px4_fmu-v5_default] Error 1

Can anyone help me ?

Have you changed anything? If yes, what?
Has this worked previously? If so, could you do a git bisect to check where it broke?

@julianoes  thanks your re
But, i can build v1.8.2(it's ok). can't only build above v1.9.0.
i don't know the difference between v1.8.2 and v1.9.0.
amov@amov:~/Desktop/px4-src/src-v1.8.2/Firmware$ make px4fmu-v5_default
-- PX4 VERSION: v1.8.2
-- CONFIG: nuttx_px4fmu-v5_default
-- Build Type: MinSizeRel
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")
-- Found PY_jinja2: /usr/lib/python2.7/dist-packages/jinja2
-- C compiler: arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
-- C++ compiler: arm-none-eabi-g++ (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
-- PX4 ECL: Very lightweight Estimation & Control Library v0.9.0-553-g1a11068
-- Building and including px4io-v2
-- Using C++03
-- Release build type: MinSizeRel
-- Adding UAVCAN STM32 platform driver
-- NuttX: px4fmu-v5 nsh cortex-m7
-- ROMFS: px4fmu_common
-- Configuring done
-- Generating done
-- Build files have been written to: /home/amov/Desktop/px4-src/src-v1.8.2/Firmware/build/nuttx_px4fmu-v5_default
ninja: Entering directory `/home/amov/Desktop/px4-src/src-v1.8.2/Firmware/build/nuttx_px4fmu-v5_default'
[9/957] Building px4io-v2
-- PX4 VERSION: v1.8.2
-- CONFIG: nuttx_px4io-v2_default
-- Build Type: MinSizeRel
-- The ASM compiler identification is GNU
-- Found assembler: /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.12")
-- Found PY_jinja2: /usr/lib/python2.7/dist-packages/jinja2
-- C compiler: arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
-- C++ compiler: arm-none-eabi-g++ (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
-- PX4 ECL: Very lightweight Estimation & Control Library v0.9.0-553-g1a11068
-- NuttX: px4io-v2 nsh cortex-m3
-- Configuring done
-- Generating done
-- Build files have been written to: /home/amov/Desktop/px4-src/src-v1.8.2/Firmware/build/nuttx_px4io-v2_default
ninja: Entering directory `/home/amov/Desktop/px4-src/src-v1.8.2/Firmware/build/nuttx_px4io-v2_default'
[193/193] Creating /home/amov/Desktop/..._px4io-v2_default/px4io-v2_default.px4
[957/957] Creating /home/amov/Desktop/...x4fmu-v5_default/px4fmu-v5_default.px4

@473867143 it would be great if you could do git bisect to figure out where it breaks.

3ks @julianoes


[Technical] Logging

For debugging and finding errors in deployment, we need a logging service.
https://meticulous.ai/blog/getting-started-with-react-logging/
Implement with security and buffer so no constant spam to backend.
How to make logger global + dependency injection:
https://github.com/pimterry/loglevel#typescript

Hey team! Please add your planning poker estimate with Zenhub @DimitriB01 @juli-txt @Platura

added new Library "loglevel": https://yarnpkg.com/package/loglevel

A Ringbuffer class got added. It can be initialized with any size, and can hold any defined elements.
If an element exceeds the size, the first element in the list gets deleted.
The logBuffer.config class describes a global RingBuffer with a set size and structure to hold all log messages. It gets called in the App class.

In the logBuffer.config class, it is possible to define what happens when the log. method is called.
For example -> the message should be displayed in the console and the message and the current date should be added to the Global Ringbuffer. Here we could define, what happens if an log.error is called.


Luckyperms having a delay before doing commands

Hello
i have been using luckperms for about a month.  Recently whenever i do any command in luckperms there is a large delay (10 seconds to 2+ minutes) before getting any feedback (e.g getting player info, group changing.) nothing i do fixes this problem so i think it's something to do with the plugin (server restarts, installing the plugin,) it's also not my connection to the server.
any help would be appreciated
nessie

Please update to the latest version of luckperms

If this does not solve your problem look for errors in the console.

im running the latest version and no errors come up in the console

It'll be down to the speed of your database / the connection between your server and the database.
It's definitely not a LuckPerms issue.

after finding the debug command i ran a debug and got these errors not sure if they have anything to do with my problem
12.03 12:12:10 [Server] WARN at java.lang.Thread.run(Thread.java:745) 12.03 12:12:10 [Server] WARN at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 12.03 12:12:10 [Server] WARN at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 12.03 12:12:10 [Server] WARN at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1590) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.CommandManager.lambda$onCommand$0(CommandManager.java:146) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.CommandManager.execute(CommandManager.java:201) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.abstraction.SingleCommand.execute(SingleCommand.java:43) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.abstraction.SingleCommand.execute(SingleCommand.java:51) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.impl.misc.DebugCommand.execute(DebugCommand.java:95) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.impl.misc.DebugCommand.getPlayersData(DebugCommand.java:198) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.utils.gson.JObject.add(JObject.java:65) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.impl.misc.DebugCommand.lambda$getPlayersData$6(DebugCommand.java:205) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.commands.impl.misc.DebugCommand.serializeMetaData(DebugCommand.java:246) 12.03 12:12:10 [Server] WARN at me.lucko.luckperms.common.utils.gson.JObject.add(JObject.java:49) 12.03 12:12:10 [Server] WARN at com.google.gson.JsonPrimitive.<init>(JsonPrimitive.java:65) 12.03 12:12:10 [Server] WARN at com.google.gson.JsonPrimitive.setValue(JsonPrimitive.java:101) 12.03 12:12:10 [Server] WARN at com.google.gson.JsonPrimitive.isPrimitiveOrString(JsonPrimitive.java:278) 12.03 12:12:10 [Server] WARN java.lang.NullPointerException


chore: port regex functions in Action selector to AST

Description
Currently, the action selector internally uses Regex comparisons to find out what functions are being used, what their parameters/arguments are, and how they are set, when values are changed for these functions. This logic was buggy, resulting in invalid javascript, and resulted in many bugs.
We have now shifted to an AST-based logic, which would break down these functions into tokens where we can find out about the functions and their parameters more reliably. We are also fixing many outstanding bugs in this PR, so the Action selector should be more reliable and bug-free!
TL, DR: We are shifting to an AST-based logic from regex-based logic to power our Action selector to make it reliable and bug-free. We have also fixed lot of open bugs on the action selector.
Fixes #18223
Fixes #14562
Fixes #9225
Fixes #15895
Fixes #17765
Type of change

Refactor
Bug fixes

How Has This Been Tested?

Manual
Jest tests

Test plan

[ ] https://github.com/appsmithorg/TestSmith/issues/2099
[ ] https://github.com/appsmithorg/TestSmith/issues/2100
[ ] https://github.com/appsmithorg/TestSmith/issues/2101
[ ] https://github.com/appsmithorg/TestSmith/issues/2102
[ ] https://github.com/appsmithorg/TestSmith/issues/2103
[ ] https://github.com/appsmithorg/TestSmith/issues/2104
[ ] clearStore function should behave as is and should not default to a value
[ ] https://github.com/appsmithorg/TestSmith/issues/2105
[ ] https://github.com/appsmithorg/TestSmith/issues/2106
[ ] https://github.com/appsmithorg/TestSmith/issues/2107
[ ] https://github.com/appsmithorg/TestSmith/issues/2108
[ ] https://github.com/appsmithorg/TestSmith/issues/2109
[ ] https://github.com/appsmithorg/TestSmith/issues/2110
[ ] watchPosition function should behave as is and should not default to a value
[ ] clearWatch function should behave as is and should not default to a value
[ ] https://github.com/appsmithorg/TestSmith/issues/2111

Issues Raised
https://github.com/appsmithorg/appsmith/pull/18166#issuecomment-1357423300
https://github.com/appsmithorg/appsmith/pull/18166#issuecomment-1366868186
https://github.com/appsmithorg/appsmith/pull/18166#issuecomment-1369683367
Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

[ ] Example structure is incorrect for action selector sub fields

[ ] sub fields displayed on promisified code is not consistent - sometimes shows the parent functions, and sometimes the success/error block function

[ ] Fields don't retain binding after exiting widget selection and revisiting property pane

[ ] Promise code from JS mode is incorrectly picked up as callback funtion in UI

[ ] Using }} and clearing it on a UI field does not clear it from displayed syntax as seen in the screenshot

/ok-to-test sha=7fcd6fc

/ok-to-test sha=48a1444

/ok-to-test sha=d2f5308

/ok-to-test sha=9b5fa6b

[ ] We're going from a simple UI to a coder's nightmare:

On release:

New changes:

This feature is moved to https://github.com/appsmithorg/appsmith/pull/21582


Sidenav: Support for headers that are not fixed and onscroll events

Bug, feature request, or proposal:
Bug
What is the expected behavior?
Maybe there would be an onscroll event that would subtract the top offset value as you scroll, and maybe an additional property that you would need to determine if you did or did not have a fixed header.
What is the current behavior?
If you set the sidenav to fixed [fixedInViewport]="true" and you offset the top value based on your header height [fixedTopGap]="64" and then you scroll down the fixed header doesn't re-position as you scroll when the header is offscreen.
What are the steps to reproduce?
https://stackblitz.com/edit/angular-cm3u2d

What is the use-case or motivation for changing an existing behavior?
To support a wider range of layout options for applications
Which versions of Angular, Material, OS, TypeScript, browsers are affected?
Angular Material 5.0.0-rc3
Is there anything else we should know?
It seems like sidenav was designed to be used with a fixed header due to the overflow properties and examples provided. If this is true then maybe I'm using it in the wrong context.

Something exactly like this dynamic binding is done by the angular.io site when displaying an additional information bar on top. Then when you close it it animates back.
Unfortunately I'm not exactly sure how to trigger this additional bar, but I have seen it done.


Support fields url param

The search service will gain a new param fields that can be used to limit which fields are returned. We must make sure that if this param is specified, it lists the field type, and if not, we must add it, in order to be able to correctly determine the hit type.

Done.


Dummy Live Application

As a admin I need confidence that when an exercise is launched and live on the platform all candidates are able to apply and that all information is showing, can be completed and submitted.
To do this currently I complete a fully application on Apply and submit it. I then go to the application on admin and check all the information pulls through correctly. Once I am satisfied with this I then move the application back to draft.
There are instances where admin has forgot to do this which has cause issues and for the information to be included in reporting.
If there was a way to completion the action using a .digital account and for it to not be counted in any of the date, that would be suitable.
https://admin.judicialappointments.digital/exercise/iC1xW2lXVzjdFwerP0C0/applications/draft/application/5VLunSfzT95eQXiYoPn8

For now we will automatically move any application from<EMAIL_ADDRESS>to have a status of draft.
We need to discuss this further to see what support is needed for testing post-application processes.

@warrensearle Can we make improvements to dummy data on staging and apply and, e.g. allow staff to create full applicaitons which are not counted in the stats?

@warrensearle Can we make improvements to dummy data on staging and apply and, e.g. allow staff to create full applicaitons which are not counted in the stats?

@nickaddy yes we can. Right now @HalcyonJAC has coded this so that any applications created by candidates with email addresses ending @judicialappointments.digital are moved to Draft. This means they are kept out of the application process and stats. If we want these applications to go further in the process, e.g. take part in online tests, sift, IAs - then we can work out and agree a solid way to support this.


Update world-location to v1.4

Added options to draw tile lines, chunk lines and region lines on the minimap.

I give permission for @Skretzo to take over this plugin.

You're rewriting the copyright headers and removing Xrio's name/removing the header all together, this violates the conditions of the license, please add their name/the header back for proper attribution.

Your name should be in addition to Xrio's in the LICENSE file.


Add CodeQL support

Adds support for CodeQL language server
If you want to try, you will need to install codeql-cli and ql queries. Follow instructions here
you need to pass a search_path argument pointing to your QL repo. eg:
    require'nvim_lsp'.codeqlls.setup{
        settings = {
            search_path = {'~/codeql-home/codeql-repo'};
        };
    }

Create a directory and place a qlpack.yml file with:
name: test
version: 0.0.0
libraryPathDependencies: codeql-java

In the same directory write a java query test.ql, set filetype to codeql (I will soon publish a plugin for that) and write your query in it:
import java

from Method m
select m.getName()

You should get lintering and autocompletion.

@pwntester deep_extend is good for Nvim, so I made PR. Wait for a little.
https://github.com/neovim/neovim/pull/11969

@h-michael PR rebased, can we merge it now? Thanks

@pwntester ty :) merged.


Roadmap

I was thinking what are the next steps on studio. And would see if you have any ideas to our platform
At this moment im thinking on 2 main features:
1 - Isomorphic version of studio (and a plugin to access studio services from browser using websocket/socketio, the same way we do on cluster)
2 - Some kind of "agent" a web app where you can see which services are running in each machines and control it (start/stop)
We also need to document code and check if there are missing parts on Readme.md.
We can try to create some wrappers for famous libraries like mongoose sequelize, but im not sure if we should follow this path atm
@avishnyak @sean-hill i would love to hear your thoughts on this subject. And anyone is highly welcome to join this discussion

@ericholiveira Fantastic ideas on both fronts.  I was going to suggest 2 myself.  In fact, I would love to take that one on because I have a ton of ideas there.
Other ideas (these are not thought through in detail, just things that popped into my head):

API interface plugin.  Take a SWAGGER spec (or any competing standard) as input and generating a facade out of it which routes to different microservices services.  Basically creating a declarative approach to microservices.
Express/Koa interface plugin - Given a set of running services, generate an Express or Koa application front-end for them.
Service Documentation plugin - Given a set of running services and some sort of metadata, generate a web app which describes the services running in a given environment, their API surface, etc.  A self-documenting microservice framework would be really cool...
Caching plugin for RPC calls - being able to declaratively set caching policies for services (vary by param, vary by time, etc.)
A/B testing plugin - Ability to take over a route and send data to two or more services for A/B testing.  Would take a success heuristic function and be able to dynamically adjust amount of traffic going to each one based on probability of wining.  Like optimizely by for microservices.

Regarding wrappers, I think we would fall into the Seneca trap there where you have a ton of half-baked, buggy wrappers with no maintainers which will give the overall framework a bad name.

@ericholiveira once I start on my project in next little bit, I'll be able to help out more here. I don't know to much about the framework other than reading through the README and looking at the examples. As soon as I know more, and use it a bit, I'll be able to contribute more at that time :) Even though I haven't used this framework much yet, I already love it because it's how I already organize and build my current code base for work. This framework however, just adds another awesome level of abstraction I'm excited to try out. I've got some sweet front end skills, so I should be able to help out with whatever web app we decide on making for this.

@avishnyak great... so you can work on 2... i think it should be a new project (like studio-cluster)
Also i already thought about self documentation (actually i started to implement it, but decided to delete because it create an insane amount of boilerplate, so we need to think on some better way to do, anyway i totally agree with this)... and also thought on A/B and i think we should really discuss this. I really love your other ideas because this can turn studio in a full platform of development.
@sean-hill  great to know... and if you`re interested in help with frontend issues, its great because as soon as we have better docs i plan to create a website and we are going to need template and design ideas (and im just terribly bad on this ahahhahahah)

@avishnyak since you`re going to work on the "agent" , can you open a issue for it , so we start the discussion?

Its also important to implement yeoman generator

Hey @ericholiveira I just began work on my project. I'm hosting the initial boilerplate on github that includes an example using hapi, mongoose, and studio.js as it's framework. It can be found here! I'll add more to it as I build out more functionality.

Cool... are u running on node 6?

Nope, Node 6.
--
Sean Hill
<EMAIL_ADDRESS>www.seanhill.info
On May 30, 2016 at 9:22:43 AM, Erich Oliveira<EMAIL_ADDRESS>wrote:

Cool... are u running on node 6?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ericholiveira/studio/issues/46#issuecomment-222523508,
or mute the thread
https://github.com/notifications/unsubscribe/ABJmau6MFT5Fsk98Mv4ZbtZxDs9eVxdtks5qGw7TgaJpZM4Id9TN
.

Just a tip.
Node 6 have proxies implemented... so there is a "simpler" way to access your services...
you can do the following:
var services = Studio.services();
services.User.create(/*params*/);

Studio.services() returns a proxy where you can acess your services directly instead of
js   Studio.module('User')('create')(/*params*/)

Ooo, very nice! I'll give that a shot. I thought that type of structure
would be a better way to access services :)
--
Sean Hill
<EMAIL_ADDRESS>www.seanhill.info
On May 30, 2016 at 9:38:57 AM, Erich Oliveira<EMAIL_ADDRESS>wrote:

Just a tip.
Node 6 have proxies implemented... so there is a "simpler" way to access
your services...
you can do the following:
var services = Studio.services();services.User.create(/params/);
Studio.services() returns a proxy where you can acess your services
directly instead of
js Studio.module('User')('create')(/params/)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ericholiveira/studio/issues/46#issuecomment-222525664,
or mute the thread
https://github.com/notifications/unsubscribe/ABJmagWCsXHeNkTEoUgOxigL4kivCQjAks5qGxKhgaJpZM4Id9TN
.

It is also nullpointer safe...
if you try something like this
var services = Studio.services();
service.some.module.and.nonexistent.service(/*params*/);

It only throw a ROUTE_NOT_FOUND for some/module/and/nonexistent/service
no matter how deep you go with it
On Mon, May 30, 2016 at 2:12 PM, Sean Hill<EMAIL_ADDRESS>wrote:

Ooo, very nice! I'll give that a shot. I thought that type of structure
would be a better way to access services :)
--
Sean Hill
<EMAIL_ADDRESS>www.seanhill.info
On May 30, 2016 at 9:38:57 AM, Erich Oliveira<EMAIL_ADDRESS>wrote:

Just a tip.
Node 6 have proxies implemented... so there is a "simpler" way to access
your services...
you can do the following:
var services = Studio.services();services.User.create(/params/);
Studio.services() returns a proxy where you can acess your services
directly instead of
js Studio.module('User')('create')(/params/)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<
https://github.com/ericholiveira/studio/issues/46#issuecomment-222525664>,
or mute the thread
<
https://github.com/notifications/unsubscribe/ABJmagWCsXHeNkTEoUgOxigL4kivCQjAks5qGxKhgaJpZM4Id9TN

.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ericholiveira/studio/issues/46#issuecomment-222529520,
or mute the thread
https://github.com/notifications/unsubscribe/ABKaZI5vuhz4HsIIcnmFvlEvCzCGT8nlks5qGxpqgaJpZM4Id9TN
.

Super sexy :) Check this out!

Really amazing :)
On Tue, May 31, 2016 at 8:21 PM, Sean Hill<EMAIL_ADDRESS>wrote:

Super sexy :) Check this
https://github.com/sean-hill/hapi-jwt-auth-mongoose-studio.js/blob/master/app/routes/user/create.js
out!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ericholiveira/studio/issues/46#issuecomment-222850085,
or mute the thread
https://github.com/notifications/unsubscribe/ABKaZCDnSimg1FuzUyfOcW2XHHLEZl-5ks5qHMJhgaJpZM4Id9TN
.


Only fetching first domain from each page

Hey everyone,
Ran the code the other day and it was only fetching the first domain from each page, can someone help?
Thank

I could not recreate this issue today. Can you post the exact command you're running?


Swedish localization

No problem! I'll fix it as soon as I figure this PR thing out 😅 Good learning experience for me! 😁

Oh, as I added the corrections already, all you need to do is actually tap "commit suggestion" button :)
I could actually do it myself of course, but if you want to see how it works, I will leave it like so for now 👍

I see! Couldn't find them on the GitHub iOS app. I guess I learned something new today! :)

superb! We should be fine now.


Run workers in ECS Services

This implements the design for Sidekiq workers in ECS (internal).
Problem
The GOV.UK publishing platform runs Sidekiq (Redis-backed queue) to process jobs asynchronously. Workers are involved in cases such as sending emails and publishing content.
Solution
When Sidekiq workers are required, we will run a separate ECS Service for the worker process in ECS.
Where necessary, we will create a new ECS Service and Task Definition for the worker process. We will reuse the Docker image created for the web process, and will override the Docker CMD set in the ECS Container Definition (e.g., but not necessarily to foreman run worker).
This approach enables horizontal and vertical scaling of worker and web processes completely independently. Rather than vertical scaling (which should be unnecessary unless the application requirements change), we can horizontally scale web and worker tasks separately to meet independent demand. For example, Sidekiq queue size can be used to govern the number of tasks in the worker ECS Service, while e.g. request latencies can be used to govern the task count for web ECS Services.
Other options
Run web and worker process within the same containers
Since we will require apps to have a Procfile, we could use foreman start rather than foreman run web as the Docker CMD, which would start both processes.
Benefits: Minimal infrastructure changes required.
Downsides: Not possible to independently scale web and worker processes.
Run workers as a sidecar service
This approach is discussed in the corresponding spike here: https://github.com/alphagov/govuk-infrastructure/pull/82.

@sengi thanks for your comments - I've made those changes. I've added another commit following @kevindew's comment.


Add java output to protobuf models

Coverage remained the same at 62.936% when pulling 68879f840b0fc6f71a7b6788564f851085ebb5fa on poudro/protobuf_java_output into 5e5a9677b2045cbb1bd6bdd1e3d0a65dd5c3c0ae on master.


Not working with React 15.5

I get this error With React 15.5.4 and React-dom 15.5.4:
Warning: Failed prop type: Calling PropTypes validators directly is not supported by the 'prop-types' package. Use PropTypes.checkPropTypes() to call them.
Looks like react-circular-progressbar needs to use the prop-types library.
Don't Call PropTypes Warning

Actually  warning, not error. And i think if not working on React 15.5, not because this warning. But it really wont work on react 16
https://github.com/facebook/prop-types/blob/master/README.md#difference-from-reactproptypes-dont-call-validator-functions
"If you temporarily need the old behavior, you can keep using React.PropTypes until React 16".
But still it would be nice to fix it

Looking into
https://github.com/iqnivek/react-circular-progressbar/blob/master/src/index.jsx
and
https://github.com/iqnivek/react-circular-progressbar/commit/fd6741a6379dec2fb79512cbb2dfd3b90c94567b
There was
import React, { PropTypes } from 'react';
but it was fixed
import PropTypes from 'prop-types';
So it is just necessary to make new release, to apply changes and become them avaliable on npmjs for сommunity.
Kevin Qi, please do it.

hi all - sorry about the delay in replying, I'd been out on vacation and didn't have internet access.
@AlexanderKosianchuk yup, I did commit a fix for the prop-types import warning, and thought I'd released it in v0.1.4. However, I tested it out on react 15.6 and it's still showing up, so either the commit wasn't published properly, or there's another change needed besides import PropTypes from 'prop-types';. I haven't had much time to look at it, but I'm hoping to fix this shortly. Thanks for bearing with me.

this was a bit of a pain to track down - react-calendar-heatmap was using prop-types correctly, but it turns out there was an issue with prop-types itself, which caused the warning to happen here, and in a whole lot of other react libraries too. The fix was just to upgrade to a newer version of prop-types, v15.5.10. This is now released in react-circular-progressbar 0.1.5!


visualization tool is not working

Dear
Today we cannot upload json files in the visualization tool
https://vizapp.icure.dev/
on 2/2/2023 it worked, today it does not work.
can you have look what could be the problem ?
best regards
Patricia Vandecandelaere

@pvandecandelaere ,
We are changing the hosting of the tool, and apparently, there is a problem. We are looking into it.
Sorry for the inconvenience.

@pvandecandelaere : the migrated version of the tool is available at: https://fhir-testserver.be/index.php/visualization_webapp


Bump Typescript to<EMAIL_ADDRESS>

I'd love to use the latest Typescript release with tsdx, and unless I'm mistaken tsdx always uses its own hard-coded version when building, which can't be overridden by a local version.

I would also be interested in using the latest version as it supports optional chaining. Is this something that can be achieved by using a configuration?

it could but we should also update our TS version. i'll have a look

https://github.com/jaredpalmer/tsdx/pull/363 closes this. it isn't?

yeah the github auto-close issue thing must have been broken


Autohide Cairo taskbar

The Cairo taskbar is always shown. An autohide feature would be great.
With the same kind of animation as the folder bar in menu bar when it open/close (when you click on Places, Documents, Downloads and custom folders in menu bar).

This has been added in the latest release.


Refs 214: run after build-test

https://issues.redhat.com/browse/HMSCONTENT-214

⚠ This task currently requires qe-approval, but this PR does not fully resolve the task.  Please contact QE to determine appropriate testing required.


Some errors in sample

System info

Parrot OS 4.9 (based on Debian testing)
Nim lang: 1.2.4 amd64

Problems
I've tried ptrace lib by testing sample and i've found errors:

[Solved] Error at import ptrace/ptrace
Fix: edit it to import ptrace
[Solved] Error at var child: Pid; the Pid not found
Fix: add import posix
Error at var regs = getRegs(child): Type mismatch, child is pid but expected of getRegs(p: int, regs: ptr Registers).

Can you make a PR em?

Can you make a PR em?

sorry i don't understand :(

Can you fix it and make a pull request?

okay let me check and create pull request :D


Get Environments Access Links to Ops Team

From: Tang, Jason PSFS:EX
Sent: Monday, August 21, 2023 5:14 PM
To: Johnson, Harold A PSFS:EX<EMAIL_ADDRESS>Marchesan, John PSFS:EX<EMAIL_ADDRESS>Shekhar, Shashank X PSFS:EX<EMAIL_ADDRESS>Wang, Yumeng 1 PSFS:EX<EMAIL_ADDRESS>Bisseck, Andre PSFS:EX<EMAIL_ADDRESS>Marsh, Kal PSFS:EX<EMAIL_ADDRESS>Mohan, Gurumoorthy PSFS:EX<EMAIL_ADDRESS>Alnahari, Mohammed PSFS:EX<EMAIL_ADDRESS>Cc: Malcolm, David PSFS:EX<EMAIL_ADDRESS>Ragan, Hugh PSFS:EX<EMAIL_ADDRESS>Klemmensen, Danielle PSFS:EX<EMAIL_ADDRESS>Subject: RE: SIMS Operational Readiness
Hey John and Harry
To address Harry’s comment first, I noticed the error too, but the version of the document that the warning points you to (4.13) is actually older than the one we have linked (4.2), so I suspect someone’s just made a boo boo on their site.  Regardless, I reviewed the instructions and they have not changed; it instructs you to download the tool directly from our own SIMS Openshift instance and therefore, will always be the correct version for our environment (until OCIO upgrades OpenShift to a version that isn’t backwards compatible.)  To make it even easier, I have included a direct link to the download file from our environment.
Anyway, I have plucked out the tools from the Wiki documentation that require manual download of the installation files and included links for everyone’s convenience in a list below.  These are primarily the development tools, while the development environment is created by downloading images from GitHub and deploying them locally.  I have included links to where those instructions start in our Wiki documentation.  There are no license keys required for any of the installs.  All licensing is either open source or subscription based
As well, I have included a list of access required.  Please let me know if anything is missing.
Development Tools & Local Environment Setup
There are a few tools that require explicit installations to be downloaded an executed to begin.

Visual Studio Code
a.	https://code.visualstudio.com/download
b.	Install list of additional plugins and follow setup instructions on this page: https://github.com/bcgov/SIMS/wiki/Development---Standards,-Decisions,-and-Troubleshooting#development-environment-setup
Camunda Desktop Modeler
a.	With the move to Camunda Platform 8, this tool has apparently become optional as the function is now incorporated into the Camunda platform itself.  That said, you may prefer the Desktop Modeler, so I have included the link.
b.	https://camunda.com/download/modeler/
Openshift command line interface tool.
a.	https://downloads-openshift-console.apps.silver.devops.gov.bc.ca/amd64/windows/oc.zip
b.	Obtain connection scripts from existing developer.
Database Tool.  You can use any tool of your preference, provided it will connect to a Postgres database.
Docker tool
a.	https://docs.docker.com/desktop/install/windows-install/
From here, you will be deploying images to stand up a local dev environment on your workstation.  The first step is to execute Step 5 in the pre-requisites section on the following page and continuing on from there:  https://github.com/bcgov/SIMS/wiki/DevOps-and-Running-the-Application#prerequisites

ACCESS

Github
a.	Any existing member of a Github organization can invite a new user via their Github ID.
b.	Grant access to both BCGOV organization and BCGOV/SIMS organization
i.	https://github.com/bcgov/
c.	https://github.com/bcgov/SIMS/
Rocketchat
a.	Access Is granted via an automated process
b.	Login using IDIR or Github ID
c.	https://chat.developer.gov.bc.ca/home
Zenhub
a.	Access is inherited from Github access.
b.	Login using Github ID
c.	https://app.zenhub.com/workspaces/sims-601318b9c746fc001c3b52cf/board
Openshift (Silver Cluster)
a.	Granted by SIMS OpenShift admin
b.	https://console.apps.silver.devops.gov.bc.ca/
c.	Environments organized by “projects”
i.	0c27fb-prod
ii.	0c27fb-tools
iii.	0c27fb-test
iv.	0c27fb-dev
Keycloak access
a.	Granted by SIMS Keycloak Admin
b.	Login using IDIR
c.	Environments
i.	PROD-RH-SSO Admin Console
ii.	TEST-RH-SSO Admin Console
iii.	DEV-RH-SSO Admin Console
Camunda access
a.	Granted by SIMS Camunda Admin
b.	Environments are managed using “organizations”
i.	SIMS-PROD: Not issued by vendor yet
ii.	SIMS-QA: https://console.cloud.camunda.io/org/641613ac-8fae-4954-9acc-342a9888f289
iii.	SIMS-TEST: https://console.cloud.camunda.io/org/21a2c18d-ab8f-4c9a-97f6-b98ff63530be
iv.	SIMS-DEV:  https://console.cloud.camunda.io/org/6404759e-ad1d-43da-9487-7bdfd4ced9c0

Jason Tang
Technical Architect
Technology and Business Transformation Branch
Post-Secondary Educations and Future Skills
Phone:<PHONE_NUMBER>
From: Johnson, Harold A PSFS:EX<EMAIL_ADDRESS>Sent: Monday, August 21, 2023 4:41 PM
To: Marchesan, John PSFS:EX<EMAIL_ADDRESS>Tang, Jason PSFS:EX<EMAIL_ADDRESS>Shekhar, Shashank X PSFS:EX<EMAIL_ADDRESS>Wang, Yumeng 1 PSFS:EX<EMAIL_ADDRESS>Bisseck, Andre PSFS:EX<EMAIL_ADDRESS>Marsh, Kal PSFS:EX<EMAIL_ADDRESS>Mohan, Gurumoorthy PSFS:EX<EMAIL_ADDRESS>Alnahari, Mohammed PSFS:EX<EMAIL_ADDRESS>Cc: Malcolm, David PSFS:EX<EMAIL_ADDRESS>Ragan, Hugh PSFS:EX<EMAIL_ADDRESS>Klemmensen, Danielle PSFS:EX<EMAIL_ADDRESS>Subject: RE: SIMS Operational Readiness
This appears to be a set of instructions, but it might be out of date?   (at least, that’s a warning that comes up on the OpenShift client instructions)
DevOps and Running the Application · bcgov/SIMS Wiki · GitHub
Getting started with the CLI - OpenShift CLI (oc) | CLI tools | OpenShift Container Platform 4.2
From: Marchesan, John PSFS:EX<EMAIL_ADDRESS>Sent: Monday, August 21, 2023 4:35 PM
To: Tang, Jason PSFS:EX<EMAIL_ADDRESS>Shekhar, Shashank X PSFS:EX<EMAIL_ADDRESS>Johnson, Harold A PSFS:EX<EMAIL_ADDRESS>Wang, Yumeng 1 PSFS:EX<EMAIL_ADDRESS>Bisseck, Andre PSFS:EX<EMAIL_ADDRESS>Marsh, Kal PSFS:EX<EMAIL_ADDRESS>Mohan, Gurumoorthy PSFS:EX<EMAIL_ADDRESS>Alnahari, Mohammed PSFS:EX<EMAIL_ADDRESS>Cc: Malcolm, David PSFS:EX<EMAIL_ADDRESS>Ragan, Hugh PSFS:EX<EMAIL_ADDRESS>Klemmensen, Danielle PSFS:EX<EMAIL_ADDRESS>Subject: RE: SIMS Operational Readiness
Hey Jason,
We are hoping to get a comprehensive list of the software and licenses required to set up Harry, Mo and Kal as full developers.  If you could get the list to Harry tomorrow he can try to install all the items and then use Friday to debug anything that doesn’t work.  Harry can then show Mo and Kal how to get set up.
If Harry can get everything set-up and we don’t need Friday for that debugging then here are a couple other topics,
In no particular order:
Camunda orientation of the specific Program Year set up and the process to modify for new program years
Database orientation, what are the db’s where are they located, general schema, etc
Logging scheme, what is critical to be logged and monitored on the environment, separate from the how and technology choice
General architecture overview (like the attached PTIB document)
This should be enough to get us going.
John
John Marchesan
<EMAIL_ADDRESS>Phone:<PHONE_NUMBER>
Mobile:250-213-3238
Director, Digital Services for Students and Schools
Technology and Business Transformation Branch
Ministry of Post Secondary Education and Future Skills


report: Boomerang (part of Related Work) [6h]

Depends on issue #78.

Marked as future ambition, closing for now.


Roman Numeral Analysis add on (Reopen #220 after reverting merge)

I completely overlooked the discussion raised in issue #221, and merged #220 prematurely.
This pull request reopens the merge. For more information, see the description of the original pull request

Codecov Report
Patch coverage: 59.79% and project coverage change: -0.17 :warning:

Comparison is base (2d2a759) 84.80% compared to head (6a10f43) 84.63%.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #226      +/-   ##
===========================================
- Coverage    84.80%   84.63%   -0.17%
===========================================
  Files           69       70       +1
  Lines        12215    12311      +96
===========================================
+ Hits         10359    10420      +61
- Misses        1856     1891      +35

Impacted Files
Coverage Δ

partitura/io/importmusicxml.py
72.78% <51.11%> (-1.07%)
:arrow_down:

partitura/score.py
78.85% <54.28%> (-0.48%)
:arrow_down:

tests/test_octave_shift.py
93.75% <93.75%> (ø)

tests/__init__.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Still Needs Tests for RNA and ChordSymbols


Small documentation improvements

We have a lot of links pointing to configuration-guides/ still, we need to change those.

We have a lot of links pointing to configuration-guides/ still, we need to change those.

Oops, right. Will fix these.

@iaguis fixed.


Cosmetic surgery

Moving the site away from the Foundation framework look and feel, and branding it more with OME.
This is still ongoing, but I opened the PR just in case @hflynn needs to add/edit content next week. (I am away tomorrow.)
Ok to merge on my end; I'll just start a new branch if need be.

I went ahead and ran the merge build, so current statue is available at https://snoopycrimecop.github.io/www.openmicroscopy.org/

Merging this so I can work on the community menu today
@joshmoore I already caught that issue and Liza has moved BioSharing to be a text link in the opening paragraph of About Us instead.


Support follow type

Now, django-activity-stream only support one follow type that is follow or unfollow. However, there are  other follow relationships such as like, favorite, watch and so on. So we need a type field in Follow model: type =models.CharField(). Thus, we can do some different things for different follow type. For example, if a user favorite a forum post, he/she would see all activity stream which target object is that post. We also allow user to like a forum post, but in this case, the activity stream would not show on user's feeds. favorite and like are all follow relationship but we should treat them differently.
The current app framework is easy to support it. Just add a type field in Follow model and extend the follow  and unfollow view that make them can receive a type parameter and use that mechanism to retrieve or create the Follow model.

+1 could you make a PR with the proposed changes? what would be awesome

@auvipy If the author agree with my proposal, I will do this. For now, I just use it in my project.

I am a co maintainer of the project

Great! I will try it.

@auvipy Sorry, but is there any contributor instruction or developer guides? I can not find any information from the official docs. Which branch should I start with? And how do I make the PR if I done the work(Create a new feature branch?). Forgive me, I am not experienced in open source project.

master is the default branch :)


[Enhancement] New TUF related flags

Description
https://github.com/kyverno/kyverno/pull/8385
https://github.com/kyverno/kyverno/pull/8509
Slack discussion
No response

Those flags were added in this PR: https://github.com/kyverno/website/pull/992/files


Events: progress and retries could be updated on a event

Description
Added support of progress and retries on event endpoints. Those were added in server 0.5.x.

Updated a bit logging. Tested ok.


General feedback in modeling and text exercises

Checklist

[x] I run yarn run webpack:build:main: the project builds without errors.
[x] I run yarn lint: the project builds without code style warnings.
[x] ~I updated the documentation and models.~
[x] I tested the changes and all related features on the test server https://artemistest.ase.in.tum.de.
[x] ~I added (end-to-end) test cases for the new functionality.~

Motivation and Context
#369
Description
Allow Tutors to provide general feedback to modeling submissions at the bottom of the assessment page.
Feedback is displayed to students in the assessment section on the right above the element feedback.
Steps for Testing

Log in to ArTEMiS as a tutor
Navigate to tutor dashboard of a modeling exercise and open a submission for assessment
Add feedback to model elements to distribute credits (as before)
Add a general feedback text at the very bottom
Log in as the student and view the submission with feedback
Find the general feedback in the assessment section on the right in the blue box

Screenshots
Tutor View:

Student View:

This PR is based on the changes for text exercises in https://github.com/ls1intum/ArTEMiS/pull/429. We should either merge https://github.com/ls1intum/ArTEMiS/pull/429 first or both together with this PR.

I suggest that we directly merge this PR and close the other one.
@jpbernius ok for you?
Can you please fix the build (at least on Bamboo) and test this build on the test server?
Please merge develop in again as well. Thank you!

I also tested it on the test server now. It seems to work fine.


Option to make kwmc window -f prev|next wrap around

I'd love to see an option that allows me to use kwmc window -f prev to go to the rightmost window when I'm focussing the leftmost window and of course also the other way around.

Will look into this when I rework the code for multple monitors. I hope to be able to allow for different cycle-focus options such as current screen only, or all screens, etc


Moya (~> 5.1.0) required

Hello guys,
I'm trying ObjectMapper with Moya (Swift 3) but "pod install" failed with follow message:
[!] Unable to satisfy the following requirements:

Moya (= 8.0.0-beta.2) required by Podfile
Moya (~> 5.1.0) required by Moya-ObjectMapper/Core (1.0.2)

Can someone help me ?

Sorry guys, my Podfile contains incompatible versions as follow:
pod 'Moya', '8.0.0-beta.2'
pod 'Moya-ObjectMapper'

instead of this, I'm pointing now to follow versions
pod 'Moya', '8.0.0-beta.3'
pod 'Moya-ObjectMapper',:git => 'https://github.com/ivanbruel/Moya-ObjectMapper'


Show word count #492

I've added the text on UI also added some chamge of to current count logic and it is working fine

Doesn't work

Hello @mrjamieeast
We cannot track the word count entered in the WSYWG Editor, because it return the HTML. We can only track the clipfield word count. Let me know if you've any queries.

@ArindamReact Can you not count the words within a  tag? I can't believe something so basic isn't possible? @chrisns ?

does the returned html not have a .textContent property on it? if not google says: https://dev.to/sanchithasr/3-ways-to-convert-html-text-to-plain-text-52l8

@ArindamReact what has changed?


Update waves-central to <IP_ADDRESS>

N.B. - download URL changed, can verify at https://www.waves.com/downloads/central

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} reports no offenses.
[x] The commit message includes the cask’s name and version.

Additionally, if updating a cask:

~[ ] sha256 changed but version stayed the same (what is this?).
I’m providing public confirmation below.~ N/A

~Additionally, if adding a new cask:~ N/A

[ ] Named the cask according to the token reference.
[ ] brew cask install {{cask_file}} worked successfully.
[ ] brew cask uninstall {{cask_file}} worked successfully.
[ ] Checked there are no open pull requests for the same cask.
[ ] Checked the cask was not already refused in closed issues.
[ ] Checked the cask is submitted to the correct repo.

CI failure seems related to the old version, somehow.


Add end point to retreive before / after subjects based on their priority order

Linked to https://github.com/zooniverse/shakespeares_world/issues/296
Add a new end point to support transcription page turning tools. This will find the subject based on the priority field and select the next N neighbours (up to a limit),
E.g /subjects/:id/sequential?limit=4 ->  [ B4, B3, B2, B1, SUBJECT_ID, A1, A2, A3, A4 ]
This will have to copy the subject priority metadata field to the sms priority field. We can figure out the standard for this as we go along and manually do this for our projects that need this.

this keeps coming up for transcription projects, multi images subjects solve this to some degree but won't help with large numbers of pages.


OpenBench Compatability

Adding a bench sysarg that runs a D5 search on 50 positions and then emits the cummulative node count and NPS as well as a makefile for the OpenBench client to compile with.

Could we replace
std::env::args().nth(1).map_or_else(
    || (),
    |arg| match arg.as_str() {
        "bench" => crate::uci::bench::bench(),
        _ => (),
    },
);

with
if std::env::args().nth(1).as_deref() == Some("bench") {
    crate::uci::bench::bench();
}

I think it's somewhat clearer what it does.

Implemented, thank you.


Fix: App not installed after "auto update"

Fix #456

It seems that nothing is special in this PR.


[Feature Request] Use new speech recognition by Google

Google Voice Search is ancient, long-removed from the Google Play Store and even when installed from a mirror, it doesn't seem to do anything, especially because it relies on an internet connection, unless a certain Xposed module is used, and I doubt that still works because we'd need to download the languages for offline use to begin with.
The Google Search app is still a thing, but it doesn't seem to be detected. When I press the mic button, I get a toast message that mentions:
com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime

So my suggestion is to use the newer, optionally offline Google Speech Recognition and Synthesis.
Perhaps we'd just need to edit this line?
https://github.com/Danation/SwypeTweaks/blob/abaee60a2ea3fa62f8ced6839e85425cebcf881a/Source/src/com/danation/xposed/swypetweaks/SwypeTweaks.java#L101
to change com.google.android.voicesearch into com.google.android.tts like this, maybe?
switchIME(mIme, "com.google.android.tts/com.google.android.tts.ime.VoiceInputMethodService");

I'm not sure how to compile so I can't test myself.

Well, this is certainly a blast from the past 😄.  I haven't looked at this in nearly a decade.
Swype was discontinued about 5 years ago.  Are you still using it?

Hahah yup, I just couldn't get used to any of the other keyboards. Swype's features like gestures and prediction are just too good.
It still works on Android 13, even with this module and a modded APK along with themes and language packs that you can download here.
I know this project is old but I was hoping switching over to the new Google voice recognition activity would be relatively easy to implement, but if you forgot how to do any of this, I'd understand 😅

My hunch was right, editing that line was all that was needed to make this work
I wasn't able to rebuild from source so I just used apkstudio to decompile, modify and recompile the APK, which I released here:
https://github.com/ThreeDeeJay/SwypeTweaks/releases/latest
Still, if you ever decide to update the official APK, I've submitted a PR with the changed line https://github.com/Danation/SwypeTweaks/pull/7

Thanks for the PR!  I don't think I still have signing keys, etc., in order to make an official build.
But I'm glad you got it working! 😄


[Bug] Axes panel always zero

v1.3.0 on Mac (desktop version), GRBL 0.9 (Shapeoko 3)
When I jog, the coordinates don't change - they show 0 for machine and workspace coordinates.

Could you type ? in the Console widget to check Grbl status when it shows zeros on the Axes display panel?
> ?
<Idle,MPos:0.006,0.006,0.000,WPos:0.006,0.006,0.000>

I found a critical problem in the OS X Electron build that it failed to correctly receive data from an established serial port. Instead of using desktop app, you can install Node.js and run  npm install -g<EMAIL_ADDRESS>on your Mac to install the web-based version.

Thanks for the quick reply - will give it a shot next time I'm at the workshop!

Something weird. It just get back to work when I close the app and launch it again with the same installed version (v1.3.0). Please let me know if you can reproduce the case next time.

Ooops! It only happened when I run both the web-based version and the OS X app at the same time since the port is being occupied by two cnc server instances.
You can try to check the Grbl status (?) next time you encountered the same situation.

I saw you posted an issue at https://github.com/chilipeppr/widget-axes/issues/7.
Do you still have the same problem using chilipeppr?

I do indeed still see that other problem on Chilipeppr: the work coordinates are fine, but the machine coordinates are zero. But I have also been told I was using an outdated fork of Chilipeppr. Sadly the official Grbl version of Chilipeppr seems to not have work coordinate systems at all.
How does your interface determine the axes position to display? Maybe there's something different about the status format output by the Grbl version I'm using. I'll copy the Grbl status line for you when I next get access to the machine.

The cnc server parses the Grbl status line using a regular expression as below:
// <Idle,MPos:5.529,0.560,7.000,WPos:1.529,-5.440,-0.000>
const matchGrblCurrentStatus = (msg) => {
    return msg.match(/<(\w+),\w+:([^,]+),([^,]+),([^,]+),\w+:([^,]+),([^,]+),([^,]+)>/);
};

It will not report current Grbl status to the web interface if it failed to parse the line.

I see, looks like my Grbl 0.9g (Shapeoko 3 XXL) has some additional statuses reported. I get this on terminal:
<Idle,MPos:-148.000,-191.000,-5.000,WPos:-30.000,-30.000,1.150,Buf:0,RX:0,Ln:0,F:0.>

I tried turning off all status report flags, but there's still other stuff in the status line that can't be disabled:
> $10=0
ok
> ?
<Idle, Ln:0,F:0.>

By the way, the in-app console truncates items and copying from it doesn't seem to put anything in my clipboard:

You can click the "fullscreen"  icon to enlarge the console widget to see full message.

I think you might have a customized version of Grbl 0.9g, the official Grbl image does not output Ln:0,F:0..

It appears the firmware was built with USE_LINE_NUMBERS and REPORT_REALTIME_RATE:
https://github.com/grbl/grbl/blob/da5c65b54b10b3ec27ebaa466275c25954667729/grbl/report.c#L482
But it'd be great to handle and ignore extra data printed after the WPos.  Does your Axes panel still work for you when you set $10=31?

I just tried for a while and found this regular expression pattern should work for most conditions:
var msg = '';
var pattern = /[a-zA-Z]+(:([0-9\.\-]+,[0-9\.\-]+,[0-9\.\-]+(,[0-9\.\-]+)?)|:([0-9\.\-]+))?/g;

// $10=0
msg = '<Idle>';
msg.match(pattern);
// ["Idle"]

// 3-axes
msg = '<Idle,MPos:5.529,0.560,7.000,WPos:1.529,-5.440,-0.000>';
msg.match(pattern);
// ["Idle", "MPos:5.529,0.560,7.000", "WPos:1.529,-5.440,-0.000"]

// 4-axes
msg = '<Idle,MPos:5.529,0.560,7.000,0.000,WPos:1.529,-5.440,-0.000,0.000>';
msg.match(pattern);
// ["Idle", "MPos:5.529,0.560,7.000,0.000", "WPos:1.529,-5.440,-0.000,0.000"]

// $10=31
msg = '<Idle,MPos:-148.000,-191.000,-5.000,WPos:-30.000,-30.000,1.150,Buf:0,RX:0,Lim:000>';
msg.match(pattern);
// ["Idle", "MPos:-148.000,-191.000,-5.000", "WPos:-30.000,-30.000,1.150", "Buf:0", "RX:0", "Lim:000"]

// Custom output
msg = '<Idle,MPos:-148.000,-191.000,-5.000,WPos:-30.000,-30.000,1.150,Buf:0,RX:0,Ln:0,F:0.>';
msg.match(pattern);
// ["Idle", "MPos:-148.000,-191.000,-5.000", "WPos:-30.000,-30.000,1.150", "Buf:0", "RX:0", "Ln:0", "F:0."]

Fixed in this commit 07a5acbb90748e355156e0d889994d08115e713f. Now it can support up to 6 axis and various kinds of output format.
A newer version v1.4.0 will be released in the next few days.

Tried out f68171e and it works great. Thanks!


Coverage is showing line coverage

The documentation says the following configuration:
sonar.metrics=ncloc,coverage,violations,critical_violations,major_violations,blocker_violations

However, this results in the following:

(So, 0% coverage data).
This is because the sonar metrics displayed in the UI is not the coverage, but the line coverage (line_coverage). It's confusing.
Then, updating the configuration doesn't do anything. I add the metric line_coverage, and no line_coverage is added. The non-obvious fix for that is to run the following Mongo query:
db.code_quality.drop()
What are you ideas on that?

I am having this same issue. I am trying to get the % of coverage to show up.

I was able to get the line coverage to show by:

Dropping the "code_quality" collection
Re-editing the application.properties file:
sonar.metrics=ncloc,line_coverage,violations,critical_violations,major_violations,blocker_violations
Re-starting the jar

Hi @krismy93 , sorry to hear you had the same issue. I'll try to get into it this week and make a fix + pull request for this.

Thanks @bodiam
To get all the widgets to display the relevant information the final application.properties had:
sonar.metrics=ncloc,line_coverage,violations,critical_violations,major_violations,blocker_violations,sqale_index,test_success_density,test_failures,test_errors,tests
This should probably be updated within the sample file.

@krismy93 Thanks for the suggestion. I will take the PR if you submit one. Or I can do the update. Let me know.

@tabladrum just submitted one

@krismy93 which pull was this in? (was it merged yet?)

@jdamick it was pull request #107. It has already been merged

closing


Pretrained model

Hi all thanks for the great tutorial!
Quick question: is it possible to get a hold of the pretrained model for MS Imagery mentioned here https://github.com/jensleitloff/CNN-Sentinel/blob/master/py/06_classify_image.py#L18 I can't seem to be able to find it anywhere.
Many thanks!

For a limited time, I put the trained models in my Google drive:
https://drive.google.com/drive/folders/1QgNqfRQ7aZraO83Jv3bVCWDC9lLmZV2r?usp=sharing
The desired model from yout request is in the folder vgg_net.
If I run out of space on Google drive, I have to delete those models.


Update configuration from properties file sources on file changes

It would be a very helpful feature -- not only for container / orchestration environments -- to trigger updates in ConfigSources that originate from properties files, when these files are updated.

Already thought about the same topic. Here we can to check how far such a features should be integrated. In addition I think it would be wrong to provide such functionality only by CDI:
Let's say you have a config file with a property foo. When you start your Java application the property has the value A based on the content of the property file.
While the application running you change the content of the file to foo=B. Based on this it would be awesome if the app can do something based on this change. For EE4J / Microprofile you can define this for the next request but I do not think that this is a good solution. I think the best solution would be the observer pattern here: a developer can add a listener to a property to get notified by any changes of the property. This again will be a problem in EE4J / Microprofile since such a listener will never be called in any request and therefore you can not use mostly all of your scope dependent beans (@RequestScope, @SessionScope ...). I was already thinking about that topic the last month when trying to create a generic & modern observer pattern API for Java (see https://github.com/guigarage/ObserverPattern if you are interested in that). Since this would be a more or less perfect solution for JavaSE it will become problematic in EE by confusing developers that are not that familiar with thread concepts, how scopes work internally, etc.

I have similar thought on this. We need to address dynamic aspect of the config. We either force client to have the up to date config or client decides when to update the value. We talked about this in the past but not settle on any solutions. We can discuss this on the forthcoming hangout meeting.

Agree on the topic. The application using the config should be able to be notified of any config changes when it happens (or close to when) instead of when the value is naturally looked up. Or even worse the application would need to poll each config value its interested in by itself as perhaps some values are read only when starting the application.
I would however not limit this to only changes in property files as is the original scope of this issue. But instead add a mechanism available to all ConfigSources no matter where they get the values or how the dynamic updating is achieved (file watchers, internal polling, persistent connections, ...) as I described in #9 . We can however close that issue and move the entire discussion here, since the desired end goal I think is the same.
This means adding some sort of mechanism for notifying the application of changes as they happen. CDI events seem like a great fit for this. While as mentioned it will put additional restrictions on how you can consume the events with CDI beans (like the inability to use @RequestScoped or @SessionScoped for the beans that consume them), it would still be very useful if those things are not actually needed (a lot of the times they're not).
However as @hendrikebbers mentioned it should definitely not be the only way and we should also provide a simple API to access the functionality outside CDI for environment where there is no CDI or CDI is simply not used. The observer pattern mentioned would be a good choice, or perhaps something even more simple, like a subscribe/unsubscribe method on the Config class, or something else entirely. Definitely something to discuss.

I think that we have to distinct 2 different topics
1.)
This ticket #8 is about how to immediately pick up values from a file which changed.
That can be implemented in many different ways.
One possibility is to use a file trigger.
At least if it is available on the underlying system.
This is depending on the OS, the file system etc.
The important part here is that all this is purely a matter of the ConfigSource itself.
It can handle all those things internally - the Config system itself doesn't need to provide anything special!
A possible fallback would be to check every second whether the file timestamp did change, and reload in that case.
Or have a background thread running which checks for exactly that each second.
This is btw also the way how a Database based ConfigSource would most likely implement this.
2.)
The topic which would better fit the description in #9 -notifying the application whether a configured value got changed.
This is a bit harder to implement.
a.) Sending an Event is a responsibility of the Config and not of each ConfigSource itself.
The reason is that a value might be overridden in higher ordinal ConfigSources.
If such a ConfigSource would send out any events, then it might even be wrong information.
b.) That means that any ConfigSource which detects a change would need to notify the Config instance.
That might be doable by extending the ConfigSource interface with a method
/**
 * This callback should get invoked if an attribute change got detected
 */
default void setOnAttributeChante(Consumer<Set<String>> reportAttributeChange) {
     // do nothing by default. Just for compat with older ConfigSources.
}

The Config should also pro-actively check all e.g. 2 seconds whether a value got changed.
3.)
How to notify any downstream 'users' of the change?
One possibility would be to send a CDI event.
The other would be a classical Observer/Observable registration. ink that we have to distinct 2 differng things

I think 1. is not part of the spec since it described how a source implementation will internally check for changes.
I think we need observer/event/whatever support in config & config source.
Von meinem iPhone gesendet

Am 29.10.2017 um 21:41 schrieb Mark Struberg<EMAIL_ADDRESS>I think that we have to distinct 2 different topics
1.)
This ticket #8 is about how to immediately pick up values from a file which changed.
That can be implemented in many different ways.
One possibility is to use a file trigger.
At least if it is available on the underlying system.
This is depending on the OS, the file system etc.
The important part here is that all this is purely a matter of the ConfigSource itself.
It can handle all those things internally - the Config system itself doesn't need to provide anything special!
A possible fallback would be to check every second whether the file timestamp did change, and reload in that case.
Or have a background thread running which checks for exactly that each second.
This is btw also the way how a Database based ConfigSource would most likely implement this.
2.)
The topic which would better fit the description in #9 -notifying the application whether a configured value got changed.
This is a bit harder to implement.
a.) Sending an Event is a responsibility of the Config and not of each ConfigSource itself.
The reason is that a value might be overridden in higher ordinal ConfigSources.
If such a ConfigSource would send out any events, then it might even be wrong information.
b.) That means that any ConfigSource which detects a change would need to notify the Config instance.
That might be doable by extending the ConfigSource interface with a method
/**

This callback should get invoked if an attribute change got detected
*/
default void setOnAttributeChante(Consumer<Set> reportAttributeChange) {
// do nothing by default. Just for compat with older ConfigSources.
}
The Config should also pro-actively check all e.g. 2 seconds whether a value got changed.

3.)
How to notify any downstream 'users' of the change?
One possibility would be to send a CDI event.
The other would be a classical Observer/Observable registration. ink that we have to distinct 2 differng things
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Indeed 1. is an internal behaviour of each ConfigSource. It might only become a JSR matter if we define this as requirement for our default built-in ConfigSources.
I'm actually not sure whether we need a config change notification system.
So far a straight 'pull' mechanism worked fine as well.
Often it's not a question about one single 'refresh cycle'.
Some configured values do not change at all over the runtime - others might change often.
And some might not change often but any change should get picked up rather quickly or not.
In Apache DeltaSpike we have a TypedResolver to approach this problem.
In ported this over to MP-config where it looks like the following
https://github.com/struberg/javaConfig/blob/configValue/api/src/main/java/javx/config/ConfigValue.java
https://github.com/struberg/javaConfig/blob/configValue/api/src/main/java/javx/config/Config.java#L57
Here is how this is supposed to be used:
ConfigValue<Integer> cfga =
    config.access("some.server.port")
        .as(Integer.class)
        .cacheFor(5, TimeUnit.MINUTES)
        .withDefault(Integer.valueOf(1234));
....
callServer(...cfga.getValue());

We can focus on the dynamic aspect in this week's hangout. Let's agree on whether we want client to have a choice whether to pull in the changes as suggested by @TFaga or Client goes back to ask for changes based on each property as demonstrated by @struberg earlier.

Agreed, we should definitely discuss if a notification system is something to consider adding. Alternatively it could be something that is added in a future version.
I agree that watching for changes in the ConfigSource-s is not something that should be happening by default for every value. Typically only a few config parameters would be worth watching and notifying explicitly for changes. It would make sense for the users of the config to select which ones they want to be notified about and only watch changes for those config values.

I would like to point you to the work we have done in Tamaya:

The Tamaya injection API allows injecting DynamicValue instances. This instances are aware of changes and based on a LoadPolicy they can automatically take over changes or only flag that a change has happened. This way applications can explicitly decide if a change should be used or ignored. Additionally DynamicValue allows to register a PropertyChangeListener for listening on changes for a given entry.
Additionally Tamaya's event module is regularly pulling for config changes and can emit according ConfigChangeEvents . Similarly there is also an event for property source changes.
The problem of supporting CDI and SE at the same time is solved in Tamaya by defining it's own event manager, which can be backed up by different SPIs, including CDIs, for event distribution.

I had a chat with @atsticks this morning about the observer pattern in Java and we discussed the idea to create a specific JSR for this topic. My plan is to create an abstract for this topic till the end of the year. From my current view it would make sense to have something like this in the config JSR. Since this is not possible based on time constraints (observer pattern JSR haven't started yet). I would prefer to not support this feature in the first version of the config JSR. Once we have default interface for observer support in Java a support for this interfaces in the config JSR would be a big plus. I will keep you in loop about this topic :)


FutureWarning

When running the trajectories.py example, I get the following warning:
FutureWarning: arrays to stack must be passed as a "sequence" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.
https://github.com/NiziL/esnpy/blob/02b7a7f028d0ee5147e1620588355d3f4fdf42b5/esnpy/core.py#L25

Thank you !


Update the dependencies from the latest config

In scope of this changeset, the dependencies were updated to the latest available via config.
Additionally, some changes were made, as follows.

New dependencies.md file is now in place instead of license-report.md (see config#498).
A version of Kotlin stdlib-jdk7 was forced, as it is now being transitively picked from some of our dependencies (see config#500).
An explicit dependency onto Spine Reflect is added to allow the code to compile. Probably, earlier it was a transitive dependency of Spine Logging — but now it's not.

@alexander-yevsyukov PTAL.


Container fill my hard drive

Hi,
Thanks for your great work here.
I upgraded to the latest version last week and now I have a strange behavior with my t2m container.
It fills my entire disk in one day.
I'm running this new image: fmartinou/tydom2mqtt:3.2.0
The container took 128GB in one day.
My container logs is filled with one message (5 or 6 every milliseconds ?) :
2023-04-28 12:28:56,705 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,705 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,705 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,706 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
2023-04-28 12:28:56,707 - main - WARNING - Unable to handle message: received 1000 (OK); then sent 1000 (OK)
here my environment variables:

PUID=$PUID
PGID=$PGID
TZ=$TZ
TYDOM_MAC=00***
TYDOM_PASSWORD=****
TYDOM_IP=<IP_ADDRESS>
MQTT_HOST=mosquitto-z2m
MQTT_PORT=1883
MQTT_USER=mqtt-user
MQTT_PASSWORD=***

What is happening here ?
I remain available if your need more information or need to test.
Best
Romain

Here the start log before going crazy:
2023-04-29 09:29:06,490 - Starting tydom2mqtt
2023-04-29 09:29:06,490 - Validating configuration ({
"log_level": "INFO",
"mqtt_host": "mosquitto-z2m",
"mqtt_password": "ZY",
"mqtt_port": "1883",
"mqtt_ssl": false,
"mqtt_user": "mqtt-user",
"tydom_alarm_home_zone": 1,
"tydom_alarm_night_zone": 2,
"tydom_alarm_pin": "",
"tydom_ip": "<IP_ADDRESS>",
"tydom_mac": "001A",
"tydom_password": "1****l"
}
2023-04-29 09:29:06,490 - The configuration is valid
2023-04-29 09:29:06,491 - tydom.TydomClient - INFO - Configure local mode (<IP_ADDRESS>)
2023-04-29 09:29:06,495 - mqtt.MqttClient - INFO - Connecting to mqtt broker (host=mosquitto-z2m, port=1883, user=mqtt-user, ssl=False)
2023-04-29 09:29:06,501 - tydom.TydomClient - INFO - Connecting to tydom
2023-04-29 09:29:09,076 - mqtt.MqttClient - INFO - Connected to mqtt broker
2023-04-29 09:29:11,552 - tydom.TydomClient - INFO - Connected to tydom
2023-04-29 09:29:11,552 - tydom.TydomClient - INFO - Setup tydom client
2023-04-29 09:29:11,694 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870954, name=Chauffage 1, type=boiler)
2023-04-29 09:29:11,695 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870955, name=Chauffage 2, type=boiler)
2023-04-29 09:29:11,725 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870954, name=Chauffage 1, type=boiler)
2023-04-29 09:29:11,935 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870955, name=Chauffage 2, type=boiler)
2023-04-29 09:29:12,150 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870954, name=Chauffage 1, type=boiler)
2023-04-29 09:29:12,355 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870954, name=Chauffage 1, type=boiler)
2023-04-29 09:29:12,570 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870955, name=Chauffage 2, type=boiler)
2023-04-29 09:29:12,776 - tydom.MessageHandler - INFO - Device update (id=1677870954, endpoint=1677870955, name=Chauffage 2, type=boiler)

I think this is related to #107

@BlackMagik88
You are right. Same behaviour now.

Hi,
The https://github.com/fmartinou/tydom2mqtt/pull/119 is available in the version 3.3.0; please give it a try and report here if the app is more stable or not.
Thanks!

This is okay now. Thanks


Document troubleshooting guide for RCFs

The facilitators have asked for a troubleshooting guide to identify and work through common issues seen in the plugin.
We'd like to add this as a "Troubleshooting" page in our docs. The doc should explain things like "what does 404 no path found mean and how can I fix it", "what do I do about TCP connection resets", etc.

Public facing document could be an FAQ page described in #1817


Bump actions/artifact to v2

Closes https://github.com/flathub-infra/flatpak-github-actions/issues/8

Let's make sure PCSX2/Duckstation/OBS aren't broken once it's released.

They don't seem to be using this functionality directly. I tested it nevertheless
https://github.com/bbhtt/duckstation/actions/runs/10164389327/job/28109613238#step:9:3404
https://github.com/bbhtt/duckstation/commit/149c3c4c03b4aaee312c9c5c783ae6c017377248


Figure out how to include CorrCal as a `task' in draco

This will allow me to easily apply the recovered gains from CorrCal to timestreams generated from draco, which I can then propagate to the recovered power spectrum. The goal is to be able to include all of these tasks in the same config file.

Can you point me out to somewhere that I can read about "task" in draco?
This is the first step in #7 . I think #3 will eventually be folded into draco too, correct?


"jupyterlab-s3-browser" does not yet support the current version of JupyterLab.

just a FYI
$ pipenv run jupyter labextension install jupyterlab-s3-browser
Loading .env environment variables…
An error occured.
ValueError: The extension "jupyterlab-s3-browser" does not yet support the current version of JupyterLab.

Conflicting Dependencies:
JupyterLab            Extension      Package
>=4.0.2 <4.1.0        4.0.0          @jupyterlab/coreutils
See the log file for details:  /tmp/jupyterlab-debug-kwkdeu54.log

Any update to this issue as i am also seeing the same issue

Oops, my bad. Thanks for bringing this up. It's fixed in the newly released version 0.4.1.


cpi logs in /var/vcap/sys/log/google_cpi instead of bosh task log

I was confused to find detailed CPI logs in /var/vcap/sys/log/google_cpi instead of bosh task <ID> --debug or bosh task <ID> --cpi. This seems to be what other CPIs I've been using and implementing do. This makes it hard to correlate CPI calls to the specific tasks, especially given that the CPI binary is executed in parallel multiple times.

Corresponding section in the API description between Director and CPI: https://bosh.io/docs/cpi-api-v1-rpc/#response

@craigatgoogle any updates on this?

Hi Marco. Thank you for your patience on this issue and the others. We're currently in the process of ramping up some new team members who will be taking ownership of this project, which is the cause for the delay. I'm re-assigning these issues back to @evandbrown as he is coordinating the transition.

Hey @voelzmo, thanks for pointing this out. I'll take this one; should have something tomorrow.

Thanks for the merge, @evandbrown. I didn't see any sanitation being done for the logs, does this means that you're now dumping credentials and other sensitive information directly into the task's debug log? You can check how other CPIs are doing this by e.g. taking a hint from the openstack cpi: https://github.com/cloudfoundry/bosh-openstack-cpi-release/blob/master/src/bosh_openstack_cpi/lib/cloud/openstack/excon_logging_instrumentor.rb#L29-L36
This heavily depends on the place and kind of credentials for the IaaS, though.


derive macro for complex enums

would only change their variant at runtime outside Miniconf, i.e. be like option, untagged enum
They would implement exactly one depth: the max of the inner types.

I started an implementation of general enum support, but I think we might need to discuss slightly how it should work :p
Basic enum keys
For instance, a simple unit test of the node iteration:

#[derive(PartialEq, Debug, Clone, Default, Tree)]
struct Inner {
    data: u32,
}

#[derive(Debug, Clone, Tree)]
enum Either {
    A
    B(Inner)
}

#[derive(Debug, Clone, Tree)]
enum EitherDeep {
    A
    #[tree(depth = 1)
    B(Inner)
}

#[test]
fn iterate_keys() {
    let mut expected_keys = HashSet::from(["/A", "/B"]);

    for node in Either::nodes::<Path<String, '/'>>() {
        let (path, node) = node.unwrap();
        assert!(node.is_leaf());

        assert!(expected_keys.remove(path.as_str()));
    }
    assert!(expected_keys.is_empty());
}

#[test]
fn iterate_keys_deep() {
    let mut expected_keys = HashSet::from(["/A", "/B/data"]);

    for node in EitherDeep::nodes::<Path<String, '/'>>() {
        let (path, node) = node.unwrap();
        assert!(node.is_leaf());

        assert!(expected_keys.remove(path.as_str()));
    }
    assert!(expected_keys.is_empty());
}

Intuitively, I would expect both of these tests to pass.
But what happens when we want to support all forms of enums (tree attr removed for simplicity):
#[derive(Debug, Clone, Tree)]
enum EitherDeep {
    A,
    B(Inner),
    C(Inner, Inner),
    D { value: usize }
}

Maybe the more correct way would be to have this result in keys: ["/A", "/B/0/data", "/C/0/data", "/C/1/data", "/D/value"], assuming that would be possible with the current traits?
That way it should also be super simple to reuse the same code for supporting tuples, in the same manner as arrays?
The issue is, that now enums of the format B(Inner) has a different key scheme than a newtype struct, and Option would have, as I would expect both of these to be "transparent" (as is already the case with Option)
Obviously, another option is to only allow a single unnamed field in the B cases, and if users need more fields, they would need to wrap it in a struct or tuple? Though I would personally think it would be nicer to design for the full syntax support eventually?
Other issues or thoughts
Are there any other stuff I need to know about, or have not though about, before I venture down the rabbit hole of implementing this?

Thanks for the interest, Mathias!
Currently on vacation, I'll read your post fully later, but in any case here are my thoughts:
From previous discussions and existing behavior of Option, I'd think we want this (conceptually, modulo coding errors, not tested). I'll refine it later if I see issues.
#[derive(Serialize, Deserialize)]
enum En0 {
    Uni,
    Tup(f32),
    Var { field: f32 },
    Ar(
        [f32; 1],
    ),
}

#[derive(Tree)]
enum En1 {
    Uni,
    Tup(f32),
    Var { field: f32 },
    Ar(
        [f32; 1],
    ),
}

#[derive(Tree)]
enum En2 {
    Uni,
    Tup(f32),
    Var { field: f32 },
    Ar(
        [f32; 1],
    ),
}

#[derive(Tree)]
enum En3 {
    Uni,
    Tup(f32),
    Var { field: f32 },
    Ar(
        #[tree(depth=1)]
        [f32; 1],
    ),
}

#[derive(Tree)]
struct Stru {
    // atomic serialize/deserialize, no Tree API usage, ability to switch variant through Miniconf
    at: En0,

    // one tree API level, one path hierarchy level
    // atomic usage of variants,
    // inability to switch variant through Miniconf, only through other means
    #[tree(depth=1)]
    depth1: En1,

    #[tree(depth=2)]
    depth2: En2,

    #[tree(depth=3)]
    depth3: En3,

}

assert_eq!(
    Stru::nodes::<Path<String, '/'>>().map(Result::unwrap).collect::<Vec<_>>(),
    [
        "/at",
        "/depth1/Uni", "/depth1/Tup", "/depth1/Var", "/depth/1/Ar",
        "/depth2/Uni", "/depth2/Tup/0", "/depth2/Var/field", "/depth2/Ar/0,
        "/depth3/Uni", "/depth3/Tup/0", "/depth3/Var/field", "/depth3/Ar/0/0",
    ]
);

// Paths in/on variants that are not present are `Traversal::Absent`

Maybe we can implement the flatten attribute to kill the /0 on single-field tuple variants.

Switching between variants can later be implemented via some "tagging" field outside (adjacent/external/internal like serde) that then implements the switch in its handler.

Switching between variants can later be implemented via some "tagging" field outside (adjacent/external/internal like serde) that then implements the switch in its handler.

Yeah, I thought about these as well, but as I see it, anything but the default externally tagged, would result in multiple keys in order to get one field in the enum, which I think would be difficult in the current design?

The summary that @jordens has above for the examples makes the most sense with what already exists in miniconf for sure. While the extra /0 on newtypes is annoying, I believe this is what we are already doing for newtypes. We can spawn a separate issue to support #[tree(flatten)] later to get rid of it.

Yeah, I thought about these as well, but as I see it, anything but the default externally tagged, would result in multiple keys in order to get one field in the enum, which I think would be difficult in the current design?

I'm not certain it's actually possible with Miniconf to guarantee that variants could be swapped. I think this is only possible if there's a single leaf within the enum variant that you want to swap to.
If we wanted to support swapping, it would always have to be swapping the entire tree, which implies that depth = 0 for the node.

I'm not certain it's actually possible with Miniconf to guarantee that variants could be swapped. I think this is only possible if there's a single leaf within the enum variant that you want to swap to.

My use-case might be slightly off from miniconf's intended behaviour, but I am mostly interested in using miniconf to turn my json tree into individually flattened key-value pairs of all leaf values individually (with few exceptions around arrays)
I thought about this as well, and came to the conclusion that I would be okay with complex enums leaving "unused" keys in my key-value storage, as long as I know that they will be hit again next time the enum variant changes, such that there is a strict upper limit on this defined by the enum tree.

Such that (using your snippet) /foo would have serialized value Bar

This seems reasonable to me, since there's no other value represented. So for the simple unit enum case, we treat them how we're already treating enums (i.e. they become a terminal leaf node immediately). @jordens Does that sound appropriate to you?

@MathiasKoch I unintentionally editted your comment above, adding my reply here and reverting it shortly:

My use-case might be slightly off from miniconf's intended behaviour, but I am mostly interested in using miniconf to turn my json tree into individually flattened key-value pairs of all leaf values individually (with few exceptions around arrays)

The goal of miniconf is simply to turn complex data structures into key-value pairs, so it sounds like you want the exact thing that we're trying to provide :)

I thought about this as well, and came to the conclusion that I would be okay with complex enums leaving "unused" keys in my key-value storage, as long as I know that they will be hit again next time the enum variant changes, such that there is a strict upper limit on this defined by the enum tree.

I'm not sure I'm completely following what you mean here. Do you have a small example? In general, when you iterate over the keys of the tree, you will get a Error::Absent for the keys that don't actually have any values associated with them, so you can omit saving them to your key-value storage entirely.

It's just occurred to me that there may be complications in loading complex enums that expose their members as subfields. When you're loading the values from some external key-value storage, you'd get something like ("/foo/Qux/inner", and "/foo/Qux/other"). How would miniconf behave if Settings::foo was currently Foo::Bar and not Foo::Qux? Is it the users responsibility to swap over the foo variant before iterating over the key-value storage and applying the values? If not, I'm unsure how miniconf could apply half of a Qux, (i.e. inner is specified, but other has not yet been defined)

I'm not sure I'm completely following what you mean here. Do you have a small example?

I can try. Building on your example:
enum Foo {
   Bar,
   #[tree(depth = 1)]
   Qux{value: f32, other: f32},
}

// Using above notion on unit variants, this has paths ["/", "/Qux/value", "/Qux/other"]

#[derive(Tree, Default)]
struct Settings {
    #[tree(depth = 1)]
    foo: Foo,
}

let mut settings = Settings::default();
settings.foo = Foo::Bar;

assert!(settings.get_json("/foo") == "Bar");
assert!(settings.get_json("/foo/Qux/value").is_err());

// I would now persist these to e.g. `sequential-storage`, which persists following key-value pairs:
// [("/foo", "Bar")]

// We now want to switch `settings.foo` to `Foo::Qux`.

settings.set_json("/foo", {"type": "Qux", "value": "10", "other": 9}); // Not sure about how this should be handled, but pseudo-code for now

assert(settings.get_json("/foo/Qux/value") == 10);
assert!(settings.get_json("/foo/Bar").is_err());

// I would now persist these which persists following key-value pairs:
// [("/foo/Qux/value", 10), ("/foo/Qux/other", 9)]

But i still have the key from `("/foo", "Bar")` which is kinda stranded until we update the config back

If not, I'm unsure how miniconf could apply half of a Qux, (i.e. inner is specified, but other has not yet been defined)

But wouldn't this be exactly the same in struct cases?

Alright, so to sum up so far, we are down to a few bigger (uncovered) issues here?

How would it work, having a path simultaneously be a leaf and internal node for unit enum variant cases?
How to use mutation operations (set_json) to change between enum variants, if possible?
Given the following key-values in storage [("/foo", "Bar"), ("/foo/Qux/inner", "9"), ("/foo/Qux/other", "10")], how to determine which enum variant gets constructed if just loading from storage? (Kinda same issue as 2)

Alright, so to sum up so far, we are down to a few bigger (uncovered) issues here?

How would it work, having a path simultaneously be a leaf and internal node for unit enum variant cases?

I believe this gets resolved based on the current value of the enum. If the value of the enum during iteration is the unit type, the node is a leaf. If the enum variant is non-unit, then the node will not be a leaf. I don't think this is actually a problem.

How to use mutation operations (set_json) to change between enum variants, if possible?

I would defer this to a future task for now. Is this something that you actively need? In any case, I would implement it separately from initial support for enums.

Given the following key-values in storage [("/foo", "Bar"), ("/foo/Qux/inner", "9"), ("/foo/Qux/other", "10")], how to determine which enum variant gets constructed if just loading from storage? (Kinda same issue as 2)

For now, I would say that the enum currently in the structure would be the only valid one. I.e. if the structure has the Foo::Bar variant, then the /foo/Qux/* paths would generate an Error::Absent when calling set_json().

Makes sense overall. The only one I am seeing a slight issue with is the last one.
For my application, I need to be able to load the full struct from my storage (at initialization, for instance), and if we design it in such a way that we cannot change the structure, I am not sure how that would be possible if the last stored enum variant is different from the default enum variant?
Eg. device starts from clean state (reboot), loads the following key-values in storage [("/foo", "Bar"), ("/foo/Qux/inner", "9"), ("/foo/Qux/other", "10")]. (last persisted keys are ("/foo/Qux/inner", "9"), ("/foo/Qux/other", "10"), but the device doesn't know that)
Device is now unable to reconstruct the last persisted state?

You could also handle this outside of miniconf by detecting the Error::Absent being returned and potentially then updating the enum based on the key and reapplying it for now.

Thanks for the discussion! I think we can draw a couple conclusions:

A node (i.e. a Path/Indices/Packed) can not simultaneously (for a given Tree<Y>) be (resolve to a) leaf and non-leaf. Unit variants for depth > 0 need to be like "/depth1/Uni" == Ok("") (semantically) when present. They can't end up "/depth1" == Ok("Uni"). Conveniently, they are they only type that is intrinsically flattened. Also Unit fields (end up as syn::Type::Tuple, don't know why) aren't supported yet at all so we can decide what we do.
Since each field has exactly one location in the tree (it's either a leaf or part of a leaf but not both), switching variants can only be done

"depth>1" requiring Default for all variants: "/depth2/tag" = "Tup" then "/depth2/Tup/0" == Ok("3.0") (again semantically) or
"depth=1": "/depth1/Uni" = "" (TBC) or "/depth1/Var" = "{ 'field': 3.0 }"
"depth=0" (i.e. atomic) by setting the entire thing with any standard serde tagging: "/at" = "{ 'tag': 'Var',  'content': { 'field': 3.0 }") for adjacent

I don't think we want untagged enums in the serde sense (at least not now). Does serde_json_core even support them? Instead for depth > 1 I'd like to support the two distinct cases:

untagged: you can't switch the variant (there is no tag node or tag is read-only)
tagged: where you can (tag node exists)

Your case @MathiasKoch , at least as far as I understand, sounds well within scope. Might be similar to what we do in serial-settings. Let's try to support it!

I am not sure how that would be possible if the last stored enum variant is different from the default enum variant?
Device is now unable to reconstruct the last persisted state?

Good taken! For depth > 1 we need to make sure the tag comes first to switch. And we might indeed require it to always be present in the key-value stream.

Thanks for the discussion! I think we can draw a couple conclusions. Let me know what you think.

A node (i.e. a Path/Indices/Packed) can not simultaneously (for a given Tree<Y>) be (resolve to a) leaf and non-leaf. Unit variants for depth > 0 need to be like "/depth1/Uni" == Ok("") (semantically) when present. They can't end up "/depth1" == Ok("Uni"). Conveniently, they are they only type that is intrinsically flattened. Also Unit fields (end up as syn::Type::Tuple, don't know why) aren't supported yet at all so we can decide what we do.

This runs a bit counter to the thoughts above, where depth > 0 (depth of the whole enum, not necessarily the active tree) would actually resolve to (/depth1, "Uni"). I'm confused why you're saying they can't end up like that. This would be the intrinsic flattening to make them behave as normal enums already do in Miniconf (after all, a unit type enum is a normal enum).

"/depth1" == Ok("Uni")

/depth1 must be an internal node.

I don't understand why though. Could it not be the case where it is a leaf node when depth1 = En1::Uni and an internal node when using a different enum variant?

Because if there is /depth1/Var, then /depth1 by definition is internal.

And node type is statically known.

Ah that's right, I forgot that nodes are statically defined because all paths are present during iteration even if they're not run-time available. That kind of makes complex enums a little weird in comparison to normal enums though, but I guess this makes sense given the depth parameter.

I guess that makes a unit enum variant somewhat similar to Option = None, where the path exists, but nothing is there.

I guess
enum Option<T> {
    #[tree(skip)] None,
    #[tree(flatten)] Some(T),
}

The entire tag stuff might be implementable just fine using a custom handler. No need for proc macro machinery. And the implicit stuff does sound fragile on second reading.

I've added derive support for a MVP in #233


Included some additional features of windows server 2019

Contents included
1 .EnterPrise Hyper-Converged Infrastructure
2.Project Honolulu

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

C

Reopening so that it can be verified and published by Microsoft. Please assist.

@JasonGerend Please review and if you agree with the proposed changes, please sign off so I can merge.  Thanks!

Thanks for your contributions! The added content is a little dated - Windows Server 2019 and Windows Admin Center both have shipped - so I'm going to suggest that we close this PR. However, you make good points that the current topic doesn't discuss HCI or Windows Admin Center explicitly, so I'm going to try to add those to this topic in a coming publishing cycle.
Thanks again - we appreciate you input and help!
Jason Gerend - Writer for Windows Server


Fix the condition that triggers the sort to change

Fix the condition that triggers the sort to change, it was firing incorrectly on every col

Looks good, thanks.


decomp: navigate-h partially

Another partially finished header, I'm really interested in what type root is on process-drawable, that's the main blocker here.

Where is it used?


Missing translations - Services

Rancher Version: master 5-27
Hit Shift+L to see international labels:

[x] Main Stack/Stack Detail page - Service Info column

[x] Main Stack - Catalog update status

[x] Main Stack - Stop all services or single Deactivate service

[x] Add Service - Volume Section

[x] Add Service - Network section

[x] Add Service - Labels for Memory Limit and Swap Limit in Security Section

[ ] Add Service - Labels for Capabilities drop-down in Security Section

[x] Add Service - Example text for CPU Pinning, Device Binding and Log Driver in Security Section

[x] Add Service - Scheduling Section

[x] Add Service/Add Sidekick VM - vCPUs and Memory

[x] Add Service/Add Sidekick VM - User Data example text

[x] Upgrade Service - Batch section

[x] Add LB - "Select Access" text in Listener/Access drop-down

[x] Add/Edit LB - "No SSL port" text in SSL Termination Section

[x] Add/Edit LB - SSL Termination Section when SSL activated

[x] Add LB - Stickiness Section

[x] Add LB - Scheduling section

[x] Add/Edit External Service - Target section

Version - master 6/16
Verified fixed


use the readme to sell this thing!

follow this model https://github.com/jon-wade/incite-news/blob/master/readme.md

Updated read me to be closer the the model above in https://github.com/jayzamazing/Restaurant-POS/pull/64.


Update default images to ubuntu 15.10

Updated the following drivers to use ubuntu 15.10 as default image:

amazonec2 : tested on one region (eu-central-1)
azure : tested the classic image, not the image for Chinese regions
exoscale : tested
digital ocean : tested
rackspace : tested

Non covered (yet) : google compute, vCloud Air (?)
Fix for #2361

Please wait before merging, will add Google soon.

@trecloux for google, you can use this image: https://www.googleapis.com/compute/v1/projects/ubuntu-os-cloud/global/images/ubuntu-1510-wily-v20151114

@dgageot I fixed the azure doc formating and added google cloud image update.

Nice work @trecloux !
I'll make an issue to bump the image on exoscale, which I believe is the only one remaining (maybe openstack?).
LGTM

@nathanleclaire exoscale was included and tested.
For openstack there is no default image ID.

Ah OK great.  Thanks!