Migrate RSTP streaming example to Gen2

We should migrate rstp streaming example to Gen2.
Together with this migration, we can try to follow this suggestion in order to optimize CPU usage on the host

Question about how depthmaps fits into this pattern.   Is it considered a problem/challenge format wise to flow depthmaps through the device side encoding pipeline?  This lies right at the edge of my understanding and I'm very interesting in being able to stream depth over rtsp and to better understand the nuance of the formats as they pertain to HW encoding & streaming.
Can you comment on how these two links describe or factor in to the ability/quality to stream depthmaps using depthai HW encoding?
https://developers.google.com/depthmap-metadata/encoding
https://mpeg.chiariglione.org/standards/exploration/immersive-video/depth-map-formats-used-within-mpeg-3d-technologies
hoping to learn.  thanks.

Hi @eric-schleicher,
AFAIK, the videoencoder node supports only a limited number of frame formats and we cannot encode depth on device yet.
Regarding depthmaps support - I think @szabi-luxonis or @themarpe can elaborate but I don't think we'll be able to support custom formats in this node

The video encoder accelerator usually supports 8-bit NV12 color and 8-bit monochrome input, for all modes: H.264/H.265/JPEG.
So disparity can be encoded (but not in subpixel mode, where it goes up to 12-bit)
(The video encoder also should supports 10-bit input for H.26x, not JPEG, same formats as above, but this may not be configurable yet.)


Light theme V3 pro version nested sub menu

Hi I am getting this issue in Light theme v3 when clicking the nested sub menu it won't display anything. It was ok when using the free version.

Updated to latest version still not working.

fixed in 4.2.17


Adding code coverage using Istanbul

Really useful starter kit, but I had noticed code coverage had been disabled in the latest version and I ran into a number of issues trying to get it included again.
In the end I managed to get it working with karma-coverage-istanbul-reporter and istanbul-instrumenter-loader.
I'm not sure if this is the perfect solution but thought I would pull request this solution back in.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@c1c4e8c). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #1307   +/-   ##
=========================================
  Coverage          ?   64.13%
=========================================
  Files             ?       13
  Lines             ?       92
  Branches          ?        0
=========================================
  Hits              ?       59
  Misses            ?       33
  Partials          ?        0

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 c1c4e8c...75df3d4. Read the comment docs.

When implementing it worked great, but I got the following deprecation message:

To keep this warning from appearing I needed to update istanbul-instrumenter-loader to v3.0.0-rc.1 (can be installed using npm i --save-dev istanbul-instrumenter-loader@beta). It seems like everything beyond v3.0.0-beta.1 should work since it was fixed in issue #61 of istanbul-instrumenter-loader.
Note that this was just to fix a deprecation warning from loader-utils, so if you don't mind getting that warning, then the stable version is just fine.

That's good to know, I couldn't work out how to remove the deprecation messages.
Hopefully they will release v3.0.0 of the istanbul-instrumenter-loader soon then.
Thanks


Run the script in DT

Hi, I'm experimenting with your example script and it works perfectly. Is there a way to run it from DT directly?
I tried to run an AppleScript but it give nothing at all.
It might be a problem with the records = dtp.selected_records part.
Is there a way to run the script inside DT?
on performSmartRule(theRecords)
	tell application id "DNtp"
		-- Specify the path to your Python script
		set pythonScriptPath to "path to it"
		try
			set processedContent to do shell script "/usr/bin/python3 " & quoted form of pythonScriptPath
			if scriptOutput is not "" then
				display alert "Script Output: " & processedContent
			else
				display alert "No output from script"
			end if
		on error errorMessage
			display alert "Error: " & errorMessage
		end try
	end tell
end performSmartRule

The reason I did't use your packed script is that I want to make modifications to the endpoint of api and update the completion code in accordance with the newest version of openai.
If there is a way to just launch the script inside it would be great, otherwise it is still good enough to run it with a shortcut.

Hi,
I've tested running the script within the smart rule, and it works as expected. Could you please provide more detailed information?
Python script
from pydt3 import DEVONthink3

dtp3 = DEVONthink3()
print(list(dtp3.selected_records))
r = dtp3.databases[0].records[0]
dtp3.open_window_for(r)

Smart Rule
on performSmartRule(theRecords)
	tell application id "DNtp"
		-- Specify the path to your Python script
		set pythonScriptPath to "path to it"
		try
			set processedContent to do shell script "/opt/homebrew/Caskroom/miniconda/base/bin/python3 /Users/thekoc/Developer/Temp/test.py"
			if processedContent is not "" then
				display alert "Script Output: " & processedContent
			else
				display alert "No output from script"
			end if
		on error errorMessage
			display alert "Error: " & errorMessage
		end try
	end tell
end performSmartRule

Result


SQL PowerSHell Modules

Type: Bug

Install VS Code 1.77.0 (user Setup)
Using Posh ISE install SQL Module  Install-Module -Name SQLServer -Scope AllUsers
Launch VC Code as Admin
Execute any Invoke-sqlcmd
Notice Error. e.g. The term 'Invoke-Sqlcmd' is not recognized as a name of a cmdlet
Now execute the same script in Posh ISE.
Notice that it runs without issues.

VS Code version: Code 1.77.0 (7f329fe6c66b0f86ae1574c2911b681ad5a45d63, 2023-03-29T10:02:16.981Z)
OS version: Windows_NT x64 10.0.17763
Modes:
Sandboxed: Yes

System Info

Item
Value

CPUs
AMD EPYC 7402P 24-Core Processor                (2 x 2795)

GPU Status
2d_canvas: unavailable_softwarecanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: disabled_softwaremultiple_raster_threads: disabled_offopengl: disabled_offrasterization: disabled_softwareraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: disabled_softwarevideo_encode: disabled_softwarevulkan: disabled_offwebgl: unavailable_softwarewebgl2: unavailable_softwarewebgpu: disabled_off

Load (avg)
undefined

Memory (System)
9.01GB (2.34GB free)

Process Argv
--crash-reporter-id 55fce088-8165-41d5-bb07-22e8ad07bdda

Screen Reader
no

VM
0%

Extensions (5)

Extension
Author (truncated)
Version

data-workspace-vscode
ms-
0.4.0

mssql
ms-
1.18.0

sql-bindings-vscode
ms-
0.3.0

sql-database-projects-vscode
ms-
0.21.0

powershell
ms-
2023.3.3

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
vserr242:30382549
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30410667
cppdebug:30492333
vsclangdc:30486549
c4g48928:30535728
dsvsc012:30540252
pynewext54:30695312
azure-dev_surveyone:30548225
nodejswelcome1cf:30587006
3biah626:30602489
pyind779:30671433
89544117:30613380
pythonsymbol12:30671437
a9j8j154:30646983
vsctsb:30677850
pythonb192cf:30669361
defaultazurewalk:30687958
pythonms35:30701012

I have determined that between VS code and Posh ISE that $env:PSModulePath is different for no apparent reason. In particular VS code is missing the C:\Program Files\WindowsPowerShell\Modules\ path. Why IDK. IMO it should not have different Paths, or at least it should be the same as Posh ISE with maybe a few more extra paths.

BTW I also determine that is does NOT matter if you use System install or user install, they BOTH have the same issue.

This issue is caused by an extension, please file it with the repository (or contact) the extension has linked in its overview in VS Code or the marketplace for VS Code. See also our issue reporting guidelines. If you don't know which extension is causing the problem, you can run Help: Start extension bisect from the command palette (F1) to help identify the problem extension.
Happy Coding!


HEAD requests to /shows/id/progress/watched are counting toward AUTHED_API_POST_LIMIT limit.

I am trying to use the etag header to determine if my local progress is up to date, but given that HEAD requests are counting toward the AUTHED_API_POST_LIMIT, I'm better of sticking to GET. Hopefully this is a bug, thanks!
Example response headers below:
"Server": cloudflare,
"x-runtime": 0.001433,
"Cache-Control": no-cache,
"Date": Mon, 31 May 2021 13:51:28 GMT,
"retry-after": 1,
"x-request-id": f7bfd634-ad6b-4ea8-bfc9-bf295cc05fa4,
"cf-cache-status": DYNAMIC,
"cf-ray": 6580ad57bac03e64-ADL,
"expect-ct": max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct",
"cf-request-id": 0a644aaad600003e64c6b5c000000001,
"x-ratelimit": {"name":"AUTHED_API_POST_LIMIT","period":1,"limit":1,"remaining":0,"until":"2021-05-31T13:51:28Z"}

Please post the API request and headers, just so I can have the exact test case.


Inline code font ugly rendering

Applies To

[X] Notebooks (.ipynb files)
[ ] Interactive Window and/or Cell Scripts (.py files with #%% markers)

What happened?
The rendering of my inline code is too ugly.
Before rendering:

After rendering:

I can't find the settings about changing the inline code rendering font to Consolas. Is there a way to do that? If currently such feature isn't available, can you please add this feature to later versions?
VS Code Version
1.68.0
Jupyter Extension Version
v2022.5.1001601848
Jupyter logs
No response
Coding Language and Runtime Version
Python v3.8.8
Language Extension Version (if applicable)
v2022.8.0
Anaconda Version (if applicable)
conda 4.12.0
Running Jupyter locally or remotely?
 Instead you should use a markdown code block:
```sql
your code
```

The code block can render the input as Consolas font

But the inline code still won't render as Consolas font. I guess I try to use code blocks instead of inline code whenever possible.


GH-37051: [Dev][JS] Add Dependabot configuration for npm

Rationale for this change
We can add MINOR: [JS]  prefix to PRs from Dependabot automatically.
What changes are included in this PR?
Add a configuration for npm.
Are these changes tested?
No. I want to test this by merging this to main.
Are there any user-facing changes?
No.

Closes: #37051

I don't think we need weekly updates since it would just add extra work to review and merge.
Do we have a script to automatically merge patch and minor updates that don't break the tests?

I don't think we need weekly updates since it would just add extra work to review and merge.

We can change the interval to monthly?

Do we have a script to automatically merge patch and minor updates that don't break the tests?

While technically possible I don't think the ASF policy would allow that (only if the bot was using a PAT by a committer who would then be personally responsible for any changes contributed with their PAT.)

If we can merge PRs from Dependabot only when CI is green, I'll do it. It's not a large work.

Do we have a script to automatically merge patch and minor updates that don't break the tests?

We can do it by a on: pull_request_target GitHub Actions workflow. But it's out-of-scope of this. This just wants to prepare title of PRs from Dependabot. Formatting PR titles by hand is a very bother task for me.

That all sounds good to me. I'd change it to monthly.

OK. I've changed to "monthly".
I'll merge this.


receiving completely random stuff, nothing frommy remotes

nothing seems to relate to any button presses, i can press the same button 20 times 2 cm next to the receiver and i get nothing for multiple times, or nothing at all, or 2 complete random things..
what am i doing wrong?
2018-03-03 04:39:00 - [INFO] rpi-rf_receive: 8 [pulselength 2252, protocol 2]
2018-03-03 04:39:30 - [INFO] rpi-rf_receive: 2048 [pulselength 1545, protocol 4]
2018-03-03 04:41:18 - [INFO] rpi-rf_receive: 16 [pulselength 2419, protocol 4]
2018-03-03 04:41:55 - [INFO] rpi-rf_receive: 64 [pulselength 1521, protocol 4]
2018-03-03 04:42:37 - [INFO] rpi-rf_receive: 33 [pulselength 182, protocol 1]
2018-03-03 04:43:00 - [INFO] rpi-rf_receive: 8 [pulselength 2538, protocol 2]
2018-03-03 04:43:15 - [INFO] rpi-rf_receive: 64 [pulselength 842, protocol 2]
2018-03-03 04:44:31 - [INFO] rpi-rf_receive: 128 [pulselength 850, protocol 1]
2018-03-03 04:46:46 - [INFO] rpi-rf_receive:<PHONE_NUMBER> [pulselength 1203, protocol 1]
2018-03-03 04:47:37 - [INFO] rpi-rf_receive: 64 [pulselength 1638, protocol 4]
2018-03-03 04:47:43 - [INFO] rpi-rf_receive: 1 [pulselength 988, protocol 2]
2018-03-03 04:47:46 - [INFO] rpi-rf_receive: 2048 [pulselength 1045, protocol 4]
2018-03-03 04:48:20 - [INFO] rpi-rf_receive: 2 [pulselength 374, protocol 3]
2018-03-03 04:49:01 - [INFO] rpi-rf_receive: 16 [pulselength 905, protocol 2]
2018-03-03 04:49:01 - [INFO] rpi-rf_receive: 16 [pulselength 1492, protocol 4]
2018-03-03 04:49:46 - [INFO] rpi-rf_receive: 1 [pulselength 1140, protocol 2]
2018-03-03 04:49:46 - [INFO] rpi-rf_receive: 8 [pulselength 148, protocol 3]
2018-03-03 04:51:16 - [INFO] rpi-rf_receive: 1 [pulselength 1594, protocol 4]

Yep, same here. Tried with different outlet sets, and different remotes.
Always a different code for the same button.

in my case the codes doesnt even correspond to the timing of my button presses, it seems the remote gets completely ignored. if i send codes via PI transmitter they get received just fine. it seems the remotes use a protocol which is not supported, which is a shame really, i dont know how to utelize all my light switches now D:

have the same issue. sending from Arduino fixed codes and receiving on Raspberry. doesn't matter if Arduino is on/off, I keep receiving garbage data.

I was recently receiving absolutely nothing using an RPI and an ALEKO keyfob which are based on HSC301 KEELOQ. Using the Piscope, I was able to see the signal when I pressed the button. I also got a similar signal using another receive app.  I started messing with the source:
https://github.com/milaq/rpi-rf/blob/master/rpi_rf/rpi_rf.py
I changed the line 187:
if duration > 5000:
to:
if duration > 500:
and now I am able to see "something" when I press the buttons. Basically I see several lines created at a time. However nothing in the lines is repeated.
So my question is why duration must be 5000? what are the units. Its a small code and just knowing a little about the various functions would be great to add more protocols.

@aomanchuria think thats 5000ms, so every 5seconds its polls...
Are the random code/channels is it rolling remote codes?

its rolling code:
Aleko sliding gate key fob signal analysis:
50% signal preamble = 390us ~ 400us each step = Te
total preamble = 9055us (a 23Te 50% cycle wave)
total low after preamble = 3960us (a 10Te pause)
zero = 2 highs, 1 low (1te each step)
one = 1 high, 2 lows (1te each step)
numbers:
101011111000011111110100100010101110111011100000101111101010010011<-has noise error
000111010111111100100011011010111110111011111000101111101010010011
000111010111111100100011011010111110111011111000101111101010010011
rental house keyfob:
button A
100001010000000000110111001110011110111011111000101111100110010011
100001010000000000110111001110011110111011111000101111101010010011
100001010000000000110111001110011110111011111000101111101010010011
button B
010111000010101110011010110011011110111011111000101111101010001011
010111000010101110011010110011011110111011111000101111101010001011
********************************ssssssssssssssssssssssssssssbbbbSS
*-encrypted bits
s-serial code
b-button
SS-status
rental house keyfob again(d= delta, s= same as before):
button A
010110110010111100110011001101111110111011111000101111101010010011
100001010000000000110111001110011110111011111000101111101010010011<-previous run
dddddddddddddddddddddddddddddddsssssssssssssssssssssssssssssssssss
button B
100010010000111100010100010011111110111011111000101111101010001011
010111000010101110011010110011011110111011111000101111101010001011<-previous run
dddddddddddddddddddddddddddddddsssssssssssssssssssssssssssssssssss
seems like the encrypted portion ends in a 1 each time
button C
111100111010110110010000010000101110111011111000101111101010001111
111100111010110110010000010000101110111011111000101111101010001111
********************************ssssssssssssssssssssssssssssbbbbSS
button D
100011111011011000000011101101111110111011111000101111101010000111
100011111011011000110111101101111110111011111000101111101010000111
********************************ssssssssssssssssssssssssssssbbbbSS
buttons A to D
0100
0010
0011
0001
the last two bits are for battery low in voltage and code repeated
it seems that when you press the button it always repeats the same
code until you depress it. Vlow is 0 at 6.6volts 1 at 13v.
Confirmed that code repeat is 0 the first message, 1 the rest of the
repeats.

with 5000:
^Cpi@raspberrypi:~/gate_opener/rf433ctrl $ rpi-rf_receive
2018-03-17 09:09:00 - [INFO] rpi-rf_receive: Listening for codes on GPIO 27
with 500:
line ~189:      if duration > 500:  #in micro seconds so .5secons is 500us
^Cpi@raspberrypi:~/gate_opener/rf433ctrl $ rpi-rf_receive
2018-03-17 09:09:34 - [INFO] rpi-rf_receive: Listening for codes on GPIO 27
2018-03-17 09:09:36 - [INFO] rpi-rf_receive: 16 [pulselength 27, protocol 1]
2018-03-17 09:09:36 - [INFO] rpi-rf_receive: 4 [pulselength 150, protocol 4]
2018-03-17 09:09:37 - [INFO] rpi-rf_receive: 32 [pulselength 13, protocol 3]
2018-03-17 09:09:37 - [INFO] rpi-rf_receive: 8 [pulselength 135, protocol 4]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 2 [pulselength 256, protocol 4]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 4 [pulselength 11, protocol 3]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 2 [pulselength 28, protocol 1]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 2 [pulselength 27, protocol 1]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 16 [pulselength 25, protocol 1]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 16 [pulselength 101, protocol 4]
2018-03-17 09:09:38 - [INFO] rpi-rf_receive: 4 [pulselength 11, protocol 3]
2018-03-17 09:09:41 - [INFO] rpi-rf_receive: 8896 [pulselength 213, protocol 2]
2018-03-17 09:09:41 - [INFO] rpi-rf_receive: 19055234 [pulselength 135, protocol 4]
2018-03-17 09:09:41 - [INFO] rpi-rf_receive: 1 [pulselength 76, protocol 6]

Can someone fill me in as to what this means:
32 [pulselength 13, protocol 3]
protocol 3 looks like this:
Protocol(100, 30, 71, 4, 11, 9, 6),
the Te is 100, the sync is 30 high, 70 low. What does this mean? 30 Te high and 70 Te low? or 30 "ones" and 70"zeros".  in the aleko or keeloq, the beginning of each message is 23Te long  high and lows at 50% 1 Te high, then 1 Te low etc for 23 times. then each zero starts with 2 tee highs then one low. for 1's it starts with one Te high and two low.
my theory is that it should be:
Protocol(400, 23, 10, 2, 1, 1, 2),#my own protocol for HCS301 Aleco
or            Protocol(400, 46, 20, 2, 1, 1, 2),#my own protocol for HCS301 Aleco
but that doesn't really do anything different.

Same issue here, defintely see data when pressing remote but no pattern to it. I tried again with a remote I know the code for and I did get the correct code but very randomly in amongst loads of random data. Seems must be something fundamentally wrong here. I suspect perhaps certain protocols not supported. Can anyone help please?

I found that the sleep uses rolling codes. It's possible to hack, but would
take days off computing and basically a simple program, but I couldn't
figure it out at the time so I gave up. Instead I was going to toss the
original motherboard and replace it with a servo control for CNC diy
machines...Hbridge with a controller like arduino or raspberry pi. So much
simpler! Use the same remotes and eliminate the rolling code just a
password maybe.... who's gonna waste time trying to remotely open your gate
when they can bypass with a crowbar... LOL.
On Dec 2, 2018 6:31 AM, "evski"<EMAIL_ADDRESS>wrote:
Same issue here, defintely see data when pressing remote but no pattern to
it. I tried again with a remote I know the code for and I did get the
correct code but very randomly in amongst loads of random data. Seems must
be something fundamentally wrong here. I suspect perhaps certain protocols
not supported. Can anyone help please?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/milaq/rpi-rf/issues/21#issuecomment-443511927, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AaWwiSAmasx-synfMBJrnUDLsNotVei8ks5u0-QzgaJpZM4Saw99
.

Have you tried the latest master (including https://github.com/milaq/rpi-rf/commit/3bbd31cc3bbd4f1a7c2aba776d2541b37480e45b)? Does that improve your situation?

Did this ever get solved? I'm having this issue myself, and trying to determine if the remote is using rolling codes or not

Any solution? I have the same problem... Random values with the control button pressed or not.....

This is unfortunately still a major issue.


[release-v1.72] Increase workers for NetworkPolicy controller

How to categorize this PR?

/area performance
/kind enhancement
What this PR does / why we need it:
This is a cherry-pick of https://github.com/gardener/gardener/pull/8035
Release note:

The worker count for the [NetworkPolicy controller](https://github.com/gardener/gardener/blob/master/docs/concepts/resource-manager.md#networkpolicy-controller) in GRM was increased to `20`. This is necessary to create and update `NetworkPolicies` in time, esp. on larger seed clusters.

/cherry-pick release-v1.71

/cherry-pick release-v1.70

/lgtm
/approve

/retest


Tag a new release

The latest 0.0.7 release can't be installed with the swift package manager, because Zewo/CLibvenice has moved to VeniceX/CLibvenice and spm gets confused by that 😞
https://github.com/stepanhruda/PostgreSQL-Swift/blob/0.0.7/Package.swift

👍 Would love to see a new version also.


[FEATURE REQUEST] Support create new files inside a workspace (via ctrl+n or ctrl+p, ...)

Feature request for easier creation of new files
Hello the VSCode team ! Here is a proposal for an enhancement in the creation of new files. I know that we can create new files by using the shortcut CTRL+n. However, it creates a new file tab and when saving it, it opens the file saver, even though I'm already inside a workspace or folder.
Therefore, the proposal would be to add a support for the creation of new files via CTRL+n or CTRL+p when searching for a file and that it doesn't exist. It could add a suggestion to create the named file.
Illustrations of the proposals
Here is an example what it could look like. When saving a new created "untitled" file in a workspace, rather than popping a new window for saving the file in the explorer view, we can directly have the "untitled" file created inside the workspace and renamed on first save.
Therefore, when hitting CTRL+s inside the new file, it will directly focus inside the workspace explorer list to name the file.

When searching for a specific file and didn't find it, the modal could suggest the creation of the file.

We can also imagine that the modal could support the "folder/new_file.md" syntax for example, to create a new folder and a new file directly.
Thanks !

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


Bootstrap loaded after custom less files.  How to reorder?

Hi, Meteor 1.3 is creating a /merged-stylesheets.css with my custom less files first, then the bootstrap files.
How can I load bootstrap first?
./client/bootstrap-settings.json
./client/bootstrap_variables.less
./client/**/*.less

Thanks!

Ok, fussed with it and did this:
./client/lib/bootstrap-settings.json
./client/lib/bootstrap_variables.less
./client/**/*.less

The bootstrap less seems to load first now.  Thanks for the great package :-)

@MichaelJCole you solution didn't seem to fix my issue here. Running on meteor1.4

@Philip-Nunoo hmmm... I'd recommend opening a new issue.  This may have changed in 1.4


WIP: Initial version of generic test fixture.

This is untested, but I wanted to get this out for Verilog review.

Looks good to this non expert.

There is a similar approach that I mentioned in Symbiflow/ideas#25  Maybe we can consider leveraging/contributing upstream https://github.com/daveshah1/hilotof


Allow Itzo logs to drain from pipe

It seems there is a race condition when a Pod exits Itzo is sometimes not able to fully flush the log pipes (stdout, stderr).
Added a sleep for 3 seconds prior to removing a pipe to allow the pipe to drain completely.

@justnoise I had one other consideration. Do you think it would be more beneficial to add the sleep within the pipe.Remove() function it would then allow the pipe to drain regardless of where pipe.Remove() it is called from?

@justnoise I had one other consideration. Do you think it would be more beneficial to add the sleep within the pipe.Remove() function it would then allow the pipe to drain regardless of where pipe.Remove() it is called from?

Good thought.  I think that doesn't need to happen. In most all other cases the call to pipe.Remove() happens after an unrecoverable error in itzo (like the unit's filesystem structure has been messed with/damaged). Adding a sleep to Remove() might tell us something in those cases but that would be rare.  Putting the sleep in Remove() burries that sleep deeper in the code.  If we  do a big refactor, we might not need the sleep anymore but, it would live on, possibly causing delays and strange latency in some operation.  Also, the sleep will slow down some unit tests (could be fixed by making the sleep time configurable...)
99% of the time, we just want to answer "why did the unit exit?" and getting the last log line as done here answers that.  I think this is the best.
Now that I think of it, I do have one request: make the time a variable with a name that answers the question future developers will as: "why are we sleeping here?"


multipleOf incorrectly raises ValidationError for some floats

In _validators.py, the multipleOf function incorrectly raises a ValidationError for e.g. 606.67 as not a multiple of 0.01, due to floating point errors.
Our use case is using a schema to ensure that amounts (in Dollars) are in increments of 1 cent ($0.01)
Going through the code,
quotient = 606.67 / 0.01 = 60666.99999999999
failed = int(quotient) != quotient
failed = 60666 != 60666.99999999999
failed = True

One number is a multiple of another number when the quotient is an integer. However, in this case, the quotient is very close to an integer due to floating point representation of those numbers.
The solution I see is: instance is a multiple of db if quotient is close to an integer.
I'm happy to submit a pull request, and first would like to

write a unit tests for this case. Where is the best place for this test?
implement an isclose method similar to math.isclose in Python 3. A previous commit removed something similar. Is there a better way of doing this?

I'd recommend not using floats to recommend dollar amounts in that case. You could use a string and a simple regex fairly easily I think?

Alternatively you can deserialize your JSON using decimals as well.

Closing this out, but lemme know if you disagree.

If we use Decimal in deserialization we get an error:
jsonschema/_validators.py", line 124, in multipleOf
    quotient = instance / dB
TypeError: unsupported operand type(s) for /: 'decimal.Decimal' and 'float```

so multipleof is unusable...

This is how I did to workaround:

def multipleOf(validator, dB, instance, schema):
if not validator.is_type(instance, "number"):
return
if isinstance(dB, float):
    if isinstance(instance, float):
        quotient = instance / dB
    else:
        quotient = instance / Decimal(str(dB))
    failed = int(quotient) != quotient
else:
    failed = instance % dB

if failed:
    yield ValidationError("%r is not a multiple of %r" % (instance, dB))```

If you want I can submit a merge request. This feature is required for my purpose, however I would prefer to use the official package than a fork.

Sounds like you only used a decimal in one of the two places, you need to
have decimals both in your schema and in your instance.
On Jul 13, 2017 13:25, "Fufutako"<EMAIL_ADDRESS>wrote:
If we use Decimal in deserialization we get an error:
jsonschema/_validators.py", line 124, in multipleOf
quotient = instance / dB
TypeError: unsupported operand type(s) for /: 'decimal.Decimal' and 'float```
so multipleof is unusable...
This is how I did to workaround:
def multipleOf(validator, dB, instance, schema):
if not validator.is_type(instance, "number"):
return
if isinstance(dB, float):
if isinstance(instance, float):
quotient = instance / dB
else:
quotient = instance / Decimal(str(dB))
failed = int(quotient) != quotient
else:
failed = instance % dB
if failed:
yield ValidationError("%r is not a multiple of %r" % (instance, dB))```
If you want I can submit a merge request. This feature is required for my
purpose, however I would prefer to use the official package than a fork.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/Julian/jsonschema/issues/320#issuecomment-315050453,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAUIXk3muj_9vAHXKiOYJNXKR6GA2XAuks5sNf6ngaJpZM4L5RuN
.

Hi,
Thanks for your reply.
This is an extract from the json-schema.
'offer_items': {'items': {'maxProperties': 4,
                          'minItems': 1,
                          'properties': {'description': {'maxLength': 40,
                                                                     'type': 'string'},
                                                'price': {'multipleOf': 0.01,
                                                             'type': 'number'},
                                                'product_id': {'maxLength': 20,
                                                                      'pattern': '[0-9]+',
                                                                     'type': 'string'},
                                                 'quantity': {'type': 'integer'}},
                          'required': ['product_id',
                                            'description',
                                            'quantity',
                                            'price'],
                          'title': 'offer_item',
                          'type': 'object'}

it is stored in db and passed directly to validate. So I have no control on dB expected by the schema. How can I make my json-schema to get a Decimal for 'price' ? multipeof is a key word related to number so I don't understand how I can do that. In another hand instance when is deserialized to a float produce floating point error and when it is deserialized to a Decimal raise a TypeError.

I presume you deserialize out if your DB using the json module? (You have
to be deserializing using something) -- json.loads and friends take
arguments which affect what Python type is used to deserialize JSON
numbers, so you need to pass Decimal to those.
On Jul 13, 2017 14:16, "Fufutako"<EMAIL_ADDRESS>wrote:
Hi,
Thanks for your reply.
This is an extract from the json-schema.
'offer_items': {'items': {'maxProperties': 4,
'minItems': 1,
'properties': {'description': {'maxLength': 40,
'type': 'string'},
'price': {'multipleOf': 0.01,
'type': 'number'},
'product_id': {'maxLength': 20,
'pattern': '[0-9]+',
'type': 'string'},
'quantity': {'type':
'integer'}},
'required': ['product_id',
'description',
'quantity',
'price'],
'title': 'offer_item',
'type': 'object'}
it is stored in db and passed directly to validate. So I have no control on
dB expected by the schema. How can I make my json-schema to get a Decimal
for 'price' ? multipeof is a key word related to number so I don't
understand how I can do that. In another hand instance when is deserialized
to a float produce floating point error and when it is deserialized to a
Decimal raise a TypeError.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/Julian/jsonschema/issues/320#issuecomment-315060601,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAUIXvvcJJ4otd2vM7koKT-y97M4oXZTks5sNgqbgaJpZM4L5RuN
.

Yes... I use a json field in Postgres and sqlalchemy.JSONField to deal with. I am looking How can I do that with this package. Thanks


Ability to clear and re-draw

I'm currently using ref.current.querySelectorAll("*").forEach(n => n.remove()); where ref.current refers to the DOM <div> element.
This kinda works but it appears the y-axis is changing which might be a bug but I'd rather figure out a way to re-draw or clear.

I got it to work using the following hack:-
   chart.svg.selectAll("*").remove();
   chart.drawChart();

but agree a redraw call would be cleaner.
Linking #9

+1
Will add update function to do this that can take new data.
Possible pain point: smooth transition of rough paths.

.redraw() method added in v2


ci: add license header check

Although Apache 2 License doesn't require people to include license
header in the code, but many other repos do it. For example, ASF
requires repos under its name to do it:
https://www.apache.org/legal/src-headers.html#faq-exceptions
This PR also fix some license headers.

Fix CI via https://github.com/api7/wasm-nginx-module/pull/88


JPMS support (JVM 9+)

Hi
I was planning to use the library in a Java JPMS project. As you might know, even the extended support for Oracle Java 8 LTS will end in Dec 2030. All the later versions of JVM provide support for module paths / JPMS. I noticed that the package structure of the project basically prevents it from being used in a "modern" modular project. This basically assumes a certain kind of package structure + a module-info file. Even if the project doesn't provide the module info, a more significant issue is that the classes should be placed in a unique location with the module name as the package prefix. According to semver rules this project's version is still per 1.0.0 so changing the API wouldn't be a huge problem at this point.
For instance, all the current structure could be moved to a io.github.davidepianca98 package in each sub-module. This could be simply done by moving the files, adjusting/adding the package declarations and imports. Rather straightforward, but this of course breaks the API completely. I did a test build with a modified project structure and it seems to work just fine.

Here's a short script for mass converting the files, but it needs further fixes for imports:
PREFIX=io/github/davidepianca98/kmqtt

git clone https://github.com/davidepianca98/KMQTT KMQTT
mkdir -p kmqtt-new

for dir in $(find KMQTT/ -maxdepth 1 -type d -name 'km*'); do
  mkdir -p ${dir/KMQTT/kmqtt-new}
done

for f in $(find KMQTT/ -type f -name '*kt'); do
  D="$(dirname "$f")"
  D="${D/KMQTT/kmqtt-new}"
  D="${D/kotlin/kotlin/$PREFIX}"
  F="$(basename $f)"

  mkdir -p "$D"

  echo $D|sed 's|\([^/]*/\)\{5\}|package |;s/\//./g;s/$/;/' > "$D/$F"

  sed 's/^package .*//g' "$f" >> "$D/$F"
done

Hello, thank you very much for opening the issue and proposing a solution. I really do not know how I missed the full package name for so long.
As you already did all the work, do you mind opening a pull request with the changes? io.github.davidepianca98 is fine to keep in line with the current package name. I am ok with breaking compatibility as this was a mistake all along.

Ok, so the version I needed and tested only sets up the jvm build (and uses maven) so I don't think sharing that will be of any use. I ran the script and adjusted the package names, imports, and relocated the kt files here: https://github.com/miasma/KMQTT/tree/adjust-packages
It probably needs more work for relocating the resource files. I'm not too familiar with the multi-platform builds and couldn't figure out how to build all the targets, so there's still work to do, but I hope this helps.


More problems with plugin links

Hi,
editing plugin links behaves weird for us, there are several problems which occur:
1.) Right-click on a plugin-link in the editor, choose 'Edit Plugin', change text of the link, save -> Link is duplicated on the page. This does not seem to occur if you double-click to select the whole link first.
2.) Changing the text of the link in the editor directly does not have any effect - it looks correct in the editor, it looks correct in the draft, but it's back to the previous state when published.
Currently running django-cms 3.09.
Do these work correctly with the "Ent" (treebeard) in your development version?
(and did you receive the security related mail I sent two days ago?)

closed in favour of #285


Feedback for: Introduction to Progressive Web App Architectures [en]

https://github.com/google/WebFundamentals/blob/master/src/content/en/ilt/pwa/introduction-to-progressive-web-app-architectures.md
In Additional Caching Solutions with sw-toolbox: All paragraphs should be indented to be on the same line as bullets

Fixed in c4f4a6b8905b623cb3e0f7fa4537cfbbc78220f0


how to tell  leaderF the search path, I need search on the project root path, not systerm all paths

vim or neovim?

[ ] vim
[ ] neovim

Output of vim --version or nvim --version:
Output of :echo has("python"):
Output of :echo has("python3"):
Output of :echo &pythondll(only vim, not neovim):
Output of :echo &pythonthreedll(only vim, not neovim):
Output of :py print(sys.version):
Output of :py3 print(sys.version):
Output of :echo g:Lf_Debug_Cmd:
Operating system:

[ ] Linux
[ ] Mac OS X
[ ] Windows
[ ] Etc.

Configurations related to LeaderF in vimrc:

Describe your question, feature request, or bug.
Steps to reproduce
Actual behaviour
Expected behaviour

g:Lf_WorkingDirectoryMode                       *g:Lf_WorkingDirectoryMode*
    This option customizes LeaderF's working directory.
    e.g., >
    let g:Lf_WorkingDirectoryMode = 'Ac'
<
    c - the directory of the current working directory.(default)
    a - the nearest ancestor of current working directory that contains one of
        directories or files defined in |g:Lf_RootMarkers|. Fall back to 'c' if
        no such ancestor directory found.
    A - the nearest ancestor of current file that contains one of directories
        or files defined in |g:Lf_RootMarkers|. Fall back to 'c' if no such
        ancestor directory found.
    f - the directory of the current file.
    F - if the current working directory is not the direct ancestor of current
        file, use the directory of the current file as LeaderF's working
        directory, otherwise, same as 'c'.
    Note: if "f", "F" is included with "a" or "A", use the behavior of "f" or
    "F"(as a fallback) when a root can't be found.


Add an option to pause the video after creating a structured annotation

Closes #397.

The checkbox labels aren't final, yet. Waiting for @dagraf. I will deploy this to staging by next week, hopefully.

Does not seem to work with scales (when creating a labelled annotation with a scale). Not sure if this is intended or not.

Nope, it's not, good catch. Should be fixed now.

Also the current UI seems to waste a bit of space. Might be nice to make it more flexible. Might also be confusing though.

I see Pros and Cons for both, with a slight preference for the "vertical layout." @dagraf opinions?

Nope, it's not, good catch. Should be fixed now.

Seems to be fixed.

I see pros and cons for both, with a slight preference for the "vertical layout." @dagraf opinions?

I was imagining some flexbox thing where the layout changes based on the available width. Although I'd absolutely agree that a vertical layout has better visual clarity (as that is what I would expect out of a checkbox list). Wouldn't want this to hinder the merge tho.
Also, unrelated to the this PR, but what counts as "while editing free text annotations", meaning in which cases the video automatically resumes play after pausing due to a free text annotation "edit", seems weird to me (Click in the category box? Resume play. Click on the timeline? Do not resume play. Open a different window altogether? Resume play). Might be worth a new issue.

Label of checkboxes: I do not really like the term "structured annotation" because it does not exist elsewhere in the annotation tool. I suggest we use the same wording we are planning to use for the upcoming modals:

DE: "Video nach Klick auf eine Label / Etikett anhalten"
EN: "Pause vide after clicking on a label"

English text "while editing free text annotations": I think this is due to a faulty translation of the german "Video während des Schreibens anhalten". So I suggest to alter it to: "Pause video while writing free text annotations"

Position of new option: I would prefer the vertical layout. But in fact, we would suggest do place it right beneath the box for the structured annotations. So we have some logic: first the box for writing or selecting an annotation and right below the option to pause the video when I make an annotation (see mockup).

Please pay attention to the additional grey space we entered underneath the existing checkbox "pause while editing free text annotations" and the three tabs.

Additionally, I would suggest that we consider to change the default setting:

for free text annotations, the checkbox is by default activated.
for structured annotations, the checkbox is by default DEactivated.

Other possibility for where to put and how to name the two pause options:

@Arnei raises a good point, though: We need to think about how all these elements behave when we shrink that view. But I think that's a question for another day as well.
As for the wording and placement: I don't really have any strong opinion. If @Arnei doesn't have any objections I would just say: @dagraf pick your favorite and that's what we'll go with. :)

Also, unrelated to the this PR, but what counts as "while editing free text annotations", meaning in which cases the video automatically resumes play after pausing due to a free text annotation "edit", seems weird to me (Click in the category box? Resume play. Click on the timeline? Do not resume play. Open a different window altogether? Resume play). Might be worth a new issue.

Looking at the code, the rules are apparently:

Resume whenever I submit the current free text annotation
Resume ~200ms after the input field loses focus

I don't know how reasonable of a definition that is from a user's point of view. If not, we should indeed have an issue for that. @dagraf care to chime in?
If that is in fact what we want, but we are seeing behavior that differs from that, I would also welcome an issue. :)

As for the wording and placement: I don't really have any strong opinion. If @Arnei doesn't have any objections I would just say: @dagraf pick your favorite and that's what we'll go with. :)

My favorite:

Wording: "Video anhalten:" / "Während des Schreibens einer Freitextannotation" / "Beim Setzen einer strukturierten Annotation"
Placement: Below the box for structured annotations.

The problem with the interaction between the two options I mentioned above should be fixed now. I'll use this opportunity to think through some more edge cases and maybe make the system a bit more robust, still.

Also, unrelated to the this PR, but what counts as "while editing free text annotations", meaning in which cases the video automatically resumes play after pausing due to a free text annotation "edit", seems weird to me (Click in the category box? Resume play. Click on the timeline? Do not resume play. Open a different window altogether? Resume play). Might be worth a new issue.

Looking at the code, the rules are apparently:

Resume whenever I submit the current free text annotation
Resume ~200ms after the input field loses focus
If the video seeks for any reason before that, it will not resume

I don't know how reasonable of a definition that is from a user's point of view. If not, we should indeed have an issue for that. @dagraf care to chime in?

I'd try to take the user's point of view when to resume the video:

When the video got paused because of writing a freetext annotation: (1) After I insert this annotation I was writing (ether by hitting 'Enter' or clicking on 'Insert', (2) After clicking on the play button in the viewer
When the video got paused because of setting a structured annotation: (1) After clicking on the play button in the viewer

@dagraf So specifically if you just leave the textbox without submitting, you would not expect the video to resume, right? Because I was certainly surprised when I just saw that in the code. x)

@dagraf So specifically if you just leave the textbox without submitting, you would not expect the video to resume, right? Because I was certainly surprised when I just saw that in the code. x)

Correct.

As for the wording and placement: I don't really have any strong opinion. If @Arnei doesn't have any objections I would just say: @dagraf pick your favorite and that's what we'll go with. :)

Fine by me, I like @dagraf 's suggestions.

@dagraf one more question to clarify: Currently, when the video pauses because of the "pause on freetext" option, and then you jump to another position in the video, the video will not resume after submitting the annotation. Is this correct?

Uh, and another one. :sweat_smile:
What should happen if I uncheck the option before submitting my annotation? Should it resume?

@dagraf one more question to clarify: Currently, when the video pauses because of the "pause on freetext" option, and then you jump to another position in the video, the video will not resume after submitting the annotation. Is this ~correct~ what you want?

No, this is not what I want or what I would expect. I would expect that after submitting the annotation the video does resume.

Uh, and another one. 😅
What should happen if I uncheck the option before submitting my annotation? Should it resume?

Yes, it should resume. But either way would be ok. Because I guess this would happen rather rarely.

Yes, it should resume. But either way would be ok. Because I guess this would happen rather rarely.

Ok, that's good to hear, because thinking about it some more, this really seems like the only option. This is a surprisingly tricky feature, mainly because the tool doesn't really have a discrete notion of the event of creating a free text annotation. :thinking:
Anyway, I think I got it now. :slightly_smiling_face:

OK so quick ad hoc TODO list for me so I don't forget anything.

[x] change the behavior of the "pause for freetext" option to what we just discussed
[ ] Change the wording and placement of the options
[ ] Change the defaults of the options

Am I missing something?

Alright, this should be ready for another review. @dagraf I might throw this and #478 onto staging as well, later today, so you can maybe test it tomorrow or on Monday before our meeting. :smiley:

That would be great. Please let me know as soon as I can test it on staging.

@dagraf I deployed the two patches; however, I can't test #478 myself right now, I think, because our test user that should have sufficient permissions has expired.

Which test user are you working with?

stp-OrgAdmin1 should have the correct rights, which is what I was trying. stp-Producer1 does not seem to have them, although maybe that's already a bug. :thinking:

I just now got a mail that the user works again, and I still don't see the new visibility option. That's weird. I will look into it ASAP.

@dagraf if I remember correctly you wanted more spacing around the options. How about this?

The thing you mentioned in https://github.com/opencast/annotation-tool/issues/454#issuecomment-830221212 is also changed. Will be effective the next time I deploy.

@dagraf if I remember correctly you wanted more spacing around the options. How about this?

Correct. Looks fine. Please make shure that the spacing above the pause video option is a bit smaller than the spacing below it. Thx!


Consider using English in in documentation and library introduction

Just my 0.02€, your project, you are the boss. Sounds interesting, but hard to figure out what it does and whats features it has.
-Tee-

hello my friend, I have this English translation in my backlog

The translation has been done. At the end of the documentation there is a link to the English documentation.


Add new pdf OCR criteria

Also add filesize to metadata and remove metadata from entities file

Add ocr disabling mechanism, update version, update docker version and envvars usage to disable OCR if needed


Calling the CLI from the outside with an empty command string (-c '') crashes PowerShell

From within PowerShell, running pwsh -c '' (pwsh -Command '') provides a helpful error message (followed by the CLI syntax):
Cannot process the command because of a missing parameter. A command must follow -Command.

By contrast, when pwsh is called from the outside, it crashes.
Steps to reproduce
Run from either cmd.exe or  bash:
pwsh -c ""

Expected behavior
The following should print to stderr and a nonzero exit code should be reported, analogous to what happens when calling from PowerShell.
Cannot process the command because of a missing parameter. A command must follow -Command.

(CLI syntax diagram)

Actual behavior
The pwsh process crashes as follows:
Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'value')
   at System.String.IndexOf(String value, Int32 startIndex, Int32 count, StringComparison comparisonType)
   at System.String.IndexOf(String value, StringComparison comparisonType)
   at Microsoft.PowerShell.CommandLineParameterParser.MatchSwitch(String switchKey, String match, String smallestUnambiguousMatch)
   at Microsoft.PowerShell.CommandLineParameterParser.EarlyParse(String[] args)
   at Microsoft.PowerShell.UnmanagedPSEntry.Start(String consoleFilePath, String[] args, Int32 argc)
   at Microsoft.PowerShell.ManagedPSEntry.Main(String[] args)

Environment data
PowerShell Core 7.0.0-preview.4

We send null to MatchSwitch()
https://github.com/PowerShell/PowerShell/blob/77ddec161417f98f8f2e57e9e9ef57d00cdc4c98/src/Microsoft.PowerShell.ConsoleHost/host/msh/CommandLineParameterParser.cs#L523-L541
We need to issue common user-friendly message.

@iSazonov  I submitted the issue first, reported detailed system information, but was closed as Duplicate.
After submitting the issue, it was used as an engine bug. This is not fair to me.
I don't know what the hidden rules are for you. Below, please start your sophistry.

@chuanjiao10 I think it is one issue.

@chuanjiao10:
Your original issue had a misconception about how POSIX-like shells such as Bash evaluate pwsh -c "$pid".
https://github.com/PowerShell/PowerShell/issues/10410#issuecomment-537570864 explains the problem and detail and shows solutions.
In short: When you call from Bash, pwsh -c "$pid"  is effectively the same as pwsh -c "", because Bash expands $pid and - given that the variable doesn't exist - expands it to the empty string.
It is only pwsh -c "" that is the problem - and that's why this issue was created: to focus on the real problem.

This doesn't appear to crash on pwsh -c "" currently but the process exits with 0 with no helpful information.
pwsh -c, however, exits with a code of 64 and a message. The behavior of pwsh -c "" (empty argument) could be made more consistent with the behavior with no argument (and when invoked from inside of PowerShell).

The behavior of pwsh -c "" (empty argument) could be made more consistent with the behavior with no argument (and when invoked from inside of PowerShell).

But "" is valid command.

Agreed, @iSazonov.
Since an argument is passed to -c in this case, the syntax requirements were met, so we shouldn't treat this the same as neglecting to pass an argument to -c.
After the "" are stripped by PowerShell's CLI, a verbatim empty string remains (as opposed to a string literal representing the empty string). This is effectively the absence of any statement.
As for how to process this non-statement:

Agreed, @iSazonov.
On further reflection, I think I was wrong about the expected behavior in the OP:
Since an argument is passed to -c in this case, the syntax requirements were met, so we shouldn't treat this the same as neglecting to pass an argument to -c.
After the "" are stripped by PowerShell's CLI, a verbatim empty string remains (as opposed to a string literal representing the empty string). This is effectively the absence of any statement.
As a no-op, it is by definition successful, and the exit should be 0.
This is consistent with how POSIX-compatible shells handle this case.
Since the current preview already exhibits this behavior, I think we can close this issue.


Replace jscoverage with karma-coverage

Replace our ancient, windows-only jscoverage implementation with karma-coverage, which works on all platforms and does not require a separate instrumentation step. You now run coverage by simply typing npm run coverage. This also provides improved results, such as branch coverage, which the old system did not.
Updated Testing Guide
Remove old instrument link from index.html
Remove jscoverage and related code.

Current stats
90.38% Statements 81603/90285
81.91% Branches 27629/33729
90.95% Functions 9010/9906
90.38% Lines 80611/89193
these numbers were lower than I expected, but Source/Workers is uncovered by unit tests (at least directly), we should probably add some tests for them and it would get back above 93% pretty easily. I didn't want to lie to ourselves by simple excluding them.
For anyone wondering why we stayed on the old system for so long, I actually made this change ~3 years ago but karma-coverage fixed a showstopping bug ~8 days ago and that finally allowed us to use it.

@OmarShehata maybe you can take a look at this? The change itself is pretty straightforward.

This is wonderful! We can now see coverage results in the browser for every PR (but with WebGL stubs):
http://cesium-dev.s3-website-us-east-1.amazonaws.com/cesium/coverage/Build/Coverage/index.html
And it would be easy to compare against master (which should get built in a similar URL right?) It's also pretty easy to generate coverage for just a single class as described above. The updated doc looks good.
Some recommendations/questions:

Why was npm run clean removed in .travis.yml?
We no longer need this Instrumented folder in the filesToClean list right? https://github.com/AnalyticalGraphicsInc/cesium/blob/cb496c6271694c4e6a11f446d34d37e45185b6b5/gulpfile.js#L70
The only thing is the command line options for npm run coverage aren't really documented anywhere (so you'd have to read the code to find out --browsers takes a comma separated list) but maybe that's OK.

Why was npm run clean removed in .travis.yml?

Because otherwise the coverage results get deleted and wouldn't be deployed.  I'm actually the one that added the clean (4 years ago apparently) and I think it was to ensure no extra files from earlier in the process were left around when makeZipFile was run, but I'm pretty confident it's not needed ad the resulting zips are the same, so it's safe to remove (so that coverage gets deployed).  Coverage itself is not in the zip, just on AWS.

We no longer need this Instrumented folder in the filesToClean list right?

No, good catch. There  are a few places that need to be updated.

The only thing is the command line options for npm run coverage aren't really documented anywhere (so you'd have to read the code to find out --browsers takes a comma separated list) but maybe that's OK.

This is true for a lot of our scripts. Could be a good code sprint item to clean things up but it certainly hasn't been an issue so far.

@OmarShehata it's over-engineered, but we now auto-generate an index.html with a list of browsers with coverage results.  So it works with multiple browsers without any kind of weird folder behavior.
This is ready.

Bump

I like this - this works pretty well now!


Gen4 hardware is not supported for this region.

user@Azure:~/tutorial/multicontainerwordpress$ az mysql server create--resource-group myResourceGroup --name my-db  --location "South Central US" --admin-user adminuser --admin-password xxxxxxxxxxxxxxx --sku-name B_Gen4_1 --version 5.7
Gen4 hardware is not supported for this region.

No explanation, or alternative given in the docs.
Edited: PII info

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

ID: b2472d79-baad-f202-75dc-c0d7c08e5c49
Version Independent ID: 7816cf1e-2264-e365-4d5c-b1fc9f7d08fe
Content: Tutorial: Create a multi-container app - Azure App Service
Content Source: articles/app-service/containers/tutorial-multi-container-app.md
Service: app-service
GitHub Login: @msangapu-msft
Microsoft Alias: msangapu

@ashooner Thank you for making us aware of this issue. Can you detail the region you attempted to deploy this tutorial? This will help us investigate on-going regional hardware updates that are still pending for this region.

Sorry, I'm just getting started in Azure so I might not be clear on nomenclature. I ran the initial command as is, just replacing the app name. the location was "South Central US". Incidentally bumping the sku_name to 'B_Gen5_1' seemed to work.

@ashooner, No worries. Glad to know that the issue is sorted out.
Much appreciate the follow-up and thanks for the update.
Gen4 hardware is being phased out and is no longer available for new deployments. All new databases must be deployed on Gen5 hardware.
Gen5 is available in most regions worldwide.
Kindly checkout this documentation for more details.
We will close this out, but if you feel you need more information please just let us know.