Improve callbacks, documentation, retries in HTTP OAuth token refreshing

Adds retrying that was already in the HTTP producer to the consumer
Adds callbacks if a token refresh attempt occurs at all (previously on on exhausted)
Fixes refreshing stopping entirely if an exception is raised in the fresh loop (runs in a background fiber)
Improves documentation in the HTTP consumer settings
Adds note to consumer and producer settings that if retries exhausted the user must stop applications

Note opened against the sbt branch.
The code is copied with some modifications (vast majority deletion, some minor additions as well) from utils.

Codecov Report

Merging #33 into master will not change coverage.
The diff coverage is 0%.

@@         Coverage Diff          @@
##           master   #33   +/-   ##
====================================
  Coverage       0%    0%
====================================
  Files          24    24
  Lines         218   223    +5
  Branches        2     4    +2
====================================
- Misses        218   223    +5

Impacted Files
Coverage Δ

...bsub/consumer/http/internal/HttpPubsubReader.scala
0% <0%> (ø)
:arrow_up:

...permutive/pubsub/http/util/RefreshableEffect.scala
0% <0%> (ø)

.../producer/http/internal/DefaultHttpPublisher.scala
0% <0%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Add recursiveMap(_:) methods

async version of https://github.com/apple/swift-algorithms/pull/185

Marking as v1.1 because we should strongly consider this after our 1.0 API stability release.


ENH: Added a command offset-update to adjust offsets and lengths.

This command adjusts /Length-entries of stream objects and the xref-offsets
in simple PDF files (ASCII only, one xref section only).
You may check it using https://raw.githubusercontent.com/py-pdf/PyPDF2/main/resources/issue-297.pdf and qpdf or ghostscript.

Thank you for the PR @srogmann !
I've just renamed cpdf to pdfly (see #12 for the reason). This means that your PR has merge conflicts which are easiest to solve by opening another PR. I'm sorry for that. If you want, I can take care of it and use the "co-authored by" feature of Github to give you attribution.
Besides that, I've noticed two things I would change:

Subcommand name offset-updater : I'd rather use `update-offsets
PEP8: Please use snake_case variables instead of camelCase


TS: Version TextureOptBatch like we did for TextureOpt

I got part way through the OSL side changes to accommodate what we did
recently with TextureOpt and TextureOptBatch. Ugh, it's a lot harder than
I thought and I don't know how to finish the job without postponing the
3.0 release even more, which is unacceptable at this point. So here I do
to TextureOptBatch to get out of this mess:

"Version" TextureOptBatch like we did for TextureOpt (should have done
that all along).
Revert "v1" to the same byte-for-byte layout we used to have, which
involves using int for some fields as it implicitly did before, because
the new enum classes totally change the field sizes and struct layout.
Sketch out in comments what v2 might look like, to more fully match the
TextureOpt. The introduction of struct versioning means we can make that
change for 3.1, it doesn't need to wait years for 4.0.

In the interests of trying to get a 3.0 beta out the door today, I'm going to merge this. Hopefully it is fine with everybody, and if not, we can tweak it during the beta period if necessary.


chloride launches electron every time it's required

chloride launches electron if electron is installed globally.
(The module name of electron-prebuilt is renamed to electron. https://github.com/electron-userland/electron-prebuilt#installation )
npm i -g electron

This is because isElectron() requires electron to detect it.
function isElectron () {
  try {
    require('electron')
    return true
  } catch (_) { return false }
}

https://github.com/dominictarr/chloride/blob/ca6978b4a0eaa07e490f0df0993e22dd4391fed8/index.js#L7
A possible solution is to see process.versions.electron etc. instead.
https://github.com/cheton/is-electron/blob/master/index.js

great! thanks I've used this fix in<EMAIL_ADDRESS>


Implement Apache Httpd log receivers

Add apache_access and apache_error log receivers, following the patterns established in the similar nginx log receivers.
Sample parsed access log:

Sample parsed error log:

From what I can tell kokoro would pass except it is expecting a metric_name.txt file and the metrics for apache are coming in another PR. Could kokoro become more flexible, or is there another way I can work around this?

Note: We are planning to release Ops Agent 2.3.1 today (Sept 29). Please do not merge this PR before https://github.com/GoogleCloudPlatform/ops-agent/releases/tag/2.3.1 is out.

Integration tests failed. But when I manually checked the ingested logs, it was okay:

Re-run the tests.

@qingling128 from the logs in kokoro, it looks like integration tests failed from a panic in the test running code, perhaps something in the apparent update to run against more distributions.

goroutine 89 [running]:
testing.tRunner.func1.2({0x55fffca8ef40, 0x55fffd6bce10})
	third_party/go/gc/src/testing/testing.go:1209 +0x24e
testing.tRunner.func1()
	third_party/go/gc/src/testing/testing.go:1212 +0x225
panic(--- FAIL: TestProcessorOrder (637.54s)
{0x55fffca8ef40, 0x55fffd6bce10})
	third_party/go/gc/src/runtime/panic.go    --- FAIL: TestProcessorOrder/debian-10 (637.54s)
:814 +0x207
ops_agent_test.TestProcessorOrder.func1(0xc000603ba0, {0xc0000480b2, 0x9})
	cloud/monitoring/agents/kokoro/tests/ops_agent_test.go:364 +0x5b3
gce.RunForEachPlatform.func1(0x0)
	cloud/monitoring/agents/kokoro/tests/gce_testing.go:1383 +0x25
testing.tRunner(0xc000603ba0, 0xc000576220)
	third_party/go/gc/src/testing/testing.go:1259 +0x102
created by testing.(*T).Run
	third_party/go/gc/src/testing/testing.go:1306 +0x35f

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x55fffc032c93]

goroutine 89 [running]:
testing.tRunner.func1.2({0x55fffca8ef40, 0x55fffd6bce10})
	third_party/go/gc/src/testing/testing.go:1209 +0x24e
testing.tRunner.func1()
	third_party/go/gc/src/testing/testing.go:1212 +0x225
panic({0x55fffca8ef40, 0x55fffd6bce10})
	third_party/go/gc/src/runtime/panic.go:814 +0x207
ops_agent_test.TestProcessorOrder.func1(0xc000603ba0, {0xc0000480b2, 0x9})
	cloud/monitoring/agents/kokoro/tests/ops_agent_test.go:364 +0x5b3
gce.RunForEachPlatform.func1(0x0)
	cloud/monitoring/agents/kokoro/tests/gce_testing.go:1383 +0x25
testing.tRunner(0xc000603ba0, 0xc000576220)
	third_party/go/gc/src/testing/testing.go:1259 +0x102
created by testing.(*T).Run
	third_party/go/gc/src/testing/testing.go:1306 +0x35f

exit status 2```

The tests only run for Debian 10 today. The change to extend it to more distros turned out to be a non-trivial effort. That would take some time to land.

The tests only run for Debian 10 today. The change to extend it to more distros turned out to be a non-trivial effort. That would take some time to land.

Ah, okay, must have just been a strange fluke as they seem to have passed on re-run.


Remove 0.0 when there is no trade, sams as monthly_heatmap_detailedview

Changes:

Removed 0.0 when there is no trade in the monthly_heatmap function.
Added a mask to filter out 0.0 values.
Removed grid

These changes align the behavior of the monthly_heatmap function with the monthly_heatmap_detailedview function.
Here is sample figure with BTC's close data.

Nice.
However, the original Monthly Returns heatmap does not show "Years" on the left margin. It is a redundant information as the years are clear enough as they are and it takes some horizontal space, making the numbers in the table smaller and less readable.
Could you please remove it?
See screenshot:

You used mask = returns.map(lambda x: x == 0)
What would happen if the strategy is flat (0%) for a few months in the middle of the backtesting period? It can happen.
Will there be blanks instead of 0 in the middle of the table?
If it is the case as I fear, another mask function should be used.
To avoid this, you should use a mask based on the backtesting period's time range to ensure that only returns outside the backtesting period are filtered.
Something like:
mask = (returns.index < pd.to_datetime(start_date)) | (returns.index > pd.to_datetime(end_date))

Is it possible to move the % scale closer to the table to maintain readability of the numbers inside?
Consider adjusting CSS to position the scale closer or even placing it outside, in the margin, to avoid shrinking the table content.


Fixed libcurl connection pool to use Connection response header values

Fixes #5450.
I propose for us to revert #5308 first (which is done by a sibling PR  #5472), and then immediately release a GA patch/minor version, and then to merge this change, and release a beta.

/azp run cpp - core

/azp run cpp - storage

I don't understand how this fixed #5450.
Can we add another check? If status code is not 2xx, and request header contains Expect: 100-continue and request body length is not zero, we don't reuse the connection.

@Jinming-Hu, do you know of some spec that defines the behavior that you're referring to, so we can implement it the best?
The one I put in here, comes from the HTTP specs and RFCs (I put the links in comments above the lines I modified), but there are many addendums, I could have missed something related to 100-continue.
Do you know if WinHTTP implements the behavior you're describing?

@antkmsft I agree your implementation is compliant to the standard. But Azure services are not compliant, and this is not the only issue (I've seen others). As Azure SDK, we better be compatible with Azure services.

@Jinming-Hu, I 100% agree with you, and I do not want for the SDK to be unreliable when talking to Azure, not at all.
I just don't understand if the interaction with Azure is not compliant, how come we don't see a problem when using WinHTTP, which does not have this special logic, and must only adhere to standard.
And the second question remains - do you have any references - documentation, or code in other language SDKs, which has this extra logic, which we could use as a reference. At this moment, I only have spoken word and this very implementation that contains this knowledge, plus no tests. Please understand, my no means I am implying that if these do not exist, your point is not valid, and I would not want to check in something that introduces more problems. I am just trying to figure this out, for the implementation become better, not worse. I want to have a code that you'll genuinely agree on, after we sort out all these questions, if necessary.
Plus, a side question - you see this PR, I just replaced the logic of "httpCode < 200 && httpCode >= 300" by looking into "Connection" header instead. I did not remove any existing handling of "100-Continue". Do you think it will break the current handling of "100-Continue"?
If you want, we can take this offline, if that will be faster and easier to discuss. Once again, I am not trying to force this on Storage, you have nothing to worry about, you don't need to be prepared to defend it if the things really can't work the other way. I am just trying to bring clarity, for both of us. If it is Storage-specific, we can look into the transport to have "Storage Mode", where it would work one way for the Storage, and maybe the other way for everything else, if it is only Storage who works this way. Other good thing that may be an outcome of this, is if we put more comments/references/tests on how things should work, so the next time someone modifies transport, they are aware on how to not break Storage, and don't accidentally break you.
But as I said, if it really works this way, I don't understand how it works successfully on WinHTTP and in other language SDKs.

Hi @antkmsft , winhttp transport or any other language SDKs do not use 100-continue at all, that's why we don't see the issue anywhere else.

Plus, a side question - you see this PR, I just replaced the logic of "httpCode < 200 && httpCode >= 300" by looking into "Connection" header instead. I did not remove any existing handling of "100-Continue". Do you think it will break the current handling of "100-Continue"?

Your code change looks fine to me. But I cannot answer this question before it's fully tested. As I said, Azure services are not 100% compliant to standard. I don't know if server side will always send Connection: close header when it wants to terminate current session, but it looks to me you've made this assumption in this PR.
Anyway, since you mentioned you desired to fix issue #5450 in this PR. Let me add some details of the situation and explain why it doesn't fix as expected.

Storage SDK sends a PUT request with a non-empty request body (which means Content-Length request header is not 0, let's say it's 6) and Expect: 100-continue request header, but it doesn't send the header unless server returns 100 Continue status code.
Storage service returns 4xx status code and response headers, but it doesn't want to close this connection, so there's no Connection: close in response headers.
Now both client and server agree to continue using this connection. But they do not agree in the current status of this connection.

Client side thinks the previous request is finished because it has received a status code and response headers. It should send a new HTTP request if there's any.
Server side thinks the previous request is not finished because it hasn't received the request body. I tend to think this is a bug of server-side.

Client side sends a new request, for example,HEAD /whatever/path HTTP/1.1
host: foo.bar.com
...

Server side takes the first 6 bytes (HEAD /) of the send request and thinks this is the request body of the first request and discard it.
Server side keeps reading the remaining data on the wire and thinks the first part (whatever/path) is an HTTP verb. It fails the request with 400 invalid verb.

@Jinming-Hu and @LarryOsterman, please check out the latest iteration (commit https://github.com/Azure/azure-sdk-for-cpp/pull/5473/commits/8d81706f60abc26399ee8161c32ebba183bea341).

FYI @mchelnokov

/azp run cpp - core

/azp run cpp - storage

/azp list

/azp run cpp - identity

/azp run cpp - keyvault

/azp run cpp - attestation

/azp run cpp - eventhubs

/azp run cpp - tables


TextBox with color support

What is the easiest way to use the RichTextBox functionality in Avalonia that allows for different colored text? Such text box can be used to display application logs for example with different lines having different color depending on the log level (Debug, Info, Error,Fatal).
Thanks

This is currently not supported but will be by this: https://github.com/AvaloniaUI/Avalonia/pull/1950

@Gillibald looks like that PR is closed. Any updates on this?

Inlines support will come later this year

Inlines support will come later this year
2020 is over...

Inlines support will come later this year
2020 is over...

You can pay me to speed things up that I do in my free time. Trust me I am not cheap....

You can pay me to speed things up that I do in my free time. Trust me I am not cheap....

@hopeko Have you looked into https://github.com/AvaloniaUI/AvaloniaEdit?

@hopeko Have you looked into https://github.com/AvaloniaUI/AvaloniaEdit?

You can pay me to speed things up that I do in my free time. Trust me I am not cheap....

Funny... You said that, not me.

You can pay me to speed things up that I do in my free time. Trust me I am not cheap....

Funny... You said that, not me.

@derekantrican Thanks, I'll try.

@derekantrican Thanks, I'll try.

Hello,
Is there a way to colourize parts of text in a TextBox?
I managed to do that with Inlines and Runs in TextBlock, I would like to do with TextBox too.

Beside AvaloniaEdit or custom control? None I am aware of for the time being.

Would it be possible for TextBox to support Inlines? TextEditor is a bit too much for my use-case...

Beside AvaloniaEdit or custom control? None I am aware of for the time being.

How could I make a custom control for that? Do you guys have an idea of where to start?


swift: segmented transfer support

Many Swift implementations require objects > 5 gigabytes to be segmented so
implement segmenting in the Swift driver with a default segment size of 1
gigabyte.  Smaller files are uploaded as before, but larger files are split
into 1 gigabyte chunks by default.

Fixed issues with local file metadata and added another (semi-unrelated) commit to improve logging of compression results


waffle.io Badge

Merge this to receive a badge indicating the number of issues in the ready column on your waffle.io board at https://waffle.io/MADE-barcelona/beacon-fi
This was requested by a real person (user adv0r) on waffle.io, we're not trying to spam you.

done


refactor(package): webpack output format as a lib on the browser

We need to redirect our index file of mangoo.js to dist folder for npm.


Add proper protos for TransactionView and ActionViews

The current structs used in the TransactionView implementation aren't reflected in our protos yet, and we should fix this.

It looks like this may be done already?

Closed by #1560.


Fix some typos

Also, there was a statement that "some characters" were not valid symbol characters, but then listed only one character, the colon. The way this looked in the docs was very confusing (I wasn't sure if there was something missing after the colon).

LGTM


fix(interop): stabilize dnslink tests

Dependency on third-party domains means  that over time CI will break, like it did in
https://github.com/ipfs/kubo/actions/runs/9214249430/job/25364989609?pr=10429#step:9:63
Error: queryCname ENODATA singularity.storage

The three domains I left are stable and under IPFS Foundation / Shipyard control.
Ideally, CI would not depend on internet DNS, and have static fixtures and custom localhost DNS server, but this PR should be good enough to stop breaking CI on other project's PRs like https://github.com/ipfs/kubo/pull/10429

Notes & open questions

Change checklist

[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation if necessary (this includes comments as well)
[x] I have added tests that prove my fix is effective or that my feature works

Fyi current helia-verified-fetch gwc PR (todo link) has some dnsLink stubbing code (IPFS_NS_MAP like functionality)


iOS crashing using encryption on 0.3.5

The library currently does not seem to work with encryption.
2020-07-18 16:13:45.028175+0100 TheApp[4657:690803] [javascript] 'STORAGE', 'SET OBJECT', '2', { data: [Getter/Setter] }
Assertion failed: (data.m_data == nil), function KeyValueHolderCrypt, file /Users/kyle/ssg-frontend-boilerplate/mobile/ios/Pods/MMKVCore/Core/KeyValueHolder.cpp, line 69.

Reproduction
 MMKV = new MMKVStorage.Loader()
        // uncommenting this breaks the app
        // .withEncryption()
        .initialize();

I have tested it, its working normally. RN 0.63 and latest library.


Not able to Install or update anything in CentOS7 7.0.1907.3

Installed Version 7.0.1907.3
kernel --> 4.19.128-microsoft-standard
Issue : Not able to install or update anything.
Standalone curl command gives following output,
::
    [root@hdhola ~]# curl http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=genclo
    [3] 41
    [4] 42
    [5] 43
    [4]-  Done                    arch=x86_64
    [5]+  Done                    repo=os

[root@hdhola ~]# yum -y update
Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=genclo error was
14: curl#7 - "Failed to connect to 2604:1380:2001:d00::3: Network is unreachable"
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
 1. Contact the upstream for the repository and get them to fix the problem.

 2. Reconfigure the baseurl/etc. for the repository, to point to a working
    upstream. This is most often useful if you are using a newer
    distribution release than is supported by the repository (and the
    packages for the previous distribution release still work).

 3. Run the command with the repository temporarily disabled
        yum --disablerepo=<repoid> ...

 4. Disable the repository permanently, so yum won't use it by default. Yum
    will then just ignore the repository until you permanently enable it
    again or use --enablerepo for temporary usage:

        yum-config-manager --disable <repoid>
    or
        subscription-manager repos --disable=<repoid>

 5. Configure the failing repository to be skipped, if it is unavailable.
    Note that yum will try to contact the repo. when it runs most commands,
    so will have to try and fail each time (and thus. yum will be be much
    slower). If it is a very temporary problem though, this is often a nice
    compromise:

        yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64

Disabled Symantec Firewall and it worked ! But randomly stops working, even firewall is disabled.


Window borders cause severe, system-wide lag

Ever since v5, I've been experiencing really bad lag, stuttering, choppiness, etc. I've tried various combinations of software and config; the only way I can reproduce this is to specifically enable Yabai's borders.
Yabai config:
yabai -m config layout float

yabai -m config window_border on
yabai -m config window_border_width 2
yabai -m config active_window_border_color 0xFFA000FF
yabai -m config normal_window_border_color 0x0000FF00

Version:
❯ yabai -v
yabai-v5.0.2

This is on a freshly reformatted, fresh macOS installed, 2019 MacBook Pro 16:
OS: macOS 13.1 22C65 x86_64
Host: MacBookPro16,1
Kernel: 22.2.0
CPU: Intel i9-9980HK (16) @ 2.40GHz
GPU: Intel UHD Graphics 630, AMD Radeon Pro 5500M
Memory: 19967MiB / 65536MiB

The lag is most noticeable when switching to and from desktops that contain windows. This happens with all applications, not just electron apps. There is no noticeable lag when switching between two empty spaces.
Another way to observe severe lag is to scroll within Alacritty. Scrolling in Less or any TUI like Vim will reproduce this.
The one thing I didn't try is using the scripting addition, but that's just because I can't actually get it to work for some reason. No errors, but it just doesn't seem to do anything.
Yabai v4 was perfect, but is not compatible with macOS 13. But I figured it'd be worth noting that it worked on the same hardware.
Please let me know if there is any additional info I can fetch that would help. Thanks!

I wonder if window_blur is on for you? When I turned window_blur off, the lag went away on my 4k monitor. Try doing that. I'm not sure if window blur is on or off on default
yabai -m config window_border_blur off

Same issue for me. Turning window_border off seems to have fixed it:
yabai -m config window_border                off

The yabai -m config window_border_blur off setting seems to have fixed it. Thank you!


feat: dynamic tables

Builds on top of #10 to enable dynamic tables within the html2ooxml.js file.
Now generates a table dynamically and supports multiple columns and cells.

Nice work, after few tests :
[+]

All of the oldest features are still working (which is good !)
Table and color highlighting are working

[-]

Tables with empty cell cause error when opening file
Cell merging doesnt work when generated
There is a "caption" icon on the WYSIWYG which do nothing

I've created a "Tiptap v1" branch for the oldest version of tiptap. Master branch now include tiptapv2.
I will merge this PR, close #10 and #2 . I will open a new issue for the previous points.
Thanks @RobertDoc and @nitek29 for your work.

Hello,
This PR broke a feature I'm using to generate reports.
https://github.com/pwndoc/pwndoc/pull/335


Accessing http headers when sending push messages

[READ] Step 1: Are you in the right place?
Yes, I'm in the right place.
[REQUIRED] Step 2: Describe your environment

Operating System version: macos
Firebase SDK version: ?
Library version: 6.7.0
Firebase Product: messaging

[REQUIRED] Step 3: Describe the problem
Steps to reproduce:
When sending push notifications, how do I access http response headers? As per documentation here I have to respect Retry-After header in case of messaging/server-unavailable and messaging/internal-error error codes.
By looking into the code, it appears that http headers get ignored.
Relevant Code:
ApiFuture<String> future = FirebaseMessaging.getInstance(firebaseApp).sendAsync(message);
future.addListener(() -> {
            try {
                String id = future.get();
                LOGGER.debug("FCM message has been sent successfully: {} / {}", id, notificationMessage.getId());
                sendToEndpoint(MARK_PENDING_NOTIFICATION_AS_SENT_ENDPOINT, notificationMessage);
            } catch (InterruptedException e) {
                LOGGER.debug("Sending a push notification {} was interrupted", notificationMessage.getId(), e);
            } catch (ExecutionException e) {
                Throwable cause = e.getCause();
                if (cause instanceof FirebaseMessagingException) {
                    FirebaseMessagingException fcmException = (FirebaseMessagingException) cause;
                    handleFirebaseMessagingException(notificationMessage, fcmException);
                    //TODO implement exponential backoff retry mechanism and respect 'Retry-After' http header response
                } else {
                    LOGGER.debug("Unexpected error of sending FCM message: {}. Marking the notification as failed.",
                            notificationMessage.getId(), e);
                    sendToEndpoint(MARK_PENDING_NOTIFICATION_AS_FAILED_ENDPOINT, notificationMessage);
                }
            }
        }, executor);

The response headers can be accessed via fcmException.getClause() method:
HttpResponseException httpResponseException = (HttpResponseException) fcmException.getCause();
            httpResponseException.getHeaders()

Also take note of #255, which will handle some of this automatically for you in the future.


[Discussion] IRC and XMPP support chat

Greetings, everyone!
Please add official IRC or XMPP or both type of chats as an official communication arena.
I do not use any non-standard or centralized telecommunication means.
I do not even have a telephone.
Schimon

I understand your dislike of Discord, however Andreas has reiterated that:

And we're perfectly happy using proprietary services like GitHub and Discord as long as they make our work easier and more enjoyable. We recently evaluated a number of alternatives, and found that they all introduced more friction than we were comfortable with.

Source
And that he's not interested in changing it unless there is a real, pragmatic, practical, or technical reason.

Thank you.
Please convey him that I develop chat bots and software for XMPP, and I also work on a general purpose moderation bot.
I am currently working on an XMPP-based social bookmarks service, so the development of bots is halted for a few weeks.
Please convey to Andreas that I am willing to bargain with him for an XMPP groupchat, in return for a bot that he would want ot have, if at all.
Closing.


Use orchestrator type to run subset of functional tests

We can be more tactical with integration tests run on each PR by running tests specific to the orchestrator. A Docker Swarm failure due to intermittent Azure failures shouldn't hold up Kubernetes development in HEAD. Between orchestrator tests, unit tests, manual tests, and the full regression suites that run every hour I feel good about this coverage in exchange for unblocking development.

Not feasible to optimize this any further.


Add new option for exporting learning networks as stand-alone composite model types

This non-breaking PR addresses #831.
It is mildly breaking: Where previously report(mach) returned NamedTuple(), it will now return nothing instead.
Requires:

[ ] https://github.com/JuliaAI/MLJModelInterface.jl/pull/160

Has been tested (with above MLJModelInterface PR) as non-breaking for MLJTuning, MLJEnsembles, MLJIteration.
Has been tested with MLJTestIntegration, which applies integration tests for majority of model providing packages.
Summary
This PR adds a new abstract type NetworkComposite, with subtypes DeterministicNetworkComposite, etc, for the purpose of "exporting" learning networks as new stand-alone model types. It is intended to render all existing alternatives obsolete, but these are not touched in this PR. It is simpler, in that there are no "learning network machines" , no Surrogate models, and no special return! method to call. Refer to #831 for a list of other drawbacks overcome by the new approach.
Below is a demonstration of exporting a learning network to combine predictions of two regressors. It additionally exposes in the new model's report the output of a node called disagreement (measuring disagreement between the two regressors, at time of training):
Step 1: Define the composite type - must subtype NetworkComposite
using MLJBase

mutable struct DoubleRegressor <: DeterministicNetworkComposite
    regressor1
    regressor2
    mix::Float64
end

Step 2:  Implement MLJBase.prefit (method added in this PR)
This method  has same signature as fit(model, ...) and returns a named tuple constituting an "interface" to a learning network constructed out of it's arguments. A novelty is that component models are represented by the names (symbols) of the relevant field of the composite.
function MLJBase.prefit(composite::DoubleRegressor, verbosity, X, y)
    Xs = source(X)
    ys = source(y)

    mach1 = machine(:regressor1, Xs, ys)   #  <--- symbol instead of model
    mach2 = machine(:regressor2, Xs, ys)

    yhat1 = predict(mach1, Xs)
    yhat2 = predict(mach2, Xs)

    # node to return agreement between the regressor predictions:
    disagreement = node((y1, y2) -> l2(y1, y2), yhat1, yhat2)

    # get the weighted average the predictions of the regressors:
    λ = composite.mix
    yhat = (1 - λ)*yhat1 + λ*yhat2

    return (
        predict = yhat,
        report= (; training_disagreement=disagreement)
    )
end

Details
A new documentation PR at MLJ has already been posted. The  relevant section is here
There are two additional changes introduced in this PR which make the above possible:
Symbols instead of models in machines
One can bind data in a machine to a "virtual" model, which is just a symbol, as in mach = machine(:transformer, X). If my_composite is any object with :transformer as a property, then fit!(mach; composite=my_composite) will train the machine with :transformer replaced with getproperty(my_composite, :transformer). This "run-time interpolation" of models propagates to all machines in a learning network. The general user need not bother with this, but if they know about it, the export process above is less mysterious.
Separate training reports and operation reports in machines
In a change purely internal to MLJBase, the report field of a machine is now a dictionary d, keyed on method (:fit, :predict, etc). When an reporting operation is called on the machine, it's report is added to the dictionary; previously it was merged with the training report. Now when you call report on a machine, the various reports in dictionary get merged by calling a new method MLJModelInterface.report(::Model, d). This method can be overloaded by a model but there is a fallback that does a pretty good job of it (the fallback unexpectedly "just worked" for the new NetworkComposite types).
In the existing export process, fitted_params(::Machine, ...) and report(::Machine, ...) have to be special-cased for composite model types. With this new approach, that is no longer necessary, which restores uniformity to the interface.
To do

[x] Add save and restore methods for serialising <:NetworkComposite

@davnn This PR is finished or very nearly so. I wonder if you can confirm that this will serve your purposes. You can see from the example how to add "report nodes" to the model report. To test, you currently need MLJModelInterface#banana which may not be not merged yet. Where you previously subtyped UnsupervisedDetectorComposite, for example, you would now subtype UnsupervisedDetectorNetworkComposite.
Worth noting that for NetworkComposite types, operations such as predict and transform will always be reporting operations, in the sense of https://github.com/JuliaAI/MLJBase.jl/pull/806. That is, calling them on models returns two items - the usual result and a report (which could be nothing). In your case, you have no internal models with this behavior, so these extra report items for the composite are just copies of the fit report and you can ignore them. I'm only mentioning all this in case you have model-level tests for your composite models which are not expecting this. Machine reports should be unchanged, with the possible exception that items with nothing or NamedTuple() as values are now dropped.
Thank you for your patience.

Thanks, I'll try to have a look asap.

Thought I'd comment briefly on this approach since I tend to use node and learning networks.

Having a user defined struct with fields for the machines seems like a huge improvement for the transparency of the resulting object.  The surrogate approach was quite opaque and if you had to get a machine out of the interior of it the task was non-trivial.
I wonder if the machine with a Symbol argument is a necessary pun?  I'm not entirely sure what's happening underneath that, and I think it would be really nice if whatever that was could be user-facing so that it's totally obvious to users what is happening in prefit.
In the long run, I wonder if pipelines and ensembles can be deprecated in favor of "shorthand" for these networks?  It always struck me as a bit odd that there are so many different ways of composing models when one approach seems to encompass all of the others.  On the other hand, it might be pretty hard to make it as dead-simple as it currently is to compose models in pipelines that way without excessive macro magic, which I suppose might have something to do with pipelines being their own types.

@ExpandingMan Thanks for the feedback!

I wonder if the machine with a Symbol argument is a necessary pun?  I'm not entirely sure what's happening underneath that, and I think it would be really nice if whatever that was could be user-facing so that it's totally obvious to users what is happening in prefit.

Good point. Indeed, there is a user facing aspect explained in the new docstring for the machine constructor: https://github.com/JuliaAI/MLJBase.jl/blob/d5394001072160e38a8d3d2aab683f2fb05d9dc5/src/machines.jl#L299
I am also working a complete re-write of the documentation, which will explain this.

In the long run, I wonder if pipelines and ensembles can be deprecated in favor of "shorthand" for these networks?  It always struck me as a bit odd that there are so many different ways of composing models when one approach seems to encompass all of the others.  On the other hand, it might be pretty hard to make it as dead-simple as it currently is to compose models in pipelines that way without excessive macro magic, which I suppose might have something to do with pipelines being their own types.

I've found it very difficult to find a single solution that is both powerful and convenient. Exporting learning networks, as simple as I have tried to make them, are far more work than pipelines or stacks.
In a sense a pipeline is just shorthand for a learning network; I mean that is how it is implemented. But you can define a pipeline without creating your own type each time, and mapping type fields to models in the network.
Pipelines used to be generated using macros (@pipeline still exists) which auto-generates a new type each time, but that didn't work too well. I've found the newer alternative to be far more robust.
You may be right that some kind of DSL can be build on top the basics to tie everything together. I would certainly be interested in any attempt to do that.

You may be right that some kind of DSL can be build on top the basics to tie everything together. I would certainly be interested in any attempt to do that.

Not really what I was going for.  I think a simple implementation of pipelines might be preferable to a complicated implementation that's needed just to express a pipeline in the language of a generalized network.  Like I said in the other issue, pipelines are probably "good enough" in something like 95% of use cases so I don't necessarily think it would be worth complicating them just to have everything be in terms of a generalized network.

@olivierlabayle Did you want to comment on this PR? I realize you might not want to review it as it is quite long, but if you're willing and interested that would be extremely welcome.

Codecov Report

Merging #841 (fcc9fe1) into for-a-0-point-21-release (d2af6bd) will decrease coverage by 0.25%.
The diff coverage is 93.13%.

@@                     Coverage Diff                      @@
##           for-a-0-point-21-release     #841      +/-   ##
============================================================
- Coverage                     85.96%   85.71%   -0.26%
============================================================
  Files                            37       41       +4
  Lines                          3585     3718     +133
============================================================
+ Hits                           3082     3187     +105
- Misses                          503      531      +28

Impacted Files
Coverage Δ

src/MLJBase.jl
60.00% <ø> (ø)

src/composition/abstract_types.jl
60.00% <ø> (ø)

src/composition/learning_networks/nodes.jl
67.66% <22.22%> (-2.97%)
:arrow_down:

src/composition/models/network_composite_types.jl
50.00% <50.00%> (ø)

src/operations.jl
83.05% <75.86%> (-5.59%)
:arrow_down:

src/composition/learning_networks/replace.jl
94.44% <94.44%> (ø)

src/machines.jl
90.04% <97.43%> (+1.25%)
:arrow_up:

src/composition/learning_networks/inspection.jl
91.66% <100.00%> (+7.05%)
:arrow_up:

src/composition/learning_networks/machines.jl
88.88% <100.00%> (-3.76%)
:arrow_down:

src/composition/learning_networks/signatures.jl
100.00% <100.00%> (ø)

... and 11 more

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

Keen to move this along soon.
@davnn Have you made any progress testing this PR with OutlierDetection.jl?

The MLJ doc update associated with the change proposed here has been posted. The new rewritten Learning Networks section is here.

Keen to move this along soon.
@davnn Have you made any progress testing this PR with OutlierDetection.jl?

Hey, sorry I've been very busy. I'm trying to integrate it currently, my approach is as follows:
We defined wrappers for detectors (previously resulting in composite detectors, now in composite network detectors) that take a variabled number of arguments as base detectors. Previously these base detector were used in machine(detector, data...), now we should use machine(:detector_name, data...). Where does machine(:detector_name, data...) to machine(getproperty(composite, :detector_name, data...) happen?
I used something like map(d -> augmented_transform(MLJ.machine(d, Xs), Xs), getfield(model, :detectors)) before, replacing that with map(d -> augmented_transform(MLJ.machine(d, Xs), Xs), tuple_of_detector_symbols) doesn't work, but how am I supposed to map over an iterable of submodels then?

@olivierlabayle Did you want to comment on this PR? I realize you might not want to review it as it is quite long, but if you're willing and interested that would be extremely welcome.

Sorry I've just realised I've missed that! I'll try to have a look in the next couple days, it looks really promising, but please feel free to go ahead since it's been open for some time already.

Thanks @ablaom for this simplification of the learning network definition process! My only reservations are about the symbolic access of models in the definition of the network itself. For that magic to occur you've had to hack into and complexify fit_only!. Writing composite.model instead of :model doesn't seem like a huge burden to me and would also be easier to debug.  Is there another benefit beyond this short keyed access?

@davnn Thanks for looking at this.

Where does machine(:detector_name, data...) to machine(getproperty(composite, :detector_name, data...) happen?

Whenever you call fit!(node, composite=composite) where node is a node, then this will interpolate symbols in machines in the network subtended at node with the model values in the property accessible object composite (assuming those symbols are properties) before training the network. (See also proposed docs.) There is generic MMI.fit(::NetworkComposite, verbosity, data...) method which makes exactly this call on the greatest lower bound node in the network (including "report" nodes) defined by the "network interface" returned by prefit.

replacing that with map(d -> augmented_transform(MLJ.machine(d, Xs), Xs), tuple_of_detector_symbols) doesn't work

Mmm. I think I need more context to understand why this is not working, as I've by now forgotten the details. Can you please point me to the relevant code and I'll take a look. (I didn't think we had a augmented_transform in MMI, as we decided to abandon that?? Is this something you added locally?)
An alternative is to leave that particular line alone - that should still work. You don't have to do the symbol replacement. The problem will be that the reports and fitted_params for the individual detectors in your ensemble will not automatically appear in the composite model's report and fitted_params. In the case of reports, we can (probably) add them "manually" using report nodes; in the case of fitted_params I'm now thinking of adding a facility to do that also in this PR. But I should first like to see if we can avoid this workaround.

@olivierlabayle Thanks for taking the time to look over this substantial PR and for your valuable feedback.

Thanks @ablaom for this simplification of the learning network definition process! My only reservations are about the symbolic access of models in the definition of the network itself. For that magic to occur you've had to hack into and complexify fit_only!. Writing composite.model instead of :model doesn't seem like a huge burden to me and would also be easier to debug. Is there another benefit beyond this short keyed access?

Yes, there is some complication to fit_only!, but I think this is way less hacky than what is done now to expose component model reports and fitted_params, and so forth, no? Not sure what you mean by "short keyed access". The benefits are overcoming the shortcomings detailed in #831. As explained in comment above, writing composite.model will mean reports and fitted_params are missing from the composite model report/fitted_params, but is still allowed.

would also be easier to debug.

Yes, it's slightly more tedious to debug. When working with an unexported learning network with the symbol replacements, you need to add the composite=... keyword argument to your fit!(node) calls (see here)

Mmm. I think I need more context to understand why this is not working, as I've by now forgotten the details. Can you please point me to the relevant code and I'll take a look. (I didn't think we had a augmented_transform in MMI, as we decided to abandon that?? Is this something you added locally?)

Yes, I've implemented augmented_transform internally for detector models, which would now have to be extended for the new Network interface. The implementations of augmented transform work on machines, but I see that the new network works on models and fitresults, i.e. https://github.com/JuliaAI/MLJBase.jl/blob/banana/src/operations.jl#L224. I'm not sure how to translate this API to augmented transform. I tried to add an augmented_transform node https://github.com/OutlierDetectionJL/OutlierDetection.jl/blob/banana/src/mlj_wrappers.jl#L193, but that doesn't work (maybe because signatures only work with a hard-coded set of operations? https://github.com/JuliaAI/MLJBase.jl/blob/banana/src/composition/learning_networks/signatures.jl#L148).

@davnn I'm going to continue the OutlierDetection specific discussion in a new thread which will appear shortly below.


Adding option for cDNA reads

Hi,
it should be useful to have an option to disable filtering on reverse flag in order to process also cDNA reads.
Many thanks

and it's also useful to have an option to metagenome.
Many thanks

I am aware of this. I am a little reluctant to do it without a proper evaluation of the reliability on cDNA data.
In the paper we evaluated on dRNA data only.

The latest release (1.1.0) now has the option to disable removing the negative strand reads. Please note, this hasn't been benchmarked on cDNA but the option is now there. The flag is -n.


uWSGI (threaded) + django-jinja

I run my django project via uwsgi (enabled-threads) + django-jinja.
When i deploy new code and reload uwsgi, i get errors like this:
Stacktrace (последний вызов снизу):

  File "django/core/handlers/base.py", line 137, in get_response
    response = response.render()
  File "django/template/response.py", line 105, in render
    self.content = self.rendered_content
  File "django/template/response.py", line 82, in rendered_content
    content = template.render(context)
  File "django_jinja/base.py", line 139, in render
    return super(Template, self).render(new_context)
  File "newrelic/api/function_trace.py", line 98, in dynamic_wrapper
    return wrapped(*args, **kwargs)
  File "jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/elec/.env/local/lib/python2.7/site-packages/elec-4.7.5-py2.7.egg/elec/contrib/doska/templates/doska/controlpanel/post_list.jinja", line 3, in top-level template code
  File "/opt/elec/.env/local/lib/python2.7/site-packages/elec-4.7.5-py2.7.egg/elec/contrib/users/templates/users/base.jinja", line 1, in top-level template code
  File "jinja2/loaders.py", line 178, in get_source
    raise TemplateNotFound(template)

Stacktrace (последний вызов снизу):

  File "django/core/handlers/base.py", line 137, in get_response
    response = response.render()
  File "django/template/response.py", line 105, in render
    self.content = self.rendered_content
  File "django/template/response.py", line 82, in rendered_content
    content = template.render(context)
  File "django_jinja/base.py", line 139, in render
    return super(Template, self).render(new_context)
  File "newrelic/api/function_trace.py", line 98, in dynamic_wrapper
    return wrapped(*args, **kwargs)
  File "jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/opt/elec/.env/local/lib/python2.7/site-packages/elec-4.7.5-py2.7.egg/elec/contrib/market/templates/market/offer_detail.jinja", line 1, in top-level template code
  File "jinja2/loaders.py", line 178, in get_source
    raise TemplateNotFound(template)

I suppose you are running the latest version of django-jinja, and latest stable django version?

I use latest version of django-jinja. Django v1.6.10, uWSGI v 2.0.9

I can not reproduce it.
I have added wsgi.py and uwsgi.ini file in testing directory. Can you try reproduce it with provided test project changing the uwsgi parameters to something that you are using?

I test in production versions 1.3+, and this error no longer raised.


Docs.MS Release Updates for azure-template

Update docs metadata and targeting for release of azure-template

Docs Build status updates of commit 2c791f6:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs-ref-services/template-readme.md
:warning:Warning
View (azure-node-latest) View (azure-node-preview) View (azure-node-legacy)
Details

docs-ref-autogen/overview/ManagedPartner.yml
:warning:Warning
View (azure-node-latest)
Details

ci-configs/packages-latest.json
:white_check_mark:Succeeded

docs-ref-services/template-readme.md

Line 13: [Warning-h1-not-first] Markdown content is not allowed before {0}.
Line 13: [Warning-h1-not-first] Markdown content is not allowed before {0}.
Line 13: [Warning-h1-not-first] Markdown content is not allowed before {0}.
Line 14: [Warning-h1-missing] H1 is required. Use a single hash (#) followed by a space to create your top-level heading.
Line 14: [Warning-h1-missing] H1 is required. Use a single hash (#) followed by a space to create your top-level heading.
Line 14: [Warning-h1-missing] H1 is required. Use a single hash (#) followed by a space to create your top-level heading.

docs-ref-autogen/overview/ManagedPartner.yml

[Warning-DuplicateUids] Uid(azure.nodejs.sdk.landingpage.services.managedapplications) has already been defined in docs-ref-autogen/overview/ManagedApplications.yml.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


UI scale

Can you add a way to scale the ui for larger monitor?

Hi, not really sure what you mean, since that's the actual job of the UiLayoutHeightFix mod.
By running the game with that plugin once, and then editing the configuration (manual install= %steamapps\common%\Dyson Sphere Program\BepInEx\net.toppe.bepinex.dsp.uilayoutheightfix.cfg) or through the mod manager, you can set:
UILayoutHeight = 1440
OR
UILayoutHeight = 2160
are you requesting a larger value than 2160?

No use to set UILayoutHeight.
Game Resolution set 3840x2160
and UILayoutHeight set to 1080
but this mod‘s GUI is very small.

No use to set UILayoutHeight.
Game Resolution set 3840x2160
and UILayoutHeight set to 1080
but this mod‘s GUI is very small.

code reference
https://bensilvis.com/unity3d-auto-scale-gui/

Thank you @yushiro :) I'm new to Unity UI and scaling yes, so I appreciate your help, PR and detailed explanation.
@DaneelReventelov I will make a release as with this fix as soon as possible. Ideally I will rewrite parts of this to use the normal Unity UI, and not immediate mode, but that's for the future.

Fix available in release 0.5.1 https://dsp.thunderstore.io/package/alekslt/MineralExhaustionNotifier/0.5.1/


ERROR: Actor crashed! EOFError: end of file reached 	/Users/danolee/.rvm/rubi

Hi,
I am testing the sample code (simple.rb in the examples folder) but getting an error as below. I am using Rails 4.2.5 with ruby 2.3.0p0.
I, [2016-04-12T17:51:52.625539 #23982]  INFO -- : [APNS Connection#0x7fd8e3140ed8] Connecting... notification: #<Lowdown::Notification:0x007fd8e21e2f90 @token="XXXXXXXXXXXXXXXXXXXX", @id=1, @payload={:alert=>"Hello HTTP/2! ID=1"}> W, [2016-04-12T17:51:52.627668 #23982]  WARN -- : [APNS Connection#0x7fd8e3140ed8] Defer performing request, because the connection has not been established yet. I, [2016-04-12T17:51:53.786826 #23982]  INFO -- : [APNS Connection#0x7fd8e3140ed8] Connection established. E, [2016-04-12T17:51:54.092417 #23982] ERROR -- : Actor crashed! EOFError: end of file reached 	/Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in sysread_nonblock'
/Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in read_nonblock' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:42:in block in sysread'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:390:in synchronize' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:40:in sysread'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:129:in readpartial' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:223:in block in runloop'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in loop' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in runloop'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in public_send' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in dispatch'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/call/async.rb:7:in dispatch' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in block in dispatch'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in block in task' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in block in task'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in block in initialize' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in block in create'
I, [2016-04-12T17:51:54.092732 #23982]  INFO -- : [APNS Connection#0x7fd8e3140ed8] Closing...
[!] Error occurred: end of file reached
Sleep for 5 seconds`
The .pem file and the token are valid ones.

I regenerated .pem file, which did not work either. I am using OpenSSL 1.0.2g.

E, [2016-04-13T15:58:54.553659 #3666] ERROR -- : Couldn't cleanly terminate all actors in 10 seconds! /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/mailbox.rb:63:in sleep': No live threads left. Deadlock? (fatal)`

Also I found this in celluloid issues:
https://github.com/celluloid/celluloid/issues/696

If I run the example from this repo, it works fine for me. It appears that you are running the example within a Rails app, so you are probably running into this issue described in the README: https://github.com/alloy/lowdown#gotchas.

@alloy I also ran your sample code by 'ruby ./simple.rb' but got the same error.

Can you please tell me the versions of your ruby and openssl?

I asked my colleague to try out the same code but he also got the same error. He is using ruby 2.1.8 and openssl 1.0.1f

Ruby 2.3.0p0 and OpenSSL 1.0.2d_1.
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]

$ which ruby
/Users/eloy/.rubies/ruby-2.3.0/bin/ruby

$ otool -L /Users/eloy/.rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/openssl.bundle
/Users/eloy/.rubies/ruby-2.3.0/lib/ruby/2.3.0/x86_64-darwin15/openssl.bundle:
	/usr/local/opt/openssl/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
	[…]

$ ls -l /usr/local/opt/ | grep openssl
lrwxr-xr-x  1 eloy  admin  26 Nov 20 00:12 openssl -> ../Cellar/openssl/1.0.2d_1

Btw, I think it’s better to test with the CLI tool. See $ bundle exec lowdown --help and let me know how that goes.

I got the same error using the CLI tool.
lowdown -c apns_cert_prod.pem -e production -m "test" $token$ W, [2016-04-13T19:27:52.009082 #13495]  WARN -- : [APNS Connection#0x7fd36920d048] Defer performing request, because the connection has not been established yet. E, [2016-04-13T19:27:52.768356 #13495] ERROR -- : Actor crashed! EOFError: end of file reached

I turned on --debug and --verbose options with the CLI tool.
W, [2016-04-13T19:30:36.077460 #13571]  WARN -- : Dangerously suspending task: type=:call, meta={:dangerous_suspend=>true, :method_name=>:initialize}, status=:callwait 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/call/sync.rb:41:in response'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/call/sync.rb:45:in value' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/proxy/sync.rb:22:in method_missing'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/proxy/cell.rb:12:in _send_' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid.rb:207:in new_link'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-pool-0.20.5/lib/celluloid/supervision/container/pool.rb:137:in __spawn_actor__' I, [2016-04-13T19:30:36.078829 #13571]  INFO -- : [APNS Connection#0x7f8a349291c0] Connecting... W, [2016-04-13T19:30:36.080872 #13571]  WARN -- : [APNS Connection#0x7f8a349291c0] Defer performing request, because the connection has not been established yet. I, [2016-04-13T19:30:36.734282 #13571]  INFO -- : [APNS Connection#0x7f8a349291c0] Connection established. D, [2016-04-13T19:30:36.734352 #13571] DEBUG -- : [APNS Connection#0x7f8a349291c0] Maximum number of streams: 500. Flushing 1 enqueued requests. D, [2016-04-13T19:30:36.734675 #13571] DEBUG -- : [APNS Connection#0x7f8a349291c0] [00000000-0000-0000-0000-000000000001] Performing request E, [2016-04-13T19:30:36.930513 #13571] ERROR -- : Actor crashed! EOFError: end of file reached 	/Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in sysread_nonblock'
/Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in read_nonblock' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:42:in block in sysread'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:390:in synchronize' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:40:in sysread'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:129:in readpartial' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:223:in block in runloop'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in loop' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in runloop'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in public_send' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in dispatch'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/call/async.rb:7:in dispatch' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in block in dispatch'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in block in task' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in block in task'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in block in initialize' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in block in create'
I, [2016-04-13T19:30:36.930755 #13571]  INFO -- : [APNS Connection#0x7f8a349291c0] Closing...
D, [2016-04-13T19:30:37.063436 #13571] DEBUG -- : Terminating 6 actors...
W, [2016-04-13T19:30:37.064604 #13571]  WARN -- : Dangerously suspending task: type=:finalizer, meta={:dangerous_suspend=>true, :method_name=>:shutdown}, status=:receiving
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/actor.rb:230:in receive' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid.rb:395:in receive'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/future.rb:90:in value' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-pool-0.20.5/lib/celluloid/supervision/container/pool.rb:39:in block in shutdown'
/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-pool-0.20.5/lib/celluloid/supervision/container/pool.rb:39:in each' 	/Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-pool-0.20.5/lib/celluloid/supervision/container/pool.rb:39:in shutdown'
D, [2016-04-13T19:30:37.064747 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::TerminationRequest:0x007f8a336c7c20
W, [2016-04-13T19:30:37.064871 #13571]  WARN -- : Terminating task: type=:finalizer, meta={:dangerous_suspend=>true, :method_name=>:shutdown}, status=:receiving
Celluloid::Task::Fibered backtrace unavailable. Please try Celluloid.task_class = Celluloid::Task::Threaded if you need backtraces here.
D, [2016-04-13T19:30:37.065143 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::ExitEvent:0x007f8a336c6118
D, [2016-04-13T19:30:37.065205 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::TerminationRequest:0x007f8a336c7c48
D, [2016-04-13T19:30:37.065641 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::ExitEvent:0x007f8a336c6730
D, [2016-04-13T19:30:37.066061 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::ExitEvent:0x007f8a336c6118
D, [2016-04-13T19:30:37.066142 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::ExitEvent:0x007f8a336c6960
D, [2016-04-13T19:30:37.066204 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::Call::Sync:0x007f8a336c59e8
D, [2016-04-13T19:30:37.066486 #13571] DEBUG -- : Discarded message (mailbox is dead): #Celluloid::Future::Result:0x007f8a3343a368
/Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in sysread_nonblock': end of file reached (EOFError) 	from /Users/danolee/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb:178:in read_nonblock'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:42:in block in sysread' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:390:in synchronize'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:40:in sysread' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-io-0.17.3/lib/celluloid/io/stream.rb:129:in readpartial'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:223:in block in runloop' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in loop'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/lowdown-0.3.1/lib/lowdown/connection.rb:221:in runloop' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in public_send'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/calls.rb:28:in dispatch' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/call/async.rb:7:in dispatch'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:50:in block in dispatch' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/cell.rb:76:in block in task'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/actor.rb:339:in block in task' 	from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task.rb:44:in block in initialize'
from /Users/danolee/.rvm/gems/ruby-2.3.0@rails42/gems/celluloid-0.17.3/lib/celluloid/task/fibered.rb:14:in block in create'

It seems like the Apple service closes the connection on you. Can you try the following things?

Try to use the tool outside of your Rails app context. Things should really work in an isolated context.
If that still fails, I wonder if there’s something wrong with your cert after all. In case you still have an old-style cert, can you try requesting a new universal cert (that should not invalidate your existing cert) and test with that instead?

@alloy I've already tried both the old-style cert and a new style cert. :(

@alloy I installed ubuntu on a virtual machine and set up ruby and installed lowdown gem only but got the same result. I got a new push cert again and try it again but got the same result.

Wow, that’s so weird. Have you tried other clients, e.g. https://github.com/noodlewerk/NWPusher ?

Pusher works fine as long as I uncheck 'Should use sandbox environment'. I used the certificate that showed up in the menu and also tried imported .p12 file. Both work just fine.
I convet .p12 to .pem using this command:
openssl pkcs12 -in aps-nudge-demo-new.p12 -out aps-nudge-demo-new.pem  -nodes -clcerts
Is there any other way to convert .p12 to .pem than this?

@alloy I confirmed that my .pem file is valid with multiple services :(

I had a similar issue. It looks like it is an issue in the http-2 gem dependency. I reverted from version 0.8.1 to 0.8.0 and it fixed the issue.

Oooohhhhh, @patrickslin thanks for the feedback!

I was indeed able to reproduce it and have pushed a fix, which has been released as version 0.3.2.

Thanks @patrickslin and @alloy. It's working now.


Animations

Context
At the moment visual appearance is very static. Visual elements could also be in motion by user input e.g. move the scroll bar. What is needed is the possibility to move visual elements from code. This would make the appearance of an OrbTk more attractive and give us the possibility to direct the view of an user to important elements on a view.
Problem description & Solution
It should be possible to animate numeric values of widgets like position, size, rotation and colors.
It should be possible to define a duration in ms and an easing curve for each animation.

I found this last night, I think it might help?
https://crates.io/crates/vect
I will start researching tweening libraries

@FloVanGH
This seems to be a quite nice tweening library, and it wraps easer.rs. I will try and check it out today if I get a chance!
https://crates.io/crates/pareen

@millscale thank you :-). The crate looks promising. If you need some input let me know.


CLIP判别裁剪区域效果差

作者您好，我对您的这项工作非常感兴趣，但是我遇到一些问题想请教下您。我尝试将原图crop下来的区域图像（使用GT box进行crop）送入CLIP与COCO的80个类别计算相似度，但是反馈的结果令人不满意。比如对于一个在吃热狗的人，CLIP会将他判断为热狗（且概率非常高），但实际标签是人，而且这种误判情况非常多。您有遇到这种问题吗？请问遇到这种问题您有什么好的解决办法吗？

@nhw649 Thanks for your interest. Your finding is exactly what we demonstrated in Figure 1 of paper. Cropping image regions and feeding them to CLIP yields unsatisfactory performance (RCNN style). That's one of the major motivations of RegionCLIP.

@nhw649 Thanks for your interest. Your finding is exactly what we demonstrated in Figure 1 of paper. Cropping image regions and feeding them to CLIP yields unsatisfactory performance (RCNN style). That's one of the major motivations of RegionCLIP.

我直接使用你们提供的权重初始化CLIP编码器，这样就可以吗？

@nhw649 You can refer to region feature extraction. This script can extract features for image regions. Note that it's performed on the feature level (the context information is already encoded into region features), instead of the raw image level (not including the context information).

好的，我试试

So for image region classification of CLIP, which one is better? Crop and encode or encode and RoIAlign? Is there any direct evidence?  We can see from Fig.1 that RCNN style classification would lead to unsatisfactory results (19.1% Accuracy on LVIS), and from Tab.4 we can see the mAP of CLIP on LVIS (using RoIAlign and gt boxes) is 42.2. But I don't think these two metrics(accuracy v.s. mAP) are the same thing, is there any further ablation on this? Thank you in advance for your time!

So for image region classification of CLIP given gt boxes, which one is better? Crop and encode or encode and RoIAlign? Is there any direct evidence? We can see from Fig.1 that RCNN style classification would lead to unsatisfactory results (19.1% Accuracy on LVIS), and from Tab.4 we can see the mAP of CLIP on LVIS (using RoIAlign and gt boxes) is 42.2. But I don't think these two metrics(accuracy v.s. mAP) are the same thing, is there any further ablation on this? Thank you in advance for your time!

I think the effect is almost the same. You can try.

@lcxrocks @nhw649 The performance of "cropping and encode" highly depends on the way you crop the image regions. For example, cropping a larger box than the object region and ensembling multiple larger boxes can help to improve performance significantly (ViLD also reveals this observation). RoIAlign, in comparison, is designed for learning region representations and encourages the network to learn local features and context information in the cropped feature area. In my experiments, they had close performance.

@nhw649 You can refer to region feature extraction. This script can extract features for image regions. Note that it's performed on the feature level (the context information is already encoded into region features), instead of the raw image level (not including the context information).

Hi, I use the extract-region-features script to extract the region features and want to use it in the following task. However, I got the region features which shape is (100, 1024) almost be the same at each dimension from the example image. What make this happen? Are the 100 features come from the highest scores from the region recognition results? Why the 100 features are the same? Thanks for your time.

@nhw649 You can refer to region feature extraction. This script can extract features for image regions. Note that it's performed on the feature level (the context information is already encoded into region features), instead of the raw image level (not including the context information).

Hi, I use the extract-region-features script to extract the region features and want to use it in the following task. However, I got the region features which shape is (100, 1024) almost be the same at each dimension from the example image. What make this happen? Are the 100 features come from the highest scores from the region recognition results? Why the 100 features are the same? Thanks for your time.

You might want to print the bounding box coordinates. In this case, all 100 regions might be the same. This is because the localizer is not well set up. Please double-check your parameters for RPN.

@nhw649 You can refer to region feature extraction. This script can extract features for image regions. Note that it's performed on the feature level (the context information is already encoded into region features), instead of the raw image level (not including the context information).

Hi, I use the extract-region-features script to extract the region features and want to use it in the following task. However, I got the region features which shape is (100, 1024) almost be the same at each dimension from the example image. What make this happen? Are the 100 features come from the highest scores from the region recognition results? Why the 100 features are the same? Thanks for your time.

You might want to print the bounding box coordinates. In this case, all 100 regions might be the same. This is because the localizer is not well set up. Please double-check your parameters for RPN and NMS.

I got the 100 different box coordinates, but the feats are the same. I use the default config in the extract_feature_extraction.sh and I got this result:


chore: sync spec from template-sdk repo

copied openapi.yaml file over from https://github.com/speakeasy-sdks/template-sdk (1 difference though, the optional bearer security for /drinks endpoint (*))

clarified login flow using basicHttp security at the operation level
added optional bearer authentication for /drinks enpoint to match description (*)
added x-speakeasy-usage-example descriptions and tags
added retries extension to webhooks subscription
added BadRequest error response

just double checked it builds correctly for all targets, merging


Github actions could skip playwright browser download where browser not used

Motivation/Description of the PR

Build is going to be a bit faster when npm install skips downloading of browsers for framework not tested in pipeline
Resolves #issueId (if applicable).

Applicable helpers:

[ ] WebDriver
[ ] Puppeteer
[ ] Nightmare
[ ] REST
[ ] FileHelper
[ ] Appium
[ ] Protractor
[ ] TestCafe
[ ] Playwright

Applicable plugins:

[ ] allure
[ ] autoDelay
[ ] autoLogin
[ ] customLocator
[ ] pauseOnFail
[ ] coverage
[ ] retryFailedStep
[ ] screenshotOnFail
[ ] selenoid
[ ] stepByStepReport
[ ] stepTimeout
[ ] wdio
[ ] subtitles

Type of change

[ ] :fire: Breaking changes
[ ] :rocket: New functionality
[ ] :bug: Bug fix
[ ] :clipboard: Documentation changes/updates
[ ] :hotsprings: Hot fix
[ ] :hammer: Markdown files fix - not related to source code
[ ] :nail_care: Polish code

Checklist:

[ ] Tests have been added
[ ] Documentation has been added (Run npm run docs)
[ ] Lint checking (Run npm run lint)
[ ] Local tests are passed (Run npm test)

wow, thank you!


Remove redundant translation entries from ComponentTranslations.java

Change-Id: Iec2111a6279f592fa98567b93898c3503ae5ae14

As we add more components, we eventually will run into a limitation in the size of Java methods. We have seen reports of this issue in the open source community when people add a bunch of new components, and I recently ran into it when extracting the AR components into their own branch. Our code is overly conservative here and outputs pairs even if they already exist, which increases the code size but doesn't do much because of the fact that the last value put will override any previous value(s). This change makes it so that each translation is output exactly once, decreasing the generated code size.


Typings cannot be resolved for markdown.rehypePlugins in astro.config.ts file

Astro Info
Astro                    v3.0.10
Node                     v20.5.1
System                   Windows (x64)
Package Manager          npm
Output                   static
Adapter                  none
Integrations             @astrojs/vue
                         @astrojs/mdx
                         @astrojs/sitemap

If this issue only occurs in one browser, which browser is a problem?
No response
Describe the Bug
I'm trying to follow the Add icons to external links recipe, and I ran into this problem:

The error says:

a workaround would be (or actually it might be the only practical solution for now):

What's the expected result?
No errors are reported.
Link to Minimal Reproducible Example
https://stackblitz.com/edit/github-pxea2u?file=astro.config.ts&on=stackblitz
Participation

[ ] I am willing to submit a pull request for this issue.

It looks like the file might be missing a title. Additionally, there seems to be a conflict between the file name and the code block extension. The text references a .mjs document, but the code block is marked as TypeScript.

I don't know why but updating to newer Astro version (still in v3) fixes this issue.
And it seems like Astro v4 does not have this issue, so I'm closing this issue for now.


Investigate rework of timer

Investigate using specific init.

This can't be used since the times need to be updated and stored by the game state.


Special keys not mapping correctly

Special keys (like up arrow, left arrow, etc.) are not mapping correctly. They are showing up when I list the key layout as \x1b, \x10, etc.

According to this discussion, there are constants for these keys that we can use to connect the name to the string. However, it looks like this has to be done before converting to unicode.

I was not able to match the unicode character generated by UCKeyTranslate for navigation keys with any of the constants provided by Quartz. Instead, I'm hard-coding these non-printable keys like the other layout-independent keys. Arrow keys, page up/down, and home/end have all been hard coded and should now work.


Project selection page integration

Integrates the project select page:

each row has relevant data EXCEPT current sprint (we have not gotten to sprints yet)
can click on the button to navigate to a project's release page

still need to:

create new project
rename/edit project
shortcuts

Fixed navbar name displaying just now


[PE-D][Tester E] Attendees cut off

The Attendees column is not scrollable, so the content is not viewable in a smaller window. Take for example someone with the scale of their computer set to large, or with a lower resolution display, some content is potentially inaccessible.
Steps to replicate:

Set height of window to smallest possible height.
Type in command ls and press enter.
Try accessing Attendance for week 13 without resizing the window.

Labels: severity.Medium type.FeatureFlaw
original: nyankoclaws/ped#1

Another issue created by a tester has indicated that the view panel needs to be scrollable, so I will be closing this as a duplicate issue.


ESLint error in tailwind.config.cjs

Current Behavior
line: const { fontFamily } = require("tailwindcss/defaultTheme")
get error: Require statement not part of import statement.eslint@typescript-eslint/no-var-requires
Expected Behavior
No ESLint error
Steps To Reproduce
CLI Instalation
Link to Reproduction / Stackblitz
No response
More Information
No response

Can you link a reproduction, I don't get that lint error and I haven't ran into this when starting a new project from scratch but I'm definitely interested in seeing if it's something we need to fix.

Indeed it’s about ESM imports, but why not just update it to
import { fontFamily } from "tailwindcss/defaultTheme"
instead of changing the .cjs to a .js ?


feature: support passing hyperparams directly to entry point function

Issue #, if available:
Per @bpdoyle's feature suggestion
Description of changes:
Allow customers to add arguments to their entry point function to access hyperparameters. This is a non-breaking change, since previously, positional arguments were unsupported and kwargs ignored. Customers can still access hyperparameters through the environment variable.
# orchestration script

hyperparameters = {
    string_arg: "string",
    float_arg: 3.14,
}

# algorithm script (previously)

def entry_point():
    hp_file = os.environ["AMZN_BRAKET_HP_FILE"]
    with open(hp_file) as f:
        hyperparameters = json.load(f)
    string_arg = hyperparameters["string_arg"]
    float_arg = hyperparameters["float_arg"]
    print(string_arg)
    print(float_arg)

# algorithm script (now)

def entry_point(string_arg, float_arg=0):
    print(string_arg)
    print(float_arg)

# algorithm script (now, alternative)

def entry_point(**hyperparams):
    print(hyperparams["string_arg"])
    print(hyperparams["float_arg"])

Testing done:
Manual verification for all of the positional arguments, *args, and **kwargs in local/aws quantum jobs. Integ tests to be added to the bdk upon building the service containers with this change.
Merge Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your pull request.
General

[X] I have read the CONTRIBUTING doc
[X] I used the commit message format described in CONTRIBUTING
[X] I have updated any necessary documentation, including READMEs and API docs (if appropriate)

Tests

[X] I have added tests that prove my fix is effective or that my feature works (if appropriate)
[X] I have checked that my tests are not configured for a specific region or account (if appropriate)

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

tests failing around mocking of hp file, working on a fix


fix logger, fix histograms, add histograms for "http.server.requests"

Revert base time unit to "milliseconds" - micrometer histograms have a lower bound of 1 - regardless of the unit (and 1s is too large for server response times)
enable histograms for "http.server.requests"
Logger is configured automatically for Logback and Log4j2 - no need to add any configuration to your application (if you have configured the OpenTelemetry logger already, it will be used)

Created an issue in otel java: https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/8841


Introduction of Qowaiv.Security.Cryptography.Secret

As a result of #198, I thought it would be nice to have a secret (CryptographicSeed potentially should be refactored including breaking changes) that prevents the secret it contains being sniffed (unintentionally).
So in general: it can be de-serialized (I'm considering not to support XML for this one), but serialization will just add "???", as that is the .ToString() value. The [DebuggerDisplay] will show the secret (helps developers a lot), and to access the secret, the .Value() method has to be used. (Again, to prevent all kinds of tooling from exposing data members.
This is still in draft, as I like to get feedback on things others think such a secret should have, or lack.

Just wondering how this relates to stuff like (the deprecated) SecureString class with regards to safety (or even if it should relate at all; perhaps the use case is completely different?).

I think it relates. It is not encrypted in in memory (yet) I considered implementing IDisposable (and make it a class). You could ague that this implementation aims not as high ash SecureString, as is only tries to prevent unintended exposure of its value, and making the intend clear. And is also the reason why this is in draft: I'm open to suggestions to improve on it.

Just wondering how this relates to stuff like (the deprecated) SecureString class with regards to safety (or even if it should relate at all; perhaps the use case is completely different?).

I think it relates. It is not encrypted in in memory (yet) I considered implementing IDisposable (and make it a class). You could ague that this implementation aims not as high ash SecureString, as is only tries to prevent unintended exposure of its value, and making the intend clear. And is also the reason why this is in draft: I'm open to suggestions to improve on it.

I think that is fine when using it as a value type in a domain. At some level it will probably also be up to the user to decide whether an implementation is secure enough for a specific use-case.


Fix organisation queries

Changes in this PR
Fix bug with Organisations possibly being listed multiple times when selecting an Organisation for a new Profession

Can we park this until the work I'm doing on the multiple organisations is in? This might stomp on a bunch of work that's currently in flight (and is hurting my head a lot)

@bryangaledxw Thanks for spotting and sorting this - do you mind making this as draft until Stu's work is done?

Sure thing, opened a new draft PR (doesn't seem to be possible to mark an already non-draft PR as draft)


Version change from 10.1.0 to 10.1.1

Changes

[x] Changed package version to 10.1.1.

Pending release references

#121

Regards.

Codecov Report

Merging #122 (0ccf7c2) into master (0ac89ba) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #122   +/-   ##
=======================================
  Coverage   92.12%   92.12%
=======================================
  Files         254      254
  Lines        5384     5384
  Branches      868      868
=======================================
  Hits         4960     4960
  Misses        251      251
  Partials      173      173

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Detect OpenAI / GPT related keys

With the demand for GPT related keys we should add support to detect those as well.
This means developing the detection and contributing it to gitleaks, so they'll add it to their big list of key already detected. See https://github.com/gitleaks/gitleaks/tree/master/cmd/generate/config/rules
Please talk to me before submitting the PR to them.
Reference (in Hebrew) about GPT stolen keys at https://www.geektime.co.il/gpt-4-pirates-are-rampant/
CC @Alexaro1cx

This is a token I created from OpenAI (already revoked), and gitleaks found it.

This issue is already supported and should be closed.

closing as already supported


chore: Add pubspec.lock to .gitignore

🙌 What's Done

Add pubspec.lock to .gitignore

✍ What's Not Done

📝 Additional Notes

I added pubspec.lock to .gitignore in the following PR, so it seems okay to close this PR!
https://github.com/altive/altive_lints/pull/27

I guess I forgot all about it!


[T2A3][W09-A3] Jamos Tay

Hi @jamos-tay, your pull request title is invalid. It should be in the format of [Activity ID][Team ID] Your name, where [Activity Id] has no dashes or spaces (e.g. [T2A3] stands for Tutorial 2 Activity 3) and [Team ID] has one dash only and no spaces (e.g. [W14-A2] means Wednesday 2pm (14 hrs), Phase A, Team 2). Please follow the instructions given strictly and edit your title for reprocessing.
Note that this comment is posted by a bot sorting all the pull request submissions.

line 205-216:  magic numbers should be refactored and no blank line between if blocks


package/commander: prefer strings.Replacer for multiple replacements at once

Woah, that's cool. TIL about strings.NewReplacer. Thanks!


Bash fails on Windows when the tool and the agent are located on different disks

Type: Bug
Task: Bash
Description
The Bash task fails if the work/temp directory of the Self-Hosted Windows Agent and the bash tool are located on different file systems.
Root cause
This is the environment issue related to mounting the file system on which the work/temp agent directory is located.
It looks like the cwd option of the spawn method from the child_process Node.js module used on the task-lib side does not work properly, and the Bash task fails to translate via the related function the work/temp agent directory, which contains the bash script to be executed and is located on another file system.
Actions
Implement a warning to the Bash task output if the issue has been detected.
Reproducing
Via pipeline:
pool: Self-Hosted Agent Pool

steps:
- bash: echo "Hello, World!"

Here is a simple Node.js script to reproduce this issue locally:
const { spawn } = require('child_process');

const child = spawn('C:\\windows\\system32\\bash.exe', [ '-c', 'pwd' ], {
    cwd: 'D:\\<path-to-agent-root-directory>\\_work\\_temp', // Actual
    // cwd: 'C:\\Temp', // ---> Expected and received: /mnt/c/Temp
    // cwd: 'D:\\Temp', // ---> Expected: /mnt/d/Temp | Received: /home/<username>
    env: undefined,
    shell: undefined,
    windowsVerbatimArguments: false
});

child.stdout.on('data', data => console.log(data.toString()));

Logs
##[debug]exec tool: C:\windows\system32\bash.exe
##[debug]arguments:
##[debug]   -c
##[debug]   pwd
C:\windows\system32\bash.exe -c pwd
/home/<username>
##[debug]Exit code 0 received from tool 'C:\windows\system32\bash.exe'
##[debug]STDIO streams have closed for tool 'C:\windows\system32\bash.exe'
========================== Starting Command Output ===========================
##[debug]which 'C:\windows\system32\bash.exe'
##[debug]found: 'C:\windows\system32\bash.exe'
##[debug]C:\windows\system32\bash.exe arg: /home/<username>/<uuid>.sh
##[debug]exec tool: C:\windows\system32\bash.exe
##[debug]arguments:
##[debug]   /home/<username>/<uuid>.sh
C:\windows\system32\bash.exe /home/<username>/<uuid>.sh
/bin/bash: /home/<username>/<uuid>.sh: No such file or directory
##[debug]Exit code 127 received from tool 'C:\windows\system32\bash.exe'
##[debug]STDIO streams have closed for tool 'C:\windows\system32\bash.exe'
##[error]Bash exited with code '127'.

Update message


Movie Recommendation System using AutoEncoders

Description
Movie Recommendation System using AutoEncoders
Fixes #2075

Type of change
Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have created a helpful and easy to understand README.md
[x] My documentation follows Template for README.md

Project Metadata
If there is no-file/nothing to fill the below fields with, then type: none
Example: If no requirements.txt needed/present, then type none in Requirments.
Category:

[x] AI/ML

Title:  Movie Recommendation System using AutoEncoders
Folder: AutoEncoder-Deep-Learning
Script: AutoEncoder-Deep-Learning/AutoEncoders.ipynb
Contributor: ayush-09
Description: Movie Recommendation System using AutoEncoders

@avinashkranjan Please review this PR
Thanks


speperate use of GeoNode in Windows

is it possible to get a short note of wich configurations should be changed to unser GeoNode stand alone from Cargoview in Windows ? (apache config changes and) I'd like to use geocode for itself supporting it to a non profit organisation, for that case there are no cost's allowed, why I would like to use geonode build up for them.
Thanks!

you can use the windows installer to install geonode and cartoview on windows. The installer is free and available from http://cartoview.net A new installer will be released within two weeks

I've downloaded and installed cartoview. I would like to kind of  'extract/delet' out cartoview as I've read about cost's using packages and that cartoview will access them when starting it up. For that reason I thought i could make sure not to have any cost's implemented when only using geonode config parameters - when I provide this as an option to the organization? If I'm wrong please correct me! I would prefer If I could just leave it like default installed and tell them not to use any packages so I would only have to modify the look.
having said this - if I would be wright with 'extracting/deleting' point could these changes run like they are modified ?
--deafult after installation--
WSGIScriptAlias / 'C:/Program Files (x86)/Cartoview/project_template/project_template/wsgi.py'
WSGIPythonPath 'C:/Program Files (x86)/Cartoview/project_template;C:/Program Files (x86)/Cartoview/python/Lib/site-packages'
<Directory 'C:/Program Files (x86)/Cartoview/project_template/project_template'>

Require all granted

Alias /uploaded 'C:/Program Files (x86)/Cartoview/project_template/uploaded/'
Alias /static 'C:/Program Files (x86)/Cartoview/project_template/static_root/'
<Directory 'C:/Program Files (x86)/Cartoview/project_template/uploaded'>
Require all granted

<Directory 'C:/Program Files (x86)/Cartoview/project_template/static_root/'>
Require all granted

--end deafult --
--modified--
WSGIScriptAlias / 'C:/Program Files (x86)/Cartoview/geonode/geonode/wsgi.py'
WSGIPythonPath 'C:/Program Files (x86)/Cartoview/geonode;C:/Program Files   (x86)/Cartoview/python/Lib/site-packages'
<Directory 'C:/Program Files (x86)/Cartoview/geonode/geonode'>

Require all granted

Alias /uploaded 'C:/Program Files (x86)/Cartoview/geonode/upload/'
Alias /static 'C:/Program Files (x86)/Cartoview/geonode/static/'
<Directory 'C:/Program Files (x86)/Cartoview/geonode/upload'>
Require all granted

<Directory 'C:/Program Files (x86)/Cartoview/geonode/static'>
Require all granted

--end --
I'm not sure about the /upload and /static parts, do i have to leave it like default ? and if I change PythonPath to 'geonode' I'd have to change it also in Windows PATH Variable(PythonPath)right? or will they be set with that command ? Would there be a need to add 'Options FollowSymLinks'  for /uploaded as to follow to the documents uploaded ?
Thanks for responding!!
Btw - when you said releasing new installer in two weeks - you mean cargoview or GeoNode ?

Update: I think I got the point. I can leave all Apache https.conf details as set (use the project_template folder and .wsgi file) and change only local_settings.py when using my own database/passwords/URL swell as Geoserver web.xml, config.xml.
so that only leaves open the 2 question about causing any cost's using this /project_template configuration. ? and the release in two weeks.
cheers

there is no cost to using any cartoview software it is all open source
On Wed, Nov 28, 2018 at 12:09 AM TimWanner<EMAIL_ADDRESS>wrote:

Update: I think I got the point. I can leave all Apache https.conf details
as set (use the project_template folder and .wsgi file) and change only
local_settings.py when using my own database/passwords/URL swell as
Geoserver web.xml, config.xml.
so that only leaves open the 2 question about causing any cost's using
this /project_template configuration. ? and the release in two weeks.
cheers
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/cartologic/cartoview/issues/189#issuecomment-442236525,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMktx2K4GcMtEhwKaTVo6CD2u1hqCNjoks5uzbgWgaJpZM4Y2R7Z
.

great! well I'm sorry then.  I got confused about that 'packages' Section on cartoview main page - so there are only costs if the hosting of the website is done via cartoview when I get this right then.
I guess the Installer release then is meant for Cartoview.
Thanks