Integration with Unreal Engine

Unreal Engine has an Online Subsytem that provides an abstraction layer for game developers to build sessions and match making in a standardized way.
It would be awesome if there was a plugin for Agones that added subsystem integration so it can easily be used in Unreal.
https://docs.unrealengine.com/en-us/Programming/Online

Good note from chat - we should have blueprint support as well.

What sort of Blueprint support would you envision? In my experience implementing an Online Subsystem specifically for an Agones server should be sufficient (ie. the OSS would talk to the sidecar and then provide all the required functionality/hooks required for the server).

I'll defer to @digitalfiz on this one. My Unreal experience is very minimal - but something I want to change. So would be great to have some direction from all of you.

You may be correct @justinliew. Technically by integrating with the online subsystem you get quite a bit of built in blueprint support. Maybe all the blueprint support that is needed? AT this point I don't know enough about all of Agones functionality to know if anything more is needed.

Blueprints are meant for scripting, and typically used by designers or programmers who are implementing gameplay mechanics, level mechanics and the like. I can't think of any obvious reasons those users would need any Agones support. Possibly I'm missing something, but I'd say the less networking you need to expose to Blueprints, the better.

A usecase for blueprint support integrating with Unreal Engine and back-ends is defining the statistic generated when attached to blueprint code. For instance an artist prototypes when you want to count the specific choice made in a conversation tree. See the conversation popularity ranking in the game Dreamfall Chapters.
Another usecase is the typical steps of joining a matchmaking lobby, being matchmade and joining a server. Although this is can be done in C++, the widespread blueprint usage of Unreal Engine allows lesser skilled developer to do it. This gives a wider audience to the framework.

I'd argue that the first case shouldn't touch anything Agones deals with, though. That sounds like something that would be sent via a REST call to a service.
The second point I agree might have some Blueprint hooks, although I would strongly urge the actual matchmaking state machine/stages be done in native (C++) code, as there are a ton of edge cases that Blueprints are error prone at handling.

On the first note I think that is covered under the online subsystem as maybe user cloud, shared cloud or leaderboards?
On the second point matchmaking is built into the online subsystem so again not much more to do unless you wanted to extend what is possible over the built in matchmaking functionality.
https://docs.unrealengine.com/en-US/Programming/Online/Interfaces/Session
The more I think about it the key is going to be making sure that anything in the online subsystem Agones can handle is added to a plugin for Unreal Engine. I think that maybe even existing systems like AdvanceSessions can be layered on top of it to give extended functionality.

Sounds good. I haven't worked with the sessions stuff as it appears it was done to plug holes in the lack of Steam support, which I never needed.

I don't think integrating with online Subsystem is good idea. At least for getting something working.
From what I understand Agones is more of server hosting and management in Kubernetes cluster.
And on that front having UE plugin would be awesome (I'd like to start working on it when I get my current projects in better state).
OnlineSubsystem interface is meant to provide abstraction over services like GameSparks, Playfab, Steam, or any other multiplayer backend where you have ie friends lists, sessions (matches) etc.
Agones integration in UE should first focus on communicating between Kubernetes cluster and UE server instance (ie, getting port and ip of server, health check etc).
Match making service (ie, sending needed IP and Port) would be out of scope, and unnecessary complicated at that point.
Ie if I use GameSparks I will use Agones only for launching/monitoring servers. Agones will never be directly exposed to players it will only communicate with GameSparks service, which will in turn send needed information to client to connect.
Creating OnlineSubsystem plugin would mean exposing Kubernetes cluster to world and I don't think it is needed and/or good idea for now.

@iniside The more I understand about Agones the more I agree with you. When I first heard about it and started looking into it I thought it was going to be more than a Kubernetes wrapper but it looks like that is the goal. Keep things simple. Maybe there should be focus on integration with services like GameSparks, Playfab or Steam? Might even spawn off a project for doing what those services do but self managed like and works with Agones.

I have started working on basic plugin for Unreal Engine. No plans for any deep integration as of now, as it would require creating some backing services.
In current state plugin will only wrap around provided API. I'm currently wrapping code and will test the server over next few days on GKE. If it works I will upload full plugin to Github.

Ok. This proved to be far more difficult than I anticipated. The biggest problem lies in building grpc/protobuf and integrating it into Unreal.
I'm not that good myself with setting up build systems. Some basic issues that I fixed:

Conflicting time.h headers in protobud/grpc -> renamed.

Conflicting macro check -> renamed

MSVC Macros not resolving properly when building for linux target in Unreal -> Add additional macro in headers that caused issues.

That was the easy part.
The part is the fact that grpc brings along loads of other dependencies. Like libssl (which is incompatibilie the version already in Unreal).
Cooked builds miss some dynamic libraries like libgrpc++_unsecure.so.1, which is nowhere to be found nor does it build with agones.
Possible solutions to those issues is to build grpc (modified) along with Unreal from sources, instead of relying on precompiled libraries.
Other solution is to not use gRPC for communication, but I guess it is not an option.

I'm starting to wonder if we prioritise the work to expose the sdk grpc endpoints as rest endpoints just to make engine integration easier - especially for anything C++ based.
@dzlier-gcp what do you think - that would make your life easier as well, no?
@Kuqd wdyt?

I will keep trying to integrate grpc into Unreal. But that's going to be custom fork, with some unreal specific fixes.  I found interesting blog post:
https://adamrehn.com/articles/cross-platform-library-integration-in-unreal-engine-4/
Which might help with it.
Is there any reason that agones might not work with the latest version of GRPC ?

In the past I've found grpc incredibly backward compatible, so it should work with the latest version.
At some point we should also upgrade just to keep up with updates.

Hi, I've reading about the Agones integration with Unreal, and I am a little confused as to the use cases for this. As I understand, Agones should talk exclusively to the custom matchmaker, and not to the game client or the game server. Since Unreal simply provides and game client/server, and does not act as a custom matchmaker (even though Online Subsystem provides matchmaking wrapper, it doesn't actually do the matchmaking), why would Unreal game client/server need to talk to Agones?
As mentioned before, I thought it would be more beneficial if the matchmakers like PlayFab or GameSparks would integrate with Agones to know when to spawn new servers.
As another sidenote, I am aware that PlayFab uses AWS and offers custom game server scaling already, I would imagine that is a similar services to Agones

Agones needs to be integrated with Unreal, so Kubernetes cluster know what is going on with server. Ie, if server do not ave players and game ended Kubernetes will automatically deallocate resources need for this server.
At basic level you don't need anything beyond game server, telling kubernetes what is it state.
You can theoretically extend it to provide other functionality (like saving/loading server state, but that's really case specific).

@iniside Have you success running unreal server with Agones? Sounds like it works for you.

I changed the title, as people were thinking this ticket wasn't about getting Unreal working. Let me know if you have objections.

@g-ericso
Not yet. I'm still at the stage of integrating gRPC into unreal.
The upside is, I'm slowly getting it done. I decided the best course will be forking gRPC, protobuf and writing custom build-chain with Python.
Building it with Unreal Toolchain requries some unreal specific fixes. IF possible I will try to push patches upstream, once it is working.
Unreal is very picky about what can be linked to it, and default make files from gRPC were just not creating for that specific scenario.

Here is basic build of gRPC plugin for unreal
https://github.com/iniside/ue-grpc
Unreal<>Agones integration will be depending on this. I figured out you might want to use gRPC without Agones, and that's why it is in seprate plugin.

@iniside Thanks for the update. I will take a look this week and provide you some feedback.

As a heads up, I'm working on the exposure of the SDK Server via HTTP+JSON right now, and should be ready by end of this week (next at the latest) - which should provide a much easier option for building a native SDK for Unreal, since it looks like Unreal already can do HTTP+JSON natively, rather than trying to shoehorn gRPC into the mix.

One more question in regards to this issue, I've just tried to put up an UE4 server and orchestrate it via Agones, it is giving back status of "unhealthy" immediately. Is this because there's no communication between UE4 and kubernetes so that the game server can tell when it is spun up and healthy?

Now that #240 is complete and in the development branch. This should be relatively easy to implement now. @g-ericso I know you are playing with this - let us know how your efforts are going :smile:

We will be testing the new feature this coming week. The idea is to make a c++ unreal simple .cpp and .h classes which will be shared in this repo. Stay tuned!

We made a c++ lib and connected successfully with localhost server. However, I don't have bandwidth to make a blueprint or UE library.

Try this: https://github.com/GoogleCloudPlatform/agones/pull/647
The plugin doesn't require any programming. Just drop it in the Plugins directory of your project. I added some settings to the project settings (just search for agones).  Currently, the plugin calls ready when the dedicated server world is ready, calls health pings and shutdown when the server shuts down.
Would love to hear your feedback.

Closing, as now we have #647 !


How to plot 2 DRT graphs together

Hi, I've build two different DRT graphs from my dataset as it follows
# define the frequencies and measurements
frequencies = df[!, :"Frequency (Hz)"]
measurements = df[!, :"Z' (Ω)"] .- (df[!, :"-Z'' (Ω)"] .* im)

# Find the optimal lambda parameter using Saccoccio et al.'s Re-Im cross-validation test functions, this may take several minutes.
@time λ_opt =  find_optimal_lambda(frequencies, measurements)

#Calculacte the DRT using default keyword argument values.
peak_taus, peak_amplitudes, taus_out, drt =  compute_DRT(frequencies, measurements,  λ = λ_opt)

#With optional arguments for a label "example" and a green color of the plot.
g = plot_DRT(peak_taus, peak_amplitudes, taus_out, drt, lab = "after", color = "red")

Is there a way I can put both graphs together? I still couldn't get the hang for the plot_DRT! function. Thank you everyone in advance.

The plot_DRT! function takes the same argument as the plot_DRT  function, if you include the relaxation_times, peak_amplitudes, taus_out and drt  outputs of the compute_DRT  function for the second graph (e.g., plot_DRT!(peak_taus2, peak_amplitudes2, taus_out2, drt2)), it should be displayed in the same graph as the formerly plotted DRT, with which you used the plot_DRT function.

Thank you very much. Later I'll be able to implement your correction.

Sorry for sending so many messages. What I ended up doing to fix it was defining your plot_DRT! function inside my code.
# define the frequencies and measurements
frequencies2 = df2[!, :"Frequency (Hz)"]
measurements2 = df2[!, :"Z' (Ω)"] .- (df2[!, :"-Z'' (Ω)"] .* im)

# Find the optimal lambda parameter using Saccoccio et al.'s Re-Im cross-validation test functions, this may take several minutes.
@time λ_opt2 =  find_optimal_lambda(frequencies2, measurements2)

#Calculacte the DRT using default keyword argument values.
peak_taus2, peak_amplitudes2, taus_out2, drt2 =  compute_DRT(frequencies2, measurements2,  λ = λ_opt2)

function plot_DRT!(peak_times,peak_amps,τs,γs;lab="DRT",color = :auto, style= :solid)
    fig = Plots.plot!(τs,γs,xaxis=:log,label = lab,ylabel = "γ (Ω)",xlabel = "τ (s)",linecolor=color,linestyle= style)
    for (time,amp) in zip(peak_times,peak_amps)
        Plots.plot!([time,time],[0,amp],linestyle=:dash,linewidth = 0.5, linecolor=:black, label=nothing)
    end
    return fig
end

#With optional arguments for a label "example" and a green color of the plot.
plot_DRT!(peak_taus2, peak_amplitudes2, taus_out2, drt2, lab = "after", color = "red")

It looks like it worked, for some reason my instance of your package didn't manage to import all your functions


Cobra2

A migration of the cli to cobra.
As suggested by @rking788, this PR has cleaner commit messages.

Think I would squash all commits anyway on merge, so we should be fine. 😉


Basic AABB 2D collisions: for circles and rectangles

I'm not sure if I wouldn't squash all collider commits together, later ones are changing / fixing code that was introduced in previous one (ex. the initialize one)

I fixed it, just letting you know

I fixed it, just letting you know

OK, sorry, some copying from 2DGK was there ;))))) (that's why camelCase and west const...).
If you need something else, just hit me up. Probably you're right (or I need to clarify something).


This Tools is not run for Ex2010  ?

Unable TO find type [PS Credential]: make sure that the assembly containing this step loaded

Hmm... this was working on 2010 initially. Investigating.

It's definitely broken when running locally on 2010, and there are several changes needed to get it working due to the older version of PowerShell.
One option is to Enable-PSRemoting on 2010 and then run it from somewhere else, using the -ComputerName parameter to point it to the 2010 server. That does work.
Another option is to run the blog commands manually on 2010.
Keep in mind that the script is of limited use on 2010 even in a fully working state. The commands from the blog post search several folders that don't exist on 2010. I think the goal for this script will be to run the tests we can, remotely, against 2010, and fail gracefully where the tests don't apply to 2010.

Confirming SBS 2011 when run locally is throwing the same error.
Please fix as this is the only server in infrastructure so no remote option possible.

Try to bind the $credential function with = get-credential "domain\username"

This script requires Powershell 3.0 and later, Exchange 2010 by default I believe has Powershell 2.0 installed.

Check if your shortcut to "Exchange Management Shell" includes "-version 2.0" in the parameters.
If so, remove this and try again.

The script should start with #Requires -Version 4 to prevent people trying to use it in the wrong version of PowerShell.

You can also remove the PSCredential requirement if that's the blocker. I haven't actually see a case where we need to pass credentials. Just delete this line:
[pscredential]
Or change it to some other data type:
[string]

I change [pscredential] to [string] and got it:
[PS] D:\Downloads>.\Test-ProxyLogon.ps1 -OutPath .\logs
cmdlet Write-Progress at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
Status:

For the "Status:" prompt, you can change every Write-Progress command in the script so that it has a -Status parameter. For example, change:
Write-Progress -Activity "Checking for CVE-2021-26855 in the HttpProxy logs"
To:
Write-Progress -Activity "Checking for CVE-2021-26855 in the HttpProxy logs" -Status "Checking"
However, after you fix that you are going to run into another issue... This series of issues is why there isn't an update that makes this work locally on 2010 yet. We're looking into it again today.

Running Exchange 2010 on Windows Server 2008 R2 (I know it's EOL, we are decom'ing soon).  I upgraded the installed version of PS to 5.1 and reran the script.  Instead of getting the [pscredential] error now, I get this instead:
`Import-Csv : Cannot validate argument on parameter 'Path'. The argument is null or empty. Provide an argument that is
not null or empty, and then try the command again.
At C:\XXXX\HAFNIUM Test Scipts\Test-ProxyLogon.ps1:122 char:63

...                          $fileResults = @(Import-Csv -Path $_ -ErrorA ...

                                                           ~~

CategoryInfo          : InvalidData: (:) [Import-Csv], ParameterBindingValidationException
FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportCsvCommand

Get-ChildItem : Access to the path 'C:\Windows\temp\XCCache' is denied.
At C:\XXXX\HAFNIUM Test Scipts\Test-ProxyLogon.ps1:166 char:39

... h ($file in Get-ChildItem -Recurse -Path "$env:WINDIR\temp\lsass.*dmp ...

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

CategoryInfo          : PermissionDenied: (C:\Windows\temp\XCCache:String) [Get-ChildItem], UnauthorizedAccessEx
ception
FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand`

Any ideas?

I've been trying to get this working on Exchange 2010 today. However, after some discussions, we've decided not to support running the script on 2010.
The main reason for this is that Exchange 2010 is only vulnerable to CVE-2021-26857. That means only one of the commands from the blog applies to 2010:
Get-EventLog -LogName Application -Source "MSExchange Unified Messaging" -EntryType Error | Where-Object { $_.Message -like "*System.InvalidCastException*" }
None of the other checks have any value on Exchange 2010, so the script isn't doing much for you. There's a longer explanation regarding 2010 here:
https://techcommunity.microsoft.com/t5/exchange-team-blog/released-march-2021-exchange-server-security-updates/bc-p/2190541/highlight/true#M29790

Another option is to run the blog commands manually on 2010.

Which blog?

@ProBackup-nl All the tests in this script are based on this blog post:
https://www.microsoft.com/security/blog/2021/03/02/hafnium-targeting-exchange-servers/
Of the four vulnerabilities mentioned there, only CVE-2021-26857 applies to Exchange 2010. The command the blog shows to check for evidence of exploitation of that vulnerability is:
Get-EventLog -LogName Application -Source "MSExchange Unified Messaging" -EntryType Error | Where-Object { $_.Message -like "*System.InvalidCastException*" }


[WIP] Make most boilerplate code auto-generated

Old daq models will not work anymore.
With this PR, when adding new op, only code in convert() in OnnxConvert.cpp will need to be updated.
In this PR, dilated conv, prelu and global pooling doesn't work

It basically works now. I will merge it after I implement prelu in modelbuider


refactor: remove admin role and clarify maintainer

Removes the Admin Roles as Maintainers are essentially Admins. A maintainer is only expected to make substancial contributions, but not necessarily in a full-time position.
Add missing special maintainer from table.

I'm not following this change.
The Admin role is a CNCF function that CNCF gives to the maintainers so that they can manage the project on behalf of CNCF so that CNCF doesn't have to spend their time managing projects (it's a kind of special delegated CNCF leadership status).
Therefore Admins and maintainers are the superusers of the project and are kind of similar, but not 100% the same.
It's not clear how ADMIN and MAINTAINER roles will be differentiated in your proposal and how the 2 roles are managed?
Also, I'd like to see some examples of other CNCF projects that have done this, to feel comfortable that this is a generally accepted common practice within CNCF projects that leads to healthy governance practices.
Finally, why are we obsessing about this kind of structural changes when there's much bigger &
more important t problems to solve, like: Promotion to Sandbox.

It's not clear how ADMIN and MAINTAINER roles will be differentiated in your proposal and how the 2 roles are managed?

Admin role is removed and becomes part of Maintainer role:
Maintainers also perform the admin non-code-related Github tasks such as updating permissions, configuring integrations and other administrative tasks.

Also, I'd like to see some examples of other CNCF projects that have done this, to feel comfortable that this is a generally accepted common practice within CNCF projects that leads to healthy governance practices.

This brings it more in line with other CNCF projects

@tiagolobocastro cab you provide a few examples of the CNCF projects you allude to that also operate this way?
Also, please confirm if I understand this correctly - this change now gives all Maintainers the power of CNCF project admins?

@tiagolobocastro cab you provide a few examples of the CNCF projects you allude to that also operate this way?

helm, jaeger, etcd, etc...
I think it'd harder to find one which doesn't operate this way.

Also, please confirm if I understand this correctly - this change now gives all Maintainers the power of CNCF project admins?

Yes, although that's already kinda true today. CNCF can give admin rights to a maintainer on request. So this effectively means a maintainer is an admin, there's no need to separate this, and as you can see from various other CNCF projects, they usually don't.

Thanks for the supporting info @tiagolobocastro  - its seems good that we align with CNCF best practices as much a we can.


Listing page - Date picker

Implement calendar section using Vivid! In the browser, command-click on any component to edit its code and hit Command-K to quickly preview styles. Command-Shift-K will let you add new empty components!

is this still open? Can I work on it?

Can you assign this to me?

Sure - assigned

Is this still open? Can you please assign it to me?

can I do this
plz explain what should you have to do explain

@aryamankha Hi, please take a look at #34

Hi, is anyone working on on this issue?


Add vendor support for "filter" property

Add vendor support for "filter" property

Well, I guess browsers will drop prefixes faster lol.

Its been an year since https://github.com/tj/nib/pull/177#issuecomment-47099493 . Any plans to test and merge this @contra @slang800 ?? http://caniuse.com/#feat=css-filters
or did I missed something ?

@utsavdevsharma I'm not a contributor lol don't ask me to merge it, I can't.

@slang800 ?? Any plans to test and merge this ??

+1

+1

+1


Fix: Context Escape with ScopeCallback

:scroll: Description

ScopeCallback

Change ScopeCallback from void Function(Scope) to FutureOr<void> Function(Scope)

configureScope

Change static void configureScope(ScopeCallback callback) to static FutureOr<void> configureScope(ScopeCallback callback) in Sentry class.
Change void configureScope(ScopeCallback callback) to FutureOr<void> configureScope(ScopeCallback callback) in Hub class.

clone

Change static Hub clone() to static FutureOr<Hub> clone() in Sentry class.
Change static Hub clone() to static FutureOr<Hub> clone() in Hub/HubAdapter classes.
Change Scope clone() to FutureOr<Scope> clone() in Scope  class.

Other

Remove internal async methods in SentryNavigatorObserver, as they were only ever called from sync methods.

:bulb: Motivation and Context

Closes #921
:green_heart: How did you test it?
Ran tests.
:pencil: Checklist

[x] I reviewed submitted code
[ ] I added tests to verify changes
[ ] I updated the docs if needed
[x] All tests passing
[ ] No breaking changes

:crystal_ball: Next steps

Codecov Report

Merging #925 (e433404) into main (b38e03b) will increase coverage by 5.78%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #925      +/-   ##
==========================================
+ Coverage   89.77%   95.55%   +5.78%
==========================================
  Files         104        2     -102
  Lines        3207       45    -3162
==========================================
- Hits         2879       43    -2836
+ Misses        328        2     -326

Impacted Files
Coverage Δ

dart/lib/src/hub.dart

dart/lib/src/hub_adapter.dart

dart/lib/src/sentry.dart

dart/lib/src/sentry_tracer.dart

dart/lib/src/protocol/sentry_device.dart

dart/lib/src/sentry_envelope_item.dart

dart/lib/src/protocol/sentry_app.dart

dart/lib/src/platform/platform.dart

...ib/src/environment/_web_environment_variables.dart

...ib/src/sentry_attachment/io_sentry_attachment.dart

... and 92 more

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 b38e03b...e433404. Read the comment docs.

@denrase PR is marked ready to review but there are open issues still.
E.g. https://github.com/getsentry/sentry-dart/pull/925#discussion_r913012781

Hub#addBreadcrumb should also return a Future<void> since it calls Scope#addBreadcrumb

CI issue is when running pana. Can't seem to call FutureOr<void> configureScope(ScopeCallback callback) in SentryNavigatorObserver with await. Works if calling without await, which we technically don't need, as our closures are not async, but this might affect others when calling the new API? I haven't seen this error before, all tests run as expected. Maybe @ueman has an idea why this is reported as an error?


[Bug]: TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function

What happened?
The app crashes during the build.

How can we reproduce the bug?
import { HMSPrebuilt } from '@100mslive/roomkit-react'
export default function Meets() {
return <div style={{ height: '100vh' }}>
}
` bun dev
$ next dev
▲ Next.js 14.1.2

Local:        http://localhost:3000
Environments: .env

✓ Ready in 9.4s
○ Compiling /meets ...
✓ Compiled /meets in 23.5s (5944 modules)
[HMSIntersectionObserverWrapper] IntersectionObserver is not supported, fallback will be used instead
[HMSResizeObserverWrapper] Resize Observer is not supported
TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at $c512c27ab02ef895$export$fd42f52fd3ae1109 (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-context/dist/index.module.js:12:87)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/dist/index.module.js:30:160)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3490:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-switch/dist/index.module.js:19:79)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:4230:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/dist/chunk-LCECN6XD.js:97:80)
at<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3120:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:540:9)
at process.processTimers (node:internal/timers:514:7)
at async eB (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:402523)
at async tt (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406237)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406787)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tl (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2057)
at async /Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2596 {
digest: '1837371966'
}
TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at $c512c27ab02ef895$export$fd42f52fd3ae1109 (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-context/dist/index.module.js:12:87)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/dist/index.module.js:30:160)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3490:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-switch/dist/index.module.js:19:79)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:4230:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/dist/chunk-LCECN6XD.js:97:80)
at<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3120:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:540:9)
at process.processTimers (node:internal/timers:514:7)
at async eB (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:402523)
at async tt (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406237)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406787)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tl (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2057)
at async /Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2596 {
digest: '1837371966'
}
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at async Promise.all (index 0)
at async Promise.all (index 0)
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at async Promise.all (index 0)
at async Promise.all (index 0)
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at async Promise.all (index 0)
at async Promise.all (index 0)
digest: "1486812798"
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at async Promise.all (index 0)
at async Promise.all (index 0)
digest: "919926608"
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at $c512c27ab02ef895$export$fd42f52fd3ae1109 (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-context/dist/index.module.js:12:87)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/dist/index.module.js:30:160)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3490:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-switch/dist/index.module.js:19:79)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:4230:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/dist/chunk-LCECN6XD.js:97:80)
at<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3120:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:540:9)
at process.processTimers (node:internal/timers:514:7)
at async eB (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:402523)
at async tt (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406237)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406787)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tl (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2057)
at async /Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2596 {
digest: '1837371966',
page: '/meets'
}
null
⨯ node_modules/@100mslive/roomkit-react/node_modules/<EMAIL_ADDRESS>(5:54) @ $c512c27ab02ef895$export$fd42f52fd3ae1109
⨯ TypeError: (0 , react__WEBPACK_IMPORTED_MODULE_0__.createContext) is not a function
at $c512c27ab02ef895$export$fd42f52fd3ae1109 (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-context/dist/index.module.js:12:87)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-label/dist/index.module.js:30:160)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3490:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/node_modules/@radix-ui/react-switch/dist/index.module.js:19:79)
at (rsc)/./node_modules/<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:4230:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./node_modules/@100mslive/roomkit-react/dist/chunk-LCECN6XD.js:97:80)
at<EMAIL_ADDRESS>(/Users/playra/999-web3/.next/server/vendor-chunks/@100mslive.js:3120:1)
at webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at eval (webpack-internal:///(rsc)/./app/meets/page.tsx:7:82)
at (rsc)/./app/meets/page.tsx (/Users/playra/999-web3/.next/server/app/meets/page.js:552:1)
at Function.webpack_require (/Users/playra/999-web3/.next/server/webpack-runtime.js:33:43)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:540:9)
at process.processTimers (node:internal/timers:514:7)
at async eB (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:402523)
at async tt (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406237)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406787)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tr (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:35:406918)
at async tl (/Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2057)
at async /Users/playra/999-web3/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:36:2596 {
digest: '1837371966',
page: '/meets'
}
null
○ Compiling /_error ...
`
What browsers are you seeing the problem on?
Chrome

@gHashTag Try using 'use client' on the top of the file. The APi's are not supported on server side .

Hey @gHashTag, adding use client at the top of the file should fix this as @raviteja83 mentioned. I tried a sample app with bun and Next, got the same error on removing use client.  You can check out our integration doc [here].(https://www.100ms.live/docs/javascript/v2/quickstart/prebuilt-quickstart#add-prebuilt-component)


Katt updates

Description of changes

Add logo images
Add some styling
Update productCreate component

Areas being affected

[ ] client
[x] client/components
[ ] client/routes
[ ] client/store
[ ] public
[x] public/images
[ ] script
[ ] server/api
[ ] server/auth
[ ] server/db
[ ] server/db/models
[ ] server/socket
[ ] other

Looks good


ng install - don't work

$ ng install ng2-cli-test-lib
version: 1.13.13
Installed packages for tooling via npm.
installing ng2
The `ember generate <entity-name>` command requires an entity name to be specifi
ed. For more details, use `ember help`.

How can I fix it?

That is due to us not doing a release in a while.
You will have to use the instructions here to work with the latest master version.

(I'm closing because I'm preeetty sure my answer will solve it, but please reopen if it doesn't)

@filipesilva Sounds like ng install will be 'ripped out and not used':
https://github.com/angular/angular-cli/issues/236
Just curious the new direction you guys are thinking?

@NathanWalker you are correct. The goals are to increase the robustness and usefulness, so we're taking it back to the drawing board to assure it satisfies key scenarios.

:+1: awesome thanks!

@robwormald made a good point early on to not become another package manager and I completely agree. I think as long as it stays out of the way of managing dependencies and instead just offers the nice conveniences of rapid development when working with many libs would be excellent.

I don't have a lot of insight on it right now, @hansl is the one working on it.


Ensure agent is always set for mysql/grpc

If either of these modules switch to lazily importing any of our patched
files, we would fail to set the agent in some cases.

PTAL

I'm not sure I understand what the impact of this change is. It seems like now agent is set only if it hasn't been set before, but does this necessarily make it any more certain that it's actually set?

None of the code in these hooks can execute without a call to one of the patch functions. This change ensures that the first patch function called always sets agent as opposed to assuming that all patch functions are called before any other code in the hook file runs.


set option disableFontFace

How do set the option disableFontFace to false ? It is not an option in PDFJS anymore you can see at #6742, and then im falling into #4244.
It says - "We will remove any PDFJS.xxxx properties in the future. This one is probably belong to render() parameters." So, how do it works? I wasnt able to go through with this.
Configuration:

Chrome 66.0.3359.181 64 bits
MacOS High Sierra 10.13.4
2.0.489 from CDN URL;
No

You can pass disableFontFace as a parameter to the getDocument API call. Refer to https://github.com/mozilla/pdf.js/commit/0ecc22cb04b54e57bbe0e498791f9a604c8c2e57#diff-304ad4918827181a1d1f52f5803717cdL64 for an example.

I'm doing it like
pdfjsLib.getDocument(url, { disableFontFace: true }).then(doc) => {}

but seems like nothing changed, it does not fallback, or what should I expect?


JSON example for tutorial_8017.wdl

See Tutorial#8017 at https://software.broadinstitute.org/gatk/documentation/article?id=8017 for workflow description and links to example data.

Oh I see this accompanies the script. If you're going to submit multiple files, changes etc, please group everything into a single branch (with an informative name) and make a single pull request that has all related work together. I can show you how if you don't know.


Enhancement: Color coding for done column should be less prominent

Tutor feedback.
Maybe it could be grey or something.

Greatly implemented, close!


Question regarding AWS Credentials without XML beans

This is a question, any help appreciated. Migrating from Spring boot, I have some specific needs to define for AWS-S3 a client configuration. In XML DSL is like this:
`

I have been trying to migrate this to Java DSL to no avail, this is as far as I could get, but cannot make it work:mport org.apache.camel.builder.RouteBuilder;
import javax.inject.Inject;
import java.io.File;
import java.util.List;
// import software.amazon.awssdk.services.s3.S3Client;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.InstanceProfileCredentialsProvider;
import com.amazonaws.http.IdleConnectionReaper;
import com.amazonaws.internal.StaticCredentialsProvider;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.S3ClientOptions;
import com.amazonaws.regions.Regions;
import org.apache.camel.CamelContext;
import org.apache.camel.spi.Registry;
import org.apache.camel.impl.SimpleRegistry;
import org.apache.camel.impl.CompositeRegistry;
public class CamelRouteS3 extends RouteBuilder {
// @Inject
// S3Client s3Client;

// @Inject
// CamelContext camelContext;

// AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");

// ClientConfiguration clientConfiguration = new ClientConfiguration();
// clientConfiguration.setProxyHost("http://myProxyHost");
// clientConfiguration.setProxyPort(8080);

AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();

SimpleRegistry registry = new SimpleRegistry();
registry.put("s3client", (AmazonS3)s3client);
CamelContext ctx = new DefaultCamelContext(registry);

// SimpleRegistry registry = new SimpleRegistry();
// ((SimpleRegistry)registry).put("bean-name", new SomeBean());
// registry.put("s3client", s3client);
// CamelContext camelContext = getContext();
// camelContext.getRegistry(CompositeRegistry.class).addRegistry(registry);

// CamelContext camelContext = getContext();
// SimpleRegistry registry = new org.apache.camel.impl.SimpleRegistry();
// CompositeRegistry compositeRegistry = new CompositeRegistry();
// compositeRegistry.addRegistry(camelContext.getRegistry());
// compositeRegistry.addRegistry(registry);
// registry.bind("s3Client", s3client);
// camelContext.getRegistry().bind("s3Client", s3client);
// registry.bind("s3client", s3client);

public void configure() {

	// from("aws-s3://helloBucket?prefix=hello.txt&useIAMCredentials=true&region={{camel.aws.region}}&proxyHost={{camel.proxy.host}}&proxyPort={{camel.proxy.port}}&proxyProtocol={{camel.proxy.protocol}}")
	// from("aws-s3://{{camel.bucket}}?prefix={{camel.object}}&useIAMCredentials=true&region={{camel.aws.region}}")
    from("aws-s3://{{camel.bucket}}?prefix={{camel.object}}&amazonS3Client=#s3Client&useIAMCredentials=true")
    .routeId("s3read")
    .streamCaching()
    .to("log:s3?level=INFO&showAll=true");

}

}`
I understand the beans.xml cannot be used as such. Any hints or pointers will be appreciated.

original beans.xml
`

`

There are a number of ways you can use to configure AWS S3 component, a simple one is to use properties, like here but for a more advanced use case you can use a CDI producer, something like:
@ApplicationScoped
public class S3Customizer {
    @Produces
    public static AmazonS3 s3Client() {
        return AmazonS3ClientBuilder
            .standard()
            .withEndpointConfiguration(...)
            .withCredentials(...)
            .withPathStyleAccessEnabled(...)
            .build();
    }
}

Thanks! I added your code and I get the following messages:
Caused by: org.apache.camel.PropertyBindingException: Error binding property (amazonS3Client=#s3Client) with name: amazonS3Client on bean: aws-s3://c7n.phoenix.cloudx.api.us-east-1?amazonS3Client=%23s3Client with value: #s3Client
...
Caused by: org.apache.camel.NoSuchBeanException: No bean could be found in the registry for: s3Client of type: com.amazonaws.services.s3.AmazonS3
Below are the pieces of code:
`
@Override
public void configure() {
    from("aws-s3://{{camel.bucket}}?amazonS3Client=#s3Client")
    .routeId("s3read")
    .streamCaching()
    .to("log:s3?level=INFO&showAll=true");
}

package com.example;
import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.Produces;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
@ApplicationScoped
public class AWSCustomizer {
@Produces
public static AmazonS3 s3Client() {
return AmazonS3ClientBuilder
.standard()
.build();
}
}
`

yeah, to access named beans you need to add @Named to the producer method

same error. I must be doing something wrong
`
package com.example;
import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.Produces;
import javax.inject.Named;
import io.quarkus.runtime.annotations.RegisterForReflection;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
@ApplicationScoped
@Named("s3Client")
public class AWSCustomizer {
@Produces
public static AmazonS3 s3Client() {
return AmazonS3ClientBuilder
.standard()
.build();
}
}
`

@Named should be on the method, like:
@ApplicationScoped
public class S3Customizer {
    @Named
    @Produces
    public static AmazonS3 s3Client() {
        return AmazonS3ClientBuilder
            .standard()
            .withEndpointConfiguration(...)
            .withCredentials(...)
            .withPathStyleAccessEnabled(...)
            .build();
    }
}

that worked. Thanks!!!
If I need to add more AWS clients, like AmazonSNS, can I leverage multiple methods (with Named and Produces in the same class? or do I need to add multiple classes?

same class is fine

Awesome

@lburgazzoli camel-quarkus based on camel-main ought to be able to auto discover those AWS Client beans that have been registered via @Produces (with or without @Named).
The option camel.main.autowireComponentProperties=true
https://camel.apache.org/components/latest/others/main.html
is supposed to do that by scanning the components for options that hasn't been set and scan in registry if there is a single instance of the same type.
It may be that camel-quarkus has disabled this - but its a great convention over configuration

No it is not disabled but if you set it explicit like in this case:
amazonS3Client=#s3Client

the producer should be marked as @Named otherwise it cannot be discovered by name

Ah yeah sure, so basically if @gus-maurizio removed the ?amazonS3Client=#s3Client from the endpoint uri, then camel-quarkus would auto detect his @produces bean and use it on the component level automatic.
You can see this as Camel has a log summary of what was wired when it startup


[INLONG-11129][Sort] Enhanced Metric Instrumentation for InLong Sort Flink Connector

Fixes #11129
Motivation
The primary goal of this PR is to enhance metric instrumentation for the InLong Sort Flink Connector, specifically for the Postgres-CDC connector. This change is aimed at improving observability by introducing additional metrics that track serialization/deserialization, snapshot states, and checkpoint completion.
Modifications
Deserialization Metrics:
Added counters to track successful and failed deserialization attempts (numDeserializeSuccess, numDeserializeError).
Added latency gauge to measure time taken for deserialization (deserializeTimeLag).
SnapshotState Metrics:
Added counters for the number of snapshots created (numSnapshotCreate) and errors encountered during snapshot operations (numSnapshotError).
NotifyComplete Metrics:
Added a counter to track completed snapshots (numCompletedSnapshots).
Added latency gauge for the time between snapshot creation and checkpoint completion (snapshotToCheckpointTimeLag).
Verifying this change
(Please pick either of the following options)

[ ] This change is a trivial rework/code cleanup without any test coverage.

[ ] This change is already covered by existing tests, such as:
(please describe tests)

[x] This change added tests and can be verified as follows:

Make Flink takemanager report the metrics, with Slf4jReporter for example.
Add the following configurations to conf/flink-conf.yaml of flink taskmanager and the above mentioned metrics will be printed to the logging file once inlong-sort starts to process data.
metrics.reporter.slf4j.class: org.apache.flink.metrics.slf4j.Slf4jReporter
metrics.reporter.slf4j.interval: 15 SECONDS

Documentation

Does this pull request introduce a new feature? Yes
If yes, how is the feature documented? JavaDocs

plz provide some test result shortcut in the comment~， thx~

Briefly explaining the fixes made to the instantiation of SourceExactlyMetric: When only the MetricOptions parameter is passed to the SourceExactlyMetric constructor, self-defined metrics are not registered with the metricGroup. Therefore, to ensure proper registration of self-defined metrics, it is necessary to retrieve the metricGroup from the runtimeContext within the sourceFunction and pass it as the second parameter to the SourceExactlyMetric constructor.

bugs fixed

@PeterZh6 please fix the failed workflow, thanks.

@PeterZh6 please fix the failed workflow, thanks.

Thanks for following up with this. However, I am unable to reproduce the test failure locally, so may still need some time.

The failure is linked to [Bug][Sort] Mongodb2StarRocksTest Failure Due to Potential Dependency Conflicts #11166
I am currently working on a solution and will submit a pull request to address the problem as soon as possible.


PHP - Space Between parentheses and brackets?

I saw this wonder online PHP formatter has one attribute I really wish codeformatter would integrate.
http://beta.phpformatter.com/
Namely:
Brackets

Space inside brackets - ( )
Space inside empty brackets - ( )
Space inside block brackets - [ ]
Space inside empty block brackets - [ ]

Any chance of getting that added?

+1

+1

CodeFormatter updated to version 3.0.0
Maybe your problems solved
See Release Notes

Sorry but I can't see how version 3.0.0 solved this issue. Is there a setting for PHP that's similar to the JS setting "space_in_paren"?

CodeFormatter change to use phpfmt to format PHP file.
I have just check on fmt github and see that it is not have a transformation for this. :(

+1


how to change spinner arrow with custom image

how to change spinner arrow with custom image

I need this too. Did you solve it?


Add NUM_WORKERS variable to run_infer.sh scripts for configurable woker settings

What is the problem that this fixes or functionality that this introduces? Does it fix any open issues?
Fixes https://github.com/OpenDevin/OpenDevin/issues/2567
Give a brief summary of what the PR does, explaining any non-trivial design decisions
This makes NUM_WORKERS configurable in all evaluation scripts, and defaults it to 1.
Authored by OpenDevin.

@neubig Did you create this with OpenDevin?

Yes.


changing speed of audio samples without changing pitch? (time-scaling)

First off, thanks for the lib! It's beyond awesome! I've been using it for close to 2 years (also, on UWP as well), and it rocks!
Is it possible to change the speed of an audio using Naudio? Basically, I have some sound effects that last 2 seconds, and I'd like to make the shorter/larger. Is this possible?

I've just noticed - https://markheath.net/post/varispeed-naudio-soundtouch
Please let me know if it's possible to achieve this without soundtouch.

I kind of answered my own question here - since I've looked at licensing of SoundTouch, and it's LGPL 2.1, so I can use it in commercial code. So it 's all good :D


A new profile for read length 75

As discussed in #272, it may be appropriate to add 75 as a new canonical read length.
I did an extensive search for a good set of parameters that improves accuracy over the existing one.
Reads of lengths 75 currently use the same parameters as reads of lengths 50, which are: $k=20$, $s=16$, $l=-3$, $u=2$. The accuracy we get using these parameters is our baseline.
I tested the following values for the parameters:

parameter
values

k
17, ..., 23

s
$k-4$, $k-2$ (but see below)

l
-4, ..., 2

u
$l$, ..., 2

The script I wrote only tests single-end data. The assumption is that good single-end performance also means good paired-end performance. The script optimizes accuracy averaged over all four genomes, with one heuristic: It only accepts parameter combinations where the accuracy is better than the baseline for all four genomes. This speeds it up: When it tests a combination, it tests the genomes one by one and can stop as soon as the obtained accuracy is lower than the baseline. By starting with the smallest genome (Drosophila), often the bigger genomes don’t need to be tested at all.
The parameter combinations with $s=k-2$ performed really well, but this comes at a cost of increased memory usage, so I report results for both separately.
Here are the top 10 parameter combinations and the baseline for $s=k-4$:

k
s
l
u
avg. accuracy
diff to baseline

23
19
-3
-3
75.0243
+0.262525

22
18
-3
-3
75.003925
+0.24215

18
14
-1
-1
74.9946
+0.232825

19
15
-1
-1
74.988925
+0.22715

21
17
-3
-3
74.988875
+0.22710

17
13
-1
-1
74.976225
+0.21445

20
16
-2
-2
74.947225
+0.18545

20
16
-3
-3
74.936225
+0.17445

21
17
-3
-2
74.891725
+0.12995

20
16
-3
-2
74.88965
+0.127875

20
16
-3
2
74.761775
0 (baseline)

Here are the top 10 parameter combinations if we allow $s=k-2$:

k
s
l
u
avg. accuracy
diff to baseline

18
16
-3
-3
75.236575
+0.4748

19
17
-3
-3
75.2342
+0.472425

20
18
-3
-3
75.233575
+0.4718

17
15
-2
-1
75.225825
+0.46405

20
18
-4
-3
75.2253
+0.463525

19
17
-3
-2
75.22265
+0.460875

17
15
-1
-1
75.220625
+0.45885

18
16
-2
-2
75.21785
+0.456075

18
16
-3
-2
75.21635
+0.454575

19
17
-4
-3
75.213925
+0.45215

My feeling is that this additional increase is not worth the cost in memory, at least not for the default settings (sampling rate increases from 1/5 to 1/3, i.e., 67% more randstrobes).
I am running the above combinations on paired-end data at the moment and will report the results later.

It turns out good single-end accuracy does not necessarily imply good paired-end accuracy, so here is an optimization round only on paired-end data:

k
s
l
u
accuracy

22
18
-2
-2
86.833475

23
19
-2
-2
86.8255125

21
17
-2
-2
86.818425

20
16
-2
-2
86.7994125 (suggested)

19
15
-1
-1
86.7724

23
19
-3
-3
86.76275

18
14
-1
-1
86.7576875

21
17
-1
-1
86.734175

22
18
-3
-3
86.732175

22
18
-1
-1
86.7238125

20
16
-3
2
86.511525  (baseline)

Now the question is which parameter combination to pick because it is going to be a tradeoff between SE and PE accuracy. (We could select parameters depending on whether SE or PE data is mapped, but I’d prefer not to go down that route at the moment. Also, we actually support mixed input (SE+PE).)
Because PE accuracy is maybe more important than SE, the following table ranks the parameter combinations by PE accuracy plus 25% of SE accuracy:

k
s
l
u
PE
SE

20
16
-2
-2
86.7994125
74.947225

19
15
-1
-1
86.7724
74.988925

23
19
-3
-3
86.76275
75.0243

18
14
-1
-1
86.7576875
74.9946

22
18
-3
-3
86.732175
75.003925

21
17
-3
-3
86.6811875
74.988875

18
14
-1
0
86.6850375
74.8734

20
16
-3
-3
86.643825
74.936225

22
18
-3
-2
86.6519875
74.882975

21
17
-3
-2
86.6393125
74.891725

Picking $k=20$, $s=16$, $l=u=-2$ would improve SE accuracy by 0.3 and PE accuracy by 0.18. (And it’s similar to what we have now.)

I’m bit suprised many of these good parameter combinations have $l=u$. That isn’t really using "rand"strobes anymore. Not sure what this implies. Is this just something with the test data?

We could select parameters depending on whether SE or PE data is mapped, but I’d prefer not to go down that route at the moment. Also, we actually support mixed input (SE+PE).

I agree
It could be that (20,16,-2,-2) invokes more rescue and is therefore slower (not suggesting you to do further benchmarks). Given that (20,16,-2,-2) and (23, 19, -3, -3) gives near identical increase in accuracy for PE, I would be okay picking (23, 19, -3, -3) (but no strong preference) because i don't se any other reason for SE not to be indicative of PE accuracy unless it required more rescue.

I’m bit suprised many of these good parameter combinations have l=u That isn’t really using "rand"strobes anymore. Not sure what this implies. Is this just something with the test data?

I don't think any of the parameter settings above, except (18, 14, -1, 0), yield 'randstrobes' (in the way they were first intended to be designed, i.e.,  with a gap in the middle), because the offset of 1, 2,or at most 3 syncmers downstream for the first syncmer rarely make it beyond k nt downstream.  Our parameter settings above instead generates flexible sized k-mers.
Also, strobemers were originally intended for longer reads and are not expected to work well for very short reads. In the strobealign paper I argue that 2*150nt reads is where we really start to see benefit over e.g., k-mer based tools. What we are seeing in above analysis (that short exact k-mers are working better for <100nt reads) is expected.

Not sure what this implies. Is this just something with the test data?

Another way to answer this: I think for 50nt and 75nt reads, it helps having short seeds, simply to pack in as many valid seeds as possible in the hope that at least one matches in case of an error, there aren't really any 'room' to create longer randomly spaced seeds.

Coming back to this, I would now even have slight preference for the setting (23, 19, -3, -3). This is because (23, 19, -3, -3) generates flexible k-mers with min size 26 and mean 28, while (20, 16, -2, -2) generates k-mers with min 26 and mean 30. The larger end of the distribution is also more likely to be lower for the first setting due to the whole distribution is pushed towards smaller values.
Not having to do as many rescue searches is probably favourable in speed and possibly biological data is more noisy. I should do a full benchmark when we have a candidate commit for release 0.12.0.

Ok, let’s use (23, 19, -3, -3). I’ll measure the no. of rescues and runtime and will add that information when I open the PR.

And because the script for optimizing parameters is now written anyway, I also ran it on read length 100. Here are the best settings in comparison to the current ones:

k
s
l
u
avg. accuracy

20
16
-1
-1
84.79074375

19
15
0
0
84.78106875

23
19
-2
-2
84.77730625

18
14
0
0
84.769125

22
18
-2
-2
84.763125

21
17
-2
-1
84.7377

20
16
-2
2
84.68755625 (current)

Shall I change read length 100 to (23, 19, -2, -2)? SE accuracy would go from 79.943775 to 80.0287, and PE accuracy from 89.4313375 to 89.5259125. Would make sense to just increment l and u by one compared to the new parameters for read length 75.
And I’ll run the remaining lengths as well. This is almost no effort now, just need to wait a bit.

Great, I agree that we can use (23, 19, -2, -2) for the 100nt canoncal class.

And I’ll run the remaining lengths as well. This is almost no effort now, just need to wait a bit.

Awesome! Keep in mind that for the longer read lengths (I predict that) there will be more time-accuracy tradeoffs. Even though we may still see good accuracy with 'flexible size' k-mers (through randstrobes method), we would have to assess more in detail the runtime to longer 'real' randstrobes (with gap).
The reason I am not to worried assessing runtime tradeoffs for the very short reads (50 and 75nt) is because longer seeds leads to so much unnecessary rescuing that the short seeds may even be beneficial for runtime (i.e. a win-win).

Interesting. I guess we should go for (20, 16, -2, -2) then, if it is a bit faster and has slightly better PE accuracy. If you agree?
Just out of curiosity, did you check how much it increases/decreases rescue/runtime over baseline?

In terms of "Total calls to ssw", (20, 16, -2, -2) has slightly fewer than the baseline for rye and CHM13 and slightly more for maize and drosophila (~5%).


chore(trading): set default sort order

Description ℹ
Sets the usage breakdown to order by market desc, as previously it would flip flop between orders (making testing hard).
Demo 📺

@JonRay15 Are you happy from a UX perspective for this change?


python310Packages.google-cloud-dlp: 3.12.0 -> 3.12.1

Changelog: https://github.com/googleapis/python-dlp/blob/v3.12.1/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 228685 run on x86_64-linux 1

4 packages built:

python310Packages.google-cloud-dlp
python310Packages.google-cloud-dlp.dist
python311Packages.google-cloud-dlp
python311Packages.google-cloud-dlp.dist


https://jira.desk.technology/browse/MSDKI-46

@nartiles please review

@eldark88 one comment

@nartiles please review

@eldark88 :shipit:


Fixed important typo in Binding zoo.

Description
FIxed important typo for the nomic-ai gpt4all option in the bindings zoo.
Fixes # (issue)
Error in the link which makes it unusable.
Type of change

[x] Bug fix (non-breaking change which fixes an issue)

Checklist:
Please put an x in the boxes that apply. You can also fill these out after creating the PR.

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have tested this code locally, and it is working as intended

you sure its a typo? maybe its a 420 friendly repo?

@andzejsp I'm not sure what that means


disable concurrent builds in reposync

@sosiouxme @tbielawa

Also adding 4.1 to schedule per Clayton's request

/lgtm


Feature request: custom intersection in ray query

I'd benefit from some checkpoints that show a custom intersection routine in situ for RayQuery, and also through the rint for Trace. The tracedSegments loop in the compute shader is pretty boilerplate, and it could probably be factored away into a function or class template that steps through it but has templated callbacks for intersection and hit logic. It's been suggested to me that lambdas would be a good way to customize rayQuery without requiring the user to write the state machine.

Hi Sean! This does sound like a good use case for Circle C++ - have you taken a look at the intersection shader sample in vk_raytracing_tutorial_KHR at https://github.com/nvpro-samples/vk_raytracing_tutorial_KHR/tree/master/ray_tracing_intersection? I think this might answer the question for the ray tracing pipeline, but not ray queries.

Ya, that raytracing tutorial has a lot of stuff buried. Will get to it asap.


Migrate to Vue/Nuxt

With all of the JS and form issues, it looks like migrating to Vue will solve a lot of these issues. I will create a proof of concept first to test.

Jk Gatsby is the way to go.


new sstable format

this implements and document a new format for sstables. Most of the format is the same as before, except the index is now a small sstable too instead of a cbor blob.
fix #1851

[x] remove the dependency.
[x] have a well-spec'ed format.
[x] have proper versioning in the format
[x]  get something more compact... Right now a tiny dictionary can often top 100 bytes.

groundwork for #1827 (encode dictionary type, but only for sstable, fst kept unchanged for now)
fix some of #1738

[ ] inverse vint implementation (not sure what this is)
[x] remove serde_cbor.
[ ] add multilevel indexing (in some way this is a 2 level index I guess?)

fix #1731
fix some of #1727

[x] add version & magic number in SSTable format. At the dictionary scale, not in each block.
[ ] remove sstable::Dictionary::new and use sstable::Dictionary::create
[ ] refactor the magic number/ version logic.

Size comparison with previous format:

tests in src/fastfield/mod.rs and columnar/src/tests.rs show the difference for small indexes
test payload in sstable/src/lib.rs went from 115 to 53 bytes
on a split of exactly one day of gh-archive, the size of the "footer" went from 1075365 (1MB) to 86399 (84kB), ~92% smaller

The improvement comes from three sources:

cbor keep the name of the fields as it aims to encode the same kind of data as json, so an index for a single block might look something like this: $fblocks$$slast_key_or_greater$!!jblock_addr$jbyte_range$estartcend$mfirst_ordinal, where there is more field name than actual metadata (impact both small and large indexes)
using sstable allows to merge key prefixes when there are blocks ending with similar enough keys (impact only large indexes)
block range and first_ord are encoded as delta, start offset are implicit, derived from the length of previous blocks (impact both small and large indexes)

This could probably be made to support reading the old format if we want some amount of backward compatibility, at the cost of reintroducing cbor

Codecov Report

Merging #1943 (403ceea) into main (8459efa) will increase coverage by 0.06%.
The diff coverage is 94.21%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1943      +/-   ##
==========================================
+ Coverage   94.46%   94.52%   +0.06%
==========================================
  Files         309      312       +3
  Lines       56822    57381     +559
==========================================
+ Hits        53676    54241     +565
+ Misses       3146     3140       -6

Impacted Files
Coverage Δ

sstable/src/value/mod.rs
100.00% <ø> (ø)

sstable/src/dictionary.rs
86.09% <52.94%> (-1.65%)
:arrow_down:

sstable/src/sstable_index.rs
99.37% <96.96%> (-0.63%)
:arrow_down:

sstable/src/value/index.rs
98.79% <98.79%> (ø)

columnar/src/tests.rs
100.00% <100.00%> (ø)

src/fastfield/mod.rs
100.00% <100.00%> (ø)

sstable/src/delta.rs
97.65% <100.00%> (+0.07%)
:arrow_up:

sstable/src/lib.rs
99.40% <100.00%> (+0.94%)
:arrow_up:

... and 39 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


chore: Fix lockfile issue & npm audit

Ran npm i then npm audit to address the issue where CI is currently complaining about package-lock.json being out of sync.
If any of the dependabot PRs get merged first, it should probably also fix this

Thanks @nschonni, appreciate it.
Sorry this was stale for a bit. We're trying to keep the lockfile v2 in place and have started merging dependabot.


[New game]: Who Is Older?

🎮 Game Request
Game logic and basic description
A game where two user enter their date of birth and tha tool tells their age.
A fun and interactive game can be played between two players to find out who is older and who is younger.
Point down the features
Game points
A interface consisting of 2 sections of 2 players to enter their date of birth.
Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @anijit18 , You can't have another issue before completing the previous one 😀
you already have the following 1 open issues 👀 ! :
#4898

Hey @anijit18 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇

Hey @anijit18 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹


Independent main queue for Android

Hi Apple,
Please excuse the unorthodoxy of this request but this PR creates an independent main queue for Android applications. The OS's main queue is owned by the Java side of an application and work items async-queued to to current main queue are never getting executed. This change allows applications to use this pseudo main queue for synchronising work and only affects applications that are being compiled for Android where the current main queue has no meaning.
Thanks.

Then it has no meaning to do so and on Android the main queue should be made unavailable.
the main queue is a concept that allows you to have access to UI, there's no point creating one that doesn't give you that guarantee.
I would also expect that android has a way to send work to the main thread, and if it does, then the right fix is to reimplement the main queue plumbing so that it sends work on the main thread to drain the main queue, which is not unlike it is plumbed on Darwin where waking up the main queue will wakeup a port in the main CFRunloop (or on linux an eventfd) whose "handler" drains the main queue.

Our goal with swift-corelibs is to make implementation as portable as possible across platforms. A lot of code out there relies on the main queue, so simply marking it unavailable will be counterproductive.
I would argue the main queue is not entirely about UI - it is about integration with the main CFRunLoop, which exists regardless of the "UI-ness" of an application.

A bit of background here... The model I’m promoting for swift in an Android app is that most of the UI work would be done in Java/Kotlin with the portable model side shared with iOS in Swift.

I encountered the need for a new main Queue testing the Alamofire networking framework who's delegate operations are queued to DispatchQueue.main on completion. Perhaps I also need to start up a RunLoop on a background thread to avoid other problems further down the road. For UI operations there is a runOnUiThread Java method which would be very difficult to get hold of from Swift.

@parkera I agree 100% with what you said, I said it's one option, but I would prefer making it work much better. In that regard creating a "new" queue that doesn't have the same contracts and uses an emphemeral thread is really problematic.
I think you nailed it though, we need to keep the main CFRunloop guarantee, and if the main CFRunloop works on Android, then no dispatch change is required at all.

The main CFRunLoop is part of swift-corelibs-foundation, and calls the dispatch SPI to drain the "main" queue.
I'm not sure about how we would use the main run loop on Android though. I'll defer to @johnno1962 on that.

Sounds like teasing both libraries away from the “main” queue might involve a certain amount of surgery in C. Do you have any idea which areas of code might break if we don’t have a CFRunLoop running?

Foundation doesn't care about the main run loop except in one thing, which is distributed notifications. Those aren't part of swift-corelibs-foundation.

On Android that wouldn’t be a problem. In-process notification centre would work though, right?

Yes, the notification center API posts synchronously. The thing with distributed notifications is that the API promises to be delivered on the main thread (for historical reasons).

OK, thanks. Is there any point in me re-opening this PR now you can see where I’m coming from? This change will have to go into the toolchain, it’s just a matter of whether it will be reflected on master.

No this pull request can't work because something has to drain the main runloop, or we have to make the main runloop unavailable and then there's little point having a main queue.

That's basically making this functional:
https://github.com/apple/swift-corelibs-foundation/blob/master/CoreFoundation/RunLoop.subproj/CFRunLoop.c#L97

If the dispatch SPI exists (no reason not to, in my opinion), then we just use it as normal from CFRunLoop.

Then it's up to CF to decide which run loop is main. I think it'll probably be the first one that CFRunLoopGetMain is called on.

Sorry I had to leave for lunch but here are the salient points.

the main queue is about being drained on the main runloop.

the main runloop only makes sense if there's such a thing as a dedicated thread that drains it and doesn't change: people expect to see their TSDs on that thread appear reliably when on the main queue

the main queue has tons of weird attributes that make it unlike a regular queue (it has a prioirty, it can't be suspended and many other things) so this pull request is not the way to go anyway.

Last, if you call dispatch_main(), then the main queue becomes detached, but it was an API mistake. we should have instead booby trapped using it past dispatch_main() in the first place. Frameworks should not integract with the main queue or the main CFRunloop unless they do UI or anything that needs them. I know a lot of code does today, but it is misguided code that ought to be fixed one way or the other.
Implementing the main CFRunloop on android has to make sense because it gives you access to some feature that needs it, if not, then I don't see why making it unavailable here is a big deal, but this eventually is a decision left to porters.
The right way to do the patch you meant to write is to do what dispatch_main() does to detach the main queue and make it ask for threads, because your patch creates a new pointer which means calling into C code that would do <this queue> == dispatch_get_main_queue() would not get the expected result (on top of the wrong behavior for dispatch_set_context, the fact that you can release it, and tons of other quite important differences).
I'll let @parkera decide whether we want a main runloop on Android, but if we do, this has to be done right and given exactly the same set of guarantees you get with the one on Darwin, and there are a ton of them, way past solving the relatively easy problem of draining enqueued work.

Sorry for waking up this old thread, but I  am also seeking a solution to this problem, and have gone down the same line of thought as @johnno1962, and there will likely be people after me to do the same.
Have your thoughts on this developed since last?
I have tried calling CFRunLoopGetMain on a separate thread in an attempt to making that main, as suggested by @parkera. This seems to work, but I've found at least one strange behavior and that is checking for main always returns false. E.g:
DispatchQueue.main.async {
    let runLoopIsMain = CFRunLoopGetMain() === CFRunLoopGetCurrent()
    print("main? \(Thread.isMainThread) mainRunLoop: \(runLoopIsMain)")
    //becomes on Android: main? false mainRunLoop: false
}

With this setup Android's main thread will always respond "true" when asked if it's main, even when it's not the same as DispatchMain. This makes me believe there are many other bugs/strange behaviors waiting to be discovered when using this approach. What do you think?
(And yes, I know one shouldn't build logic around checking for the current queue, but the point here is just to show irregular behavior)
For my use cases it's only necessary to have a "main" queue for coordinating UI efforts or similar (like the example above with Alamofire sending results to main). What happens afterwards is up to Android, as long we can guarantee that it will be running, and is synchronized and thread safe, we are good to go. This allows for greater code reuse between platforms.


merge boxbilling:master to update:redbean

@timothygwebb I'd like to rebase and then force push this branch rather than a messy merge like this. Any objection?

recreating the branch is also an option

I'm actually just going to rebase it. The only potential downside is if you guys have work based off of the branch, and I just checked to confirm that's not the case. End result is basically the same as recreating the branch

@BenNottelling @evrifaessa I will handle the updating of this branch thanks.

I will handle the updating of this branch thanks.

I mean, it IS updated now.
The only thing that should be needed from what I can tell is testing that nothing is broken and then merging it into the master branch

Thanks for the update.
I do not see any major changes just the application of a class
You can test further and merge.
On Sun, Aug 15, 2021, 4:50 PM Benjamin Aerni @.***>
wrote:

I will handle the updating of this branch thanks.
I mean, it IS updated now.
The only thing that should be needed from what I can tell is testing that
nothing is broken and then merging it into the master branch
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/boxbilling/boxbilling/pull/979#issuecomment-899107969,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD24K7NKBUV222SV7T3MXGTT5ASA5ANCNFSM5CGQLSTQ
.

No objections.


relativeTime thresholds options?

I need to update thresholds for the relativeTime plugin, and update updateLocale accordingly.
https://day.js.org/docs/en/customization/relative-time
Is it possible with this plugin / is it hard to implement?

no problem, i'll have this in shortly

Thank you, Sensei!

grab v1.1.2 and you should be all set https://github.com/fumeapp/dayjs#optional-relativetime-customization

Wow, thanks @acidjazz !
I don't mean to offend you and the free work you're doing, but is it planned to also add thresholds eventually? :)

Yes this is it :P

Hey @acidjazz!
Thanks for the awesome work. Could you give an update about the integration of thresholds? I am not able to add it using the updateLocale
Thanks!

Hey @acidjazz! Thanks for the awesome work. Could you give an update about the integration of thresholds? I am not able to add it using the updateLocale Thanks!

You can extend with configuration via nuxt plugin like this: More Extending

 dayjs: {
      locales: ['en'],
      plugins: ['relativeTime', 'utc', 'timezone'],
      defaultLocale: [ 'en', {
        thresholds: [
          { l: 's', r: 1 },
          { l: 'm', r: 1 },
          { l: 'mm', r: 59, d: 'minute' },
          { l: 'h', r: 1 },
          { l: 'hh', r: 23, d: 'hour' },
          { l: 'd', r: 1 },
          { l: 'dd', r: 29, d: 'day' },
          { l: 'M', r: 1 },
          { l: 'MM', r: 11, d: 'month' },
          { l: 'y' },
          { l: 'yy', d: 'year' }
        ]
      }]
    },

Not working for my side.  Not sure what I am doing wrong here. (Changing the 45 minutes to 59 minutes)

I think default local has no thressholds options.
You need to pass it to relativeTime options in extend.
// plugins/relative-time.plugin.ts
import relativeTime from 'dayjs/plugins/relativetime'  // I'm not sure the import statement.

export default defineNuxtPlugin(() => {
  useDayjs().extend(relativeTime, {
    thresholds: [
      { l: 's', r: 1 },
      { l: 'm', r: 1 },
      { l: 'mm', r: 59, d: 'minute' },
      { l: 'h', r: 1 },
      { l: 'hh', r: 23, d: 'hour' },
      { l: 'd', r: 1 },
      { l: 'dd', r: 29, d: 'day' },
      { l: 'M', r: 1 },
      { l: 'MM', r: 11, d: 'month' },
      { l: 'y' },
      { l: 'yy', d: 'year' },
    ],
  })
})

Thanks @GaborTorma ! I have added the changes you have suggested
import relativeTime from 'dayjs/plugin/relativeTime';

export default defineNuxtPlugin(() => {
  useDayjs().extend(relativeTime, {
    thresholds: [
      { l: 's', r: 1 },
      { l: 'm', r: 1 },
      { l: 'mm', r: 59, d: 'minute' },
      { l: 'h', r: 1 },
      { l: 'hh', r: 23, d: 'hour' },
      { l: 'd', r: 1 },
      { l: 'dd', r: 29, d: 'day' },
      { l: 'M', r: 1 },
      { l: 'MM', r: 11, d: 'month' },
      { l: 'y' },
      { l: 'yy', d: 'year' }
    ]
  });
});

The thresholds is still not being set. It is getting the default 45 minutes still.
const publishTimeFromNow = computed(() => {
  return dayjs(publication_time_utc).utc().fromNow();
});

Not works for me =(

Suggested changes using useDayjs().extend() in plugins/ doesn't work.
This issue should be reopened, only half of it is done.


Incrementation differs between rcN and rc.N

when adding a tag 1.0.1-rc.3 and checking out the following commit, the resulting version reads:
1.0.1-rc.3.dev1+gb1c06d6

but replacing the tag with one that omits the period 1.0.1-rc3 the result reads:
1.0.1-rc4.dev1+gb1c06d6

where the automatic incrementation of the rcN clashes with the reference rules, once I define an rc4 further up the branch
Is this behavior on purpose?
(i realize that the period is proper SemVer, but we're running without it in our software so I'm somewhat stuck there)

Apparently i hat downloaded an old version, appologies


[ISSUE-1364] Upgrade hive-exec and hive-jdbc version to 2.3.9

What is the purpose of the change
Related issue: #1364
Brief change log

Upgrade hive-exec and hive-jdbc version to 2.3.9;

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes)
Anything that affects deployment: (no)
The MGS(Microservice Governance Services), i.e., Spring Cloud Gateway, OpenFeign, Eureka.: (no)

Documentation

Does this pull request introduce a new feature? (no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

Close #1364

TBR

@CCweixiao Can someone help me to review this pr?


Change SSL certificates

How can I change default self signed certificates by my own certificates? Is there some attribute in api-umbrella.yml to do this?

This is untested (we currently perform SSL termination outside API Umbrella), but I believe this should be possible with this config in your /etc/api-umbrella/api-umbrella.ymlfile:
hosts:
  - hostname: your_hostname.com
    default: true
    ssl_cert: /your/path/to/ssl.crt
    ssl_cert_key: /your/path/to/ssl.key

You can store the cert files wherever you'd like on your server.
These paths get passed to the [ssl_certificate](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate) and [ssl_certificate_key](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key) settings for nginx. If you haven't installed SSL certs into nginx before, then I think the main thing to be aware of is that the certificate file needs to contain any intermediate certs inside the file directly (there's not a separate intermediate configuration setting like with Apache's SSL config).
Let me know if that doesn't do the trick, though.

Documentation published here: https://api-umbrella.readthedocs.org/en/latest/server/https-config.html


How do I generate the XML file every X hours ?

Hi there !
Newbie on Github, not a developper but a little bit geeky.
Sorry to ask, the answer is certainly super easy but still :
I don't see how to generate the XML file every X hours... Can you help me ?
Thanks !

ESD does not support automation yet. It may be possible to use an external google script that you create yourself and have that run ESD, but I don't know what that process entails (if it exists).
Automation is on the roadmap for ESD, and is probably the next big thing that will be added (after XML nested elements). I will also need to refactor how "Replace existing file(s)" works before automation can reliably be used.

Hi, is there any progress on this feature? I would find it really helpful.

There has been some progress, yes. Replace existing file(s) now functions in a good way for this feature, and after doing some research I am pretty confident that it can be done with an add-on.
There are a bunch of caviats to those statements though. I still have to design the menus for setting up automation, and there are certain limitations that users need to be made aware of, depending on the tier of service they use.
Unfortunately, that means that this feature is still a ways off most likely.
If you don’t mind me asking, what are your use cases for this feature (what are you using it for/would you like to have as features)? If I know what people are trying to do I can try to implement some quality of life features along side the core functionality.

Thanks for your quick reply! I have a spreadsheet with dynamic information (in this case, an inventory list from a webshop), and I want to export the data as an XML file on a regular basis (once per hour) for others to import it. So what I'm looking for is a 'schedule report' function with an interval setting (once per hour/day/week/month).

That type of automation should definitely be possible. There are limitations for how many documents can be created and how often the export can happen, but they shouldn’t affect you with those desired values.
Like I said, this should be manageable, but I need to design the front end UI still and make sure users can create and delete automation functions without zombie processes occurring inadvertently!
I was thinking of adding an “email me when the process runs” option for setting up automated processes. Does that sound appealing (as an optional feature of course).

Hi Chris, I'm curious if the automation function is anywhere near completion, or if you still want to go ahead with it. As I said before, the add-on works wonderfully but I'm just missing the automation. Wouldn't mind paying a small monthly fee for it either.
You asked about an "email me" option, I guess as some form of notification? It's a 'nice to have' but for me, not necessary.

Automation is still on the roadmap, but I haven't made any direct progress on it beyond research. I'm currently working on custom export locations as I feel that is a nice feature to have (for automation especially). Then I have to decide if I want to move towards automation or Nested Element improvements.
The email option was mostly an afterthought, I was just curious how interested people were in the feature. It probably wouldn't be included from the get go unless it was fairly easy to implement.
I've been debating setting up a Patreon for ESD since it has become increasingly difficult for me to peel off of work or my personal projects to make improvements on ESD. Not because I don't like working on ESD, but because time is limited and I have to prioritize things. If the Patreon could gain enough traction, it would be much easier for me to invest time in ESD on a regular basis and start putting out more frequent updates. It would also allow me to ping the community and ask what features they would like prioritized.
In any case, I apologize that I haven't been able to put out requested features as fast as I would like. Also, a blank sidebar is probably not great. What was your sheet set up like / what options did you have enabled?

Any updates on this feature?
If not, is there a way for me to use a script to send the export instruction to your app so I can set up a simple timer in scripts?


Add example HUBOT_SLACK_EXIT_ON_DISCONNECT comment

This should cause the slack adapter to exit if it's disconnected from Slack (say if they have an outage.

https://github.com/slackhq/hubot-slack/blob/master/src/slack.coffee#L17
For future reference.
Looks good, might be really useful to deal with disconnects and outages. Thanks!


Update package version after merge #123

Pull #123

ping

+1.

Hate to :+1: but a package version update is long due in this case.

Oh, I could have sworn I did this.
Hold on. :)

0.9.0 has been pushed to npm. Sorry about that. :(

Thank you very much for the timely response, @mattrobenolt! Really enjoying Sentry so far.

Thank you!


Accuracy incurs a GPU/CPU sync point

🐛 Bug
If running Accuracy inside the training loop, training is slowed due to CPU/GPU sync point
To Reproduce
Steps to reproduce the behavior...
Pull Request includes reproduction, a unit test which fails before the modification and passes after.
#1 Update _safe_divide to allow Accuracy to run on the GPU
P.S. I opened it in the fork due to the question # 1 under "Before submitting", but Contributing.md does not mandate discussion prior "Submit a PR!", would it be possible to update one or the other with the latest guidance?
Expected behavior
Accuracy can be calculated on the GPU, without syncing
Environment

TorchMetrics version (and how you installed TM, e.g. conda, pip, build from source): conda    torchmetrics              1.4.0.post0        pyhd8ed1ab_0    conda-forge
Python & PyTorch Version (e.g., 1.0):  python                    3.11.9          hb806964_0_cpython    conda-forge
Any other relevant information such as OS (e.g., Linux):

Hi @ndrwrbgs, thanks for reporting this issue and thanks for already having a fix and unittest for the bug!
Could you open a PR directly to the main torchmetrics repository so we can get the fix incorporated?

Thank you, all done at #2640


feat: parser address integration

(hopefully) fixed my crlf/lf eslint issues each time I sync up
added (test) ability for parseTransaction functions to take in an address and spit out specific actiontypes depending on it (makes it cleaner on the UI code side)
moved all (necessary) parser functions to that standard
fixed transfer parser to be like how the unknown is (with ignoring native transfers that are the rent fees)
highered rent requirements for the util functin

breaking:

for testing purposes, the queries.ts passes in the address I used to test the address integration, should actually be the params address when in address view (or address connected to a tx page)

the eslint fix I'm trying to apply + the one that github tests are failing me on (atm):
https://stackoverflow.com/questions/53516594/why-do-i-keep-getting-eslint-delete-cr-prettier-prettier


fixed many clippy warning

the most important one is
https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp

Hello. Thanks for you PR.
It's not so obvious for me that we cannot perform strict equality checks of f64 in updated places.
There are two cases when we're using strict equality checks of f64.

When we need to find a value in a Window. Window just keeps a byte-byte copied values, so it is totally safe to perform strict equality check. The only thing when it might became a problem is if one (or both) of the comparable values is NaN. But there are other checks in the code for this situation. This case happens is SMM, Highest/Lowest family.
When we want to prevent division by zero. According to your suggestions, there is a question for me: is there any case when a != b, but a - b == 0.0? If yes, then your suggestions are right. If no, then there is no reason for additional checks throw f64::EPSILON.

@amv-dev there are hundreds of articles about float comparison. From my experience, I can tell that you can never guarantee that 2 float numbers are identical as the calculation can be different for different processors and OS.
And we used decimal type instead of float for all finance calculations.
Take a look here:
https://floating-point-gui.de/errors/comparison/
Read about decimal
https://en.wikipedia.org/wiki/Decimal_floating_point

The point is that you can't trust float equality only when you performed any changing operations over the values before.
In the current case we do not perform any calculations over the values before comparison. We just coping value from one place to another and then comparing 8(or 4) bytes with the other 8(or 4) bytes from that places. The key is that values are not changed between copy and comparison.
It might be clear if you would think about the values not like f64, but like binary [8; u8].
Also the answer to my second question is no. There is no way that a != b, but a-b == 0.0. It can be simply checked by this code:
for i in 0..(u32::MAX-1) {
	let v1 = f32::from_bits(i);
	let v2 = f32::from_bits(i+1);

	if v1-v2 == 0.0 {
		panic!("{} - {} is zero!", v1, v2);
	}

	if v2-v1 == 0.0 {
		panic!("{} - {} is zero!", v1, v2);
	}
}

The only problem here is that
let i = 123u32; // some random number
let v1 = f32::from_bits(i);
let v2 = f32::from_bits(i+1);

let division = 1.0/(v1-v2); // infinity may occur here

But there is no way you can guarantee that after division there will be no infinity, even throw checking with f64::EPSILON.

According to your suggestions I will change every float equality checking like this:
let a = 123f64;
let b = a.clone();

if a == b { // old version
}

if a.to_bits() == b.to_bits() { // new version
}

I think this will be more idiomatic and clear for the others. Also I will add additional comments to this.

@amv-dev I did review smm and highest_lowest algos and agree we can use pure comparison. I have reverted back original logic.
I still use abs_diff_* macros in 4 places and unit tests.

Let me know if any other issues in my pull request

@olexiyb, I tried to correctly apply your PR, but I think it will be better if you split it at 3 different PRs:

All the typo fixes. I really want apply this part ASAP.
All the regular clippy lint fixes that are not concern on calculation algorithms (f.e. tabs to spaces, code parts movement, if-else refactoring etc...)
All the other sensitive stuff, that may act on performance and correctness of the calculations, include working with float values. This is the most controversial part of your PR for me right now.

Can you do this? I will really appreciate it.

and 2) done. Please review and merge these 2 pull requests