Usage when not using mocha or jasmine? For example tape?

Any recommended way of using this with other "frameworks"? We use tape for all level projects and I'm looking for a nice way to include jsverify in our tests.

Please add a section to README.md when you find out. I don't know (never used tape).

You can try out according to the following example.
When using tape’s plan, you want to use checkForall and t.equal to ensure that tape counts the test as passing.
test('addition is commutative', (t) => {
  t.plan(1)
  t.equal(jsc.checkForall(jsc.integer, jsc.integer, (a, b) => a + b === b + a), true)
})


Added kwargs to json_serialization_writer.py

Added **kwargs to json_serialization_writer.py to allow the user to add their own kwargs to json.dumps().
This change lets users add indent= (or other kwargs) to the json.dumps() function without needing to reach into the serialization object and use the json library yourself.
Otherwise, an optional indent= parameter to the function would be appreciated for exporting human-readable json.

Thanks for pointing out the Abstract Class as I completely forgot about it. I'm quite comfortable with any solution that doesn't require me to reach into the JsonSerializationWriter object to steal .value / .writer.

Allow me to be more specific in my suggestion:

In JsonSerializationWriterFactory add an indent property (accessors + field)
In JsonSerializationWriter add an indent property (accessors + field)
In JsonSerializationWriterFactory, GetSerializationWriter set the property of the new writer from a value of the property of the factory
In JsonSerializationWriter. GetSerializedContent pass that value to the underlying JSON library
In your code, set that property on the factory, and register it to the application/json type when you want indented code.

Sorry if my wording is a bit weird, Python is far from my most proficient language. Maybe @samwelkanda can help with the translation here.

Thanks for the clarification. This is a good solution.

HI @JaedanC
I'm trying to understand the use case here.
JsonSerializationWriter.get_serialized_content doesn't expose human readable json as is called by the request adapter to get the body of the request to be sent to the server.
As an end user, why do you need to access the writer or value?


Feature / Content Mode for Images alongside Aspect Ratio Modifier

This PR adds the possibility to control the content mode for images alongside the aspect ratio modifier similar to SwiftUIs API.
See Issue https://github.com/twostraws/Ignite/issues/89

Hello! This is just a quick message to apologize for taking so long to get to this – I really appreciate your work, I'm just really overloaded with the after effects of moving house! I'll get to it all this week, for sure. Thank you for your patience!

This is perfect – thank you! Would it be okay to add you as a collaborator to the project? It wouldn't affect the way you do your current PRs, but it would allow you to review and merge PRs from others if you wanted.

Would it be okay to add you as a collaborator to the project?

First of all, I was on holiday for a couple of weeks but I'm back now! Sure, I would like to be a collaborator. 👍

Mark:
Any chance of getting sample code for an Image, in a specified aspect ratio, specified fill mode? I couldn't get the .aspectratio modifier to work on an Image type.
Error: Argument type 'some BlockElement' does not conform to expected type 'InlineElement'
BTW Issue #89 is still labelled open. It can probably be closed.
Peter (in The Netherlands)

Any chance of getting sample code for an Image, in a specified aspect ratio, specified fill mode? I couldn't get the .aspectratio modifier to work on an Image type.

The new modifier only works on an Image type. So make sure you modifiers in between the image and the aspect ratio modifier all return in image. This for example works for me:
Image(decorative: "/images/profile.jpeg")
            .resizable()
            .cornerRadius(8)
            .aspectRatio(.square, contentMode: .fill)

BTW Issue #89 is still labelled open. It can probably be closed.

Thanks. Done :)

The new modifier only works on an Image type.
So make sure you modifiers in between the image and the aspect ratio modifier all return in image.

Your sample code indeed works. But it turns out that my problem was because I had wrapped an Image in a Link(). Which made sense to me because HTML certainly allows you to nest  <img...> .
I ended up replacing Link(Image.modifiers) by Image.modifiers.onClick() as you recommended in #99 (working code there).  Thanks for both parts of the solution.


Fragmenta new  Error writing config /root/fragmentaCms/src/secrets/fragmenta.json

Trying to install fragmenta cms
./fragmenta new cms /root/fragmentaCms/src
14:42:50 Fetching from url: github.com/fragmenta/fragmenta-cms
14:43:21 Creating files at: /root/fragmentaCms/src
14:43:21 Removing all at:/root/fragmentaCms/src/.git
14:43:21 Initialising new git repo at:/root/fragmentaCms/src
14:43:21 Updating import paths to: /root/fragmentaCms/src
14:43:22 Generating new config at /root/fragmentaCms/src/secrets/fragmenta.json
14:43:22 Error writing config /root/fragmentaCms/src/secrets/fragmenta.json open /root/fragmentaCms/src/secrets/fragmenta.json: no such file or directory
14:43:22 Error generating config open /root/fragmentaCms/src/secrets/fragmenta.json: no such file or directory

What do you get if you ls /root/fragmentaCms/src

Should now be fixed, thanks for reporting.

Same error:
Generating new config at /home/va/projects/fragmentaSite/src/secrets/fragmenta.json Error writing config /home/va/projects/fragmentaSite/src/secrets/fragmenta.json open /home/va/projects/fragmentaSite/src/secrets/fragmenta.json: no such file or directory Error generating config open /home/va/projects/fragmentaSite/src/secrets/fragmenta.json: no such file or directory
OS: Debian 8
GO version: go1.8 linux/amd64
GOPATH=/home/va/projects/fragmentaSite

@VagelisProkopiou your gopath should not be set to the site folder. GOPATH is for all your go code, not just a per-project path.

Thanx @kennygrant. I reverted the GOPATH to my default ( /home/va/go), but the installation fails with the same error.
It seems that the GOPATH actual destination is irrelevant (at least in my case). Though it seems quite straightforward, I can't make it work.
Any suggestions are welcome.


deploy:release requires shell date function?!

Q
A

Issue Type
Question

Deployer Version
4.3.1

Local Machine OS
Docker PHP Image, PHP 7.1

Remote Machine OS
Hosteurope Webpack Premium (Linux)

Description
I'm currently trying to deploy my application using Gitlab to a Webpack (normal webspace with SSH access) of the german hoster "Hosteurope".
When running the various deployment tasks, the deploy:release-task from the common.php recipe fails, because the shell for this webhosting package forbids the usage of the function date.
Is there any way for me to prevent this error?
Output log
$ php deployer.phar --file=./ci/deploy/deploy.php -vvv deploy production --branch ${CI_JOB_REF_NAME}
➤ Executing task deploy:prepare
[production] > echo $0
[production] < bash
[production] > if [ ! -d ~/www/ ]; then mkdir -p ~/www/; fi
[production] > if [ ! -L ~/www//current ] && [ -d ~/www//current ]; then echo true; fi
[production] > cd ~/www/ && if [ ! -d .dep ]; then mkdir .dep; fi
[production] > cd ~/www/ && if [ ! -d releases ]; then mkdir releases; fi
[production] > cd ~/www/ && if [ ! -d shared ]; then mkdir shared; fi
• done on [production]
✔ Ok [3s 655ms]
➤ Executing task deploy:release
[production] > cd ~/www/ && (if [ -h release ]; then echo 'true'; fi)
[production] > cd ~/www/ && ([ -d releases ] && [ "$(ls -A releases)" ] && echo "true" || echo "false")
[production] < false
[production] > cd ~/www/ && (if [ -d ~/www//releases/1 ]; then echo 'true'; fi)
[production] > cd ~/www/ && (date +"%Y%m%d%H%M%S")
➤ Executing task deploy:failed
• done on [production]
✔ Ok [0ms]

  [RuntimeException]
  bash: date: command not found

Is it possible to install date utility there?

Nope - the shell access for the webspace offerings of Hosteurope are really restricted in this regard.
And to change the hoster is currently not an option for my customer... :(

You can override this task and trim date

Okay - thanks.
This was the only solution, which was coming in my mind, too.
But this would result in that the deployer meta-information is not being written, right?!

No, actually you can change run('date') to php call date() or similar.

Hi Anton,
thanks for your help - this solution resolved my problem! :)
I'll close this issue now. :)


Support for okteto deploy

It seems that you don't have github action that can achieve same thing as okteto deploy. Can you add it to this action since it says it does that in documentation (I think cli API changed) or create a new one? Or point me on how I could achieve it other than writing new action (which I could do if you accept PRs)

closing since this action is deprecated


[web]: TextField and TextFormField Problem

Hi dear flutter developent support... the TextField and TextFormField cursor is not currectly work in RTL locate, please solve this

Hello @Zewe1995
Please provide the output for flutter doctor -v and a minimum reproducible code for your issue. Also can you please describe your issue a bit more in detail?

Closing this as duplicate of 32239


[Feature Request] Show distance cost on normal token measurement in PF2e

I don't use the Drag Measurement option. Would it be possible for movement cost to display using normal token measuring? Thanks for the module!

My module option simply adds additional information to the label that is already being displayed by PF2e's drag ruler.
It would be a lot more work for me to implement my own drag mechanism.
It might be possible for you to set the drag ruler colour to some totally transparent colour so that the line isn't drawn.


modbus-client configuration node, cannot disable warnings and logs

Which node-red-contrib-modbus version are you using?
5.25.0
What happened?
Hi,
I've got a PV Inverter system which I'm querying via modbus/TCP. That inverter is sleeping at night (completely offline).
Since the modbus-client tries to reconnect to it very frequently and I get a log message inside the node-red debug window and the logfile I wanted to disable the "Warnings" and "Logs" since there is no way to disable the modbus-client configuration node during that time period, however disabling the options doesn't work.
Server
Other/External server
How can this be reproduced?
When I go into the modbus-client configuration node of that inverter to the "Optionals" tab the options "Show Warnings" and "Show Logs" are active.
To disable those messages I deselect the checkboxes, click "Update" and deploy either the "Modified Nodes" or "Full".
a) The messages don't stop coming and b) if I go back into the configuration node both options "Show Warnings" and "Show Logs" are active again.
What did you expect to happen?
When disabling the "Show Warnings" and "Show Logs" options of the modbus-client a) the settings should be saved and b) the messages should no longer be printed to the debug window nor log.
Other Information
Node-red is running inside ioBroker docker container. Versions are:
ioBroker: 6.3.5
node-red adapter: 4.0.0
Node.js: v16.17.0
NPM: 8.15.0

Hi @mt-mrx you could set up a server inside node-red and switch over for a time-range based on sun timings to have a valid zero filled connection or filled up with the last state of the inverter.

Hi @biancode thanks!
That's a workaround I can live with. Would've never got the idea to use the Modbus-Flex-Connector to switch the connection settings from the actual inverter to a dummy
Together with node-red-contrib-sunevents it should work like a charm, just implemented it and haven't tested yet a full cycle.
If anyone is interested, here is my flow: Dawn Dusk Connection Switcher.json


Performance benchmark

Before starting to tackle some of the optimization opportunities, it is important to have a baseline performance number and a repeatable way to benchmark the code. This benchmark should be:

Have a well-defined setup process.

For example, Terraform config to spin up an EMR cluster.

Runnable with a simple script, taking some input parameters.
Test various high-level operations at scale:

Load raw data into a set of merkle-db tables.
High-level ad-hoc reads from the database.
Apply a batch of updates to the database.
Perform simple aggregation queries over the dataset.

During these operations, collect information about the performance:

Project version
Source code commit hash
Elapsed wall-clock time per phase
Size of raw input dataset in bytes and records
Size of output database in bytes and records
Other internal metrics?

See: #4 #6 #8 #9 #10 #11

Lots of progress on this in the benchmark-harness branch!


INFO gave up: conanexilesServer entered FATAL state, too many start retries too quickly

I cant get this to work I am using unraids docker manager. Running this command (edited to be more readable and anonymized)
docker run -d --name="ConanExiles" --net="bridge" -e TZ="Europe/Berlin" \
-e HOST_OS="unRAID" \
-e "CONANEXILES_ServerSettings_ServerSettings_AdminPassword"="xxx" \
-e "CONANEXILES_Engine_OnlineSubSystemSteam_ServerName"="xxx" \
-e "CONANEXILES_Engine_OnlineSubSystemSteam_ServerPassword"="xxx" \
-e "CONANEXILES_SERVER_TYPE"="pvp" -e "PUID"="99" -e "PGID"="100" \
-p 7777:7777/udp -p 7778:7778/udp -p 27015:27015/udp \
-v "/mnt/user/appdata/conanexiles":"/conanexiles":rw \
alinmear/docker-conanexiles

The stdout
linux32/
linux32/libstdc++.so.6
linux32/steamcmd
steamcmd.sh
steam.sh
[Errno 2] No such file or directory: '/conanexiles/ConanSandbox/Saved/Config/WindowsServer/Engine.ini'
Parameter not found: ServerPassword
/usr/lib/python2.7/dist-packages/supervisor/options.py:297: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
'Supervisord is running as root and it is searching '
2017-12-14 08:59:39,526 CRIT Supervisor running as root (no user in config file)
2017-12-14 08:59:39,526 WARN Included extra file "/etc/supervisor/conf.d/conanexiles.conf" during parsing
2017-12-14 08:59:39,543 INFO RPC interface 'supervisor' initialized
2017-12-14 08:59:39,543 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2017-12-14 08:59:39,544 INFO supervisord started with pid 73
2017-12-14 08:59:40,547 INFO spawned: 'conanexilesController' with pid 86
Info: Backed up current build db and configs to /conanexiles/ConanSandbox/Saved.
2017-12-14 08:59:41,015 INFO spawned: 'conanexilesUpdate' with pid 121
2017-12-14 08:59:41,026 INFO exited: conanexilesUpdate (exit status 126; not expected)
2017-12-14 08:59:42,028 INFO success: conanexilesController entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2017-12-14 08:59:42,030 INFO spawned: 'conanexilesUpdate' with pid 125
2017-12-14 08:59:42,046 INFO exited: conanexilesUpdate (exit status 126; not expected)
conanexilesUpdate: ERROR (spawn error)

Info: Updated to build () successfully.
2017-12-14 08:59:43,438 INFO spawned: 'conanexilesServer' with pid 157
2017-12-14 08:59:43,628 INFO exited: conanexilesServer (exit status 2; not expected)
2017-12-14 08:59:44,630 INFO spawned: 'conanexilesServer' with pid 160
2017-12-14 08:59:44,632 INFO spawned: 'conanexilesUpdate' with pid 161
2017-12-14 08:59:44,639 INFO exited: conanexilesUpdate (exit status 126; not expected)
2017-12-14 08:59:44,646 INFO exited: conanexilesServer (exit status 2; not expected)
conanexilesServer: ERROR (spawn error)

conanexilesServer: ERROR (already started)

2017-12-14 08:59:46,897 INFO spawned: 'conanexilesServer' with pid 172
2017-12-14 08:59:46,905 INFO exited: conanexilesServer (exit status 2; not expected)
2017-12-14 08:59:47,907 INFO spawned: 'conanexilesUpdate' with pid 173
2017-12-14 08:59:47,917 INFO exited: conanexilesUpdate (exit status 126; not expected)
2017-12-14 08:59:48,919 INFO gave up: conanexilesUpdate entered FATAL state, too many start retries too quickly
2017-12-14 08:59:49,921 INFO spawned: 'conanexilesServer' with pid 177
2017-12-14 08:59:49,935 INFO exited: conanexilesServer (exit status 2; not expected)
2017-12-14 08:59:50,936 INFO gave up: conanexilesServer entered FATAL state, too many start retries too quickly

Hello @sigboe.
I just created a new container on Ubuntu 16.04 with Docker version 1.12.6, build 78d1802 and cannot reproduce your problem. My guess: docker is getting into troube with -v "/mnt/user/appdata/conanexiles":"/conanexiles":rw \
Can you confirm, that docker is able to read an write there, because i cannot see the initial output of the steam client setting up the application:
conanexiles_1  | 2017-12-29 10:20:01,997 INFO RPC interface 'supervisor' initialized                                                                                [224/1173]conanexiles_1  | 2017-12-29 10:20:01,997 CRIT Server 'unix_http_server' running without any HTTP authentication checking
conanexiles_1  | 2017-12-29 10:20:01,997 INFO supervisord started with pid 73
conanexiles_1  | 2017-12-29 10:20:02,999 INFO spawned: 'conanexilesController' with pid 86
conanexiles_1  | 2017-12-29 10:20:04,000 INFO success: conanexilesController entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
conanexiles_1  | Info: New build available. Updating  -> 2385480
conanexiles_1  | Info: Backed up current build db and configs to /conanexiles/ConanSandbox/Saved.
conanexiles_1  | 2017-12-29 10:20:17,912 INFO spawned: 'conanexilesUpdate' with pid 165
conanexiles_1  | Redirecting stderr to '/root/Steam/logs/stderr.txt'
conanexiles_1  | [  0%] Checking for available updates...
conanexiles_1  | [----] Verifying installation...
conanexiles_1  | Steam Console Client (c) Valve Corporation
conanexiles_1  | -- type 'quit' to exit --
conanexiles_1  | Loading Steam API...OK.
conanexiles_1  | @sSteamCmdForcePlatformType windows
conanexiles_1  | "@sSteamCmdForcePlatformType" = "windows"
conanexiles_1  | login anonymous
conanexiles_1  |
conanexiles_1  | Connecting anonymously to Steam Public...2017-12-29 10:20:19,288 INFO success: conanexilesUpdate entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
conanexiles_1  | conanexilesUpdate: started
conanexiles_1  | Logged in OK
conanexiles_1  | Waiting for user info...OK
conanexiles_1  | force_install_dir /conanexiles
conanexiles_1  | app_update 443030 validate
conanexiles_1  |  Update state (0x3) reconfiguring, progress: 0.00 (0 / 0)
conanexiles_1  |  Update state (0x3) reconfiguring, progress: 0.00 (0 / 0)
conanexiles_1  |  Update state (0x11) preallocating, progress: 97.80<PHONE_NUMBER> /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 2.70 (39964293 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 10.53 (155989741 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 24.62 (364605324 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 31.69 (469414450 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 34.41 (509627593 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 47.43 (702473480 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 70.22<PHONE_NUMBER> /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 86.73<PHONE_NUMBER> /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x61) downloading, progress: 95.71<PHONE_NUMBER> /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x101) committing, progress: 27.28 (403972057 /<PHONE_NUMBER>)
conanexiles_1  |  Update state (0x101) committing, progress: 98.87<PHONE_NUMBER> /<PHONE_NUMBER>)
conanexiles_1  | Success! App '443030' fully installed.
conanexiles_1  | quit
conanexiles_1  | 2017-12-29 10:20:46,840 INFO exited: conanexilesUpdate (exit status 0; expected)
conanexiles_1  | Info: Updated to build (2385480) successfully.
conanexiles_1  | 2017-12-29 10:20:53,308 INFO spawned: 'conanexilesServer' with pid 379
conanexiles_1  | 2017-12-29 10:20:54,553 INFO success: conanexilesServer entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
conanexiles_1  | conanexilesServer: started
conanexiles_1  | Error: The server is already running. I don't want to start it twice.
conanexiles_1  | 2017-12-29 10:22:34,491 INFO waiting for conanexilesServer to stop
conanexiles_1  | 2017-12-29 10:22:34,491 INFO stopped: conanexilesServer (terminated by SIGTERM)
conanexiles_1  | 2017-12-29 10:23:21,397 INFO waiting for conanexilesController to stop
conanexiles_1  | 2017-12-29 10:23:21,397 INFO stopped: conanexilesController (terminated by SIGTERM)
conanexiles_1  | 2017-12-29 10:23:32,036 INFO spawned: 'conanexilesController' with pid 420
conanexiles_1  | 2017-12-29 10:23:33,038 INFO success: conanexilesController entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
conanexiles_1  | 2017-12-29 10:23:38,523 INFO spawned: 'conanexilesServer' with pid 473
conanexiles_1  | 2017-12-29 10:23:39,524 INFO success: conanexilesServer entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
conanexiles_1  | conanexilesServer: started
conanexiles_1  | LogOnline:Display: STEAM: Loading Steam SDK 1.38a
conanexiles_1  | LogStreaming:Display: Async Loading initialized: Event Driven Loader: true, Async Loading Thread: true
conanexiles_1  | Dreamworld:Display: Dreamworld project: CSAND
conanexiles_1  | Dreamworld:Display: Dreamworld configuration: ConanSandbox.Client.VS2015.Live.Win64
conanexiles_1  | Dreamworld:Display: Dreamworld platform: x64
conanexiles_1  | Dreamworld:Display: Dreamworld revision: 74748
conanexiles_1  | Dreamworld:Display: Dreamworld snapshot: 15372
conanexiles_1  | Dreamworld:Display: Dreamworld branch: ConanSandbox_Stable
conanexiles_1  | Dreamworld:Display: Platform (.ini): <unknown>
conanexiles_1  | Dreamworld:Display: Platform: WindowsServer
conanexiles_1  | Dreamworld:Display: .ini sub-platform prefix: <not specified>
conanexiles_1  | LogMemory:Display: Entered application state 'ConanSandboxStarting'.
conanexiles_1  | LogModuleManager:Warning: ModuleManager: Module 'EnvironmentQueryEditor' not found - its StaticallyLinkedModuleInitializers function is null.
conanexiles_1  | LogModManager:Warning: Aborting search for mod controllers, no mods folder found: Z:/conanexiles/ConanSandbox/Content/Mods/ or Z:/conanexiles/ConanSandbox/Mods/
conanexiles_1  | LogStreaming:Error: Couldn't find file for package /Engine/EditorMaterials/GizmoMaterial requested by async loading code. NameToLoad: /Engine/EditorMaterials/GizmoMaterial
conanexiles_1  | LogStreaming:Error: Found 0 dependent packages...
conanexiles_1  | Network:Warning: Code: UConanGameInstance::OnLoginStatusChanged configured
conanexiles_1  | LogInit:Display: Game Engine Initialized.
conanexiles_1  | LogInit:Display: Starting Game.
conanexiles_1  | LogStreaming:Error: Couldn't find file for package /Engine/EditorMeshes/MatineeCam_SM requested by async loading code. NameToLoad: /Engine/EditorMeshes/MatineeCam_SM
conanexiles_1  | LogStreaming:Error: Found 1 dependent packages...
conanexiles_1  | LogStreaming:Error:   /Game/Maps/ConanSandbox/ConanSandbox
conanexiles_1  | LogStreaming:Warning: FAsyncPackage::LoadImports for /Game/Items/Weapons/BaseWeapon: Skipping import ObjectProperty /Script/Engine.DestructibleComponent:DestructibleMesh, depends on missing native class
conanexiles_1  | IP2Location library error in opening database Z:/conanexiles/ConanSandbox/Binaries/ThirdParty/IP2Location/IP2LOCATION-LITE-DB1.BIN.

The contents of -v "/mnt/user/appdata/conanexiles":"/conanexiles":rw is
/mnt/conanexiles/ConanSandbox
/mnt/conanexiles/ConanSandbox/S4I56P~G
/mnt/conanexiles/ConanSandbox/Saved
/mnt/conanexiles/ConanSandbox/S4I56P~G/Config
/mnt/conanexiles/ConanSandbox/S4I56P~G/Config/WindowsServer
/mnt/conanexiles/ConanSandbox/S4I56P~G/Config/WindowsServer/Engine.ini
/mnt/conanexiles/ConanSandbox/S4I56P~G/Config/WindowsServer/ServerSettings.ini
/mnt/conanexiles/ConanSandbox/Saved/Config
/mnt/conanexiles/ConanSandbox/Saved/Config/WindowsServer
/mnt/conanexiles/ConanSandbox/Saved/Config/WindowsServer/Engine.ini
/mnt/conanexiles/ConanSandbox/Saved/Config/WindowsServer/ServerSettings.ini

Is there any more information I can supply?
docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.7.4
 Git commit:   6b644ec
 Built:        Mon Jan 16 05:45:42 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.7.4
 Git commit:   6b644ec
 Built:        Mon Jan 16 05:45:42 2017
 OS/Arch:      linux/amd64

Even though I seamed to have updated the host os, and the docker image will seamingly start the server. I cant connect to it, but I will troubleshoot and maybe open a new issue.
after OS update docker version
Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:21:47 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.09.1-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:28:28 2017
 OS/Arch:      linux/amd64
 Experimental: false


DomEvent: keep original value of event type for transformed events

Currently for compatibility purposes Leaflet substitutes 'touch*' listeners with 'pointer*' ones (where available if touch is not available).
And similarly with 'mouseenter' / 'mouseleave'.
It may lead to unexpected consequences, if handler relies on original value of type in own code.
That's why it'd better to keep original type.
In proposed modification I pass 'original' type as 2nd argument of handler, and this is enough for events dispatched with map._fireDOMEvent: handler then has access both to 'original' event type, and to real type (originalEvent.type).
But for listeners attached directly with DomEvent.on(... it is not so simple, as type property is read-only (as a rule). I believe that we should keep things simple: type as second argument is smart enough.
Perhaps, that should be documented in https://leafletjs.com/reference-1.6.0.html#domevent.

In proposed modification I pass 'original' type as 2nd argument of handler[...]

Alternatively original value could be passed as event's property _originalType.

Todo: make use in Draggable.js

Passing the new type to _handleDOMEvent is missing in Canvas:

Why do we need it there?

This was very bad described from me sorry ...
You have changed the function arguments of  _handleDOMEvent so that the originalType is used for this._fireDOMEvent(e, type);:
_handleDOMEvent: function (e, originalType) {
	// ...
	var type = originalType || e.type;
	// ...
	this._fireDOMEvent(e, type);

If Canvas is enabled _fireDOMEvent will be called too and then it should also use the originalType. Else pointerevents will not converted to touchevents. If SVG is used, it will be converted -> should be the same behaviour for both

Besides from above, the _handleDOMEvent is not listening on touchevents, so there is currently no need to pass the originalType there, because it will be never fired by a pointerevent.
_handleDOMEvent is listening only on the following events:
https://github.com/Leaflet/Leaflet/blob/e3719a317ab325ed091fbbc6bfd34640fe19e13e/src/map/Map.js#L1314-L1315
But I currently working on the PR to adding touchevents and there I will need the originalType in the _handleDOMEvent, but a future PR should not be a reason to keep it in this PR


Pass pubKey via prefunded_accounts

Is your feature request related to a problem? Please describe.
Since our signature algorithm needs sender public key to join the encoding part, so currently I am using account_identifier's metadata to let rosetta-cli aware of this info and it does work. But this will cause a side effect that we should ensure all account_identifier has this metadata, but that cannot happen in the confirmed transaction as it just doesn't contain it. That means I cannot make derive api contain pubKey too. So I would like to ask if there is another way to pass pubKey else in the json file.
 "prefunded_accounts": [
   {
    "privkey": "******",
    "account_identifier": {
     "address": "c18273C95DE42Eb979E99f8842aA0cF7343Cb42e",
     "metadata": {
      "pubKey": "03ac3d6f2fed0102253d7658de77d802ec6cd6d8f5bdd056ae342540be3d00ae3f"
     }
    },
    "curve_type": "secp256k1",
    "currency": {
       "symbol":"ZIL",
       "decimals":12
    }
   }
  ]

Since our signature algorithm needs sender public key to join the encoding part, so currently I am using account_identifier's metadata to let rosetta-cli aware of this info and it does work.

Can you not derive the pubKey from the provided privKey?
We already added a change to the specification that allows an implementation to request the pubKeys of specific AccountIdentifiers during construction. Are you using it (if so, what is missing)?:

https://github.com/coinbase/rosetta-specifications/pull/45
https://github.com/coinbase/rosetta-specifications/pull/46

The rosetta-cli fully supports this btw ^^^

Oh I am not using it. Yes, I can drive the pubKey from the privKey. I was researching a way to get the private key from config but could not though. Will take a look at your PRs. Thanks!

Closing this for now...happy to answer any other questions!

OH! it works, thanks a lot.

Very cool!


Multiple tab panes showing up in same tab.

I've noticed for this line of code in v4 alpha no longer uses ACTIVE_CHILD. v4 beta now uses ACTIVE
This becomes a problem when for example I have elements nested in those panes that also have a class of 'active', especially in previous panes. So for example the result of $(container).find(Selector.ACTIVE) becomes something like the image below and the wrong elements are targeted when showing or hiding the right panes. This appears to break the logic and display multiple panes in the same tab. Is there a fix for this?

"bootstrap": "4.0.0-beta" : bootstrap.js
V4 ALPHA:
Tab.prototype._activate = function _activate(element, container, callback) {
var _this21 = this;
var active = $(container).find(Selector.ACTIVE_CHILD)[0];
V4 BETA:
Tab.prototype._activate = function _activate(element, container, callback) {
var _this21 = this;
var active = $(container).find(Selector.ACTIVE)[0];

https://github.com/twbs/bootstrap/pull/23087


[0.5.7] Class XXXXX was not found while trying to analyse it

Larastan Version: 0.5.7
--level used: 7

Description
Unexpected error message when running phpstan:
"Class replica was not found while trying to analyse it - autoloading is probably not configured properly."
Here "replica" is a param, not a class, so I have no idea where this is coming from but thought I should raise it.
Laravel code where the issue was found
Snippets of relevant code:
From Controller:

        $lends = auth()->user()->lendsNotDeletedFromReplica();

From User:

    /**
     * All non-deleted lends from the replica connection
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function lendsNotDeletedFromReplica(): HasMany
    {
        return $this->hasManyFromConnection('replica', LendingRequest::class)
            ->where('status', '!=', 'deleted');
    }

User inherits from Model:

    /**
     * Allows use of different DB connections for relationships
     *
     * @param  string  $connection
     * @param  string  $related
     * @param  string  $foreignKey
     * @param  string  $localKey
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function hasManyFromConnection(
        string $connection,
        string $related,
        string $foreignKey = null,
        string $localKey = null
    ): HasMany {
        $foreignKey = $foreignKey ?: $this->getForeignKey();
        $instance = new $related;
        $instance->setConnection($connection);
        $localKey = $localKey ?: $this->getKeyName();
        return new HasMany($instance->newQuery(), $this, $instance->getTable().'.'.$foreignKey, $localKey);
    }

Hi,
This should be fixed now: https://github.com/nunomaduro/larastan/commit/cd5ce84d7853a9805cbdfa08f1dbb2528981fd6c

Tested and this has resolved the issue.


chore(getting-started): bump min python version to 3.7.7

Strictly speaking, any python 3.7.X version should work, however, we've seen issues when using the stock python 3.7.3 version of MacOS.
Those issues were resolved when upgrading to 3.7.7, which is the latest bugfix release of the 3.7 minor version line.
This PR bumps the minimum python version requirement in the getting started to 3.7.7, as more of a safe-guard than anything else.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

@eladb I'm ok with bumping this requirement. Python 3.7.3 is no longer available on brew (running brew install python will result in 3.7.7), and it might very well be that 3.7.3 was somewhat buggy. Using 3.7.7 doesn't seem like too much of a hassle to users.
Let me know if you think differently


[versions>3.1] won't open if named as Godot.exe in Windows.

Godot version:

It happened when using Godot 3.2.4 RC 2.
OS/device including version:

Windows 10 Build 18363.1316
Issue description:

A weird bug.

Precondition: I put Godot in "C:/Godot", named it Godot.exe. And put it in the environment path "PATH".

I was coding normally, suddenly, I couldn't run any scene, like
--- Debugging process started ---
--- Debugging process stopped ---

No other information. Even if I try to print things in a singleton, it wouldn't print. I guess some unobservable bug triggered without apparent reason.
After that, the Godot editor broke. Opening Godot.exe works once out of 20 times. Even when it opens, it will fail to run any scene. (When it opens, there is no error message at all. )
When failing to open, the output in console is
Godot Engine v3.2.4.rc2.official - https://godotengine.org
OpenGL ES 3.0 Renderer: Radeon RX 590 Series
OpenGL ES Batching: ON

ERROR: get: FATAL: Index p_index = 0 is out of bounds (size() = 0).
   At: ./core/cowdata.h:152

Godot Engine v4.0.dev.calinou.2b95372ad - https://godotengine.org
Using ICU / HarfBuzz / Graphite text server...
WARNING: GENERAL - Message Id Number: 0 | Message Id Name: Loader Message
        ReadDataFilesInRegistry: Registry lookup failed to get layer manifest files.
        Objects - 1
                Object[0] - VK_OBJECT_TYPE_INSTANCE, Handle 106588576
     at: _debug_messenger_callback (drivers/vulkan/vulkan_context.cpp:152)
Using Vulkan Device #0: AMD - Radeon RX 590 Series

ERROR: FATAL: Index p_index = 0 is out of bounds (size() = 0).
   at: get (./core/templates/cowdata.h:153)

I tried:

Named 3.1 , 3.1.2 , 3.2.3 , 3.2.3 mono , 4.0 executables to Godot.exe. All failed to open in most times with same output.
Deleting %APPDATA%/Godot didn't work.
Restarting didn't work.
There was no file handle to Godot related file, according to Windows resource manager.

However:

Renames Godot.exe to anything else, it will definitely open with no error message. For example, godot.exe, Godot_v3.2.4-rc2_win64.exe.
Renames 3.0.6, 2.1.6 to Godot.exe. It will definitely open.

Steps to reproduce:
I don't know... Unlikely to reproduce.
Minimal reproduction project:
A clean editor with no project data won't open either.

This no longer happened since 3.3 or 3.4 as I remembered.


Maintain the state( auth state ) of the app

To maintain the state of the app means that once the app is logged in, then even if you close the app and again open it, it'll stay as logged in. And you don't need to enter the Id and password again and again.

Assign me

Assigning the issue #61 to @Yashrajdps13  and your deadline is 9th jan


Issue #646 Clearing the screen

Added functionality to the reset position button. It now clears the background of any drawings from the robot, resets the position of the obstacle and resets the position of the robot. This addresses #646

Codecov Report

Merging #867 into develop will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             develop     #867   +/-   ##
==========================================
  Coverage      36.33%   36.33%
  Complexity      4218     4218
==========================================
  Files            703      703
  Lines          36655    36655
  Branches        3992     3992
==========================================
  Hits           13319    13319
  Misses         22129    22129
  Partials        1207     1207

Continue to review full report at Codecov.

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

merged with 66904572a2f627fac391bfbe2f2e5128268d87dd


Add support for Relay

This adds support for Relay to the Redis adapter, Relay is a drop-in replacement for Phpredis but up to twice as fast even without enabling the caching mechanisms.
We're using Relay in production and we'd really like to use Pulse.

The static analysis test is failing because the relay extension isn't available, however I can't update that workflow


fix: update SCC profile to IBM Cloud Framework for Financial Services 1.7.0

/run pipeline

:tada: This PR is included in version 3.0.1 :tada:
The release is available on:

GitHub release
v3.0.1

Your semantic-release bot :package::rocket:


cf update-service behavior is inconsistent

Moving https://github.com/cloudfoundry/cloud_controller_ng/issues/1286 over here as it's a CLI issue.

When we do a cf update-service service-name, it says no changes are made. But when we pass same plan name, like cf update-service service-name -p same-plan-name, then it says OK, even though no call is made to the broker.

$ cf update-service test
OK
No changes were made

$ cf update-service test -p <same-plan>
Updating service instance test as admin_cf...
OK

We should make these two operations behave consistently.

We've fixed this in https://www.pivotaltracker.com/n/projects/2105761/stories/163974651 so hopefully it will be resolved in the next release of CAPI. Thanks!


✏ fix typo

severed -> served

Coverage remained the same at 98.797% when pulling d43bfe3e2aef7ea552d78f0629b8f8e5395a765b on will-stone:patch-1 into d8ca93cd8fa9649f295ec910be76d819c8054842 on glennjones:master.


Add instructions to add AWS Fargate profiles before deploying

Without a fargate profile, the deployment will fail, as at some point cert-manager won't be able to start.
An error like this shows up, which doesn't have any clues as to what's happening.
WARN[0261] Encountered error applying application cert-manager:  (kubeflow.error): Code 500 with message: Apply.Run : error when creating "/tmp/kout108981562": Internal error occurred: failed calling webhook "webhook.cert-manager.io": the server is currently unable to handle the request  filename="kustomize/kustomize.go:284

But when I looked at the deployments kfctl was creating, specifically at kubectl get deployments -n cert-manager - I saw none of them were available, because all of them were lacking a Fargate profile in the new namespace.
I'll check in kfctl itself if there's any way to bootstrap the profile automatically, is this something that would be accepted? Perhaps some users wouldn't want kfctl to automatically create a Fargate profile (it's an equivalent procedure of creating nodes in a k8s cluster, so basically running the command could cost you $ without realizing it). Thoughts?

Hi @dLobatog can you provide more context around your deployment environment? you trying to deploy Kubeflow on EKS with Fargate?
Kubeflow version, EKS version?
Please also take at the latest docs for 1.3.1 on the Kubeflow website, ref #3169


Case differences and empty code lines

The issues
Case differences
VBA in it's essence is case insensitive. I.e. upper and lower case is regarded equal. However, the VB-Editor is case sensitive - in a peculiar way: As an example the Property .Top. When by accident anywhere in a VB-Project a variable top is declared, regardless it's format difference, all .Top.. properties suddenly appear as .top. This has a drastic effect when a versioning system like GitHub is used (what I do). All components of a VB-Project, there Export Files respectively are regarded as changed.
Empty code lines
Even when a components code is not modified regarding it's empty code lines it seems to be unavailable by no means to prevent an empty code line is added as the very first code line when a component is exported and imported into another VB-Project.
The way CompMan handles this
Whenever a code modification is to be checked empty code lines and case differences are ignored. This avoids considering modifications which do not have any effect. CompMan uses the Diffs service of the Common Component mFile which provides the required comparison options.
However, if this method, ignoring case differences and empty code lines is not consequently implemented with each *mFile.Diffs call a code modification may be detected within one procedure but not by another one.
The solution (not only for a good coding practice)
The call of mFile.Diffs is to to be encapsulated in a central function ExportFilesDiffer which returns TRUE or FALSE and guarantees one unified Export File comparison method throughout CompMan.

Problems solved as described. To be precise: The empty code line at the top is an unavoidable annoyance only with a UserForm component. The only possible measure to minimize the effect is to delete the empty line in the Export File before importing it elsewhere. This limits the empty lines to one which otherwise may accumulate under certain circumstances.


use on an existing leaflet map

how can i add this to my existing leaflet map

how can i add this to my existing leaflet map

what have you tried?
this code sample directly manipulates an HTML canvas so theoretically it could be ported.
https://github.com/Esri/wind-js/blob/5fee5c73a26c21f801dcd414c64e31fb7cc1a1f0/index.html#L88-L99

Please help me import it..please here is my html file
keralafish(2).txt

an abstract question like, 'tell me everything that would have to be different to use this code with an entirely different mapping API' is a little too ambitious for a GitHub issue.
in order to increase the chances of anyone else online being able to help you you'll need to try and frame a more specific question, test a hypothesis on your own and articulate what you learned.

please


Add rsync to docker image to support kitchen-dokken

Description
Allows the kitchen-dokken to be used in CI pipelines without modification.  Typically you have to install rsync to make it work.
E.g. for Gitlab CI
image: chef/chefdk:current

variables:
  DOCKER_HOST: tcp://docker:2375

services:
  - docker:dind

before_script:
  - eval "$(/opt/chefdk/bin/chef shell-init bash)"
  - chef --version
  - cookstyle --version
  - foodcritic --version
  - apt-get update && apt-get install rsync -y

Check List

~New functionality includes tests~
[x] All tests pass
~RELEASE_NOTES.md has been updated if required (not required for bugfixes, required for API changes)~
[x] All commits have been signed-off for the Developer Certificate of Origin. See https://github.com/chef/chef/blob/master/CONTRIBUTING.md#developer-certification-of-origin-dco

Thanks fellas @robbkidd @tyler-ball

@bdwyertech Thank you!


Allow user to select location of the old content folder during upgrade installation on windows

Summary

I created a dialog box to allow user to select the location of ./kalite/content folder if it's not exist during the upgrade.

Issues addressed
Fixes #341
/cc @cpauya @radinamatic

Hi @radinamatic can you verify the fix using this windows installer

Ping @radinamatic :)

Ping @radinamatic again :)

On this now!
And btw I'm seeing the CORS header missing error again, while preparing 0.16.9 version for this update scenario:

Ok, tried the Windows installer linked above, and the implementation of the feature seems to work correctly:

Detects the prior installation and asks if user wishes to upgrade:

Is unable to find the previous .kalite/content folder and allows the user to select it:

Copies the content into the standard location in Users/<username>/.kalite/content/ folder:

However, I'm not sure if this feature only copies the /content/ folder into the new (standard) location, and not the rest of the previous /.kalite/ folder, which would leave the database and locales back. That results in new issues:

User is asked to register the new admin account.
Device needs to be registered again.
Errors on viewing Facilities and Languages:

@radinamatic that doesn't sound perfect? Copying contents can be very expensive - I thought the point was to either change the CONTENT_ROOT setting or to create a symbolic link (not sure how that works on Windows).

I think changing the CONTENT_ROOT setting is probably preferable.

@benjaoming Loosing the previously installed locales is definitely not the end of the world, as contentpacks can be re-downloaded, but I bet nobody would look favorably too loosing the database...
I agree that copying the content may not be the most efficient solution, and if changing the  CONTENT_ROOT is better, let's go for it. I'm just saying that if we go the "copying" route, let's copy the database together with the content folder, because that will almost certainly be the expected outcome in case of an upgrade.

I'm confused now.
Are we talking about allowing the user to select the CONTENT_ROOT (folder with videos) or the user data directory root (also known as ~/.kalite, the one with database and content packs.. and by default also the one with videos) ?

I am not sure which exact scenario inspired the original issue that prompted the work on this fix, it was long time ago... My guess is that we envisioned the possibility that the previous version stored content in some "non recommended" location, and the decision was to use the user/.kalite/ folder for both videos and databases during the upgrade.
The point is that my original suggestion and this implementation of just copying the content folder is not enough, as it may leave the existing database behind. The solution would be to check for existing database also, and if so, copy it too in the user/.kalite/ folder (we don't have the DATABASE_ROOT, right?). Or don't go the copying route at all, but think of other solution how to make available the old  database after the upgrade.

Closing this because of branch clean-up.
Please reopen for master @mrpau-richard

@mrpau-richard do you have an answer to @radinamatic 's question above?

However, I'm not sure if this feature only copies the /content/ folder into the new (standard) location, and not the rest of the previous /.kalite/ folder

Hi @radinamatic I agree that setting the CONTENT_ROOT environment variable is more efficient  than copying it to ./kalite folder. About the old database I think we can create an option to allow the user to import or not the existing database from the CONTENT_ROOT path.

@mrpau-richard I agree, let's go with offering the user the option to import the old database during the upgrade! :+1:

@radinamatic here's the windows installer that allow's the user to import an existing database from the selected content folder.

Ok, so to test this I moved the ./kalite folder outside the user folder, to the root of the C: drive.
The new installer correctly detected the previous installation and reported that no content folder could be found. When prompted I selected the whole ./kalite folder on the root of the C: drive, and the installation continued:

However, once the installation finished and I started the server, it required me to create the admin user again, which was the first sign something has gone awry. So I opened the data.sqlite file, which was 3Kb smaller than original one, and there was no sign of the learner user I previously created:

The original db did have one learner user:

@mrpau-richard Not sure which part has gone wrong, but the original database was not preserved during the upgrade process.

@radinamatic the database isn't part of the content folder, this feature would only allow using videos stored in a specific location. Can you confirm that this is the intention @mrpau-richard ?

Understood, @benjaoming, I was under the impression that if I selected the whole ./kalite folder, it will be backed up, including the database.
So, what exactly is the user supposed to do in order to import the old database? @mrpau-richard

@radinamatic In order to import the old database it must be copied to ./kalite/database folder.

@mrpau-richard Any reason we are not copying the ./kalite/database folder together with ./kalite/content. I was under the impression that was what we agreed upon few weeks ago...

create an option to allow the user to import or not the existing database.

@radinamatic sorry, I wasn't aware how you test this. When the installer prompted you to select content folder it most be pointed at .kalite/content not in .kalite folder it will also detect existing database to import it. I will also try to fix the conflict after this PR merged.

@radinamatic @mrpau-richard I think we should only aim for having the content folder imported. This is a far more common use case - we can see about the database folder another time.

@mrpau-richard My bad, I'll retest and point to .kalite/content folder this time.
@benjaoming
We can, of course, deal with the user database import in another PR, if it's easier to implement separately, but I fail to see why would somebody want only the content and not the all the users and their activity log preserved during the upgrade... 😕
What if the facility had setup several classes/groups with many users? If the database is not imported during the upgrade, coach/admin will have to create them from the scratch, all the data for coach tools will be lost, and all the learners will loose their previously earned points. Am I missing something? Don't we want to preserve that...?

but I fail to see why would somebody want only the content and not the all the users and their activity log preserved during the upgrade...

You are right about this, but I think it's already preserved?
Actually, I thought the change would also affect fresh installations, in which case I thought it was nice because users may have content sitting on a different drive. For instance, because they are replicating an installation on a new device or have downloaded the contents separately via torrent.

@radinamatic here's the installer to test this PR again.
I also created another issue to allow the user to import there existing database during upgrade.
@benjaoming I agree, That we allow the user to import there 'content' during fresh installation. Are we going to implement it on this PR?

@benjaoming I agree, That we allow the user to import their 'content' during fresh installation. Are we going to implement it on this PR?

Maybe it's better to say "select" than "import" (as in the title of this PR) because it denotes that files are moved or copied.
If you think it's easy to move this logic so it triggers both on fresh installs and upgrades, that'd be great! :+1:

@benjaoming

You are right about this, but I think it's already preserved?

In update/upgrade scenarios from the more recent versions (where everything is already in user/.kalite/ folder) it is indeed, but I believe here we are exploring the options of what to preserve when the user had the old version of KA Lite in a location which the installer does not recognize, and is not able to preserve the old content and database. The fix here takes care only of the content folder, and I'm trying to "squeeze in" the preservation of the user database, too... 😉

Actually, I thought the change would also affect fresh installations, in which case I thought it was nice because users may have content sitting on a different drive. For instance, because they are replicating an installation on a new device or have downloaded the contents separately via torrent.

All completely true and I support us thinking of these scenarios, I'm just saying we should check if the user database is also sitting somewhere else than the default folder. I see @mrpau-richard already opened another issue to deal with that 👍 👏 , so I'll finish drilling about it here... 😛

@radinamatic here's the windows installer that's allow the user to select content folder during fresh and upgrade installation.

I tested this and it seems to work OK, that is it ask the user to select the .kalite/content/ folder on fresh install.
However, I'm worried if this option results confusing for the new and less savvy users... :thinking:
Could we add this phrase at the bottom of the alert window for fresh install?
If this is the first time you are installing KA Lite, or you don't need to import any previous content at this time, press Cancel.

Suggestion to Radina's text:

You can download contents after the installation. If you don't have a folder with downloaded contents, press Cancel.

The dialogue has the following potential purposes:

Selecting contents from a previous installation
Selecting contents readily downloaded on a non-default location (USB drive etc)
Selecting a content folder on a different drive because the default drive doesn't have enough space (and then downloading contents after the installation)

@radinamatic & @benjaoming I updated the alert message. you can grab the installer here

@mrpau-richard I was commenting in the context of @radinamatic 's comment, so not thinking that my suggestion should stand by itself :)

However, I'm worried if this option results confusing for the new and less savvy users... :thinking:
Could we add this phrase at the bottom of the alert window for fresh install?

My suggestion in full would be to replace this text:
'KA Lite Setup is unable to locate the content folder of your previous installation in order to perform the upgrade to current version. Please select the .kalite/content/ folder on your computer and press the button OK to finish the upgrade process.'
With:
'KA Lite Setup cannot find any video contents in the default location (' + contentPath + '). You can download contents after the installation or select a location with previously downloaded contents. If you don't have a folder with downloaded contents, press Cancel. To change the default location of downloaded contents, press OK.'
contentPath should default to userKaliteContent when it's unset.

@benjaoming & @radinamatic I updated the dialog message as you guys suggested. You can grab the installer here for testing.

I have been re-reading our conversation on this for a while now, have a grim impression that we've lost focus on what we are trying to achieve (probably good part is my fault too :disappointed:), and I think that we need to pause and rewind.
Not sure if it is the formatting issue for the text inside installer dialogs, or there might be some copy/paste errors between various versions of the message here, but I find this wording to be very unclear and potentially confusing to the user, especially if it is their first encounter with KA Lite.
TL;DR version
After spending quite some time on writing all that below, I realized it will be much clearer if I made a drawing... :stuck_out_tongue:

Yeah, I want to read

If we are to proceed with implementing this complex feature that covers several potential purposes, I would insist we add a conditional first dialog for users who don't need it, or are installing for the first time:

If this is the first time you are installing KA Lite, or you don't need to import any previous local content at this time, skip this step to continue the installation.
Note: You will be able to download videos from the KA Lite management interface.

This dialog should have two buttons at the bottom:

Import content now (first/left)
Skip importing content (second/right; in focus by default, so user just needs to press Enter to continue)

If there is the default content folder from previous installation:

KA Lite Installer found videos in the default location (' + contentPath + ').
Do you want to import this content from the previous installation, or you want to explore locations on other drives?

This dialog should have three buttons at the bottom:

Back (first/left; for users who ended here but changed their mind)
Explore other drives (second/middle)
Import from default location (third/right; in focus by default, so user just needs to press Enter to continue)

If the user chooses Explore other drives installer should open the standard Windows Open folder dialog, and Import from default location should directly proceed to import content. Both options should include a confirmation message at the end, before continuing with the installation.
This should take care of all three proposed purposes:

[X] Selecting contents from a previous installation
[X] Selecting contents readily downloaded on a non-default location (USB drive etc)
[X] Selecting a content folder on a different drive because the default drive doesn't have enough space (and then downloading contents after the installation)

@radinamatic Just sharing my 2 cents here: Changing the content folder (to another drive for instance) after the installation and running KA Lite for the first time is quite annoying as it requires:

Editing ~/.kalite/settings.py or doing something with symlinks (which afaik doesn't work on Windows anyways)
Copying and quite possibly merging to different folders (as the original content folder will contain all of the content pack stuff... assessment items, subtitle files etc).

I'm speaking as a user of the Python/Debian stuff... it doesn't matter if you have a helpful wizard or not. Actually, not having it is quite unhelpful, as it will unpack the existing pre-seeded content pack automatically and then you have to stop KA Lite and create a new location for the content folder, symlink stuff (or change settings), copying over all the files of the older content folder.. which is a bit undocumented.

@radinamatic Just sharing my 2 cents here: Changing the content folder (to another drive for instance) after the installation and running KA Lite for the first time is quite annoying as it requires:

Editing ~/.kalite/settings.py or doing something with symlinks (which afaik doesn't work on Windows anyways)
Copying and quite possibly merging to different folders (as the original content folder will contain all of the content pack stuff... assessment items, subtitle files etc). You should put all videos (downloaded from for instance torrent) into a folder content/khan, and I don't know how well this stuff is really documented.

I'm speaking as a user of the Python/Debian stuff... it doesn't matter if you have a helpful wizard or not. Actually, not having it is quite unhelpful, as it will unpack the existing pre-seeded content pack automatically and then you have to stop KA Lite and possibly create a new location for the content folder, symlink stuff (or change settings), copying over all the files of the older content folder..
But I like that we try to ask users the right questions during installation, and I think either way - the current simple dialogue (not sure if the displayed default path is correct) or a more intelligent flow that you suggests - will be a great improvement.

@benjaoming I misunderstood the last option you  were proposing initially - Selecting a content folder on a different drive because the default drive doesn't have enough space (and then downloading contents after the installation) - if I'm understanding it correctly now, it means that user chooses to use another drive as the location for ./kalite/content/ folder, right?
In that case that step (letting the user select the new location where the videos will be) should come before choosing where to search the content to import from, correct? This means that the above workflow needs some adjustments I'll get right to that!

In that case that step (letting the user select the new location where the videos will be) should come before choosing where to search the content to import from, correct?

Yes, this is true - thanks for observing this, as I was perhaps a bit in a hurry :) But yes, I'm trying to cater for users that are BOTH 1) installing for the first time and 2) upgrading and 3) re-installing to make another choice for the content folder (as this is a dialogue you do not find in KA Lite itself after installing)

Note: The goal of closing this issue is to make something that's reusable in Kolibri


Odd Depedency

Why does this package depend on psr/http-message?

That's interesting... In fact, this could simply suggest that dep, not require it.
@weierophinney WDYT?

Since we're not directly consuming, extending, or implementing any of the interfaces, we can definitely remove it.


German translation uses Beenden for both Finish and Exit

Screenshot:

I'll change the 'Exit' one to 'Ausfahrt' which is what autobahn exits are called over there

Also needs changes to sidebar text and text on 'Exit or Switch' panel (title, radio button text, exit button) for consistency

Updated and pushed.
Screenshot:

Awiating review and closing

My German is pitiful so I'll just acknowledge that you've made the changes.
Closing.


Nearby banner: Show item with no image

The Nearby banner currently shows the nearest Wikidata item.
Instead, I think it should show the nearest Wikidata item with no image.
Merits:

Get users to take the most needed pictures
After the user uploads the item, the banner will start showing a different item, rather than still showing the same one which is uninteresting.

I believe I can work on this issue, can you assign this to me?

@nicolas-raoul Please Review #5468

Ah, sorry for not mentioning this at first, but would you mind also ignoring items that do not exist? Bonus if you can reuse the logic found behind the Nearby activity "Exists" checkbox.

Sure, will make these changes in the next commit


Remove temporary Northamptonshire-specific code

The previous PR https://github.com/DFE-Digital/teaching-vacancies/pull/3220 successfully fulfilled its purpose.
We are no longer seeing SuspiciouslyHigh errors: https://rollbar.com/dfe/teacher-vacancies/items/3860/

Review app deployed to https://teaching-vacancies-review-pr-3268.london.cloudapps.digital


wiki: CrossCompiling

https://nixos.org/wiki/CrossCompiling

#26805 extends to the manual to cover just about everything that was there. I'll double check with the wayland machine, but this should be closable.

@Ericson2314 tnx


use process.env.GOOGLE_TRANSLATE_API first

In some countries, we can not access https://translate.google.com directly, but we can access https://translate.google.cn, so it's better to add an environment to overwrite the default API path.

This has been fixed in a better way as of v2.8.0 in https://github.com/vitalets/google-translate-api via the addition of a custom tld field.


Render as fast as possible

Right now we render every 50ms, but in reality we need to go as fast as possible. We can send frames endlessly, but they should do minimal work unless something has changed. And they absolutely shouldn't re-render unless something has changed.

Maybe we can change delay(50L) to yield in the loop in mosaic.kt?
It might also be useful to create a benchmark module to track performance with different changes

Yeah, great idea.

I recently updated Redwood rendering and have two observations:

The applier start/end change callbacks are a good indicator of changes that need rendered, but cannot be relied upon for when to render. This is because things like movableContentOf will actually perform two passes over the node tree and produce two start/end callback pairs.
Rendering should occur at the end of a frame by the thing which sends the frame. There is no first frame, however, and so at the end of setContent there needs to be a render.


Faro should be able to persist and assume a session out of the box

Description
My current understanding is that Faro creates a new session whenever it is initialized.
My expectation for a real-user-monitoring library is that it would persist the session in the browser and assume it whenever a user resumes their actions within a reasonable time-frame.
This would:

track a user session across browser tabs
track a user session across a static web page, where every navigation means reloading all scripts

Proposed solution

add session info to local-storage
add information about timeout
make timeout configurable

Prior art:

Instana weasel
New Relic Browser Agent

- [ ] Persist current session in the browser
- [ ] Faro should pick up a persisted session and resume it (`session_resumed` event?)

@cedricziel good, yeah?

@cedricziel is it okay if we either close this or merge it with the epic that we have for 23Q3
grafana/app-o11y#299

@kpelelis I have linked it to the epic

PoC PR got merged today.


[Swift 6] use isolated(any) for factory closures

The 2.4 update added Sendable conformance to the factory closures which breaks using GAIT types in Container and elsewhere.  For example:
@DaemonActor
public final class XPCDaemon {
    public static let shared = XPCDaemon()

    public init() {}
}

@MainActor
public final class State {
    public init() {}
}

extension Container {
    @DaemonActor var daemon: Factory<XPCDaemon> {
        Factory(self) { XPCDaemon.shared } // Global actor 'DaemonActor'-isolated class property 'shared' can not be referenced from a Sendable closure
    }

    // also a problem for `MainActor` types
    @MainActor var state: Factory<State> {
        self { .init() } // Converting function value of type '@MainActor @Sendable () -> State' to '@Sendable () -> State' loses global actor 'MainActor'
    }
}

By adding isolated(any) to the factory closures we can explicitly mark which global actor the closure should be isolated on. The above can now be written without any errors or intermediate wrapper types:
extension Container {
    @DaemonActor var daemon: Factory<XPCDaemon> {
        Factory(self) { @DaemonActor in XPCDaemon.shared }
    }

    @MainActor var state: Factory<State> {
        self { @MainActor in .init() }
    }
}

Some important details to consider. From the 431 evolution proposal it mentions that functions that use isolated(any) are assumed to cross an isolation boundary and are thus implicitly async and must be awaited. It seems the compiler allows these functions to be assigned to properties where isolated(any) is not used and then called without using await. Not sure if this is intended or possibly a compiler bug. The proposal also mentions that when the compiler can detect that an isolation region is not crossed then it seems the function wouldn't need to be awaited. All of those conditions would be satisfied if the getter in Container is using the GAIT (e.g. @MainActor) and the factory closure is also using the GAIT. Then if no isolation region is crossed no await is needed otherwise an await will be required by the compiler.
Currently it's possible to write something like this:
extension Container {
    // missing `@MainActor` attribute
    var state: Factory<State> {
        self { @MainActor in .init() }
    }
}

and then use it like this:
    @MainActor func doSomething() {
        DispatchQueue.global().async {
            _ = Container.shared.state() // crash here without compiler error because `state()` is `nonisolated`
        }
    }

Which causes a quick quit easter egg. The only way I can think of avoiding this situation is if the calls to the factory closure were always awaited on which sort of defeats the purpose of having everything assigned to the same global actor. I'm open to ideas if anyone has any clues of how to force the compiler to recognize the isolation context. It would be nice if this worked:
extension Container {
    @MainActor var state: Factory<State> {
        // `isolated(any)` picks up `@MainActor` from property definition, which would require using the `@MainActor` attribute for the property definition
        self { .init() }
    }
}

From the 431 proposal:

A function value with this type dynamically carries the isolation of the function that was used to initialize it.

Perhaps there's something I'm not understanding there or the feature isn't working the way I think that it says it's supposed to.

Would love to see this merged

It's not this PR but check out the concurrency branch for 2.4.2.

Hello @hmlongco, will it be merged soon?

@Arideno +1 👀

Concurrency was merged

This PR broke the package for Swift 5: https://github.com/hmlongco/Factory/issues/250


Browser freezes when running tool

When trying to use this tool on any browser, the browser will freeze and crash.

This likely means the schematic is too large for your browser to handle. Try splitting the schematic into smaller parts and doing it again


ObservableArray extending

Hi there,
Have been using Bond for many projects. Thanks for the effort and time you've put into it.
An idea that NSFetchedResultController can be treated as ObservableArray has bothered me for a long time, so I started implementing it in code.
What I found digging into this problem:

ObservableArray events aren't thread-safe:

public protocol ObservableArrayEventProtocol {
    associatedtype Item
    var change: ObservableArrayChange { get }
    var source: ObservableArray<Item> { get }
}

Then you populate the event togather with array change:
public func moveItem(from fromIndex: Int, to toIndex: Int) {
        lock.lock(); defer { lock.unlock() }
        let item = array.remove(at: fromIndex)
        array.insert(item, at: toIndex)
        subject.next(ObservableArrayEvent(change: .move(fromIndex, toIndex), source: self))
}

When you change and observe array in different contexts (main and background f.e.) the situation when change array several times before you the first observe is invoked is possible. Therefore you can't send self on source as it contains a new array.
subject.next(ObservableArrayEvent(change: .move(fromIndex, toIndex), source: self))

Below the test that clearly demonstrates the issue:
 func testAsync() {
        let async = self.expectation(description: "async")

        let array = MutableObservableArray<Int>([])
        var expected:[Int] = []

        let disposable = array.observeIn(.immediateOnMain).observeNext{ event in
            XCTAssertEqual(expected, event.source.array)// we always should have one more element every interation, but most probably we have all 10 elements here
            expected.append(expected.count)
            Thread.sleep(forTimeInterval: 0.01) //Here we need to wait a bit in order to disasync with background
            if expected.count == 10 {
                async.fulfill()
            }
        }

        DispatchQueue.global().async {
            for i in 0..<10 {
                array.append(i)
            }
        }
        wait(for: [async], timeout: 1)
        disposable.dispose()
    }

And, of course, this breaks logic of binding to TableView and CollectionView.
I would suggest sending the copy of array relevant for every event.
public protocol ObservableArrayEventProtocol {
    associatedtype Item
    var change: ObservableArrayChange { get }
    var source: [Item] { get }
}

Then populate the event with current state of data. So the receiver always gets array relevant to the change:
public func moveItem(from fromIndex: Int, to toIndex: Int) {
        lock.lock(); defer { lock.unlock() }
        let item = array.remove(at: fromIndex)
        array.insert(item, at: toIndex)
        subject.next(ObservableArrayEvent(change: .move(fromIndex, toIndex), source: array))
}

I think I've been looking for something like this - @srdanrasic what are your thoughts on tidying this up and making a PR?

@tonyarnold @srdanrasic Let's split them into 2 different issues and discuss them separately. I have some arguments for both of them.
BTW. And if we clarify the architecture I would be pleased to implement it on my own.

So discussing extensibility here.
I've just realized what is the purpose of DataSourceEventProtocol  😄
From this point of view, the solution suggested by @srdanrasic seems to be more preferable.

Also, having the class ObservableArray in
public protocol ObservableArrayEventProtocol {
    associatedtype Item
    var change: ObservableArrayChange { get }
    var source: ObservableArray<Item> { get }
}

prevents us from using ** ObservableArrayEventProtocol** as events for other classes. Only inheritance is supported.

Yeah, I'm following along with @killev here. My use case right now is as follows:
I have a framework that exposes an Objective-C wrapper that sits around a C++ "core". This exposes an underlying C++ list that for all intents and purposes looks like an NSMutableArray.
In order to make changes, or to read changes, they must go back through the C++ list (via the ObjC API).
What I'm trying to do is wrap an ObservableCollection (inspired by ObservableArray) around this so that I change the ObservableCollection instance, and it directly updates the underlying instance (versus what ObservableArray does now, which is takes a copy of the array used to initialise the instance).
Does that make sense? Having support via a standard ObservableSequenceEventProtocol or ObservableCollectionEventProtocol would make my life a lot easier.

I like the idea of ObservableCollection that wraps anything conforming to Swift.Collection protocol. We had something like that in an early version of Bond, but Swift.Collection was a mess back then and working with it involved a lot of generic constraints that would crash Xcode all the time.
I guess ObservableCollection could be defined as:
class ObservableCollection<UnderlyingCollection: Collection> {}

With a mutable variant:
class MutableObservableCollection<UnderlyingCollection: MutableCollection>: ObservableCollection<UnderlyingCollection> {}

Its event could be defined as
public protocol ObservableArrayEventProtocol {
    associatedtype Item
    associatedtype UnderlyingCollection: Collection
    var change: ObservableArrayChange { get }
    var source: UnderlyingCollection { get }
}

To be consistent with changes proposed in #512.
I really like this idea. It could replace all existing observable collections if done properly.

I’ll take a swing at this - I’d mostly ended up on this in my own work - I just need to re-implement the diffing.

OK, there's some initial work in #513 to expose a more extensible ObservableCollection - I need to:

Write some tests
Flesh out some documentation on how to extend
Deprecate/typealias ObservableArray to this new class

ObservableCollection and MutableObservableCollection are now available in Bond 7. Check out the accompanying playgrounds.


Finalize extension when expcetion is raised

finalize extensions and writer when user code raises expcetion in run_iteration.

Moving to #581


Since latest update I'm getting "It's taking a while to configure your breakpoints." message

Issue Type: Bug
I have a Javascipt only application, with no transpiling or conversion going on. My launch.json is like this:
{
	"type": "node",
	"request": "launch",
	"name": "Fetch",
	"program": "${workspaceFolder}/exec.js",
	"args": ["fetch.js"],
	"outputCapture": "std",
	"skipFiles": [
		"${workspaceFolder}/node_modules/**/*.js",
		"${workspaceFolder}/lib/**/*.js",
		"<node_internals>/**/*.js"
	]
},

Exec.js is just a wrapper that executes a method in fetch.js.
Starting this program now sometimes takes a long time and I get the following warning:
It's taking a while to configure your breakpoints. You can speed this up by updating the 'outFiles' in your launch.json.
I only have a few breakpoints, nor was this causing a problem before the update. What's changed? And why am I advised to update outFiles while I'm only running a simple javascript script?
VS Code version: Code - Insiders 1.65.0-insider (82a8bec63666b0883d9bf762ee2aaa87e9be9a3a, 2022-02-10T05:16:36.093Z)
OS version: Windows_NT x64 10.0.19044
Restricted Mode: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz (8 x 2494)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: enabledopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
7.89GB (2.72GB free)

Process Argv
--crash-reporter-id 82b0b2fc-aa31-4181-9863-56bf85ed5e36

Screen Reader
no

VM
0%

Extensions: none
A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368:30146709
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
pythonvspyl392:30422396
pythontb:30258533
pythonvspyt551:30291412
pythonptprofiler:30281269
vshan820:30294714
pythondataviewer:30285072
vscod805cf:30301675
pythonvspyt200:30323110
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
pythonvs932:30404738
wslgetstartedc:30421358
vsclayoutctrt:30405800
dsvsc008:30436272
pythonvspyt640:30426300
vsbas813:30436447
vscscmwlcmc:30428972
azactmsal:30432848

We met same issue at VSCode 1.64.2, it becomes super slow to get debug started. Tried a workaround is adding outFiles in the launch.json config.
Also tried go back to old VSCode 1.63.2, which doesn't have this issue.

/jsDebugLogs

I've sent the log to that mail address.  I've tried parsing it using your online tool, and it seemed to work, but I couldn't see some sort of share button. If you need anything else, let me know!

@roblourens did something change in ripgrep in the last release? It looks like the time is all spent in findTextInFiles. The only change js-debug made is that where previously it would have searched with
{ include: new vscode.RelativePattern(workspaceFolder, '**/*.js'), exclude: '**/node_modules/**' }

it now also includes an excluding explicitly using the workspace folder, like
{ include: new vscode.RelativePattern(workspaceFolder, '**/*.js'), exclude: `**/node_modules/**,${workspaceFolder}/**/node_modules/**` }

For the Javascript Debug Terminal, I'm not sure which attach configuration to plop trace into. Any advice--I'd like to do some profiling as well :)

No change to ripgrep or relevant search code that I can think of

I confirm our team has the same issue in the latest release.

Following the advice from issue #140427 to start VsCode with --disable-gpu flag fixes the problem.

That is quite surprising... can anyone else in the thread verify whether the same steps fix it for them?

I have this issue as well. --disable-gpu didn't help for me, however. As per the previous comment, I tried using just my laptop screen rather than only external monitor and that didn't help either.

Are the size of your workspaces very large? For instance, do you hit this issue on smaller, trivial repos, or only larger ones?

Are the size of your workspaces very large?

Very. We are in a monorepo

do you hit this issue on smaller, trivial repos

No

Are the size of your workspaces very large? For instance, do you hit this issue on smaller, trivial repos, or only larger ones?

Yes. It's an entire WordPress website with many plugins

It sounds like both your cases are expected, and that you want to follow the message's instructions to configure your outFiles: https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_source-map-discovery

We used to explicitly use the legacy debugger, as it was plenty performant in our large repository. VSCode forced upgraded us to use the new debugger, which is more-or-less unusable due to this issue, and forced our users to use chrome debugger. VSCode debugger is certainly less preferred--users don't need the editor 😄 . Our project uses ts-node for the scripts relevant for debugging, so outFiles unfortunately is not an option for us--albeit we did entertain the message.

For ts-node, the outFiles can be specified to point to your source files. Alternatively, you can set outFiles to an empty array [] and resolveSourceMapLocations: null to say "don't scan for any sourcemaps, but also don't restrict where sourcemaps can be resolved".

Are the size of your workspaces very large? For instance, do you hit this issue on smaller, trivial repos, or only larger ones?

My repo is very small, only a dozen files, none of them exceeding 1000 lines of code. It does use quite a bunch of npm modules, but obviously I never set a BP in that code.

Hm, okay, thanks. Seems like something is up with your machine separate from the expected behavior that cdaringe/nickchomey are running into.
Quick check -- do you have any 3rd party antivirus running? Often seen them mess with things and cause spooky slowdowns.

No AV here. I do have multiple versions of Visual Studio though. Would a dxdiag or other report be useful for you?

It sounds like both your cases are expected, and that you want to follow the message's instructions to configure your outFiles: https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_source-map-discovery

Thanks very much, this solved my problem. Apologies for the trouble!

@connor4312 I confirm that running Code with flag --disable-gpu is not fixing the issue. It was just some coincidence.
Anyways with VSCode 1.64.2 on Windows 10, the debugger takes ages to start. And this happened to all our team mates after they upgraded to the newer version.

@knaos does setting your outFiles to a more specific path resolve the issue for you? https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_source-map-discovery

I'm seeing the same issue in a TypeScript monorepo. I'm transpiling the ts files for debugging on the fly using esbuild-register, which has inline sourcemaps, so specifying the out files is off the table for me.
Before the recent VSCode update, debugging worked flawlessly and without much delay.

@AlCalzone the outFiles glob patterns specify the locations of the generated JavaScript. So there is no issue with inlined sourcemaps.

@weinand I'm not seeing the original TS sources though when debugging this way. The breakpoints end up in some generated files which contain a sourcemap comment at the end. Note that there are no generated .js files on disk, because the .ts files are transpiled similar to how ts-node does it (except using esbuild which is faster).

@AlCalzone please see https://github.com/microsoft/vscode/issues/142830#issuecomment-1048240356

"outFiles": [],
"resolveSourceMapLocations": null,

does the trick 👍🏻
Still weird that this used to work before, but now VSCode becomes unusable after debugging without this configuration. When the It's taking a while to configure your breakpoints. message is shown, debugging gets stuck and I have to restart VSCode to be able to use it again.

I think it would be reasonable to automatically configure the config like that if we see the runtimeExecutable is ts-node or similar.
A nicer way that would solve lots of problems is if the debugger could do a "test run" of the program to see how it's configured and then automatically update the launch.json appropriately... https://github.com/microsoft/vscode-js-debug/issues/1214

automatically configure the config like that if we see the runtimeExecutable is ts-node or similar.

I think this heuristic is going to be interesting. In my case, the runtime config is this:
			"runtimeExecutable": "yarn",
			"runtimeArgs": [
				"node",
				"--async-stack-traces",
				"--inspect-brk=9229",
				"-r",
				"esbuild-register",
				"${workspaceFolder}/test/run.ts"
			],

We could see flags like -r/--register pretty easily, and we already parse runtimeArgs for other reasons. But if you had a launch config which just runs something like npm run start or a custom shell script, we can't see that.

We are having a mono-repo project. Suggested solution to add "outFiles": [],"resolveSourceMapLocations": null, didn't work. This specific issue happens only with the VSCode version 1.64.2. The moment we switch back to previous version 1.63.2, the problem disappears. Our launch.json looks like this,
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Launch Program",
      "skipFiles": [
        "<node_internals>/**"
      ],
      "program": "${file}",
      "outFiles": [],
      "resolveSourceMapLocations": null,
    }
  ]
}

@meetgaurang please collect trace logs using the instructions in the 2nd comment

@connor4312 here's a trace where NO breakpoint is set:
vscode-debugadapter-c18555ee.json.gz
and here's the same situation but with an existing breakpoint, which took roughly 5 minutes to resolve:
vscode-debugadapter-b587cb99.json.gz

I confirm that we no longer face this issue with the recent release - 1.65.0. It seems to be fixed.

Any idea what might have fixed it? I'll update and verify as well tomorrow.

Can confirm, 1.65.2 does work like 1.63.x

This problem started to bug me about 3 weeks ago, when I updated to 1.67.2 (OS Windows_NT x64 10.0.19044). Adding "--disable-gpu" to VSCode's shortcut icon solved it immediately.


Be more accepting of windows failures

I'm going to fast track this PR because I think it should a) rebase/merge cleanly, b) make everything else easier.


send blockheight together with nonce params to pool

Hi,
Is it possible to send the "blockheight" together with the other nonce parameters to the pool? It happens
that on fast blocks the block heights of miner and pool can be out of sync which leads to huge deadlines
on the side of the pool. Without a deadline limit it's impossible for the pool to evaluate if that might
have been a nonce submitted on the previous block.
On pools estimating the miner's plot size based on their deadlines this can lead to problems.
Creepminer already adds a parameter "blockheight" for this.
Thanks!

Thx! @spebern


Better DL1CameraContainer organization

Problem
The axiom that Containers should contain data items that is filled all at once (logically grouped by when they are created) is a bit broken for DL1CameraContainer.    In #1810, extractors now generate a DL1CameraContainer, with the images and validity flag.  However they currently contain in addition:

the cleaned image mask
the parameters (ImageParametersContainer) derived from the mask applied to the images

which get filled later.
Suggested solution
It would be  better to have something like the following that separates these two things that are not filled simultaneously:
class DL1ImageContainer:   # (formerly DL1CameraContainer)
    image = ...
    peak_time = ...
    is_valid = ...

class DL1ParametersContainer:  # could even support more than one of these
    image_mask = ...
    parameters = ImageParametersContainer  # parameters that used the image_mask

These are basically "DL1-IMAGE" (DL1a) and "DL1-PARAMETERS" (DL1b), which are stored separately in any case.
That would be nice, as then ImageExtractors produce DL1ImageContainers.
Originally posted by @kosack in https://github.com/cta-observatory/ctapipe/pull/1810#issuecomment-1068194067

I guess then DL1CameraContainer (or whatever we want to call it, maybe DL1TelescopeContainer would be closer to the data model naming scheme) would contain both of these classes:
class DL1TelescopeContainer:
   image = DL1ImageContainer
   parameters = DL1ParametersContainer

Howver, this is not so nice, as you then get things like event.dl1.tel[i].image.image and event.dl1.tel[i].parameters.parameters.   Any ideas for a better name? It could also just be "a", and "b"... (event.dl1.tel[x].a.image), but that's also not so readable.
Alternately, we change DL1ImageContainer's "image" field to be "intensity", and then you have: event.dl1.tel[i].image.intensity and event.dl1.tel[i].image.peak_time (and any other images we eventually add like peak_width, etc)

event.dl1.tel[i].image.image

Image is not really clear, so maybe event.dl1.tel[i].image.photoelectrons / event.dl1.tel[i].image.peak_time would be clearer and avoid the duplication?

event.dl1.tel[i].parameters.parameters

I don't see why this is necessary. The DL1ParametersContainer should just be the current ParametersContainer, not:
class DL1ParametersContainer:  # could even support more than one of these
    image_mask = ...
    parameters = ImageParametersContainer  # parameters that used the image_mask

but:
class DL1ParametersContainer:  # could even support more than one of these
    image_mask = ...
    hillas = HillasParametersContainer
    morphology = ...
   ...

The image_mask is something in between the parameters and the image. I think it's possible to argue for each attaching it to the image container (adding a default of None is also not expensive), where it would fit better with regard to the shape,
attaching it to the parameters or attaching it to the base container.

I think I would favor having the mask still in the image, essentially just adding a parent DL1TelescopeContainer
DL1TelescopeContainer
    image
        photo_electrons
        peak_time
        image_mask
    parameters
        hillas
        morphology
        timing
        ....

Returning a DL1ImageContainer from the extractors would also have the nice effect then of overwriting the image mask, making it impossible to have a mask from an older image.

I think I would favor having the mask still in the image part, essentially just adding a parent DL1TelescopeContainer

I originally liked it that way as well (as it is an "image"), but there are two problems"

image_mask is not filled when the other items in the container are filled (Extractor generates the intensitty and peak time images, but not the cleaning mask).  This means that Extractors create an object that is incomplete.
The cleaning mask and the parameters are logically connected: the parameters depend on the choice of cleaning. In principle you could have multiple cleanings and multiple sets of parameters associated with them.

    photo_electrons

I don't think we should name it by its units, as in principle we aren't required to have this image in PE units. It's an image of Cherenkov light intensity or brightness.  Which units we use depend on how we calibrate it, which could change in the future.

I don't think we should name it by its units

Now we are getting into difficult terrain... for me photo_electrons is a unitless quantity, not a unit.

: the parameters depend on the choice of cleaning

And the mask depends on the image... As said, it sits squarely in between both


When computing Interpreter VMStack, push Value type instead of value …

…stack allocated size

This may fixes https://github.com/Samsung/walrus/issues/97


Deploying multiple times breaks the payload

Deploying the flow multiple times breaks the payload object, instead of returning an actual JSON object it returns [object Object].
The only way I managed to get it to work again is to reload node-red.

Thanks for the report, I encountered this error as well. I think it's because I'm not handling the disconnect of the EventSource correctly.
I'll look at this soon

@sockless-coding do you still encounter the issue ? Connection errors should now be handled (see https://github.com/yadomi/node-red-contrib-philipshue-events/commit/8a60417bff5e21ef1ffcdb1b3a7f37e70855d5fe, since v1.2.0), but there may be some edge case that I didn't catch yet.

I'm closing since I've no longer encountered the issue since 1.2.0. Feel free to reopen if you have the issue again


Get the number of nodes registered with the DC/OS cluster

I am using this Marathon Ruby SDK to get the number of nodes registered with the DC/OS cluster. But I am not getting any method which can return me the number of nodes registered with the cluster.
Any idea how can I get the registered nodes? Thanks in advance

Back when I still used mesos/marathon, there was no API endpoint providing such information in marathon. And the way mesos frameworks interact with mesos, I couldn't imagine a way to provide it.
Anyway, you could call mesos API endpoints to fetch these kind of information pretty easy.


[WIP] WIPP Python Client

Standalone Python WIPP client from JupyterLab WIPP extension
Refactored to reduce the code duplication

There are many files in this initial PR for WIPP API Python client as they were generated from the template, but the main file to review is wipp_client/wipp_client/wipp.py.
Version 0.1.0 does not have Keycloak tie-ins, nor does it have all collection types/actions. The goal of this PR is to get a starting point for different efforts (Keycloak, integration with JupyterLab extensions) and a common place for features currently scattered around different repos

@ktaletsk Tested the library version 0.1.0 and did a local install of the new changes as well. All getters (image collections and csv collections) work fine. Ready to merge.
Next step, as you mentioned, would be to add getters for the remaining data types. And perhaps include a "demo" script in a separate folder (just a simple script like the one you have in the readme)? Also, a dockerfile would be a great addition later on.


Allow refinement of exact object union types with typeof

Refining exact object union types by shape is currently VERY limited. We should be able to refine such types by their shape using typeof at the very least, and ideally any other common refinement techniques (Array.isArray, etc).
From my perspective this should work:
// @flow

type Foo = {|foo: string|};
type Bar = {|bar: string|};
type SomeUnion = Foo | Bar;

function getFooOrNull (u: SomeUnion): ?Foo {
	return typeof u.foo === 'undefined' ? null : u;
}

but fails with:
4: type Bar = {|bar: string|};
              ^ property `bar`. Property not found in
7: function getFooOrNull (u: SomeUnion): ?Foo {
                                          ^ object type
7: function getFooOrNull (u: SomeUnion): ?Foo {
                                          ^ property `foo`. Property not found in
4: type Bar = {|bar: string|};
              ^ object type

This limitation is also described in this comment, and is related to #4328.

Or with if ('foo' in u). Or with if (u['foo']) (because some keys require that notation).

@mgtitimoli: Yes, that's how it currently needs to be done. But this is a feature request to overcome that limitation.
First of all, Foo | Bar is already a disjoint union, in the sense that there can exist no value that is a member of both types.  It would be cool if Flow could make that deduction.

I ran into a similar situation today so I wrote up a flow-try:
https://flow.org/try/#0KYDwDg9gTgLgBDAnmYcCCcC8cDeBDALjgGcYoBLAOwHMBfAbgChRJYFlUAhLXAIyNIUaDRs3DR4SFOgA2MrIzhwAPnAAkAURB4AxjAA8agErA8AEwDylGYn1oAfPcUr1W3QeOnL1250dNGADMAV0o9cghKOGpgGABJMwAKPGCYAAtoIjQ5AEoBMipqXGcoWOCoKJT06AA6PBVVKoyoGt4mWiA
export type A = {a: string};
export type B = {b: string};

export type All =
  | $Exact<$ReadOnly<A>>
  | $Exact<$ReadOnly<B>>;

function getId(author: All): string {
  return author.a || author.b;
}

Basically the union type only has two options, so if the first is not satisfied then the second is the only option left and will return a string.

Disjoint unions with exact types will work only if you provide literals. If you provide some more generic types like string, number, boolean — it will fail
If this is not a bug, than the docs here are not enough accurate. There should be info, that it works only with literals
Here is an example from docs, where true was replaced with boolean and everything breaks:
https://flow.org/try/#0PTAEAEDMBsHsHcBQAXAngBwKagMoFcBjAzAZxNAF5QBvAH1BMOLIC5QAjWWaTAQwDsANKABuvaHkxtO3Pv1C0AvgG4UGbADFeASx4ATUJRr1MAJ1OxT0rjwHCAtqRK8A5lIbJT2-i4UrEaligAEqk6LD8JNhU+EROCqBauph6qoiQePwEyNoRoAAWAno8oSThkZgAFKZhEVFspeVRAJQ0iIbakKDVtRUAdIxxZK3U7YaivKYTEu4ytvJUNWV1mH1iM6qGiqCY0FFt4xNTjmSu7iSe3r6LvVF9J85um6CKiIpAA

Disjoint unions with exact types will work only if you provide literals. If you provide some more generic types like string, number, boolean — it will fail

It's not about literals, it's about types that could be "falsy" (as string could be "", boolean false and number 0).
As type refinement works on values and not keys it make sens that the refinement can't be done with string, boolean and number.
Look again this example and think what's going on with message === ""
type Success = {| message: string |};
type Failed  = {| error: string |};

type Response = Success | Failed;

function handleResponse(response: Response) {
  if (response.message) {
    return response.message;
  } else  {
	// I think Flow is right, refinement can't be done here, message could exists but empty!
	return response.error; // Cannot get `response.error` because property `error` is missing in `Success`
  }
}

I guess what we need is a way to do type refinement that works by testing the keys of an object as @mhelvens suggested.