Add specialized byte buffer backends to spinoso-string

This PR takes a more robust approach to fixing the buffer over-read memory corruption issues that were mitigated in #1969 and #1975. Rather than playing whack-a-mole at String allocation sites to ensure the byte content of the underlying Vec<u8> is NUL terminated, this PR bakes this invariant into the type system.
Implement custom wrappers around Vec in spinoso-string
Issues https://github.com/artichoke/artichoke/pull/1969 and https://github.com/artichoke/artichoke/pull/1975 fixed memory unsafety due to a failure to uphold mruby's invariants that byte buffers stored in an RString* are always NUL terminated.
PRs https://github.com/artichoke/artichoke/pull/1969 and https://github.com/artichoke/artichoke/pull/1975 made tactical fixes at critical "FFI" portions of the MRB_API surface that are likely to be used directly by the mruby VM, but these tactical fixes are incomplete – not all String allocations went through these code paths, notably TryConvertMut implementations and trampoline methods that directly allocate String return values.
ca9644e07c007651ffd12e7a0069db9191eaaa4d adds two custom Vec types to spinoso-string in a new type called Buf. These crate-internal Vecs will be used by all encoded string types and can be specified at compile time by either enabling or disabling the always-nul-terminated-c-string-compat Cargo feature. The always-nul-terminated-c-string-compat is disabled by default because enabling it tends to incur extra allocations.
One variant added is a transparent wrapper around Vec; it does not change the semantics of any APIs or influence the way the inner alloc::vec::Vec allocates. The various encoded string variants in spinoso-string are updated to use the exported Buf type at spinoso_string::buf::Buf as their internal byte buffer.
A second variant is added that on construction (e.g. new, with_capacity, From impls) and mutation (methods that take &mut self) ensures that the buffer is NUL terminated in the spare capacity of the Vec by using the Vec::spare_capacity_mut and Vec::reserve_exact APIs. The NUL terminator will be present in the uninitialized memory that is part of the Vec's allocation and follows the len of the Vec. This is the magic of asserting this invariant, which requires no unsafe code:
fn ensure_nul_terminated(vec: &mut Vec<u8>) {
    const NUL_BYTE: u8 = 0;

    let spare_capacity = vec.spare_capacity_mut();
    // If the vec has spare capacity, set the first byte to NUL.
    if let Some(next) = spare_capacity.get_mut(0) {
        next.write(NUL_BYTE);
        return;
    }
    // Else `vec.len == vec.capacity`, so reserve an extra byte.
    vec.reserve_exact(1);
    let spare_capacity = vec.spare_capacity_mut();
    let next = spare_capacity.get_mut(0).expect("Vec should have spare capacity");
    next.write(NUL_BYTE);
}

Compatibility
Several const APIs have been made non-const to allow for future variants to allocate (for example, in String::new). The crate version has been bumped to 0.19.0.
When the always-nul-terminated-c-string-compat feature is enabled, Spinoso strings may allocate more than requested to enforce the NUL termination invariant.
The Buf variant that is activated when the always-nul-terminated-c-string-compat feature is enabled does not export methods for the Drain and Splice iterators. If this is required in a future iteration, wrappers around the types from std must be made to enforce the NUL termination invariant on drop of these iterator types.
Memory Safety
The mitigations in #1969 and #1975 are mostly reverted.
This test from #1975 yields no results and was verified by reverting e37c53c10c41b016be22f5cda796fcf13c6b31e1 and verifying that the memory corruptions still reproduce.
cargo run --bin spec-runner -q -- all-core-specs.toml > dump.txt
rg 'ArgumentError: regex crate utf8 backend for Regexp only supports UTF-8 haystacks' dump.txt

for those interested, this PR is best reviewed commit-by-commit.

The Check spinoso and scoalapasta crates job did not check the compiler errors in the latest build since it only runs cargo check, but these errors were errors in doctests.


Fix for scripts with curly braces after a command with  curly braces,…

Commands like e.g \hat{x}_{y} currenly throws an exception, but it should be valid latex. I've tested this change for a little while and have not encountered any problems.

Thanks!


Add iPad and Linux as OSName and update DeviceOSVersion logic

Guten Tag!
I have added iPad and Linux as recognizable OSName. This fixes iPad being recognized as MacOS and Linux being recognized as (n/a). Linux doesn't have any version in the header that why I have not added it to the VersionName switch case.
Also updated the DeviceOSVersion logic to also recognize Android 12 and Windows 10 properly
Example user agents
Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36.

Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Mobile Safari/537.36 EdgA/97.0.1072.78

Thank you very much!

I've just changed "iPad" to "iPadOS" (if the iOS version is >= 13) and published a new version


⚠ Mobitopup has degraded performance

In 263e8dd, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 3943 ms

Resolved: Mobitopup performance has improved in e87ed37.


Support unary operator overloading

Add support for operator overloading
Add postfix ++ and -- as overloadable operators
Fix bug with operator overloading

Codecov Report
Patch and project coverage have no change.

Comparison is base (7f1e5d3) 0.00% compared to head (b942d03) 0.00%.

:exclamation: Current head b942d03 differs from pull request most recent head 3ef36f0. Consider uploading reports for the commit 3ef36f0 to get more accurate results

Additional details and impacted files
@@     Coverage Diff     @@
##   main   #254   +/-   ##
===========================
===========================

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

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


Replace Interpolation With Fstring

I want to merge this change because...

I want to replace string interpolation using F strings.
There is a mixed usage of %-formatting and Fstrings, so I want to unify as much as possible.
However, I did not touch the graphQL query interpolation templates

Impact
None.
Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized, and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

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

@maarcingebala, Could you please approve the CI workflows?

It's all good, thank you for your contribution to Saleor @girisagar46 🎉


BetterSongList- Uh Oh Notification

I have both SongCore and this mod on and everytime I access solo mode, I get this notification.

This isnt about SongCore but about SongDataCore, which it advises you to remove.

This did remove the notification. Slight misread. I apologise.
I also thought this error was also causing the double letters on the "song name" sorting. Is this intentional? Because it reads both capital and lower case of the same letter on the list.

That is in fact not intended, I'll fix that.


Why samples still using .net version "1.0.0-preview2-003131"

Issue description
Just need to understand why these samples need .net core [1.0.0-preview2-003131], I guess which Out of support versions now. reference https://dotnet.microsoft.com/platform/support/policy/dotnet-core
Software versions
Check the .NET target framework(s) being used, and include the version number(s).

[ ] .NET Core
[ ] .NET 5.0 or later
[ ] .NET Framework
[ ] .NET Standard

If using the .NET Core SDK, include dotnet --info output. If using .NET Framework without the .NET Core SDK, include info from Visual Studio's Help > About Microsoft Visual Studio dialog.

dotnet --info output or About VS info
<replace>

Refer the screen shot below.

Hello @babula38 ... We're aware of it, but we can't resolve it quickly due to the volume of high priority issues that need to be addressed. Which sample(s) are you looking at?
@Rick-Anderson ... I meant to update ye olde sample tracking issue (dotnet/AspNetCore.Docs #5495) to provide insight on where things stand, but I've been busy for quite a while and couldn't get to it. The last update was 6/27/2019. Yikes! It got way under the radar. I'll try to update that when I get some time, but I'm not sure when that will be.

@guardrex I was wondering if .net 1 is the requirements. Otherwise I can open a PR for this change. Another question  what is the lowest version of C# the code is compiled? I.e. it is only C# 8 above or less than 8.0 version.

I was wondering if .net 1 is the requirements.

It's way out of support, so it shouldn't be used, including for docs+samples here. I'll need to run through the repo and identify where it's lingering so that management can decide what to do in each case. Some samples might be dropped entirely, others upgraded. They'll need to be addressed by management on a case-by-case basis.
https://dotnet.microsoft.com/platform/support/policy/dotnet-core

I can open a PR for this change

That can be rather difficult to pull off without a lot of prior knowledge (unfortunately). The docs often are paired to their sample apps, so concurrent changes are required in topics for sample updates. The changes often involve versioning the content in the topic and the sample. You still haven't said which sample(s) you're seeking to use. I can't advise further until I know which one(s) you're focused on.

what is the lowest version of C# the code is compiled? I.e. it is only C# 8 above or less than 8.0 version.

I think so ... research it further in the C# docs :point_right:

https://docs.microsoft.com/dotnet/csharp/whats-new/csharp-8
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version

Where is the sample? Provide a link.

@Rick-Anderson  below is the link https://github.com/dotnet/AspNetCore.Docs/tree/main/aspnetcore/mvc/controllers/application-model/sample/src/AppModelSample/Conventions

That one is on the sample tracking issue. It's for ...
https://docs.microsoft.com/aspnet/core/mvc/controllers/application-model

Idk @Rick-Anderson if you prefer these marked as a bug 🐞 or a docs experience. I'll set future labels accordingly after I hear back. :ear:

Bug.


Improve Let's Encrypt Vanity Domain Support

This is an issue encompassing multiple runtime issues encountered while using the vanity domain support for automatic TLS certificate issuing in production:

[x] Do not re-create certificate if ingress is re-created but TLS secret is still existing and valid

This happens e.g. when you manually delete an Ingress resource
[x] Also when this happens it seems to do le-challenge for unrelated ingresses.  So I delete ingress for A, acorn recreates ingress for A and then does A-le-challenge and then a B-le-challenge at some time later. In that case, B never gets the correct cert again.

[x] Fix LE-Challenge Ingress pathType to not be ImplementationSpecific

Looks good


[BUG] leave_guild throwing an error

Describe the bug.
When I try to use the method leave_guild, the library throws an error:
DEBUG:http:RETURN 400: {
    "code": 50109,
    "message": "The request body contains invalid JSON."
}

List the steps.

Create a Client object
make a list of all guilds the bot is on
call client._http.leave_guild(guild_id=guild_id)
observe nothing happening but an error inside of the debug console

What you expected.
The bot to leave all guilds hes on
What you saw.
Instead, I received this error given from my Python terminal:
DEBUG:http:RETURN 400: {
    "code": 50109,
    "message": "The request body contains invalid JSON."
}

What version of the library did you use?
unstable
Code of Conduct

[X] I agree to follow the contribution requirements.

After this was discussed in the support server, we've determined that the issue therein lies with us trying to send a JSON body for an endpoint that does not require it. We'll be flagging as an known bug.


Datagrip table view isn't themed

System Info: DataGrip, on Windows 11 with OneNord 0.1.1.

Hi! I can't seem to reproduce this locally, would you happen to know if this is the same issue as #12 or #13? (try Settings > Editor > Color Scheme and see if it got set to the Classic Light editor theme instead of OneNord)

Hi! I can't seem to reproduce this locally, would you happen to know if this is the same issue as #12 or #13? (try Settings > Editor > Color Scheme and see if it got set to the Classic Light editor theme instead of OneNord)

Ah I see, didn't see that. Thanks!

No problem! Sorry about this, I'm still not sure how to fix it and couldn't get a response from JetBrains so I'm not sure if it is just an editor thing because some themes have the same issue and some don't


chore: prettier

ran prettier

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#10  👈
#9
#8
#7
#6
#5
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @kcoderhtml and the rest of your teammates on  Graphite

Merge activity

Jun 25, 11:33 AM EDT: @kcoderhtml started a stack merge that includes this pull request via Graphite.


Change the default font?

The kivy default font looks kind of strange with the theme of the app. Maybe try something more medieval?

Did done fixd


Update Users endpoint with SQLAlchemy

Fixes

Part of https://github.com/Police-Data-Accessibility-Project/data-sources-app/issues/303, replacing the entire Users endpoint and testing apparatus with SQLAlchemy

Description

All methods related to the users table in database_client.py and corresponding tests are updated, changing SQL to SQLAlchemy
Existing models in models.py have been updated to utilize Declarative Mapping rather than legacy Imperative Mapping
Defines a new model ExternalAccount that related to the external_accounts table since there were existing joins with users
Uses a Native Enum for ExternalAccountType which defines the enum associated with account_type in the external_accounts table
Updates PsycopgResource.py to use the new middleware/initialize_sqlalchemy_session.py infrastructure
Updates app.py to initialize the db connection with SQLAlchemy

Testing

Checkout the branch
Setup testing environment like normal
Run pytest

[!NOTE]
The Github actions pytest run is failing because we updated the DB port number, which hasn't been updated in Github actions

Performance

The following average execution times were measured by running the command pytest test_database_client.py

With SQLAlchemy: 29.72 seconds
Without SQLAlchemy: 26.85 seconds

This is about a 9.4% increase in execution time when running the tests
Some of this increase can be attributed to the replacement of multiple sql queries used in the tests themselves with SQLAlchemy and performance impacts will not be reflected 1:1 in the live application, impact will likely be far less.
12 out of the 29 total tests had some or all of their functionality replaced with SQLAlchemy

I'm very happy with this so far. To provide my praise in handy bullet point format:

The changes are thorough
The pull-request is exceedingly well-detailed (with the performance comparison especially appreciated)
The updating to declarative mapping is a nice touch.
The code in general looks much cleaner.

With that in mind, I have three thoughts:

Let's get the other tests updated so that they are able to successfully pass.
When that's done, let's do a sanity test and call some of the relevant endpoints (like /user POST) to make sure they're operating as expected.
Let's have this pull request be focused solely on the users endpoint (and fixing the integration tests). This is a sizeable migration, and too many changes at once will make my eyes glaze over when doing the PR review. We can make subsequent PRs (not necessarily this exquisitely detailed) just to make it more manageable to review.

While I'm fine with having subsequent PR's be generally simpler, I do think keeping the performance comparisons for each conversion will be valuable. It's not a big deal with login takes slightly longer. If typeahead-suggestions does, however, that's worth noting.

While I'm fine with having subsequent PR's be generally simpler*, I do think keeping the performance comparisons for each conversion will be valuable. It's not a big deal with login takes slightly longer. If typeahead-suggestions does, however, that's worth noting.
*Not because I dislike the thoroughness (I love it), but because I imagine it's a bit of effort to write things out to this level.

Haha yeah I gotcha! Was planning on making things less detailed later, I just wanted to put more detail into this so that all my changes and decisions made sense :)

I went ahead and made some adjustments to the imports which were causing issues for me when using pytest -- not your fault, and more a product of the weirdness of pytest (I've made a note to make an issue on that). Looking more in-depth now!

Additionally, I will note that the connection_pool errors that we previously discussed were occurring here in these Github Action tests -- I was actually able to run them successfully on my own machine. It's likely partly because the stage environment does not have the same connection pooling that the dev environment does, which is something I can resolve without too much issue.

Additionally, I will note that the connection_pool errors that we previously discussed were occurring here in these Github Action tests -- I was actually able to run them successfully on my own machine. It's likely partly because the stage environment does not have the same connection pooling that the dev environment does, which is something I can resolve without too much issue.

@maxachis Yeah sorry I updated the NOTE part of the PR description but forgot to let you know directly. The Github actions tests are still using the old port and that's why they're failing

Regardless, I approve of this (and messaged Josh about updating the connection information in Github). There will be refactoring in the future to be done, both in terms of the overall logic and the fixtures. I'm very happy we made the DatabaseClient transition, because otherwise this would have been considerably messier.
And again, I do want to state that this is very strong work, @EvilDrPurple. This was not a simple task, and I imagine you had to deal with a number of headaches in terms of pytest and SqlAlchemy. This is setting up a model that will be used in subsequent conversions, and even the stumbling blocks will be useful here in telling us what to watch out for in the future.
Excellent work.


UI configuration problem

why the json result is enableJsonEditor?

Not sure what you're asking.

my project default jsonutil is fastjson, when i use swagger-ui, the result of ui configuration url(/configuration/ui) is enableJsonEditor, there should be jsonEditor, so suggest this json result use default name, not annotation


Show idle overlay when applets are viewed in an iframe

This adds an "idle" overlay when applets are viewed in an iframe. This way, the applets don't accidentally capture the scroll action when the user is scrolling through the book. The overlay is only enabled when the iframe URL parameter is set to true.
The overlay very subtly grays out the screen (not to get in the way of users who still want to see static images without interacting), and adds a small text in the top left corner.

Questions for reviewers:

How is the design of the overlay? Is it clear enough, and not too intrusive?
How long should the timeout be to show it again after inactivity?

Sliders should be immediately interactive. So in order of z-index: Controls -> Overlay -> Applet (2d/3d). When sliding, or in the new version clicking on a sliders should play the scene.

@yustarandomname good point! I think style-wise it makes more sense to put the overlay on top though. I'll see if I can implement that idea I had before, where the same click that dismisses the overlay can also still turn the camera or change the sliders. I'm thinking that if I use the mousedown event instead of click and let it propagate, that might work?
Otherwise I'll do what you suggested, and put it below the sliders

Another possibility that we could just disable the properties zoom & rotate of the Orbitcontrol in this file: SetCamera.svelte.
Then when the applet has some form of interaction (click on sliders, info button, canvas, etc...) we activate the zoom and rotate again.

Another thing to keep in mind is that the applet should go back to inactive after some time of inactivity. Otherwise the scroll capturing is still their just delayed.

Oh yeah that might be better actually! I'll give that a try
And it does indeed already go back to inactive after 60s of inactivity :)

is deprecated because PR #114 extends this PR


FIX Match search terms at the start of a string

Needless bool cast causes search terms with a 0 index to not get matched
Caused this failure
On this PR <- that PR is effectively the unit tests coverage for this PR
Because getElementsForSearch() now returns 'trimmed' content rather than content suuronded by whitespace which happened previously because the entire ElementalArea was being rendered, rather than individual content blocks delimited by a space
ElementalArea.ss (includes whitespace before and after the elemental content)
<% if $ElementControllers %>
    <% loop $ElementControllers %>
	   $Me
    <% end_loop %>
<% end_if %>

Failing test is an unrelated graphql4 issue


shell.nix: update to Tockloader v1.11.0pre-git

Pull Request Overview
This pull request updates the Tockloader release pinned in shell.nix to a development revision towards v1.11.0. It switches to the Tockloader package definition now included in its repo.
Testing Strategy
This pull request was tested by evaluating the Nix expression.
TODO or Help Wanted
~This change depends on tock/tockloader#104! It deliberately does not evaluate (sha256 = ""), to ensure that we update the rev to a revision with tock/tockloader#104 merged in.~
Documentation Updated

[x] Updated the relevant files in /docs, or no updates are required.

Formatting

[ ] Ran make prepush.

Seems good now that tock/tockloader#104 is merged

@lschuermann can you change this to a regular (non-draft) PR?

Yikes, I had the changes necessary to make this work locally but didn't push... :unamused:
I changed this PR's title and description to be more accurate -- we are, in fact, pinning a specific development revision (somewhere in between v1.10.0 and v1.11.0), as that ships with the required default.nix file.
This should be good to go now.


Lokalise: Translations update: Updating existing languages (en-us, en-uk, zh-tw, de, pl, es_es)

This pull request was initiated by Lokalise (user Do Hee Kim) at 2020-10-13 22:27:04

Verified the translation for Avatar error message, refer below screenshot.


Remove gulp-util dependency

After reading https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5, the authors are now officially deprecating gulp-util since they've released an alpha version of Gulp 4.0.0. Their recommendation is to replace it with the individual modules that your module needs. After looking through your code you can replace gulp-util.log with https://www.npmjs.com/package/fancy-log and replace gulp-util.PluginError with https://www.npmjs.com/package/plugin-error.

Can someone please help to merge the request and remove gulp-util ??

I have forked this project and published it independently as gulp-sonar2. Full credit to the original developers, just couldn't wait any longer...
https://github.com/DarrenMack-OD/gulp-sonar2


babel-loader not picking up .babelrc

Nice project!
Was going to try it but got into troubles with babel loader. It seems that it isn't picking up .babelrc. Any ideas before I investigate?
I have extensive babel config so I cant use a query String

I'm not sure if my setup is wonky but I just added '?extends=./.babelrc' as query and it's picking it up. So safe for now

Glad you worked around it. But I think it's because happypack's "fake" loader context might not be providing the loader with something it needs to resolve the babelrc file (maybe something like this.context? I have to investigate)
FWIW, it might be faster to roll your own "bare" babel transformer with the babelrc options either inlined or at least cached between calls. The stock loader performs the babelrc resolving & loading on every call which isn't optimal.

Closing this as it seems to be working. Feel free to re-open if you find otherwise.


build error with epics base <IP_ADDRESS> on ubuntu 24.04

I needed to upgrade to the latest base <IP_ADDRESS>, then I found ADAravis is not compiling, with the latest code:

The git info is:
commit e1510d98d9bb86735281a299ea5a448bedfa026c (HEAD -> master, origin/master, origin/HEAD)
Merge: bd8001b fc20cd9
Author: Tom C (DLS<EMAIL_ADDRESS>Date:   Wed Nov 27 16:00:30 2024 +0000

    Merge pull request #31 from areaDetector/license

    Add license
=================on ubuntu 24.04=================================================

lyang@lyHomeLinux:/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis$ make
make -C ./configure install
make[1]: Entering directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/configure'
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
    T_A=linux-x86_64 install
make[2]: Entering directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/configure/O.linux-x86_64'
perl -CSD /opt/epics/base/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/configure/O.linux-x86_64'
make[1]: Leaving directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/configure'
make -C ./aravisApp install
make[1]: Entering directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp'
make -C ./src install
make[2]: Entering directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp/src'
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
    T_A=linux-x86_64 install
make[3]: Entering directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp/src/O.linux-x86_64'
/usr/bin/g++  -D_GNU_SOURCE -D_DEFAULT_SOURCE          -D_X86_64_ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DUNIX  -Dlinux      -O3 -g   -Wall    -std=c++11  -mtune=generic     -m64  -fPIC -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include      -I/opt/epics/base/../modules/synApps_6_1_epics7/support/asyn-R4-45/include     -I/opt/epics/base/../modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADSupport/include/os/Linux -I/opt/epics/base/../modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADSupport/include   -I/opt/epics/base/../modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADCore/include -I/opt/epics/base/include/compiler/gcc -I/opt/epics/base/include/os/Linux -I/opt/epics/base/include   -I/opt/epics/base/../modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADGenICam/include    -I/usr/include/glib-2.0/glib/ -I/usr/include/glib-2.0/ -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -I/usr/local/include/aravis-0.8    -c ../ADAravis.cpp
../ADAravis.cpp: In member function ‘asynStatus ADAravis::makeCameraObject()’:
../ADAravis.cpp:404:19: error: ‘arv_gv_device_leave_control’ was not declared in this scope; did you mean ‘arv_gv_device_is_controller’?
  404 |             if (!(arv_gv_device_leave_control(ARV_GV_DEVICE(this->device),err.get()))){
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                   arv_gv_device_is_controller
make[3]: *** [/opt/epics/base/configure/RULES_BUILD:267: ADAravis.o] Error 1
make[3]: Leaving directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp/src/O.linux-x86_64'
make[2]: *** [/opt/epics/base/configure/RULES_ARCHS:58: install.linux-x86_64] Error 2
make[2]: Leaving directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp/src'
make[1]: *** [/opt/epics/base/configure/RULES_DIRS:85: src.install] Error 2
make[1]: Leaving directory '/opt/epics/modules/synApps_6_1_epics7/support/areaDetector-R3-7/ADAravis/aravisApp'
make: *** [/opt/epics/base/configure/RULES_DIRS:85: aravisApp.install] Error 2

What version of aravis are you using?

I git cloned the latest code, R2-3.
Maybe it’s not yet officially released yet?
On Mon, Dec 16, 2024 at 4:16 PM Mark Rivers @.***>
wrote:

What version of aravis are you using?
—
Reply to this email directly, view it on GitHub
https://github.com/areaDetector/ADAravis/issues/32#issuecomment-2547212497,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADSYGNF7OQONFYIKQEN4JKT2F5UOFAVCNFSM6AAAAABTXICWFGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNBXGIYTENBZG4
.
You are receiving this because you authored the thread.Message ID:
@.***>

I mean the version of aravis, not ADAravis.

I’m using Aravis 0-8-2.
On Mon, Dec 16, 2024 at 4:28 PM Mark Rivers @.***>
wrote:

I mean the version of aravis, not ADAravis.
—
Reply to this email directly, view it on GitHub
https://github.com/areaDetector/ADAravis/issues/32#issuecomment-2547234528,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADSYGNC7ZMBRAJVLDWSAG3L2F5VZBAVCNFSM6AAAAABTXICWFGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKNBXGIZTINJSHA
.
You are receiving this because you authored the thread.Message ID:
@.***>

Please look at the release notes:
https://github.com/areaDetector/ADAravis/blob/master/RELEASE.md
ADAravis R2-3 specifies a minimum version of aravis of 0-8-3 for exactly the error you are getting:

This release requires aravis version ARAVIS_0_8_3 or higher, because that is when arv_gv_leave_control() was added.

ADAravis compilation fails to find ADGenICamSupport.dbd file.
Is this file generated during compilation?  or it's supplied by the repo?

You need to use ADGenICam R1-10.

got it. thanks.
closing this thread.


[Feature] Action to change App group identifier in the Entitlements files

This can be used to change Apps from an App Store account to an Enterprise account(Inhouse-Distribution). The app groups are used for communication between app and extensions.
I will implement this after WWDC.

Great, looking forward :+1:

Closed with b93235ff1e788235e110412b8e23af064e128ec6 .

@KrauseFx should this stay open until it's released?

Thanks, we'll leave it closed :+1:


http: read on closed response body

I am trying to move layers from one registry to another.
Layer download is working fine however when I try to upload a layer I get http: read on closed response body"
I am not sure if the problem has to do something with the lack of my golang knowledge or an issue with reg.
	reader, err := sourceRegistry.DownloadLayer(sourceRepository,descriptor.Digest)
	if err != nil {
		Log.Errorf("error downloading layer %s from source Repository %s. Error is : %v",reference,sourceRepository, err)
		return
	}

	err = targetRegistry.UploadLayer(targetRepository,descriptor.Digest,reader)
	if err != nil {
		Log.Errorf("error uploading layer %s from source Repository %s. Error is : %s",reference,sourceRepository, err)
		return
	}

What I did so far was to dump, layer to a file which worked as expected. After this test I suspect the problem has to do with UploadLayer or rather its use of the http client.
	reader, err := sourceRegistry.DownloadLayer(sourceRepository,descriptor.Digest)
	if err != nil {
		Log.Errorf("error downloading layer %s from source Repository %s. Error is : %v",reference,sourceRepository, err)
		return
	}

	fo, err := os.Create("output.txt")
	if err != nil {
		panic(err)
	}
	// close fo on exit and check for its returned error
	defer func() {
		if err := fo.Close(); err != nil {
			panic(err)
		}
	}()
	// make a write buffer
	w := bufio.NewWriter(fo)
	buf := make([]byte, 1024)
	for {
		// read a chunk
		n, err := reader.Read(buf)
		if err != nil && err != io.EOF {
			panic(err)
		}
		if n == 0 {
			break
		}

		// write a chunk
		if _, err := w.Write(buf[:n]); err != nil {
			panic(err)
		}
	}

	if err = w.Flush(); err != nil {
		panic(err)
	}

you might want to use the github.com/docker/distribution api instead fwiw

thx, trying to figure out where to start with github.com/docker/distribution.
Does the API provide high level of abstraction. All I could find that comes close was in https://github.com/docker/distribution/blob/master/registry/client
https://github.com/docker/distribution/blob/f0cc927784781fa395c06317c58dea2841ece3a9/registry/client/repository.go#L516

Yeah theirs is a little weird...
On Wed, Jun 6, 2018 at 2:51 PM Vadim Bauer<EMAIL_ADDRESS>wrote:

thx, trying to figure out where to start with
github.com/docker/distribution.
Does the API provide high level of abstraction. All I could find that
comes close was in
https://github.com/docker/distribution/blob/master/registry/client
https://github.com/docker/distribution/blob/f0cc927784781fa395c06317c58dea2841ece3a9/registry/client/repository.go#L516
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/genuinetools/reg/issues/94#issuecomment-395209489,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABYNbLwiUVYVHG1c4rkCj1gOtPYRN3sHks5t6EDIgaJpZM4UcZrH
.

--
Jessie Frazelle
4096R / D4C4 DD60 0D66 F65A 8EFC  511E 18F3 685C 0022 BFF3
pgp.mit.edu http://pgp.mit.edu/pks/lookup?op=get&search=0x18F3685C0022BFF3

so what was happening in the above was that the go "reader" of the layer was closed when you passed it to the upload...

so either copying it or saving to a file and reopening like you did should work

The error happens in targetRegistry.UploadLayer, so I guess no matter what  I provide it should fail. However I will do some more testing and debugging.

As expected, using the way with a temp file leads to the error read layer.bin: file already closed"
I think somewhere around func (c *Client) Do(req *Request) (*Response, error) there is a premature stream close.

@jessfraz do you have an idea how this issue can be approached?


Add character features section

Class and Subclass features
Active and inactive features

[x] Add section itself
[ ] Add all abilities of Python


Add transform configuration for entities

Add @db-serializer and @db-deserializer, with @db-format to allow specification of transforms on entity

Create a ServerTransformer interface instead, and add a transformer property on the @Document annotation to specify the class.  Then by default when writing or reading this server transformer will generate the appropriate ServerTransform.  Could hard-code it in MarkLogicTemplate to call the transform, but maybe someplace better?


Consider switching from miniconda to miniforge

Tool name
miniconda
Tool license
https://legal.anaconda.com/policies/en/
Add or update?

[ ] Add
[X] Update

Desired version
miniforge
Approximate size
same
Brief description of tool
The licensing situation around miniconda seems increasingly unclear. Consider switching to miniforge which doesn't include any components that require agreeing to the Anaconda Licence.
URL for tool's homepage
https://github.com/conda-forge/miniforge
Provide a basic test case to validate the tool's functionality.
No response
Platforms where you need the tool

[ ] Azure DevOps
[ ] GitHub Actions

Runner images where you need the tool

[ ] Ubuntu 20.04
[ ] Ubuntu 22.04
[X] Ubuntu 24.04
[ ] macOS 12
[ ] macOS 13
[ ] macOS 13 Arm64
[X] macOS 14
[ ] macOS 14 Arm64
[ ] Windows Server 2019
[X] Windows Server 2022

Can this tool be installed during the build?
yes

Tool installation time in runtime
No response
Are you willing to submit a PR?
No response

Hi @jfrost-mo ,
Thank you for bringing this issue to us. We are looking into this issue and will update you on this issue after investigating.

This article describes the general issue: https://www.theregister.com/2024/08/08/anaconda_puts_the_squeeze_on
This blog post describes it in more technical and actionable terms: https://prefix.dev/blog/towards_a_vendor_lock_in_free_conda_experience

Hi @jfrost-mo
We are examining why the licence for miniconda is not explicitly stated, however it is most likely inherited from conda (BSD 3-Clause) and packages from conda-forge (various open-source licences). We will comment on it soon.
and  to integrate the miniforge utility in Ubuntu 24.04 and Windows Server 2022.  We will review and follow the approval  process to include, or if approval is denied, we will offer a workaround solution  and respond promptly.   Kindly be patient with us.

From my understanding distributing conda itself is fine, but using it to download any packages from the defaults channels requires a licence from Anaconda, Inc for many organisations.
Miniconda defaults to using the defaults channels, while miniforge does not include them, and just has conda-forge, which is openly usable.

Hi @jfrost-mo
During our initial investigation by our team , we understood that miniconda is a lightweight tool, and Anaconda  maintains the "defaults" channel to ensure that packages are compatible and routinely updated, and  we have been investigating and comparing with MiniForge to take a call with the GitHub approval team.
Please bear with us till we provide additional updates.

Hi
We appreciate that you highlighted the limits of miniconda, but we included  miniconda in Ubuntu 20 to 22 and continued in the the latest Ubuntu release.
We are now closing this ticket, and we assure you that we have taken note of and discussed it; if more users want the same, we will initiate the process to add your recommendation.
Please continue as is, alternatively you can add the selected miniforge version in the runtime for your builds.
Thank you.


'stylePreprocessorOptions' does not respect the root path

Bug Report or Feature Request (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request

Area
- [x] devkit
- [ ] schematics

Versions

node -v # 8.9.4
npm -v # 5.8.0
Repro steps

Assuming your in an 6.0 workspace...

ng g application foo --style scss
Edit foo application in angular.json to"stylePreprocessorOptions": {
  "includePaths": [
    "src/scss"
  ]
}

Create a new directory, mkdir -p projects/foo/src/scss
Touch projects/foo/src/scss/_variables.scss
In projects/foo/src/styles.scss, add @import 'variables';
ng build

The log given by the failure

ERROR in ./src/styles.scss (/Users/stephencavaliere/test/foo/node_modules/@angular-devkit/build-angular/src/angular-cli-files/plugins/raw-css-loader.js!/Users/stephencavaliere/test/foo/node_modules/postcss-loader/lib??embedded!/Users/stephencavaliere/test/foo/node_modules/sass-loader/lib/loader.js??ref--14-3!./src/styles.scss)
Module build failed:
@import 'variables';
^
      File to import not found or unreadable: variables.
      in /Users/stephencavaliere/test/foo/projects/foo/src/styles.scss (line 2, column 1)

Desired functionality

The user should be able add an include path and not have to reference the relative path in scss files.
Mention any other details that might be useful

Try projects/foo/src/scss

Hmm, that works. Thanks, @leo6104!
It feels like a regression though. In 1.x projects, you were able to just specify the path relative to project root. Now you must specify everything (index.html, polyfills.ts, etc) from projects/foo. The root property is specified as projects/foo/ which is why it feels weird to have to keep specifying part of the root path everywhere.
1.x version (edited for brevity)
  "apps": [
    {
      "root": "src",
      ...
      "stylePreprocessorOptions": {
		  "includePaths": [
		    "scss"
		  ]
	  }
      ...
    }

Spoke with @hansl about the direction of the devkit.

paths should always be relative to the file they’re in.

With that, this issue is invalid since the solution @leo6104 provided works.


Support for logical types

In the schema registry module of kafkajs, it's possible to add logical types while initialising the schema registry (ref). The typings for SchemaRegistryAPIClientArgs uses only the basic config.
Proposal: add the further configuration options to KafkaAvroResponseDeserializer.
Cheers!

This is something i've wanted to add as i've had a few issues with decoding certain logical types and would be good to have this ability.

This options now exist in the master branch. Will look to add some examples around this.


Bubble sort | C++

Bubble sort -
what will change - A file with code of Bubble sort.
Type of Issue -
Please add/delete options that are not relevant.

[x] Adding New Code

Programming Language
Please add/delete options that are not relevant.

[x] C++

Self Check

Ask for issue assignment before making Pull Request.
Add your file in the proper folder
Clean Code and Documentation for better readability
Add Title and Description of the program in the file

:star2: Star it :fork_and_knife:Fork it :handshake: Contribute to it!
Happy Coding,

I appreciate it if you could assign this issue to me. I love to work on it.
Thank you.

@sahebsunny Do not open issues on topics ehich are already implemented. They will not be entertained!


Use "await DispatchAsync" instead of "await Dispatch" when returning a task

Use "await DispatchAsync" instead of "await Dispatch" when the inner method is returning a task. Because you want to await the inner task in the dispatcher and the outer task is awaiting the dispatcher. If you use Dispatch, when you will return the task and await it from outside. This is wrong.

Yes, all good changes

I still want this. If you want it in 10.1 target that branch, otherwise, 10.2 welcomes it.


VTerm fails to build

I am using this package with home-manager and have exactly the configuration as the readme suggests. However, performing home-manager switch  results in the following:
gcc: error: unrecognized command-line option '-VTermSBClearNotExists'
make[2]: *** [CMakeFiles/vterm-module.dir/build.make:76: CMakeFiles/vterm-module.dir/vterm-module.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:84: CMakeFiles/vterm-module.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
error: builder for '/nix/store/l6x8272s8lhdgldlmaqgl7bfb0p5cslz-emacs-vterm-20221117.1342.drv' failed with exit code 2;
       last 10 log lines:
       > Checking /nix/store/fg82mvclvy8p6w3ppsxbfjwd6qqm0yvd-emacs-vterm-20221117.1342/share/emacs/site-lisp/elpa/vterm-20221117.1342/build/CMakeFiles/3.22.3/CompilerIdC...
       > Checking /nix/store/fg82mvclvy8p6w3ppsxbfjwd6qqm0yvd-emacs-vterm-20221117.1342/share/emacs/site-lisp/elpa/vterm-20221117.1342/build/CMakeFiles/3.22.3/CompilerIdC/tmp...
       > Done (Total of 1 file compiled, 2 skipped)
       > Parsing tar file...
       > Parsing tar file...done
       > [ 25%] Building C object CMakeFiles/vterm-module.dir/vterm-module.c.o
       > gcc: error: unrecognized command-line option '-VTermSBClearNotExists'
       > make[2]: *** [CMakeFiles/vterm-module.dir/build.make:76: CMakeFiles/vterm-module.dir/vterm-module.c.o] Error 1
       > make[1]: *** [CMakeFiles/Makefile2:84: CMakeFiles/vterm-module.dir/all] Error 2
       > make: *** [Makefile:91: all] Error 2
       For full logs, run 'nix log /nix/store/l6x8272s8lhdgldlmaqgl7bfb0p5cslz-emacs-vterm-20221117.1342.drv'.
error: 1 dependencies of derivation '/nix/store/7yjqsrm8g47d9z5vg4j9czi93kdgc5zc-install-repo.drv' failed to build
error: 1 dependencies of derivation '/nix/store/afca5grc11p0qgks0v371bc70wm74la2-straight-emacs-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/6waca6x5w7a7m2ilp7b2d5cn9azy4sim-emacs-with-packages-28.1.drv' failed to build
error: 1 dependencies of derivation '/nix/store/kqcr61f0sy5dfgpc5czdxxdgg7azp51z-emacs.service.drv' failed to build
error: 1 dependencies of derivation '/nix/store/kpim48zqz581crpr0kqjiawcl37qzdwn-home-manager-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/40dks5n692ivcaqj6psa8r9369bma4xm-home-manager-generation.drv' failed to build

I can see that libvterm has fixed the issue on their repo but the fix is not reflected in this package.
https://github.com/akermu/emacs-libvterm/issues/643
Not sure how to get the fix on my machine though... please advise.

Seems like the issue is fixed in the latest master of this repo.


p.Run undefined (type *tea.Program has no field or method Run)

Not sure if this is a bug or a documentation issue.
Following the tutorial in the readme and I get this error
p.Run undefined (type *tea.Program has no field or method Run)

I can get the tutorial example working if I change p.Run to p.Start. Is this a document change or a code change issue?

Run is a new method in master and it sounds like you're using the last stable version of tea. I suggest either bumping your tea dependency to master or switching to the documentation of the last release.


feat: adds support for newer config for wasm plugins.

Right now what we receive under config for a wasm plugin we forward it to the wasm guest without having the opportunity to config the runtime. This change allows to support a new config structure which fields under 'runtime' will configure the runtime and those under 'config' will be sent directly to the guest as well as supporting the old structure. This is related to https://github.com/traefik/traefik/issues/10739 and https://github.com/jcchavezs/coraza-http-wasm/pull/19
Both configurations will be supported but I suggest we update Traefik documents to support the later one.
# old way
http:
# ...
  middlewares:
    waf:
      plugin:
        coraza:
          directives:
            - SecRuleEngine On
            - SecDebugLog /dev/stdout

# new way
http:
# ...
  middlewares:
    waf:
      plugin:
        coraza:
          runtime:
            rootFS: /etc/traefik
          guestConfig:
            directives:
              - SecRuleEngine On
              - SecDebugLog /dev/stdout

Tests will come if the design of the feature is approved.

Hi @jcchavezs,
Thanks for this PR, with @juliens we are thinking about a different approach to configure the fs mount on the host.
WDYT of configuring the runtime mounts in the static configuration like that:
experimental:
  plugins:
    traefik-wasm-grain:
      moduleName: "github.com/jcchavezs/coraza-http-wasm-traefik"
      version: "v0.2.1"
      runtime:
        mounts:
          - /src:/dst:ro

To us it will ease the UX because the mounts file need to be on the same host as Traefik and we are thinking that configuring mounts on the dynamic configuration could be confusing for end user.

@mmatur that sounds very legit but I wonder if runtime should be a first class element in plugin. Is there any other plugin that has extra configuration? shall we call it runtime or something like "host_config"?
Maybe we make this generic? Also, is it possible to pass this all the way up to the middleware creation?

I guess this is unique to wasm environment as other plugins have direct access to filesystem. If that is the case maybe we call it settings.

@jcchavezs thanks for your answer

I wonder if runtime should be a first class element in plugin

We think that it should not because with this approach you can't have multiple plugins with different fs mount like the following
experimental:
  plugins:
    coraza:
      moduleName: "github.com/jcchavezs/coraza-http-wasm-traefik"
      version: "v0.2.1"
      runtime:
        mounts:
          - /src:/dst:ro
    coraza2:
      moduleName: "github.com/jcchavezs/coraza-http-wasm-traefik"
      version: "v0.2.1"
      runtime:
        mounts:
          - /tmp:/tmp:rw

Is there any other plugin that has extra configuration?

For now there is no other plugin that require this extra configuration.

Maybe we make this generic? Also, is it possible to pass this all the way up to the middleware creation?

It should.

I guess this is mainly for wasm environments as other plugins have direct access to filesystem.

Today, yes it is only for WASM plugin but we can imagine introducing that for yaegi in the future for security reason (like enabling unsafe)

Ok, just one thing: maybe instead of runtime we call it settings.
José Carlos Chávez
ons. 12. juni 2024 kl. 14:20 skrev Michael @.***>:

@jcchavezs https://github.com/jcchavezs thanks for your answer
I wonder if runtime should be a first class element in plugin
We think that it should not because with this approach you can't have
multiple plugins with different fs mount like the following
experimental:
plugins:
coraza:
moduleName: "github.com/jcchavezs/coraza-http-wasm-traefik"
version: "v0.2.1"
runtime:
mounts:
- /src:/dst:ro
coraza2:
moduleName: "github.com/jcchavezs/coraza-http-wasm-traefik"
version: "v0.2.1"
runtime:
mounts:
- /tmp:/tmp:rw
Is there any other plugin that has extra configuration?
For now there is no other plugin that require this extra configuration.
Maybe we make this generic? Also, is it possible to pass this all the way
up to the middleware creation?
It should.
I guess this is mainly for wasm environments as other plugins have direct
access to filesystem.
Today, yes it is only for WASM plugin but we can imagine introducing that
for yaegi in the future for security reason (like enabling unsafe)
—
Reply to this email directly, view it on GitHub
https://github.com/traefik/traefik/pull/10791#issuecomment-2162869085,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAXOYAX3TSBROY6JWONHELLZHA4ILAVCNFSM6AAAAABI6IK7DGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNRSHA3DSMBYGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Hello @jcchavezs
During our work on this PR https://github.com/traefik/traefik/pull/10829 we integrated this feature, if it's seems ok for you, may be we can close this one?

Hello @jcchavezs ,
As said previously, I think the config was handled in the PR #10829 so I close the PR, if you think we still need something from this PR, feel free to open a new one.


Incorrect Requirements mentioned

Building example gave me error:
github.com/gagliardetto/solana-go/rpc/jsonrpc
../../../../../go/pkg/mod/github.com/gagliardetto/solana-go@v1.11.0/rpc/jsonrpc/jsonrpc.go:535:28: undefined: atomic.Uint64
note: module requires Go 1.19
As said - it looks like minimal version of Golang is not 1.18 , but 1.19++

The problem is :
var integerID = new(atomic.Uint64)
it is not supported in 1.18. It can be updated for
var integerID = new(uint64)
and in function newID   I've changed it to:
func newID() any { 	if useFixedID { 		return defaultFixedID 	} 	if UseIntegerID {         atomic.AddUint64(integerID,1) 		return integerID 	} 	return uuid.New().String() }
code does build on 1.18 , but not sure what it changes - so most probably you should update min Requirements in readme

Updated, thanks!


FINERACT-982 - Completely ditch use of Drizzle JDBC Driver

https://github.com/apache/fineract/pull/1366

Cargo is failing to start. Probably cause it can't find the driver.

I've added connector as an external library for cargo. It should be OK now.

@ptuomola please can I have your support on this?
I've been trying a couple of hacks here with cargo. I managed to externalize our JDBC driver but then I noticed cargo works in containerized environment so I tried to add the jar to its classpath with a download task. I tested it on my local and it works but fails everytime with travis. Maybe you have an idea why it's happening.

@ptuomola please can I have your support on this?
I've been trying a couple of hacks here with cargo. I managed to externalize our JDBC driver but then I noticed cargo works in containerized environment so I tried to add the jar to its classpath with a download task. I tested it on my local and it works but fails evrytime with travis.


Working for NENAH017

dwi-PA for subject NENAH017 is faulty - see here

mrinfo output for image series "ep2d_diff_b2600_iso2p3_phase_PA_42dir (*ep_b1000#24) [31] ORIGINAL PRIMARY DIFFUSION NONE ND NORM":
From raw data - 1763 volumes
From Syngo - 1762 volumes
See attached for full outputs.
To do:
This case is no longer at Syngo and need to be pushed again. Try re-downloading this case from Syngo to see whether this issue persists.


Update to Gradle 8.3

Description
Update to Gradle 8.3
Issues Resolved
N.A
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@dblock mind please taking a look?


Uptimerobot API limit

Is your feature request related to a problem? Please describe.
I am running 5 monitors but as Uptimerobot introduced a API rate limit (10 per minute for the free edition) I run into the message "There seems to be an issue connecting to Uptimerobot. Please try again in a few minutes." every second run. So I did a trace and I saw that even a pause/unpause for 1 specific monitor will iterate (curl) through all monitors.
Describe the solution you'd like
Would it be possible to reduce the number of api (curl-) calls? Especially when only working with single monitor-id's?
Describe alternatives you've considered
Additional context

It was written to grab everything initially so it could easily list them all and their status. It would take too long for me to rewrite the entire script to work with only the specified monitors when a pause or unpause is requested. Time that I, unfortunately, do not have right now and will not have in the foreseeable future. I will welcome PRs, code snippets, etc, but that's all I can do.
With UptimeRobots introduction of the API limits, I personally switched over to using a self-hosted instance of HealthChecks.io and Upptime (works through GitHub) to monitor my externally facing Services.

Unfortunately I am a rookie with git but I think, changing only 1 line would to the trick (at least for UptimeRobot):
replacing line 767
curl --fail -s -X POST -H "Content-Type: application/x-www-form-urlencoded" -H "Cache-Control: no-cache" "${apiUrl}"getMonitors -d "api_key=${apiKey}" -d "format=json" -d "monitors=${monitor}" > "${tempDir}${monitor}".txt || fatal
with
jq -r '. | {stat: .stat, pagination: .pagination, monitors: [.monitors[] | select(.id=='"${monitor}"')]} | .pagination.total=1' ${monitorsFullFile} > "${tempDir}${monitor}".txt || fatal

Your solution does work, which is awesome, so thank you. Just some minor things I have to change/remove so I'm going to close your PR and commit the change to the develop branch for you to test. I did test it a bit myself and it seems to be working. Bravo.

Glad I could help a little bit! And finally a good reason to play around with git (which was on my to-do list for a long time) :-)
Sorry for the comments in the code but the contribution guidelines stated it, so I added them. Will checkout the develop branch and give it a try.

No worries, comments are always helpful. Glad you got the bump to play with git. Let me know how your testing goes and, if all is well, I will merge things into the master branch.

I just tested the develop branch and it works great - i tried:

list
pause/unpause single monitor
pause/unpause multiple monitors (comma seperated)
pause/unpause all monitors

Of course this doesn't solve the problem that you only have 10 api calls per minute but instead you can have up to 50 monitors in the free plan. So if you have more than 10 monitors in the free plan and you want to pause/unpause them all, you will always run into the api call restriction and therefore in an error.
But I passed this question directly to uptime robot if they can:
a) implement a id-all argument
b) implement multiple ids in one call
c) giving another solution if a) and b) doesn't work
Let's see what they respond :-)

Awesome, thanks so much for testing and getting back to me. I hope they respond and can make some improvements, but I'm not holding me breath. Keep me posted.
If you think this can be closed, go ahead and close it and I will merge the develop branch into master.

I will let you know as soon as they come back with an answer. However I will definitely have a look into a self-hosted instance of HealthChecks.io and Upptime. Thanks for that and for the quick merge!


Add aliases in API

Fixes #1431
PR in progres, not implemented yet: TreeSet, all Map-s and test for all aliases.
Please check JavaDoc - is they correct, or I need a copy JavaDoc form target methods?

Current coverage is 96.54% (diff: 0.00%)

Merging #1500 into master will decrease coverage by 0.56%

@@             master      #1500   diff @@
==========================================
  Files            86         86
  Lines         10422      10483    +61
  Methods           0          0
  Messages          0          0
  Branches       1825       1825
==========================================
  Hits          10121      10121
- Misses          173        234    +61
  Partials        128        128

Powered by Codecov. Last update 5a43b68...fc62ca7

Thx @valery1707, I like it. I think the aliases will come handy to make code more concise!

@danieldietrich , I update JavaDoc - please check.
Later I create tests and aliases for TreeSet and Map-s

Great work so far, thank you. I can't just pull it in because I'm still not sure about the function names.
In near future there will be also CheckedConsumer, CheckedBiConsumer, CheckedRunnable, CheckedSupplier, CheckedPredicate, CheckedBiPredicate. Or maybe CheckedConsumer1..8, CheckedPredicate1..8 - not sure yet. But we need abbreviations for these, too.
I think these names are better:

function0..8 - Function0..8
checkedFunction0..8 - CheckedFunction0..8

and later:

checkedSupplier - CheckedSupplier
checkedRunnable - CheckedRunnable
checkedPredicate1..8 - CheckedPredicate1..8
checkedConsumer1..8 - CheckedConsumer1..8

Example (future Java version):
val foo = checkedFunction2(this::bar);

@valery1707 please rename f0..8 to function0..8 and cf0..8 to checkedFunction0..8.

@danieldietrich ok, soon. Anyway PR is not completed yet, I still need create tests and aliases for all Map-s and TreeSet

Great, thanks! These will be really useful to users. Take your time.
- Daniel

FWIW I do regret a little the shorter f1 compared to function1. Maybe fun or func could be options?

Good job @valery1707!
I also vote for no abbreviations, they always seem like a good idea at the time and always turn out to be a bad investment. I usually search for shorter synonyms, when the names get too long.
What I currently miss from the syntax is ranges, for which I guess the ones from Iterator should be used (every other class just uses those anyway, and we definitely need laziness there by default).
opinions, @danieldietrich?

@valery1707, would it be possible for you to fix mistakes in the same commit there were made?
Pull requests are meant to fix all mistakes that were found, without confusing the future generation with confusing commit histories. Also, new reviewers shouldn't go over redundant commits that modify the same line multiple times.
You can edit previous commits by doing an interactive rebase (in Idea there's a GUI for that - VCS / Git).
In the end, the commits should be divided logically, not historically (i.e. added checked function aliases, added collection static factories etc :)

@paplorinc OK

@paplorinc currently I already mixed commits with adding different parts.
After this PR will good for everyone, I can create new PR with splitted commits for different parts of API, or with merged all commits in one, for future simplicity

@danieldietrich @paplorinc @emmanueltouzery What alias use for Function1..8/CheckedFunction1..8?

After this PR will good for everyone, I can create new PR with splitted commits for different part

In git you can modify the history, and PRs are meant for that (i.e. it's ok to force push BEFORE it's merged).
You can force push (http://stackoverflow.com/questions/5509543/how-do-i-properly-force-a-git-push), in order for the commit history to make sense: otherwise it just represents your mistakes, not a logical order of steps.

@paplorinc I known about history rewrite and force push. I don't use force push with GitHub PR. If PR will correctly work with force push - I will rewrite history within this PR

@valery1707

What alias use for Function1..8/CheckedFunction1..8?

We go with the long names function1..8()/checkedFunction1..8(). Otherwise we will regret it when introducing more function types (Consumer, Runnable, Supplier, Predicate etc.)

@paplorinc

do we need these?

There is one thing that still bothers me - we will have mixed upper case and lower case factory methods, e.g.

upper case API.Option() but lower case Option.some(), Option.none()

This idea is still unfinished...

There is one thing that still bothers me - we will have mixed upper case and lower case factory methods, e.g.

Could you please explain the need for upper-camel? If it's simply to model Scala's companion constructor, we could simply translate that to statically-importable lowercase static factories, e.g. option, some, checkedFunction.
About API, well, it could have a prefix of e.g. $ or _, but still lowercase, e.g. $option.

Yes, that's a valid solution I also currently think about.
Deconstructors (read: unapply patterns) and constructors are dual. This should be reflected by the name. I think we have two options: both upper- or both lower case. Distinguishing them is mandatory. A prefix should work fine ('$' would integrate well for the patterns).
These are our options:

All methods upper or all lower case, e.g. Some()/$Some() vs some()/$some()
Define all methods within javaslang.API or all within related types or a hybrid solution

Each type has several of and ofAll methods in general. When adding new factory methods we concentrate on of(T) and of(T...).
Looking at Option we will take one of these approaches:

API.Option(T), API.Option(T...) and Patterns.$Option()
API.option(T), API.option(T...) and Patterns.$option()
Option.Option(T), Option.Option(T...) and Patterns.$Option()
Option.option(T), Option.option(T...) and Patterns.$option()

I like to just import static javaslang.API.* and then start to write Javaslang using Match, For and almost all of the Values, Tuples and (Checked)Functions.
We could also define the following in idiomatic Javaslang:

Static factory methods related to types are lower case and not intended to be imported statically, e.g. we always use Option.some(...) instead of some(...). This would go adhere with of and ofAll.
The javaslang.API is intended to be used as static import only. E.g. we write For and Match instead of API.For and API.Match.
API contains the keywords of the Java_slang_. These keywords are all upper-case in order to circumvent name-clashes with default Java. E.g. we have For and Try(() -> computation) instead of for and try(() -> computation()).
We would then add also API.Some() and API.None() in addition to Option.some() and Option.none().

In other words Some(...) and Option.some() are different in the way they are used, the former as static import, the latter full qualified. The case indicates the usage.

@danieldietrich PR ready for check

@valery1707, wow, really nice job, congrats!
Neat, organized commits, nice generator, tests ... can't wait to start using it! :)
Once all is accepted, it would be nice to apply these to Javaslang itself (including tests), to serve as documentation! :)

Thank you @valery1707! This looks great! We still will have some changes regarding naming.
I have an idea regarding the Patterns vs the aliases. Maybe we can fuse these concepts.
Example: Option
The Option patterns look like this:
    public static <T, _1 extends T> Pattern1<Option.Some<T>, _1> Some(Pattern<_1, ?> p1) {
        return Pattern1.of(Option.Some.class, p1, javaslang.$::Some);
    }

    public static <T> Pattern0<Option.None<T>> None() {
        return Pattern0.of(Option.None.class);
    }

where Pattern0 and Pattern1 are defined like this:
public interface Pattern<T, R> extends java.util.function.Function<T, javaslang.control.Option<R>> {}

public static abstract class Pattern0<T> implements Pattern<T, T> { ... }

public static abstract class Pattern1<T, T1> implements Pattern<T, T1> { ... }

I'm not sure why I made Pattern0 .. Pattern1 abstract classes instead of interfaces. (There was a reason, I have to investigate...). But if these could be interfaces, Option.None could directly implement Pattern0 and Option.Some could implement Pattern1.
Then the aliases Some(...) and None() would be both, instances of Option and also patterns that can be used with pattern matching.
The borderline is, that Objects have a constructor and also an unapply method. It is still just an idea - I need to play around with it...
I will continue the review tomorrow, need some sleep :)

@danieldietrich @paplorinc now I have some questions:
What aliases we need for access for LinkedHashSet, HashSet, LinkedHashMap, HashMap?

linkedHashSet, hashSet, linkedHashMap, hashMap
linkedSet, set, linkedMap, map

What aliases we need for access for TreeSet, TreeMap?

treeSet, treeMap
sortedSet, sortedMap

In alias for TreeSet/TreeMap we need return TreeSet/TreeMap or SortedSet/SortedMap?
Should all aliases start with lower case or upper case character?

@valery1707

What aliases we need for access for LinkedHashSet, HashSet, LinkedHashMap, HashMap?

See my comment

Should all aliases start with lower case or upper case character?

We target upper case. (This will solve also the problem with 'Try'  vs 'try')

@danieldietrich @paplorinc
Already:

Removed hash from aliases for HashSet, LinkedHashSet, HashMap, LinkedHashMap
In name for TreeMap aliases used sorted prefix
Build Java's Stream directly
Add alias Seq, IndexedSeq

Soon:

All aliases started with upper char

Now almost all aliases started with upper case char.
API#None clashed with $#None and Patterns#None - what I need to do?
Currently API have only one lower case alias: none.
@danieldietrich and @paplorinc please review

@valery1707 Thank you!
I don't think that API#None clashes with $#None and Patterns#None. This is only the case then both are imported. I will deprecate $and Patterns, not with the intend to remove them (which would break existing apps) but with the intend not to use them any more. API.* will be a replacement.
I thought about letting all Values extend some sort of pattern, e.g.
interface HashSet<T> implements Pattern... {
    Tuple... unapply() {
        return ...;
    }
}

But this will cause problems within the type hierarchy I think. We do want to unapply a Set, a SortedSet, etc. But only one of them can implement a Pattern.
There might be another solution: Maybe it is practicable to return joint union in type parameters:
<T extends Set<T> & Pattern0> T Set() {
    return ...
}

<T extends Set<T> & Pattern2> T Set(T head, T... tail) {
    return ...
}

Option(t), None() and Some(t) all need to return an Option. This is important for correct type-inference in other expressions. I have to ensure that inference still works with the joint union solution above.
By using only interfaces (e.g. Set and Pattern*), we are able to provide runtime implementations (Proxies). But I don't want to have this overhead. Maybe there is another solution.
There's still something to do for me before we can pull this change in. It is important to get the basis right because if we release something we cannot change it without breaking existing code.
Stay tuned! I think I will first pull in @paplorinc's Vector optimizations. He's waiting for so long now...

I don't think that API#None clashes with $#None and Patterns#None. This is only the case then both are imported.

Yes, this happens only if both methods are imported. But at current time MatchTest use full static import from both API and Patterns.
I change imports in MatchTest to import only required parts of API.
Now all aliases in API start with upper case char.
@danieldietrich and @paplorinc PR again ready for review.

Great work @valery1707 - the users will definitely love this one :-)

@ruslansennov The build currently fails - the GWT module says it has no sources for Future etc. Could you take a look please? I have no idea what to do...
Does @valery1707 need to merge with master again because we pulled in GWT support yesterday?
Thank you :-)

The build currently fails - the GWT module says it has no sources for Future etc. Could you take a look please? I have no idea what to do...

The whole package javaslang.concurrent was excluded from GWT sources because of its incompatible. So, GWT-compiler knows nothing about Future etc. All new methods that uses GWT-incompatible objects should be marked with @GwtIncompatible annotation.
For example, this new API method
public static <T> Future<T> Future(CheckedSupplier<? extends T> computation) {
    return Future.of(computation);
}

should be modified:
@GwtIncompatible
public static <T> Future<T> Future(CheckedSupplier<? extends T> computation) {
    return Future.of(computation);
}

Does valery1707 need to merge with master again because we pulled in GWT support yesterday?

Definitely yes. @valery1707 sorry :)

@valery1707 One more thing: for Maps (Map, SortedMap, LinkedMap) we need also the following, which is one of the main initializers I currently use because of its conciseness:
Map(
  1, "a",
  2, "b",
  3, "c"
);

Example implementation:
public static <K, V> HashMap<K, V> Map(Object... pairs) {
    return HashMap.of(pairs);
}

@danieldietrich , I don't implement initializer for pairs because of they is not type-safe.
Will be implemented.
P.S.
Sorry for bad english :(

@danieldietrich, I agree with @valery1707, I don't like the unsafe version either (e.g. HashMap<Integer> = Map('a');), but now that we have compact tuples, it could be:
Map(
  Tuple(1, "a"),
  Tuple(2, "b"),
  Tuple(3, "c")
);

or maybe we should think about making Tuple construction special (as in Scala) and create a method called _ or $ or T in the API instead, making it typesafe, number-of-arguments-safe like:
Map(
  T(1, "a"),
  T(2, "b"),
  T(3, "c")
);

I know that Map pair initializers are unsafe. But they will most probably come to the JDK also! See JEP 269

@valery1707 @paplorinc Let's keep Map(Object...).
I know, it is unsafe, but it is a static constructor. Code that fails will most probably fail on first run and can be fixed. Let's do it this way.

@danieldietrich maybe create alias Map(Object...) with @Deprecated annotation?

@valery1707 no @Deprecated for now...

Completed:

Rebase to current master. @ruslansennov all good, don't worry
All future's aliases excluded from GWT
All local variables are final
Minor fixes in Generator for Either, Try and Future
Remove Nothing
Fix typos in some JavaDoc
Use {@link ClassName} inplace of {@code ClassName}
Add alias for PriorityQueue
Add aliases for empty collections and maps
Add aliases for maps of tuple vararg
Add unsafe alias for maps with Object vararg

@danieldietrich and @paplorinc please review.

@valery1707, awesome job, please update the description if you consider it done now :)!

@valery1707 Yes, awesome job!!

After the PR is before the PR :) Therefore I want to share some thoughts with you.
@paplorinc  talked to me because I rejected a change that was unsafe (toJavaArray(Class<? super T>)).
And Lorinc is also right when saying that Map(Object...) is unsafe. Stuart Marks explained in his JavaOne 2016 Session Collections Refueled how and why the Java language architects implemented JEP 269.
The essence regarding Map.of()is best described by this image:

Javaslang needs to be safe. We will follow the decisions made in JEP 269 and therefore we will deprecate or *Map.of(Object...) methods and strongly discourage using them. Instead we will add methods

of(K k1, V v1)
of(K k1, V v1, K k2, V v2)
...

up to 10 key/value pairs. For more than 10 pairs we need to use tuples:

of(Tuple2<? extends K, ? extends V>...)

Accordingly we will also deprecate ofEntries(Tuple2<? extends K,? extends V>...).
(See also #1608)
Another pain-point is the long name 'Tuple(...)'. Lorinc asked to shorten the alias, say to T(...). I share Lorinc's opinion that Tuple is not concise. But T (or any other abbrev.) is too cryptic. In pure Java we write entry(...) to obtain a Map.Entry. We will also write the full name Tuple.

Please don't think that some of the changes we made here are unnecessary. From the local viewpoint, HashMap.of(Object...) is what we currently have. We did not release the new API, so we are able to improve things afterwards. I think it should be ok when we change API#Map methods together with our Hash/Tree/LinkedHash-Map.of(Object...) methods in one PR.
Again, awesome work!
Thank you
Daniel


ERROR: can not send request; node process not running

I installed TypeScript for Sublime for the first time and it worked like a charm. All of a sudden I am getting errors about node not running.
Excerpt from console:
spawning node module: C:\Users\psycketom\Desktop\ST3\Data\Packages\TypeScript\tsserver\tsserver.js
Found node executable at node
2015-06-15 16:48:25,048: 12592: ERROR: can not send request; node process not running

I just edited my preferences, to point to the exact node path. No success either:
spawning node module: C:\Users\psycketom\Desktop\ST3\Data\Packages\TypeScript\tsserver\tsserver.js
Found node executable at C:\Program Files\nodejs\node.exe
2015-06-15 16:58:35,129: 12448: ERROR: can not send request; node process not running

After numerous ST restarts, I found out that the problem is occasional.
And environment info:
Windows 7 x64
node v0.12.3
Sublime Text 3, build 3083

What could be the problem?

Getting the same thing here.
Windows 7 x64
node v0.12.4
Sublime Text 3, build 3083

How are you opening Sublime? Is node in your system's PATH variable?

Is it happening on the latest bit on master? Looks like it can find the node path correctly, but cannot start it for some reason.

Yes node is on my path.  I am starting sublime from D:\<somedir>\subl as sublime is on my path too.  I can run node D:\sublime3\Data\Packages\TypeScript\tsserver\tsserver.js just fine from the command line also, but sublime3 was still giving the same errors in D:\sublime3\Data\Packages\TypeScript\TS.log.

@DeezCashews  is the problem also occasional for you? And is your plugin installed from the package control or cloned from the repo?

Installed from the PackageControl.  I'm not sure if it's occasional or not right now.  I had it fixed temporarily I think by tweaking env, but then broke it on purpose to figure out solution for @joltmode but now I can't seem to get working again so I guess it could be occasional.

Ok, so I figured out WHAT is breaking it, but no idea why...
Executing D:\sublime3\subl.exe = errors above
Executing D:\sublime3\sublime_text.exe = lovely code assist from tsserver.js :)
I must have accidentally opened it with sublime_text.exe before with an Open With... from the Windows Shell before, I almost always use subl from the command line).
Can anyone try to repeat?

@joltmode are you using subl.exe also?  If so, try using sublime_text.exe instead and let us know what happens.

Interesting. I didn't know that subl.exe could be different from sublime_text.exe. I'll do more research on that.

Well it's only 140k vs the 5.5M so it's not just a copy or anything, but yeah, no idea why.  A complete shot in the dark would be it obviously has to execute the actual sublime_text.exe somehow, so perhaps it is then being executed with different privileges than the Windows user executing it directly.  I just mention this because a lot of sublime plugins seem to write to temp directories which is often set to C:\Users<username>\AppData\Local\Temp.  While temp dirs might not have privelege issues, something else might (like say, requesting a port to listen on?).

Well, more power to you guys for writing python because the last half hour figuring out proper indentation, simple exception handling, etc. was brutal for me, but I managed to learn a little and modified the code to get you this information:
Traceback (most recent call last):
  File "D:\sublime3\Data\Packages\TypeScript\libs\nodeclient.py", line 69, in __init__
    stdin=subprocess.PIPE, stdout=subprocess.PIPE,startupinfo=si)
  File "./subprocess.py", line 789, in __init__
  File "./subprocess.py", line 1026, in _get_handles
  File "./subprocess.py", line 1038, in _make_inheritable
OSError: [WinError 6] The handle is invalid

@DeezCashews Thanks for all the research! Looks like this is related http://www.sublimetext.com/forum/viewtopic.php?f=3&t=2464.

Since I can't repro the problem on any of my machine, can you do a print(node_path) before line 69 in nodeclient.py to see if the path is right?

Ahhh, interesting.  One more set of tests given that info shows:

Both sublime_text.exe and subl.exe fail from the command line
Double clicking sublime_text.exe works but double clicking subl.exe still causes error
start sublime_text.exe works from command line but start subl.exe still causes error

And to answer your question: node_path is just "node" as assigned previously because os.name == "nt"

I give up, my eyes are bleeding.  For anyone else who comes across this, the workaround is to create a sublime.bat file with the following contents start C:\<pathto>\sublime_text.exe %* and just call sublime <args> instead of using subl.exe or sublime_text.exe from the command line.

The problem is that both subl.exe and sublime_text.exe works for me. I'll find a win 7 VM tomorrow to try it on, it is indeed very strange issue.

5 runs of subl.exe - 5/5 error.
5 runs of sublime_text.exe - 5/5 no problems.
Some runs from a shortcut I've created and using st, that previously pointed to subl.exe and now points to sublime_text.exe - no problems.
Fun. :D

@zhengbli Win 7 Pro x64 here FYI

@DeezCashews, this may sound like a joke, but it is a legitimate question: have you tried restarting your computer? I'm taking a shot in the dark, but there may be something about your PATH variable not being appropriately propagated.

Ha, good point - no I haven't restarted.
Though, as I already edited in the first post, I added the correct node_path entry to my User.sublime-preferences - didn't change a thing. The sublime_text.exe instead of subl.exe is working flawlessly, though.

@DanielRosenwasser Of course, "3 times, you always reboot it 3 times" - Chip (nsfw)
But yeah, no change.

I ran into this today and wasted a few hours on it. :cry:
I believe the root cause is the way Python implements subprocess.Popen().  It's a known issue; see https://bugs.python.org/issue3905.  The problem was first reported in 2008 and has never been fixed.
The TypeScript plugin can work around the problem by always explicitly passing stdin, stdout, and stderr to subprocess.Popen().  Use subprocess.DEVNULL for the ones you don't need rather than leaving them unspecified.
diff --git a/typescript/libs/node_client.py b/typescript/libs/node_client.py
index 9abd8f4..fc5464b 100644
--- a/typescript/libs/node_client.py
+++ b/typescript/libs/node_client.py
@@ -80,7 +80,7 @@ class NodeCommClient(CommClient):
     def debug(self, file):
         # TODO: msg if already debugging
         self.debug_proc = subprocess.Popen(["node", "--debug", file],
-                                            stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+                                            stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)

     def sendCmd(self, cmd, cb, seq):
         """
@@ -262,11 +262,11 @@ class ServerClient(NodeCommClient):
                     si = subprocess.STARTUPINFO()
                     si.dwFlags |= subprocess.SW_HIDE | subprocess.STARTF_USESHOWWINDOW
                     self.server_proc = subprocess.Popen([node_path, script_path],
-                                                         stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si)
+                                                         stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, startupinfo=si)
                 else:
                     log.debug("opening " + node_path + " " + script_path)
                     self.server_proc = subprocess.Popen([node_path, script_path],
-                                                         stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+                                                         stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
             except:
                 self.server_proc = None
         # start reader thread
@@ -301,11 +301,11 @@ class WorkerClient(NodeCommClient):
             si = subprocess.STARTUPINFO()
             si.dwFlags |= subprocess.SW_HIDE | subprocess.STARTF_USESHOWWINDOW
             self.server_proc = subprocess.Popen(
-                [node_path, self.script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, startupinfo=si
+                [node_path, self.script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, startupinfo=si
             )
         else:
             self.server_proc = subprocess.Popen(
-                [node_path, self.script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+                [node_path, self.script_path], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)

         # start reader thread
         if self.server_proc and (not self.server_proc.poll()):

@mcnameej Does this solve the problem for you? If so, a pull request is more than welcomed!

@zhengbli: The change appears to fix the problem, however I still see one "[WinError 6]" in the console. Not sure where it's coming from, and I've already spent more time on this than I should.

I am also getting this error on Mac, when I open the application from the system UI. If I open from my terminal, it's fine.
My path is set in ~/.zshenv, but when the TypeScript plugin loads, I see this in my console:
Unable to find executable file for node on path list: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$NVM_BIN

TypeScript seems to be running before Sublime runs ~/.zshenv.

Same problem as @OliverJAsh. Even when I set node_path in Preferences.sublime-settings.
I use NVM, and my path set following the $NVM_BIN approach. Not sure what .profile sublime reads, but it's not OSX's ~/.profile

@zhengbli Is there anyone working on this?

@Dynom Yes we are working on all the issues based on priority, as right now the team doesn't have much resources that could fix everything in time. Sorry for the delay if it is causing you inconvenience, I'll take a look tomorrow.

Much appreciated @zhengbli. For other people with the same problem, I've figured out a work-around that ended up to be quite easy:
I've specified the following path in my PROJECTNAME.sublime-project file:
"node_path": "${NVM_BIN}/node"

For completeness the other steps I've taken (I'm on OSX):
I've added the following lines to my ~/.bashrc
export NVM_DIR=$(brew --prefix)/var/nvm
source $(brew --prefix nvm)/nvm.sh
PATH="${PATH}:${NVM_BIN}"

And I've applied the patch by @mcnameej.
I'm not sure if all steps are required for it to work properly, but now I have the completion and features that I was looking for.

Hey @Dynom, this may sound dumb, but have you tried to set node_path to /usr/local/var/nvm/versions/node/v4.2.1/bin/node instead of /usr/local/var/nvm/versions/node/v4.2.1/bin/? Does that work? It seems to be working for me on my mac mini.

@OliverJAsh the plugin starts at the standard entry point provided by Sublime (the plugin_loaded callback), so there may not be much can be done to delay it even further. Can you try specifying node_path in your Preferences.sublime-settings as a work around? Set it to the path of node executable.

According to a stackoverflow answer, the environment variable the sublime has was affected by its parent process. On Unix the plugin doesn't explicitly read any profile file, it only calls os.environ["PATH"] to get the PATH variable (and two other known paths: /usr/local/bin as well as $NVM_BIN). Therefore it might be more stable to set a node_path explicitly if it is causing issues.

Not sure if your reply was on my initial question or on my last question @zhengbli. Setting the node_path explicitly to the binary is exactly what I did for my work-around, which I specified in my last update.
In my Initial reply, however, I pasted a log. One line reads Found node executable at /usr/local/var/nvm/versions/node/v4.2.1/bin/. Which is confusing, because it didn't actually found the executable, it merely concluded that a path was defined. The rest of the code, however, assumes that the same path is actually the path to the binary. So the message should instead be something like "configured path is ..". Or, even better, the binary should indeed be correctly found :-)
I explicitly want to use $NVM_BIN, since I want my IDE to use the same binary I use system-wide and NVM is doing a fine job at managing versions. So I suppose my "work-around" can actually be seen as the reliable recommended approach?

@Dynom I was under the impression that setting the node executable directly didn't work for you, that you had to use NVM_BIN instead. The console message is indeed misleading, I'll fix it soon. On mac we search several common places where node executable normally is placed; and as sublime text may not run .profile, it is not guaranteed to be found it the node_path is set there. Although we did explicitly search NVM_BIN, maybe that's a bug if it doesn't work for you out of box.

@Dynom I did notice you put an extra braces around the NVM_BIN, is that a mac convention? That's probably where the bug is.

No it's not a Mac convention, it's (ba)sh shell-scripting convention. I use it to stay consistent for reasons like:

${foo}bar vs $foobar
$1 vs $10 or ${1}0 vs ${10}
${array[0]} vs $array[0]
${path_to_file%.*}
${myname:=John Doe}

I'm not replying on the rest of your update, since I don't like to repeat myself.

I have $NVM_BIN in the $PATH and also set the node_path in the .sublime-project to "...nvm/versions/node/v5.1.0/bin" and "...nvm/versions/node/v5.1.0/bin/node" directly but nothing helps.
My console output after restarting sublime:
2015-12-01 23:25:32,841:<PHONE_NUMBER>57728: WARNING: TypeScript plugin initialized.
plugins loaded
spawning node module: /Users/richard/Library/Application Support/Sublime Text 3/Packages/TypeScript/tsserver/tsserver.js
test
None
Unable to find executable file for node on path list: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$NVM_BIN
To specify the node executable file name, use the 'node_path' setting
2015-12-01 23:25:32,845:<PHONE_NUMBER>57728: ERROR: can not send request; node process not running
ref view not found
2015-12-01 23:25:32,846:<PHONE_NUMBER>57728: ERROR: sequence item 0: expected str instance, NoneType found
Package Control: Skipping automatic upgrade, last run at 2015-12-01 23:09:37, next run at 2015-12-02 00:09:37 or after
Packages/TypeScript/popup.html
2015-12-01 23:25:43,325:<PHONE_NUMBER>57728: ERROR: can not send request; node process not running
2015-12-01 23:25:43,528:<PHONE_NUMBER>57728: ERROR: can not send request; node process not running
2015-12-01 23:25:43,531:<PHONE_NUMBER>57728: ERROR: can not send request; node process not running
2015-12-01 23:25:44,462:<PHONE_NUMBER>57728: ERROR: can not send request; node process not running

Meh.

Just to try the static approach, does something like this work for you @igl ?
File: ~/Library/Application Support/Sublime Text 3/Packages/User/Preferences.sublime-settings
{
	"node_path": "/usr/local/var/nvm/versions/node/v5.1.0/bin/node"
}

( and possibly other properties, but the one mentioned is the most important one )

@Dynom approach worked, thank you

@Dynom Yes, that worked. Thanks.

The real issue here is that Python doesn't implicitly perform variable expansion. Quick demonstration:
>>> os.path.isfile('$NVM_BIN/node')
False
>>> os.path.isfile(os.path.expandvars('$NVM_BIN/node'))
True

At least it's an easy fix.

Someone who knows their stuff, thanks @spencerhakim.

@spencerhakim With that change, could we fix this error?

@OliverJAsh @Dynom @spencerhakim I updated according to @spencerhakim 's comment. Can you guys give it a try? Thanks

@zhengbli:  I think there are two separate problems here.  AFAICT, the original problem reported by @joltmode, and also encountered by me, has nothing to do with environment variable expansion.  The problem with $NVM_BIN may have similar symptoms, which is why it got discussed here, but has a totally different root cause.  I don't think fixing the environment variable problem lets you close this issue (#235).

$NVM_BIN might not be resolved in OSX because GUI applications are not "sourced" with ~/.bash_profile thus the corresponding env vars are not set. This behaviour is encountered when applications are started from Dock/Spotlight.
PS: More info & links: http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x

ERROR: can not send request; node process not running
Same here, i receive this error any app-start-time.

This does look like a variable expansion issue is partially at fault, per @spencerhakim's comments above. I found that only a fully qualified, expanded path for the node_path setting worked- any variable interpolation or homedir ~ aliases prevented it from working.


Merge with the environs library?

Thank you for envparse. I liked its API so much that I implemented a successor library, environs, which uses marshmallow to do the heavy lifting for casting, validation, and serialization.
environ's API is near-identical to envparse, with a few differences:

environs supports a few more cast types, including decimal, datetime, date, timedelta, and uuid
environs adds validation. https://github.com/sloria/environs#validation
environs implements serialization: https://github.com/sloria/environs#serialization
environs allows the user to register custom parser methods: https://github.com/sloria/environs#defining-custom-parser-behavior . This makes it easy to create plugins; see https://github.com/sloria/environs/blob/master/examples/plugin_example.py
environs handles prefixes: https://github.com/sloria/environs#handling-prefixes
You cannot pass a schema to the Env constructor. (Env(FOO=bool)). This was intentional; I did not see an advantage in having the redundant API.
environs does implement env('VARNAME', cast=str); you must do env.str('VARNAME'). Again, the intention was to avoid redundant API.
preprocessor and postprocessor are not supported. Any pre- or post-processing can happen in a custom parser function
environs cannot read .env files (yet). Up for discussion here: https://github.com/sloria/environs/issues/1
environs does not support proxied variables (yet)

environs was mostly written as a proof-of-concept, though at this point it is stable enough to use (it's only   ~100SLOC after all).
I wonder if we could reduce duplication of effort by merging these two libraries. I haven't yet thought about the particulars; just wanted to open the table for discussion first.
Thoughts?

@sloria This looks really neat! First time seeing marshmallow and just glanced at environs really quickly, but wanted to give some initial thoughts before diving in more later:

LOVE the idea of separating out the type-parsing logic (and bonus that the library already exists!)

LOVE that extensibility is a focus from the beginning

LOVE that redundant APIs are ditched in favor of One Right Way(tm)

LOVE that preprocessor and postprocesser are ditched in favor of general purpose parsing

MIXED: Though it's at odds with the redundant API goal, the schema concept has proven useful in my usage of envparse at least. I like that I can declare a type and default once, and then reference it later in the code and have it do the right thing. It means that if I change a default or a type from a float to a decimal, I don't necessarily need to touch each place that referenced it. I would miss that feature if it went away. Maybe there's a more elegant way to handle it (?)

Proxied variables. These have been super useful for building apps on Heroku. I know you just haven't gotten around to adding it yet, but just wanted to reiterate how important they've been. I've switched from MailChimp to Mandrill back to MailChimp for email providers with minimal hassle because of the proxied variables abstracting out the environment variables exposed by plugins.

ON MERGING: This might be a case where environs could just win out. If it's promise of a cleaner API  is borne out, then there might not be a reason to continue envparse at all, just let it die on the vine so to speak. (I'm not that sentimental about it, it's served its purpose, so if something better comes along, I'm happy to switch :-)

Thank you for your feedback.

MIXED: Though it's at odds with the redundant API goal, the schema concept has proven useful in my usage of envparse at least. I like that I can declare a type and default once, and then reference it later in the code and have it do the right thing.

So, do you use your Env objects directly in your application code? As in
if env('FEATURE_X_ENABLE'):
    do_x()

vs.
feat_x_enabled = env.bool('FEATURE_X_ENABLED')
#...

if feat_x_enabled:
    do_x()

In the former case, the schema API makes a little more sense.  I'm still unsure if it justifies the added API surface. I'll open an issue for discussion.

Proxied variables. These have been super useful for building apps on Heroku. I know you just haven't gotten around to adding it yet, but just wanted to reiterate how important they've been.

Yep, we'll definitely have proxied variables in environs 1.0.

ON MERGING: ...

OK, sounds likes a plan. I've made you a collaborator on environs. No pressure at all to do anything with it; just wanted to open the door for collaboration.

Thanks for the response!
Yeah I typically use the first-style. But perhaps the second-way really is the best so maybe the schema is unnecessary.
With that in mind, maybe the __call__ style should be abandoned since it duplicates env.get()?

maybe the call style should be abandoned since it duplicates env.get()

Perhaps, but I quite like the conciseness of env('FOO'). If I had to choose between the two, I'd keep __call__. That said, I don't feel strongly against removing either.

Agree, either way or even keeping both is fine. It'll still be a lot cleaner than before.

Closing this. Thanks again for the feedback!
Btw, I've released environs 1.0, which adds support for proxied variables.


Update to Unicode 12.1.0

reported by @wezm:

I tried searching for the Lobster emoji and was surprised to not get a result.

Thank you for the report!!
I'm taking this as an opportunity to introduce a cron test to circleci that'll download the newest unicode data files & alert us when that happens, so you don't have to file a bug every time they introduce a vital new hieroglyph!

Whoa, my tooling totally went off the rails here & converted the issue to a PR (making me the reporter), sorry for losing you the reporter status, @wezm ):

bors r+

Released chars v0.4.0 (and shortly thereafter, v0.4.1) today, featuring the lobster emojo! Thanks for the ping (-:

Brilliant, thank you! 🦞


Alpha is applied to GUI elements inside of a mesh

Good afternoon!  I'm working on a bit of functionality where the camera and an object + some UI controls are enclosed in a semitransparent box that obscures the surrounding scene.  This was achieved by creating a box with flipped faces around the target area, and applying some alpha and a dark color to the enclosure box.
I noticed that meshes inside / outside the enclosure render as expected, but UI controls rendered on planes inside the box seem to have the alpha of the enclosure applied to them.

Bug repro:
playground

Expected result:
Alpha of the outer object would not be applied to the GUI controls inside the cube. (See sphere adjacent to it)

Current result:
Alpha of the outer object is applied to the GUI controls.

Update - flipping the faces wasn't a relevant detail.  The same effect occurs if the faces aren't flipped and backface culling is turned off on the enclosure cube.

By default GUI will attach the texture on both emissive and opacity so you can have alpha on your ADT
you can just turn it of like I did at line #45:
https://www.babylonjs-playground.com/#PKS2KJ#3

That doesn't really solve the issue because removing the opacity texture on the ADT also removes the transparency of the ADT and makes it so you can't resize the child controls on the ADT without seeing a secondary color around it.
In the playground below, you can see that adjusting the height of the inner rectangle creates a black border around it rather than the typical transparent region:
https://www.babylonjs-playground.com/#PKS2KJ#4

Then you. Can force the text to be on top with alpha index
See more here:
http://doc.babylonjs.com/resources/transparency_and_how_meshes_are_rendered#alpha-index

I don't think that works because the alpha blending from the box is still applied even if the text is on the top of the alpha index.

like that: https://www.babylonjs-playground.com/#PKS2KJ#5

Ahh thank you, I was using the wrong values.
Looks like I could use a box intersection to manually get the effect I want on an outside UI plane as well.
https://www.babylonjs-playground.com/#PKS2KJ#6
Thanks again

My pleasure:)