Integration of Mailchimp for newsletter component

Co-Author: @yiremorlans
Description
These changes allow the user to sign up for Career Catalyst newsletter. Utilized Mailchimp form builder and embedded form service to save the users information. We thought to use Mailchimp built in service that provides handling logic for submitting the form data to Mailchimp. These changes require a Mailchimp account to change the redirect address from Mailchimp to Career Catalyst.
Related Issue
close #59
Acceptance Criteria

[x] Form with name and email input
[x] Form submission successfully subscribes user to Mailchimp audience
[x] Redirects user to home page after subscribing

Type of Changes
Use a check for  ✓ the following type of changes:

Type

:bug: Bug fix

✓
:sparkles: New feature

:hammer: Refactoring

:100: Add tests

:link: Update dependencies

:scroll: Docs

Updates
Before

After

Testing Steps / QA Criteria

Manually input user information and directly sends to Mailchimp Audience list
User is redirected back to homepage

The PR was submitted after breaking changes were introduced to the main code base (unaware to us until after). I suspect we will need to merge #73 to address breaking changes first, and this PR should not introduce any conflicts to the main code base.

Works as expected :D

User email successfully added to the subscriber list
No issue with deployment


fix: Debt of duplicated compile code between nargo::ops::compile and nargo_cli:clie:compile_cmd

Was this fixed?

This has not been completely fixed, assigning Koby


[oauth2] Refresh_token must no be a JWT token

This issue can be closed because it has been silently fixed by a previous version.


Feature Request on Automated install script for people wanting non-docker

Description
Changes made for setup_python_env function. Build and Run successfully on my Ubuntu 22 system.
File : /scripts/linux-install-stirlingPDF.sh
Closes #1861
Checklist

[x] I have read the Contribution Guidelines
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] My changes generate no new warnings
[x] I have read the section Add New Translation Tags (for new translation tags only)

will need to have a few different VMs and OSs testing this before we can merge


feat: eth protos

Adds ETH protos
Combines all extensions into a single typed extension

StargateQueryClient.withExtensions can only handle 19 total extensions

Moves stableswap and balancer code to utils

Summary by CodeRabbit

New Features

Introduced new interfaces and functions for Ethereum-related messaging and queries, enhancing SDK capabilities.
Improved accessibility by restructuring existing interfaces for direct method exposure.

Bug Fixes

Updated subproject commit identifier, potentially addressing past issues.

Refactor

Simplified access patterns by removing unnecessary nested objects for better clarity and maintainability.

Tests

Updated and refactored tests to align with the new structure, improving readability and ease of maintenance.

Tests


Master

Hi @ppayalg, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla2.dotnetfoundation.org.

TTYL, DNFBOT;

Now I have Metallica's song in my head.


ember h2 client hangs after long running connection dies

17:30:00.011 [io-compute-3] ERROR o.h.e.c.EmberClientBuilderCompanionPlatform  - ReadLoop has errored
java.io.IOException: Connection reset
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:425)
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:195)
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:217)
	at java.base/sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:306)
	at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
	at delay @ fs2.io.net.SocketCompanionPlatform$AsyncSocket.$anonfun$readChunk$1(SocketPlatform.scala:120)
	at async @ fs2.io.net.SocketCompanionPlatform$AsyncSocket.readChunk(SocketPlatform.scala:114)
	at flatMap @ fs2.io.net.SocketCompanionPlatform$BufferedReads.$anonfun$read$1(SocketPlatform.scala:82)
	at delay @ fs2.io.net.SocketCompanionPlatform$BufferedReads.withReadBuffer(SocketPlatform.scala:52)
org.http4s.ember.core.h2.H2Connection$KillWithoutMessage
java.io.IOException: Connection reset
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finishRead(UnixAsynchronousSocketChannelImpl.java:425)
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.finish(UnixAsynchronousSocketChannelImpl.java:195)
	at java.base/sun.nio.ch.UnixAsynchronousSocketChannelImpl.onEvent(UnixAsynchronousSocketChannelImpl.java:217)
	at java.base/sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:306)
	at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
	at delay @ fs2.io.net.SocketCompanionPlatform$AsyncSocket.$anonfun$readChunk$1(SocketPlatform.scala:120)
	at async @ fs2.io.net.SocketCompanionPlatform$AsyncSocket.readChunk(SocketPlatform.scala:114)
	at flatMap @ fs2.io.net.SocketCompanionPlatform$BufferedReads.$anonfun$read$1(SocketPlatform.scala:82)
	at delay @ fs2.io.net.SocketCompanionPlatform$BufferedReads.withReadBuffer(SocketPlatform.scala:52)

I have the following scenario:
long running h2 connection to a service with the following request:
val req = Request[F](
  Method.GET,
  Uri.unsafeFromString(s"https://${config.host}/eventstream"),
  httpVersion = HttpVersion.`HTTP/2`,
  headers = Headers(
    Header.Raw(ci"hue-application-key", config.apiKey),
    Accept(MediaType.`text/event-stream`),
  )
)

events are processed in a fs2 Stream. I have another fs2 Stream based on Queue for commands to the same service:
Stream
  .fromQueueUnterminated(bridgeQueues.commandQueue)
  .parEvalMap(2) {
    rateLimited(semaphore, command => client.publishCommand(command).flatMap {
      case r =>
        logger.debug(s"publish Command response: $r")
    })
  }

Something goes wrong with the network attached to the host running this client, I can see a persistent connection (not http4s) to another service is detected as failed and recreated.
However the above exception is only thrown once a command is being submitted to the queue (and hence attempted to being sent - this could be an hour after the other persistent connection is being recreated) and once this exception is logged by http4s, the connection is dead (netstat shows nothing), the ember client unresponsive and no further SSE events are received until the service is restarted (the JVM process).
I've tried multiple disparate approaches but the behaviour is always the same.

I tried to distill an example:
https://gist.github.com/nefilim/b47805255431b00866c07f3375fa36ff
I try to simulate the problem by running this on a laptop and then putting it to sleep. Unfortunately it's not quite the same problem, the readLoop does error but so does the writeLoop, those errors does not get propagate.
The connection receives a GoAway which is propagate in the error channel and causes the stream to rebuild, the client recreated and the connection re-established, the desired behaviour.
It seems in my application, the readLoop errors leaving the client in a bad state but no further errors are being propagated to allow clean/recreation .. not quite sure how to simulate that.

When this happens I have two fibers waiting in the same place 🤔
cats.effect.IOFiber@23480178 WAITING
 ├ rethrow$extension @ fs2.Compiler$Target.$anonfun$compile$1(Compiler.scala:157)
 ├ flatMap @ org.http4s.ember.core.h2.H2Stream.getResponse(H2Stream.scala:413)
 ├ main$ @ org.home4s.server.Main$.main(Main.scala:28)
 ╰ main$ @ org.home4s.server.Main$.main(Main.scala:28)


Use module logger instead of root logger

Currently this package is logging to the root logger which makes it harder to manage its logging. For a more details on why the root logger should be avoided you can also check the reasons mentioned in the 1st point here
In this change I take the logging out of the root logger and have a logger for the module.

@areibman when you have time looking for a review here

Looks great-- thanks for waiting @joaonadkarni !


"Recommended" popup on hover

Context
We want a popup to warn users about the contamination of recyclables.

Task

Upon hovering on "Recommended", this popup should show.

Figma Link
https://www.figma.com/file/kN115h4H1jk797qa3x08Et/RGW-Design_Master-Design-File?node-id=4026%3A21461&t=IeCS7KeogxbXAkXh-0
Acceptance Criteria
npm run build works

Changed the import path


app: Increase the timeout for the http client

The default request timeout for recurring jobs is 10s, which is
definitely not enough. If multiple recurring jobs for a volume
start simultaneously (due to the mutex lock), or some steps take
several seconds, the timeout will fail the recurring jobs.
Increasing the timeout is not able to completely avoid duplicate
snapshots/backups if there are intensive snapshot-related
operations. But this should reduce the probability.
longhorn/longhorn#2278
Signed-off-by: Shuo Wu<EMAIL_ADDRESS>

I am not if there is a simple way to block a backup creation for over 10s then trigger the issue...

For testing I think you can run a proxy between client <-> server then stall the server responses. But seems like a lot of work, with little gain, since we know that the client timeout previously was working we can assume the increase in timeout should work as well.

Probably we need to enhance the snapshot command to support asynchronous mode to return immediately if the job gets triggered successfully instead of waiting until the job completed successfully.
https://github.com/longhorn/longhorn-manager/blob/ac065a8deb96193ffec142bcc7e7345615b57b8d/app/volume.go#L495-L543

@innobead agree having the apis be async is a good design goal, for this specific case this should be covered by the backup refactoring https://github.com/longhorn/longhorn/issues/1761 since once the backup/snapshots are exposed as crds, we can operate on the crds and the only thing the api needs to do is creation/validation of these crds and the client then can poll the crd state instead of having the apis be blocking.

For testing I think you can run a proxy between client <-> server then stall the server responses. But seems like a lot of work, with little gain, since we know that the client timeout previously was working we can assume the increase in timeout should work as well.

Yes. When I tested this part, I directly added a "sleep" in the backend side then validated if this timeout works or not. For this PR, maybe we can skip the test.


let n_rows be bigger than 1 in generating supremacy circuit

#2295

@googlebot I signed it!

hmm, I wonder why Travis CI build failed. This change seems to be perfectly harmless

@tbcdebug We've flaking on Windows checks lately. Rerunning.

@Strilanc It seems like the other powershell command broke today.

Normally I'd add a test checking that you caught the failure, but this is fine as is. Thanks for the fix.


Expose Array.id() and Dictionary.id()

Also, now ids are int64_t, which integrate better with Variant/scripting.
This is for allowing non-deep comparison of arrays and dictionaries, like this: a.id() == b.id()

I think I'm dropping this for now.


incorrect type when saving string variable to NetCDF

Reported by ansley b manke on 28 May 2009 21:57 UTC
SAVE of a variable defined from grid-changing functions may get the wrong type.  A previous SAVE operation or a variable definition involving another grid-changing variable seems to trigger it.
!!!! (create a subset of large input file)
!!!! use "/home/nstout/hankin/SOCAT_triples.nc"
!!!! save/file=sbug.nc/clobber cruise_id[cruise_no[i=1:104000:1000](i=1:104000:1000],)

use sbug.nc
DEFINE SYMBOL clen 30

let I1d = i[cm0 = IF CRUISE_NO NE CRUISE_NO[I=@SHF:-1](g=cruise_no]

let) THEN 1    ! marks each real cruise
let cm1 = if i eq 1 then 1 else cm0                      ! start of first cruise, too
let cm2 = if MOD(cm1[($clen) ) eq 0 then 1          ! break into chunks
let mask = MISSING(cm1, cm2)

DEFINE SYMBOL nk = `mask[i=@ngd](i=@cib],)`

!  Or if this is used instead of the SAVE then the result is ok...
! LIST/i=1:10 cruise_no

let kstarts = mask * i
let kst = COMPRESSI(kstarts)
let/title="cruise ID" cruise_id_xz = SAMPLEI(cruise_id, kst[i=1:($nk)])
list/i=1:10 cruise_id_xz

! *** THE VARIABLE cruise_id_xz GETS SAVED AS FLOAT INSTEAD OF STRING
save/clobber/file=test_string_save.nc/i=1:10 cruise_id_xz

! verify the misbehavior
canc var/all
use test_string_save.nc
list cruise_id_xz

The last LIST command should write
 1    /  1:"0001SFC_PRT"
 2    /  2:"0001SFC_PRT"
 3    /  3:"0001SFC_PRT"
...

but instead writes floats
 1    /  1:  6.753E-37
 2    /  2:  0.000E+00
 3    /  3:  6.753E-37
...

(not the same as bug #1621)
Migrated-From: http://dunkel.pmel.noaa.gov/trac/ferret/ticket/1664

Comment by ansley.b.manke on 28 May 2009 23:44 UTC
This is because Ferret returned the wrong output-type for the variable from the call to cd_get_var_outtype.
When the variables are based on complex expressions, the count of variables in Ferret's UVAR differs from the count of variables in the attribute-handling structure nc_ptr.nvars. This is fine; each use is handled correctly in its own part of the code.  But there were unnecessary and incorrect tests comparing nc_ptr.nvars to the Ferret UVAR variable.
Fixed in NCF_Util.c and cd_get_var_outtype.F

Attachment from ansley.b.manke on 28 May 2009 21:57 UTC
subset of the original large file.
REPLACE THIS TEXT WITH UPLOADED FILE ./attachments/TRAC_1664_GIT_936/sbug.nc


Please publish 0.3.11 to npm repository

Currently showing as 0.3.10 in npm, needs an npm publish

:+1:  , please

Hi all — (a few more) versions have been since published. Apologies for the delay! :)

:bow: ;)


PermissionService.php line 404: Trying to get property of non-object.

For Bug Reports

BookStack Version: v0.16.1
PHP Version: PHP 5.6.30
MySQL Version: 5.5.54-38.7 (I know this is below the required 5.6, but this doesn't seem like a MySQL issue, correct me if I am wrong.)

Expected Behavior
Creating new pages in a new or existing book (not a chapter) should take us to the page editor.
Creating new pages in a new or existing chapter does redirect us to the page editor as expected.
Actual Behavior
When creating new pages in a book (not in a chapter) we receive the error: ErrorException in PermissionService.php line 404: Trying to get property of non-object. We have tested this with an LDAP user and a standard user, seeing the same behavior
Full stack trace:
in PermissionService.php line 404
at HandleExceptions->handleError(8, 'Trying to get property of non-object', '/home/foobar/library.foobar.com/htdocs/BookStack/app/Services/PermissionService.php', 404, array('entity' => object(Page), 'role' => object(Role), 'action' => 'view', 'permissionMap' => array(), 'rolePermissionMap' => array('1:settings-manage' => true, '1:users-manage' => true, '1:user-roles-manage' => true, '1:restrictions-manage-all' => true, '1:restrictions-manage-own' => true, '1:book-create-all' => true, '1:book-create-own' => true, '1:book-update-all' => true, '1:book-update-own' => true, '1:book-delete-all' => true, '1:book-delete-own' => true, '1:page-create-all' => true, '1:page-create-own' => true, '1:page-update-all' => true, '1:page-update-own' => true, '1:page-delete-all' => true, '1:page-delete-own' => true, '1:chapter-create-all' => true, '1:chapter-create-own' => true, '1:chapter-update-all' => true, '1:chapter-update-own' => true, '1:chapter-delete-all' => true, '1:chapter-delete-own' => true, '1:image-create-all' => true, '1:image-create-own' => true, '1:image-update-all' => true, '1:image-update-own' => true, '1:image-delete-all' => true, '1:image-delete-own' => true, '1:book-view-all' => true, '1:book-view-own' => true, '1:page-view-all' => true, '1:page-view-own' => true, '1:chapter-view-all' => true, '1:chapter-view-own' => true, '1:attachment-create-all' => true, '1:attachment-create-own' => true, '1:attachment-update-all' => true, '1:attachment-update-own' => true, '1:attachment-delete-all' => true, '1:attachment-delete-own' => true, '2:book-create-all' => true, '2:book-update-all' => true, '2:book-update-own' => true, '2:book-delete-all' => true, '2:book-delete-own' => true, '2:page-create-all' => true, '2:page-create-own' => true, '2:page-update-all' => true, '2:page-update-own' => true, '2:page-delete-all' => true, '2:page-delete-own' => true, '2:chapter-create-all' => true, '2:chapter-create-own' => true, '2:chapter-update-all' => true, '2:chapter-update-own' => true, '2:chapter-delete-all' => true, '2:chapter-delete-own' => true, '2:image-create-all' => true, '2:image-update-all' => true, '2:image-update-own' => true, '2:image-delete-all' => true, '2:image-delete-own' => true, '2:book-view-all' => true, '2:book-view-own' => true, '2:page-view-all' => true, '2:page-view-own' => true, '2:chapter-view-all' => true, '2:chapter-view-own' => true, '2:attachment-create-all' => true, '2:attachment-update-all' => true, '2:attachment-update-own' => true, '2:attachment-delete-all' => true, '2:attachment-delete-own' => true, '3:book-view-all' => true, '3:book-view-own' => true, '3:page-view-all' => true, '3:page-view-own' => true, '3:chapter-view-all' => true, '3:chapter-view-own' => true, '4:book-view-all' => true, '4:book-view-own' => true, '4:page-view-all' => true, '4:page-view-own' => true, '4:chapter-view-all' => true, '4:chapter-view-own' => true, '5:book-create-all' => true, '5:book-update-all' => true, '5:book-update-own' => true, '5:book-delete-all' => true, '5:book-delete-own' => true, '5:page-create-all' => true, '5:page-create-own' => true, '5:page-update-all' => true, '5:page-update-own' => true, '5:page-delete-all' => true, '5:page-delete-own' => true, '5:chapter-create-all' => true, '5:chapter-create-own' => true, '5:chapter-update-all' => true, '5:chapter-update-own' => true, '5:chapter-delete-all' => true, '5:chapter-delete-own' => true, '5:image-create-all' => true, '5:image-update-all' => true, '5:image-update-own' => true, '5:image-delete-all' => true, '5:image-delete-own' => true, '5:book-view-all' => true, '5:book-view-own' => true, '5:page-view-all' => true, '5:page-view-own' => true, '5:chapter-view-all' => true, '5:chapter-view-own' => true, '5:attachment-create-all' => true, '5:attachment-update-all' => true, '5:attachment-update-own' => true, '5:attachment-delete-all' => true, '5:attachment-delete-own' => true), 'permissionPrefix' => 'page-view', 'roleHasPermission' => true, 'roleHasPermissionOwn' => true, 'explodedAction' => array('view'), 'restrictionAction' => 'view', 'book' => object(Book), 'hasExplicitAccessToParents' => false, 'hasPermissiveAccessToParents' => true, 'chapter' => false)) in PermissionService.php line 404
at PermissionService->createJointPermissionData(object(Page), object(Role), 'view', array(), array('1:settings-manage' => true, '1:users-manage' => true, '1:user-roles-manage' => true, '1:restrictions-manage-all' => true, '1:restrictions-manage-own' => true, '1:book-create-all' => true, '1:book-create-own' => true, '1:book-update-all' => true, '1:book-update-own' => true, '1:book-delete-all' => true, '1:book-delete-own' => true, '1:page-create-all' => true, '1:page-create-own' => true, '1:page-update-all' => true, '1:page-update-own' => true, '1:page-delete-all' => true, '1:page-delete-own' => true, '1:chapter-create-all' => true, '1:chapter-create-own' => true, '1:chapter-update-all' => true, '1:chapter-update-own' => true, '1:chapter-delete-all' => true, '1:chapter-delete-own' => true, '1:image-create-all' => true, '1:image-create-own' => true, '1:image-update-all' => true, '1:image-update-own' => true, '1:image-delete-all' => true, '1:image-delete-own' => true, '1:book-view-all' => true, '1:book-view-own' => true, '1:page-view-all' => true, '1:page-view-own' => true, '1:chapter-view-all' => true, '1:chapter-view-own' => true, '1:attachment-create-all' => true, '1:attachment-create-own' => true, '1:attachment-update-all' => true, '1:attachment-update-own' => true, '1:attachment-delete-all' => true, '1:attachment-delete-own' => true, '2:book-create-all' => true, '2:book-update-all' => true, '2:book-update-own' => true, '2:book-delete-all' => true, '2:book-delete-own' => true, '2:page-create-all' => true, '2:page-create-own' => true, '2:page-update-all' => true, '2:page-update-own' => true, '2:page-delete-all' => true, '2:page-delete-own' => true, '2:chapter-create-all' => true, '2:chapter-create-own' => true, '2:chapter-update-all' => true, '2:chapter-update-own' => true, '2:chapter-delete-all' => true, '2:chapter-delete-own' => true, '2:image-create-all' => true, '2:image-update-all' => true, '2:image-update-own' => true, '2:image-delete-all' => true, '2:image-delete-own' => true, '2:book-view-all' => true, '2:book-view-own' => true, '2:page-view-all' => true, '2:page-view-own' => true, '2:chapter-view-all' => true, '2:chapter-view-own' => true, '2:attachment-create-all' => true, '2:attachment-update-all' => true, '2:attachment-update-own' => true, '2:attachment-delete-all' => true, '2:attachment-delete-own' => true, '3:book-view-all' => true, '3:book-view-own' => true, '3:page-view-all' => true, '3:page-view-own' => true, '3:chapter-view-all' => true, '3:chapter-view-own' => true, '4:book-view-all' => true, '4:book-view-own' => true, '4:page-view-all' => true, '4:page-view-own' => true, '4:chapter-view-all' => true, '4:chapter-view-own' => true, '5:book-create-all' => true, '5:book-update-all' => true, '5:book-update-own' => true, '5:book-delete-all' => true, '5:book-delete-own' => true, '5:page-create-all' => true, '5:page-create-own' => true, '5:page-update-all' => true, '5:page-update-own' => true, '5:page-delete-all' => true, '5:page-delete-own' => true, '5:chapter-create-all' => true, '5:chapter-create-own' => true, '5:chapter-update-all' => true, '5:chapter-update-own' => true, '5:chapter-delete-all' => true, '5:chapter-delete-own' => true, '5:image-create-all' => true, '5:image-update-all' => true, '5:image-update-own' => true, '5:image-delete-all' => true, '5:image-delete-own' => true, '5:book-view-all' => true, '5:book-view-own' => true, '5:page-view-all' => true, '5:page-view-own' => true, '5:chapter-view-all' => true, '5:chapter-view-own' => true, '5:attachment-create-all' => true, '5:attachment-update-all' => true, '5:attachment-update-own' => true, '5:attachment-delete-all' => true, '5:attachment-delete-own' => true)) in PermissionService.php line 339
at PermissionService->createManyJointPermissions(object(Collection), object(Collection)) in PermissionService.php line 226
at PermissionService->buildJointPermissionsForEntities(object(Collection)) in PermissionService.php line 215
at PermissionService->buildJointPermissionsForEntity(object(Page)) in EntityRepo.php line 734
at EntityRepo->getDraftPage(object(Book), null) in PageController.php line 51
at PageController->create('test-book', null)
at call_user_func_array(array(object(PageController), 'create'), array('test-book', null)) in Controller.php line 55
at Controller->callAction('create', array('test-book', null)) in ControllerDispatcher.php line 44
at ControllerDispatcher->dispatch(object(Route), object(PageController), 'create') in Route.php line 204
at Route->runController() in Route.php line 160
at Route->run() in Router.php line 559
at Router->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Controller.php line 44
at Controller->BookStack\Http\Controllers{closure}(object(Request), object(Closure)) in Pipeline.php line 131
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Authenticate.php line 45
at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Localization.php line 31
at Localization->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in VerifyCsrfToken.php line 65
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 561
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520
at Router->dispatchToRoute(object(Request)) in Router.php line 498
at Router->dispatch(object(Request)) in Kernel.php line 174
at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Debugbar.php line 51
at Debugbar->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 54

Just updated to mysql 5.6, issue is still present.

I think we found the problem. It appears during the last update permissions were changed on the files that were updated. Seems obvious now after looking at the permission error stack trace. chown -R'd the Bookstack directory and all is well again.

@jimmyc802 Sorry for my late reply. This appears to be an issue that was patched in v0.16.2. The issue appeared due to how variables types were handled in the old php-mysql drivers.


error in manual

The part for refreshing the token in (https://github.com/thephpleague/oauth2-client/blob/master/docs/usage.md) has this code:
$existingAccessToken = getAccessTokenFromYourDataStore();
if ($existingAccessToken->hasExpired()) {

If I have the access token in an simple variable, how do I check it for expiration?
I think the manual needs to clarify this.
Thank you for the amazing library!

Thanks for updating this issue with your solution!


Support  tags

The original select2 can work with <option> tags below it. Example:
<select id="foo">
  <option value="1">First option</option>
  <option value="2">Second option</option>
</select>

And then turn it into a select2 control:
$("#optimize").select2({ minimumResultsForSearch: -1 });

I think this control should support the same markup:
<select2 id="foo">
  <option value="1">First option</option>
  <option value="2">Second option</option>
</select2>

It could be easily done using <ng-content></ng-content>.

I have this basically working and will provide a PR once the current ones are in.

Ok, sound's good. Will merge current PR's today.

PR: https://github.com/NejcZdovc/ng2-select2/pull/67


Make the list of clients more manageable

I had been working on a list of nostr clients, too, for nostr.info and wonder if we could work together and consolidate the data.
I asked @xrviv to break your lengthy csv into individual files which makes it easier to add and edit clients. His #5 is quickly getting ready to merge without regressions in the UI although he might take another week as he's going afk until Sunday now.
If you are interested, we could maybe further refine the format and throw our lists together. Mine is here.
I'm missing an explicit license to your project. Mine is MIT. I think, splitting the pure list from the UI details makes sense and I'm happy to help you migrate your findings to my repo and integrate it in your UI.
I'm also not attached to my repository but I would hope to drive consolidation in the "lets collect all information on all those nostr clients that are popping up left and right" space so if you want to break out your data into your own such data repo, I would also support that, provided you don't oppose adding details I care about.

I would get rid of the order.yml and add some preference int to the individual clients. Maybe assign numbers between 1 and 100 and sort by that number and name. Whenever you feel there is a wrong order, you can boost one or the other client but else, adding a client is done with just one file addition.

I was not able to find a way to do that within the limitations of github pages.

It should be straight forward, no?
{% assign sorted = site.clients | sort: 'score' | reverse %}

No, because site.data.clients is not a collection of objects with properties. You can write a ruby plugin to sort like this but that's not supported on github pages.
https://stackoverflow.com/a/33215732

Does github pages allow you to do custom collections? I created many custom collections in my Jekyll project but I don't use github pages. If so, I can help you turn clients into a collection ... if you want that.

I don't know. There might be some other solution with jekyll 4.0 but github pages is still on jekyll 3.9.
Anyway this is overcomplicating things. The explicit list is simple and works without adding UI details back into the data.

:) I might have something for you later on. I'm working on a nostr based opinions plugin that would allow you to sort the list after pulling opinions from nostr itself. You would control who are esteemed opinion-havers to avoid spam.


test on mobile

this plugin should work smoothly on mobile devices

Based on some research and tests, it works smoothly on Android/Chrome and IOS/Safari
It bugs on IOS/Chrome, because IOS has a inbuilt rule that it freezes the repaint/reflow part of the browser whenever the user is scrolling the bar, the javascript runs, but you can only see when the user stops scrolling it :/
But since it works smoothly on IOS/Safari, this plugin can be used to build Phonegap apps, :)

Hi, what was the IOS version you tested on?
Before IOS8 the javascript was "paused" while scrolling on the iphone
more details:
http://developer.telerik.com/featured/scroll-event-change-ios-8-big-deal/
also on what version of android did you test it?

Actually I tested on IOS8 - Safari, previously it will probably not work properly :/
And on android I tested on version 5.0.1 Lollipop. On older versions it will probably not work properly as well...


was literal 'position' a typo?

I'm not sure, so if someone could, please review if this is a safe change.
I think this is related to https://github.com/aksonov/react-native-router-flux/issues/664 and might be the right fix instead of https://github.com/aksonov/react-native-router-flux/pull/665 if the way I'm thinking about it is correct.

Can confirm that this fixed my issue. It is also a better fix than my #665 PR!

Oops, my bad. Sorry !


Duplicating ClassName Multiple Times

Hey man! This has been a super useful plugin for working with styled-components and 3rd party libraries but sometimes it would be super helpful to allow the className to be duplicated more than once. I tried running the plugin in Babel twice but that didn't work. Any thoughts?

I'm happy to hear it has been useful.
Have you tried setting the css namespace to multiple & to get the effect you wanted?
`["@quickbaseoss/babel-plugin-styled-components-css-namespace", {"cssNamespace": "&&&"}]

@nvanselow I don't believe this worked on the older 0.x.x version and I had some issues updating (as documented in #33). It appears that this works now and is super helpful, thanks!

Excellent. I'm glad that solved your use case. I'll have to take a look at the problems you identified in the other issue so you can use that latest version.

This is exactly what we've been needing! Thanks for posting that as a solution here @nvanselow 😃
I imagine this has got to be a fairly common scenario when integrating styled-components into existing/legacy projects. For example, in my case we are up against some rather gnarly legacy CSS selectors such as #someId .grossly .nested section input {} 😅...
We've gotten around this in a different way in the past by hacking on the idea of a custom namespace that required all "new" components to be nested under .some.selector.for.specificity, but this &&& solution is much more ideal.
📝 This seems that have done the trick for us 🙏🏽
{
  // ...
  "plugins": [
    [
      "@quickbaseoss/babel-plugin-styled-components-css-namespace",
      {"cssNamespace": "&&&"}
    ],
    "babel-plugin-styled-components",
    // ...
    ]
}

📝 PR submitted documenting this in the README Add README section about "Increasing Specificity" #36

Thanks for opening that as a PR @erikthedeveloper!


Update contributing content

What are you changing in this pull request and why?
Need to update a few things:

Cypress tests are no longer necessary because we have CI tests
Removing dev blog contribution docs - moving the blog

Checklist

[ ] I have reviewed the Content style guide so my content adheres to these guidelines.
[ ] The topic I'm writing about is for specific dbt version(s) and I have versioned it according to the version a whole page and/or version a block of content guidelines.
[ ] I have added checklist item(s) to this list for anything anything that needs to happen before this PR is merged, such as "needs technical review" or "change base branch."
[ ] The content in this PR requires a dbt release note, so I added one to the release notes page.

Thanks Mirna! The file is in there now. You were faster than me :)


Cascading settings need to much overriding to get rid of defaults

Description of the new feature/enhancement
Currently "defaults" (including profiles and keybindings) are always applied and merged with "profiles.json". I have zero overlap between default and custom keybindings because I use default prefix (ctrl+shift) inside different application. In new version of Terminal, if I don't override all those to null I have unwanted side effects (specially if that app passes keybindings through and Terminal gets them).
Also I don't want to have certain profiles visible but GUIDs are different across machines so on each machine where I use Terminal I have to checkout my dotfiles (including Terminal config), inspect defaults file and then override (hide) those GUIDs.
Proposed technical implementation details (optional)
Merge (cascading) should be optional. If disabled defaults should be used one-time to create profiles.json.

Thanks for your feedback and appreciate your views. However, I don't quite follow what your proposed solution for your use-case is. We have to provide default key-mapping for many common and popular chords to expected actions, otherwise the Terminal won't be useful to most users.
If those key-mappings don't meet YOUR needs, you'll need to unbind/remap the defaults that you don't want.
While in your case, this means you may have to unmap more defaults than most, this is a necessary byproduct of Terminal providing sane defaults for most users, no?
Regarding GUID's: You can omit GUID's completely if you wish - your Terminal instances will then just auto-generate GUIDs internally, which it uses to differentiate one profile from another.

@bitcrazed Thanks for response, I completely understand that reasonable defaults need to be provided.
My problem is that I need to follow what you guys added/changed and remove that in my settings overlay pro-actively. It would be ideal if there was a general config switch e.g. addDefaultKeyBindings: I can set to false so I'm sure that only my own keybindings will be used and not weird mixture of in-time changing defaults and my own.
As for GUIDs, thank you, I didn't know that.

Defaults can yield surprising and devastating results when there is no trivial way to turn them off.
Take, for example, a user who uses Vim keybindings in *NIX command lines. Ctrl-w is used to delete the previous word, but trying this in Windows Terminal invariably closes the current tab without warning, which is a show-stopping problem to have. No application should punish a fully-supported use case by default.

devastating

Ctrl+W hasn’t been bound by default since version 0.3, about half a year ago.

for this exact reason

Odd, it just happened to me today. That’s why I’m here.

If you installed the Terminal immediately when we first released, then you probably still have ctrl+w bound in your settings - it should be trivial to change that line in your profiles.json file.

I meant it merely as an example—it’s the kind of thing that’s only possible if defaults aren’t a cohesive “thing”, and are instead scattered and islands unto themselves. If a user intends to use their own mappings for everything, for example, there’s no telling what new defaults will arise later that add surprise to their experience.
This wouldn’t be the case for many pieces of software, but a terminal is supposed to be able to pass unmapped key combinations through unchanged to other tools that have their own mappings.

I'd much more prefer standard UNIX approach where tool ships with default config file. You edit it, you exactly know what will happen. No surprises, no cascading settings.

It would be awesome to be able to disable all key bindings. Currently I have to read a mile of documentation to find them all and disable them or set them to something I like.

You know, I've come back to this thread after a few year now, and I think it's best served by #2205. We've been socializing a plan on that around the team for a while, but never had the time to write that into a proper spec. From that thread:

I think our unofficial plan has been to add support for "keymaps". This would follow the work for #1571 / #6899. Then, keymaps would contain objects which bind keys to various actions. The user could then just specify keymap: "foo" to replace all their keybindings with the ones in foo, no layering involved. Adding keys to actions directly would just update the "default" keymap, which is used when no keymap is specified.

I think for tracking purposes, it's best to just merge this with that thread. Thanks for the discussion all!
/dup #2205


🌱 Bump kustomize/kyaml v0.18.1 and kustomize/kustomize/v5 to v5.5.0

It also needs sigs.k8s.io/kustomize/api to be bumped to v0.18.0 and sigs.k8s.io/kustomize/cmd/config to v0.15.0 for it to work.

/test metal3-centos-e2e-integration-test-main metal3-ubuntu-e2e-integration-test-main


update compatability list

Hi
The list here (https://github.com/Opster/opensearch-k8s-operator#compatibility) does not list the 2.2 release and its compatible opensearch versions
Thanks

Hi @rhys-evans, thanks for reporting this, we forgot to update the matrix after the last release. I've just done that.

Thank you


Search box in home not properly working

The search box doesn't work properly.
-Enter key press event is not triggered on Submit Search box.

Fixed


Prime Number maths implemented Issue #2332 fixed

Have you read the Contributing Guidelines on Pull Requests?
Yes
Description
Edited the prime number code to make use of the fact that except 2 and 3, all the other prime numbers are of the form 6k+-1.
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[x] I've edited the README.md and link to my code.

Related Issues or Pull Requests
#2332

@all-contributors please add @Rohit-83 for his code


Update side-effects example

What kind of change does this PR introduce?
docs
Did you add tests for your changes?
If relevant, link to documentation update:
Summary
fixes #7190
Does this PR introduce a breaking change?
nope

Other information
EDIT (@sokra): for documentation on webpack.js.org we should also add the same note to the sideEffects documentation.

This was correct a while ago, but webpack 5 has the side effects optimization always enabled, even in development

This was correct a while ago, but webpack 5 has the side effects optimization always enabled, even in development


Merge QCs across labeling sessions?

When interrupting a session and then resuming, the QC folder is not the same (bc it uses date/time). So, for labeling tasks with a LOT of subjects, that requires multiple breaks, we end up with a bunch of QC folders, eg:

Which makes it (i) cumbersome to review and (ii) cumbersome to share with collaborators.
Wouldn't it be desirable to merge all labeling session into the same QC folder?

Sure, merging all labeling session into the same QC folder would be more convenient

Thanks for reporting this!

Wouldn't it be desirable to merge all labeling session into the same QC folder?

Agree. Since this is a single line change, I proposed a PR: https://github.com/spinalcordtoolbox/manual-correction/pull/92


Config: Reduce default trafficGenPacketsPerSecond

In our tests so far, with the current CI hardware, we haven't been able to pass the eight million pps threshold with zero packet loss.
Set the default value of trafficGenPacketsPerSecond to eight million.

Tested against an OpenShift Virtualization 4.14 cluster.


Support example_assistant and example_user

Looking in the OpenAI Cookbook I see that their ChatGPT API supports marking chat roles as examples, explicitly: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb

To help clarify that the example messages are not part of a real conversation, and shouldn't be referred back to by the model, you can instead set the name field of system messages to example_user and example_assistant.

{"role": "system", "content": "You are a helpful, pattern-following assistant that translates corporate jargon into plain English."},
{"role": "system", "name":"example_user", "content": "New synergies will help drive top-line growth."},
{"role": "system", "name": "example_assistant", "content": "Things working well together will increase revenue."}
{"role": "system", "name":"example_user", "content": "Let's circle back when we have more bandwidth to touch base on opportunities for increased leverage."},
{"role": "system", "name": "example_assistant", "content": "Let's talk later when we're less busy about how to do better."},
{"role": "user", "content": "This late pivot means we don't have time to boil the ocean for the client deliverable."},

Looking in https://github.com/sashabaranov/go-openai/blob/master/chat.go I do not see this as an option currently. Is it possible to add this as a feature, or am I simply missing how to do this?

Actually I see I can just pass my own string value in there but it would be nice if it was in the const in chat.go as well. Maybe something like this?
// Chat message role defined by the OpenAI API.
const (
	ChatMessageRoleSystem    = "system"
	ChatMessageRoleUser      = "user"
	ChatMessageRoleAssistant = "assistant"
	ChatMessageRoleExampleUser      = "example_user"
	ChatMessageRoleExampleAssistant = "example_assistant"
)

Cheers!


Removing subdirectories, improving appearances

@ajpmaclean Andrew, I had commented out the add_subdirectory. That is what is causing the conflict.


Allow subscription names instead in addition to subscription ids in scope / resource functions

Is your feature request related to a problem? Please describe.
Currently if you reference a resource in another subscription, you have to use a subscription id
subscription('00000000-0000-0000-0000-000000000000')
resourceGroup('00000000-0000-0000-0000-000000000000', 'rgName')

Describe the solution you'd like
It would be nice if these functions could support subscription names as well as subscription ids.  Names are generally easier to work with, and tend to be more self documenting.
subscription('SubscriptionName')
resourceGroup('SubscriptionName', 'rgName')

The worst thing is today at authoring time, it looks like this latter example works as the compiler accepts them.  It doesn't become an error until runtime.  If it's not possible to support names, then I'd like to see the subscriptionId and tenantId paramaters typed as a guid rather than string so that any string that doesn't look like a guid produces a compile time error.  (Or achieve a similar effect through a linter rule)

then I'd like to see the subscriptionId and tenantId paramaters typed as a guid

This would be nice, though if the value is a subscription ID there is not much we can do. Is this relatively low cost @anthony-c-martin / @majastrz ?
The overall ask makes sense, but is probably not easy to do :(

This would be nice, though if the value is a subscription ID there is not much we can do. Is this relatively low cost @anthony-c-martin / @majastrz ?
The overall ask makes sense, but is probably not easy to do :(

Validating that a supplied literal string subscription() argument is a guid would be straightforward and something we could consider for an analyzer.
If it's not a compile-time value (e.g. a parameter), then we don't have any options in Bicep, but could probably catch it with /validate (if we don't already).

The big problem I can think of with accepting a named subscription is that I don't think Azure enforces naming uniqueness within a tenant - meaning your template could be unexpectedly broken (or end up targeting the wrong subscription) by someone renaming a subscription, or even assigning permissions to access a subscription which you previously could not access.


Remove duplicate eventFilter method

Fixes bad merge from #1480.

@reichlfl , I'm merging this directly as it fixes a build break.


How can I use this programmatically without using XML inflation

I am using this in my adobe native extension ANE for android. It crashes at runtime when view is getting inflated with XML layout resource id, saying that failed to find styleable attribute. How can use this entirely through programmatically instead of XML layout.
Thanks.

Hi, @appearance
Sorry, some of the parameters can not be specified from the programmatically.


Write up of BYO helm proposal.

@AlphaRoy14 @yoshi-1224 @ramaro I think this might interest all of you, since we're all people who have taken a crack at the helm binding for Mac OSX. I'm curious to hear your thoughts on whether you think this would make sense high level. If it's hard to imagine, I might be able to pull off a quick and dirty spike next week to demonstrate proof of concept.

Hey @sebradloff Nice idea. However, there are some advantages of using binding over using subprocess commands as mentioned in this StackOverflow answer. Since the binding works fine for Linux, maybe we can try to implement the BYO binary idea on darwin for now?

I think this is a good idea. While we figure out the binding issue, we can have this implemented as long as it doesn't change the way the helm input type works. Also, this could be a fallback to the lack of installed binding or even as feature to allow running different versions of helm without having the change kapitan itself.

@sebradloff  and as you say, maybe it even makes more sense to invest on a  "bring your own binary" input type!

@AlphaRoy14 that makes sense. It depends on how tightly we want to control the interface. I’m starting to think we want it more open, given we want kapitan to be a general solution. I messed around with the Binary input type last night. I’ll clean it up a bit and push it up hopefully tonight. It’s def more of a POC but I think it’ll be interesting to get your takes on it.

I just pushed up a draft of what a "Bring Your Own Binary" input type would look like. A target file is included: tests/test_resources/inventory/targets/binary-test.yml
What I focused on in the interface is using input_paths as a way to specify where the binary is you wish to execute, then supplemented additional args binary_env_vars and binary_args that you can inject to use with your binary. The last big piece is making \${compiled_target_dir} this specifically something that will be transpiled before the binary command is executed. This allows users to manipulate files that already exist in the compiled target directory or create files and direct them to the compiled target directory. Essentially as long as the binary returns with a non zero exit code, it is valid. This keeps the interface wide. All of this is achievable today through kadet but forces users to write python. This lowers the barrier to entry for making decisions but also keeps in line with the spirit of kapitan, which is to have a consistent, reliable, and general way to generate file changes.
Excited to know what y'all think about this interface.

I like the idea of adding a checksum but would like to make it a part of a new PR. I think I still need to add some documentation here for External and specify it's in alpha/experimental. @uberspot I'm having some issues running the linter locally make format_codestyle seems to produce different results than the github action

I like the idea of adding a checksum but would like to make it a part of a new PR. I think I still need to add some documentation here for External and specify it's in alpha/experimental. @uberspot I'm having some issues running the linter locally make format_codestyle seems to produce different results than the github action

Upgrading black using $ pip3 install --upgrade --user black worked for me. You can try it out maybe? :)


Support mpxv7002dp airspeed sensor for fixedwings

We used the analog airspeed sensor (mpxv7002dp) in arduplane code and we have no problem. The digital version ( 4525DO) costs a lot more and does not make much difference.
Digital

Analog

And here is the datasheet: https://www.nxp.com/docs/en/data-sheet/MPXV7002.pdf
Whoever has the need for this sensor or some spare time, go ahead and add support. Pull requests are always welcome.

Analogue airspeed should already be support on boards like the original pixhawk. You need to set SENS_DPRES_ANSC.
https://docs.px4.io/master/en/advanced_config/parameter_reference.html#SENS_DPRES_ANSC
Although I've personally never used it and I haven't seen anyone use or test it for years, so it could easily be broken.

https://discuss.px4.io/t/analog-airspeed-sensor-mpxv7002dp-on-a-pixhawk-issue/6329
QGC and px4 can't detect analog airspeed sensor .

I could connect sensor to pixhawk. For calibration we must set offset or scale or both?

set scale to 1000 for mpxv7002dp, reboot and then do normal airspeed calibration. it will find the offset automatically


Read me example notifications code error

Under stopping notifications:
NSNotificationCenter.defaultCenter().removeObserver(self, name: ReachabilityChangedNotification, object: reachability)
should be
NotificationCenter.default.removeObserver(self, name: ReachabilityChangedNotification, object: reachability)

Fixed in master 👍


[firestore-bigquery-export] add europe-central2 region to import script

While extension itself has the support for Warsaw (europe-central2) region,
such support is missing in import script fs-bq-import-collection.

Hello again :-(
Thanks for adding support for europe-central2 region in April.
However it was removed again from import script after refactoring in November...
Please add it again ASAP :-)


How to handle unexpected numbers of users?

Thank you for the great project.  I am trying to understand how this whole project works.  My understanding is that you run playwithdocker(PWD) in a VM for each instance created. Is this correct?
How do you deal with unexpected no. of users / no. of instances created? Do you create VMs on-demand and run playwithdocker(PWD) or am I completely wrong? Can you please explain to me how do you scale this? #

cc @marcosnils for expertise here.

Hey @Nair18 !

My understanding is that you run playwithdocker(PWD) in a VM for each instance created. Is this correct?

PWD is composed by two components mostly, the API server and the worker nodes. When you "create an instance", that's basically a container that gets created in the worker nodes with reduced resources (CPU / memory) where you actually get the prompt and start typing the commands

How do you deal with unexpected no. of users / no. of instances created?

The worker nodes can spawn hundreds of containers / instances, so spikes are not really a problem. We're also constantly monitoring the number of instances that are created in the system, so if required, we can upscale or downscale the amount of worker nodes depending on the demand and keep the system stable independently of the amount of users
LMK if you still have any questions


Codecoverage

Codecov Report

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

@@            Coverage Diff            @@
##             master       #9   +/-   ##
=========================================
  Coverage          ?   92.10%
=========================================
  Files             ?        1
  Lines             ?       38
  Branches          ?        0
=========================================
  Hits              ?       35
  Misses            ?        3
  Partials          ?        0

Continue to review full report at Codecov.

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


Update space_saving.pyx

  /Users/taugspurger/Envs/dask-dev/lib/python3.7/site-packages/crick/__init__.py:4: DeprecationWarning: `np.object` is a deprecated alias for the builtin `object`. Use `object` by
itself, which is identical in behavior, to silence this warning. If you specifically wanted the numpy scalar type, use `np.object_` here.
    from .space_saving import SpaceSaving

np.object is a deprecated alias for object in NumPy 1.20

Thanks Tom! I haven't touched this code in forever, didn't know it was still being used anywhere. Out of curiousity, where was this being used that led you to find this?

It's used via dask's CI :) Would you prefer to just deprecate using crick?

Apologies for the delay here, this slipped through the cracks. The code still works, I'd forgotten that we ever got around to using it in dask. Thanks for the fix!


Net::ReadTimeout on OVF deploy

Describe the bug
When attempting to deploy an OVF, we receive a Net::ReadTimeout
Stack trace:
16: from /.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/vsphere-automation-vcenter-0.4.3/lib/vsphere-automation-vcenter/api/ovf_library_item_api.rb:82:in `deploy'
15: from /.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/vsphere-automation-vcenter-0.4.3/lib/vsphere-automation-vcenter/api/ovf_library_item_api.rb:123:in `deploy_with_http_info'
14: from /.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/vsphere-automation-runtime-0.4.3/lib/vsphere-automation-runtime/api_client.rb:71:in `call_api'
13: from /.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/ruby-ntlm-0.0.4/lib/ntlm/http.rb:22:in `request'
12: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1470:in `request'
11: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:920:in `start'
10: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1472:in `block in request'
 9: from /.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/ruby-ntlm-0.0.4/lib/ntlm/http.rb:22:in `request'
 8: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1479:in `request'
 7: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1506:in `transport_request'
 6: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1506:in `catch'
 5: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http.rb:1509:in `block in transport_request'
 4: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http/response.rb:29:in `read_new'
 3: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/http/response.rb:40:in `read_status_line'
 2: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/protocol.rb:201:in `readline'
 1: from /.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/protocol.rb:191:in `readuntil'
/.rbenv/versions/2.6.3/lib/ruby/2.6.0/net/protocol.rb:217:in `rbuf_fill': Net::ReadTimeout with #<TCPSocket:(closed)> (Net::ReadTimeout)

How to reproduce
configuration = VSphereAutomation::Configuration.new.tap do |c|
  c.host = @name
  c.username = @user
  c.password = @pass
  c.scheme = 'https'
  c.verify_ssl = false
  c.verify_ssl_host = false
end

@rest = VSphereAutomation::ApiClient.new(configuration)
VSphereAutomation::CIS::SessionApi.new(@rest).create('')

# host, folder, cluster, and datastore are objects that wrap rbvmomi counterpart objects.
# id is a method that essentially calls _ref on the underlying rbvmomi object.
# I can provide examples of these id values, but they appear to be correct.
target = VSphereAutomation::VCenter::VcenterOvfLibraryItemDeploymentTarget.new(
  resource_pool_id: cluster.resourcePool._ref, host_id: host.id, folder_id: folder.id
)
deploy = VSphereAutomation::VCenter::VcenterOvfLibraryItemResourcePoolDeploymentSpec.new(
  name: 'name', accept_all_EULA: true, storage_provisioning: true, default_datastore_id: datastore.id
)
VSphereAutomation::VCenter::VcenterOvfLibraryItemDeploy.new(target: target, deployment_spec: deploy)
result = VSphereAutomation::VCenter::OvfLibraryItemApi.new(@rest).deploy(<ID of OVF>, config).value

Expected behavior
I'd expect the OVF to be deployed without error.
Versions
Dev Environment:

Ruby: 2.6.3
vSphere Automation SDK: 0.4.3
OS: macOS 10.14.6

Additional notes
Add any other notes about the problem here.

I'm still looking into this. I'm not able to reproduce this error, but I am getting another error (almost immediately which is why I'm not getting to a read timeout). What version of vCenter is this occurring on?
I'm going to go ahead and push an option to set the timeout. It won't affect anyone who doesn't use it, but will allow you to override the default. In the meantime, that may fix it for you.

I pushed out a new version to RubyGems (v0.4.4). When creating your configuration you can configure a timeout now. For example,
configuration = VSphereAutomation::Configuration.new.tap do |c|
  c.timeout = 100000
  c.host = @name
  c.username = @user
  c.password = @pass
  c.scheme = 'https'
  c.verify_ssl = false
  c.verify_ssl_host = false
end

That will allow the timeout to last longer so the deploy can finish. I think that should fix your problem. If not, let me know what happens and I'll continue looking into it. Sorry for the wait on this!

This worked for me, I appreciate the swift response!
Upgrading to 0.4.4 took care of this issue as well: https://github.com/vmware/vsphere-automation-sdk-ruby/issues/59

@JerrodCarpenter Glad to hear things are working! Do you mind if I close both of these issues?

Yep that works for me. As an aside, I've read over your contribution guidelines and understand that a lot of this is generated, but I'd like to learn and contribute to this project if things like this pop up in the future. You have any tips on getting started in that regard?

@JerrodCarpenter I’ll add some documentation to show how people can contribute next week. I would definitely welcome any contributions!


Update link for Terms of Use

Point to:  https://www.redhat.com/en/about/terms-use
Required by legal.

Note that this is now where openshift.io is also pointing

fixed in 36bdae3


Rename the_barn page to the-barn

The url for the barn is incorrect - should be /metrics/events/the-barn

Now done - with redirect from previous page


Huge memory leak when working with 30 concurrent threads with mimalloc

I am using a 3rd party software which causes memory fragmentation (I have measured and malloc operation gets > x20 slower over time).
Replacing std::malloc with mimalloc fixed this issue, allocation is very fast, however my process memory is getting higher over time (it started with 30GB and rises to 90GB after one day).

Ouch! This problem has been reported before but I have not yet found the cause. Can you:

Build mimalloc from the latest dev-abandon branch and try with that. Over the last week I have made various fixes that may solve the issue.
If that does not work, can you provide me with detailed instructions to reproduce this locally? Not sure if you can since you are using 3rd party software?

Let me know if you can try this (and how it goes).

Latest dev-abandon branch produces even higher leaks.... memory rises from 20 GB to 102 GB over night.
Sorry that can't provide source code to reproduce this issue

Thanks,
Lahav

Darn, I was hoping the latest fixes would solve this issue. As a further test, can you try the latest dev branch as well, but run with the environment variable MIMALLOC_PAGE_RESET=1 ?  Thanks!

Just to follow up, recently (v1.6.1) has seen more improvements to better share memory among threads which may improve things. If you can try that, please do :)

Sorry, I don't have the resources to test it anymore.
Good luck with resolving this issue


Temporarily revert curl-sys update.

This reverts curl-sys to the previously working version, with the intent to get nightly working again until 7.79.1 is published next week.
Fixes #9919

r? @alexcrichton
(rust-highfive has picked a reviewer for you, use r? to override)

@bors: r+

:pushpin: Commit 637ee663753eb1ed1a8de4fd31d6b835c744ab03 has been approved by alexcrichton

@bors: r+

:pushpin: Commit 637ee663753eb1ed1a8de4fd31d6b835c744ab03 has been approved by alexcrichton

:bulb: This pull request was already approved, no need to approve it again.

:hourglass: Testing commit 637ee663753eb1ed1a8de4fd31d6b835c744ab03 with merge dec716eda96d269beab393f2fbd6fc13e21ce0bf...

:hourglass: Testing commit 637ee663753eb1ed1a8de4fd31d6b835c744ab03 with merge ef5d1d2b12f55e919c1431d50c7985f74a90344f...

:broken_heart: Test failed - checks-actions

@alexcrichton I'm pretty sure you'll need to manually merge this, sorry I should have mentioned that.


3D packages are bigger than PCB footprints.

How to reproduce it:
Convert any LCSC component, for example C319164.
./fetchComponent.py fetchlcsc --kicadLib test.pretty --force C319164
The output test.3dshapes contains bigger models than the PCB footprints.
Workaround:
Set scale 0.4 for each axis in KiCad. (Pcbnew - Footprint Properties - 3D Settings - Scale)

This is an issue on the LCSC/EasyEDA side
Some of their STEP models are scaled so that 1 unit = 1 inch, KiCad expects 1 unit = 1cm
You'll find the actual scale you want to use is 1 / 2.54 or 0.3937007874 (I usually just do 0.3937)


Remove AzureAD module dependencies

Description:
First draft to get rid of using the AzureAD module which will be deprecated soon (June 2023). Another benefit is, that we support PowerShell Core now.
With this change, we do no longer need any external module to perform the required action against Exchange Online.

Resolve #1562
Resolve #1643

@SharmaAkash1 I’m waiting for you to finish your review before merging it.


No commit available after "Set to NULL" operation.

Hi, in DBeaver 3.8.1, I clicked with right mouse button on a nullable field of an Oracle table and I choosed "Set to NULL".
The field background became correctly yellow but it did not allow me to commit the edited value to database. To do it I must refresh or exit from table and answer "Yes" when the program asks me about saving the modified data...
Thanks.

I need to save data (CTRL+S or CTRL+ALT+S or click on save action in the bottom toolbar).
Commit becomes available when you switch into transactional mode (in main menu or main toolbar).

Ok Serge but I intended that exactly CTRL+S and toolbar button are not available (toolbar button is disabled) after this operation :-)
I hope you can reproduce this. I use DBeaver 3.8.1 - 32 bit installer for windows (it worked in 3.7.6 version).
Thank you so much!

No, I can't reproduce that. setting to NULL (thru context menu or with CTRL+ALT+N) activates Save/Cancel/Script actions.
Try to switch to some other view and then back to results editor - it helps in some cases.


Feature: Pagination on Console UI

Closes #18

Codecov Report
Patch and project coverage have no change.

Comparison is base (734f088) 97.55% compared to head (0dab884) 97.55%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff            @@
##               main      #21   +/-   ##
=========================================
  Coverage     97.55%   97.55%
  Complexity      130      130
=========================================
  Files            44       44
  Lines           614      614
=========================================
  Hits            599      599
  Misses           15       15

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


Clarifying .gitconfig setup and LFS url

Hi, I'm have some confusions in regards to the setup instructions (similar to #23), but thought it's better to start a new issue which can be answered and closed off.

Which .gitconfig file am I meant to update? Is it:

the root ~/.gitconfig file
the local repository .git/config file
or a new .gitconfig file which I need to create inside my repository (which doesn't seem to be part of git convention?)

What is the correct LFS url I'm supposed to use?

lfs-test-server README says  [lfs] url = "https://host:port/jimdoe/lfsrepo
If I go to https://localhost:9999/mgmt it says [lfs] url = "https://host:port/user/repo
Other users seem to be using [lfs] url = "https://host:port/user/
If I look at alternative implementations such as git-lfs-s3, it says to use [lfs]
url = "http://yourserver.com"

I was able to get the lfs-test-server up and running, but then ran into other issues with the server hanging when I tried to do git-lfs push. Please confirm the above points 1 and 2 and I will re-visit my setup before looking into the hanging issue. Many thanks!

Hi, sorry for the delayed response. When setting up a custom Git LFS endpoint, you'd likely use a .gitconfig in your repository. You can use ~/.gitconfig or .git/config but those will not "travel" with the repo, and each person who clones the repo will have to manually set theirs up.
For the URL, either https://host:port/jimdoe/lfsrepo should be fine. The mgmt interface just has a generic /user/repo. I think I'm going to modify that, because it's confused people before. What's more confusing is that with this test server implementation, the /user/repo part of the URL is pretty much ignored. I think it's time for us to just remove that part altogether.
Thanks for the feedback. I'm going to revisit the docs and url configuration and make that less confusing. Feel free to close this issue if your questions have been addressed.

thanks for the clarification. Will try as you have suggested. Closing.


Tweak publish action to only build and push

Previously the action was running bundle exec rake release, which was doing too much, and broke after #41 since the release task is meant to be run on a local development machine.
The GitHub publish_gem action automatically runs when a release tag is pushed. The only thing the action should do is build the gem and publish to RubyGems.

In order to get the action to run, I had to do a little bit of cleanup:
Delete the tag that the publish_gem action failed on:
% git tag -d v1.2.0 && git push --delete origin v1.2.0
Deleted tag 'v1.2.0' (was 59273e6)
To github.com:collectiveidea/protoc-gen-twirp_ruby.git
 - [deleted]         v1.2.0

Re-tag the latest after this PR was merged in:
% bundle exec rake release:source_control_push
Tagged v1.2.0.
Pushed git commits and release tag.

The push of the new 1.2.0 tag triggered the publish action to re-run for 1.2.0, which ran successfully and released 1.2.0 to RubyGems.


Joint Torque Controller jumpy behavior

Hello,
I have a controller plugin that computes the joint torques for my robot manipulator and then in the PreUpdate function applies them to the robot using the JointForceCmd. However, when the robot is only supposed to stay at one particular joint configuration there is already a problem. The computed joint torques by the controller are correctly computed and stay constant.  About every few seconds the robots joints seem to jump to a different position and the controller has to correct again to converge back to the static desired joint configuration. I am very unsure why this happens. The controller already worked in Gazebo classic so I think the torques are computed correctly. Could this be a physics integration issue or what might be the problem?
Thanks for any help :)
Environment

OS Version: Ubuntu 20.04
Source or binary build?
libignition-gazebo3 package 3.15.0-1

Description

Expected behavior: Controller is working flawlessly
Actual behavior: Robot is showing jerky behavior and the joints seem to sometimes jump from one position to another. The controller then stabilizes the system again.

Output
Here the blue line is the actual joint value reported by Gazebo from the JointPosition component and the orange is the desired value. As you can see the orange line is constant but the actual value randomly jumps up and then the controller has to stabilize it again.

What I would do is try a simple test case first, e.g.:

Just one link,
One rotational joint,
Have the link hang vertically down, so the controller shouldn't output any torque,
Run it and see if it stays stable.

Then: do the same but with an initial position horizontal (i.e. without controller the link will oscillate around its rotational joint). See if the controller can hold it stable in the horizontal position.
Then: add a second link. Etc.
In any case: without code and a minimal example, it's a bit hard to reason about this.

Thanks for the quick reply. I understand that it is hard without a minimal example but it is also kind of hard to provide such an example for me. Maybe just one question concerning the code.
I use
  double t = std::chrono::duration<double>(_info.simTime).count();

  for (uint i = 0; i < joints.size(); i++)
  {
    const auto& joint_pos = _ecm.Component<gz::sim::components::JointPosition>(joints[i]);
    ang_arr.push_back(joint_pos->Data()[0]);
  }

for getting the joint positions and
  for (uint i = 0; i < joints.size() && i < tau.size(); i++)
  {
    auto joint_torque = _ecm.Component<gz::sim::components::JointForceCmd>(joints[i]);
    if (joint_torque == nullptr)
    {
      _ecm.CreateComponent(
          joints[i],
          gz::sim::components::JointForceCmd({tau[i]}));
    }
    else
    {
      const std::vector<double> tauv(1, tau[i]);
      _ecm.SetComponentData<gz::sim::components::JointForceCmd>(joints[i], tauv);
    }
  }

for setting the joint torques. Is that in general correct? There is little documentation about this as far as I know.
Thanks

That seems strange. What you're doing looks good, so I'm not sure what might be causing the jumps. Like @jrutgeer said, it's really hard to debug this without more info.

A few thoughts:

ang_arr.push_back(joint_pos->Data()[0]);

This would be trivial, but nevertheless: I'd rather expect ang_arr[i] = joint_pos->Data()[0]; here (unless ang_arr is local to the scope?).

I came accross issue #1926 which probably isn't related, but still relevant background info to know.

Not the cause of your issue, but base on this remark of @azeey in #1926:

Now that we have EntityComponentManager::SetComponentData, which creates a component if it doesn't exist, it [...]

I conclude that the 2nd code block could be reduced to just:

  for (uint i = 0; i < joints.size() && i < tau.size(); i++)
  {
       const std::vector<double> tauv(1, tau[i]);
      _ecm.SetComponentData<gz::sim::components::JointForceCmd>(joints[i], tauv);
  }

This also seems rather strange i < joints.size() && i < tau.size(); as I would expect it to be a functional error if joints.size() != tau.size(). E.g. if joint2 is removed but not tau2, then tau[i] no longer corresponds to joint[i].

Thanks for your thoughts.

Yes ang_arr is local to the scope
This issue is interesting and I will try to see if data gets cleared and does not get set correctly in the same time step.
Good point, thank you :)
Yes that condition seems rather useless for sure.

Since I use libgazebo3, do you think this would be resolved in newer version of Gazebo? I might try to port all of this to some newer version but not sure if the backend of the simulation is effected by this at all.

Since I use libgazebo3, do you think this would be resolved in newer version of Gazebo?

I don't know, but libignition-gazebo3 seems rather old, I only seem to be able to install libignition-gazebo6 and libignition-gazebo7 through apt-get...
i am running Gazebo Garden built from source per these instructions. The vcs import < collection-garden.yaml command pulls everything from github automatically into the active folder, and all build and install files also reside in that folder.
So it is easy to run multiple installations concurrently. You only need to source the correct install/setup.bash file.
I would give it a try.
If you also need ROS 2 than it's a bit more involved as you also need to compile the ros gazebo bridge, but that's shouldn't be too hard either, except possibly for some minor quircks (I had to comment out some message types as I didn't have those installed).


Support jck custom rerun links

Close #5105
Depends on PR https://github.com/adoptium/TKG/pull/504

Grinder:
temurin-compliance/job/Grinder/4087/ - generate right rerun link
temurin-compliance/job/Grinder/4088/ - triggered by rerun link and regenerate right rerun link

Grinder for jdk_custom still works fine https://ci.adoptium.net/job/Grinder/8992/


Option for DFA minimization post enumeration

The enumerated strategy is generated sometimes with multiple nodes that accept the same string of inputs. Implementing a standard DFA minimization algorithm post enumeration(eg. Hopcroft's algorithm) would make the enumerated strategy possibly more human parse-able and definitely smaller in size.
Reference: Hopcroft, Motwani & Ullman (2001) - See Section 4.4.3, "Minimization of DFA's".

FAdo is a package that claims to increment Hopcroft's minimization algorithm. This package violates PEP8 and its repository appears to not be where advertised, so I do not recommend using it as a dependency. Nonetheless, it can still be used to evaluate the OP in practice.
If the result is as desired, then it would be reasonable to first ask the networkx developers whether they would consider this algorithm as fitting in networkx. If yes, then contributing it to networkx would make it accessible in a broader context, and it can be called by a suitable function here, in order to further manipulate a strategy after it is enumerated. Otherwise, I would categorize this algorithm under transys.
Flat is better than nested, so it is probably better for the user to explicitly make a call to apply an optimization.

Also, omega.games.enumeration tries to minimize the number of states while enumerating: it prefers edges that lead to states that have already been enumerated, and computes those symbolically. I believe that gr1c applies a similar optimization, cf. #150.
Thematically relevant is Sec.4.1: Minimizing the Strategy in Piterman, Pnueli, Sa'ar, "Synthesis of reactive designs".

The question of whether it is possible to "minimize" the enumerated strategy also came up at the tutorial session (from someone who used TuLiP and obtained very large controllers).

In case it is useful to reference, I found http://fado.dcc.fc.up.pt/, which appears to be the homepage of FAdo, rather than the invalid URL, http://fado.fc.up.pt/, that is listed on the current FAdo PyPI page.

In addition to violations of PEP8 as mentioned above, I think that a critical issue in using FAdo as a dependency is that it lacks support for Python 3. Futhermore, there are no tests included in the current release tarball. However, the API documentation is fairly extensive.
I sent an email to the authors asking about the repository of FAdo.

I received a response from Nelma and Rogério. (I am happy to forward it to anyone privately.) In summary, the Bitbucket repo URL that is listed on PyPI is correct but is private to their research group. They welcome contributions, suggestions and bug reports, which we can email them directly.


ConnectionError was depricated and removed in kafka-python 2.x

https://github.com/robinhood/aiokafka/blob/10e4119104ee32b726ab750b3e7120a85d2c7f25/aiokafka/errors.py#L71 - this does not work in kafka-python 2.x
ConnectionError was depricated and removed in kafka-python 2.x
so right now faust is failing with this trace:
Traceback (most recent call last):
  File "/usr/local/bin/faust", line 5, in <module>
    from faust.cli.faust import cli
  File "/usr/local/lib/python3.8/site-packages/faust/cli/faust.py", line 8, in <module>
    from .livecheck import livecheck
  File "/usr/local/lib/python3.8/site-packages/faust/cli/livecheck.py", line 3, in <module>
    from .worker import worker
  File "/usr/local/lib/python3.8/site-packages/faust/cli/worker.py", line 13, in <module>
    from faust.worker import Worker as FaustWorker
  File "/usr/local/lib/python3.8/site-packages/faust/worker.py", line 19, in <module>
    from aiokafka.structs import TopicPartition
  File "/usr/local/lib/python3.8/site-packages/aiokafka/__init__.py", line 4, in <module>
    from .client import AIOKafkaClient
  File "/usr/local/lib/python3.8/site-packages/aiokafka/client.py", line 10, in <module>
    import aiokafka.errors as Errors
  File "/usr/local/lib/python3.8/site-packages/aiokafka/errors.py", line 4, in <module>
    from kafka.errors import (
ImportError: cannot import name 'ConnectionError' from 'kafka.errors' (/usr/local/lib/python3.8/site-packages/kafka/errors.py)

PR for this fix
https://github.com/robinhood/aiokafka/pull/29

PR for this fix
https://github.com/robinhood/aiokafka/pull/29


refactor: replacing unshield naming with transfer_to_public

Just renaming unshield as transfer_to_public everywhere.

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

#9608  👈
#9606
master

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

Join @benesjan and the rest of your teammates on  Graphite

Docs Preview
Hey there! 👋 You can check your preview at https://6722a6e8da2b14591f4c3e50--aztec-docs-dev.netlify.app

Merge activity

Oct 30, 10:32 PM EDT: A user started a stack merge that includes this pull request via Graphite.


ultra fast triangulation

Hi, I'm a peer from neural science communitee. Thanks for your friendly package for 3D calibration. I'm also doing multiview 3D reconstruction here https://github.com/chenxinfeng4/multiview_ball_calib . We have something in common, and I got something to share.
Here's a piece code of mine, which can speed up multiview trianglation (2D->3D) using native OpenCV API. The code will reach 20x faster (depending on the points_2d size).

"Triangulation slower with jit decorator" in previous issue. This code, no jit at all.

Hello @chenxinfeng4 ! Thank you for your contribution.
The triangulation you suggest has a different result from the current one.
The new version triangulates all possible pairs and takes the median, whereas the current version triangulates all the points at once. I think this would result in a different result?
We could potentially include it as an option with a switch (like fast=True) or something like that

I notice that the new one has a difference with the current in triangulation result. But the difference is very slight in general cases, except when the 2D point of each view is not excat the pair -- which result in large projection error. That's a sign of sample outlier.
So, the new one has different result because it have different way to process outliers. How to assess the pression of the two methods? What's your concern?
group2 = CameraGroup.load('Hand_calibration.toml')

p3d = np.array([<PHONE_NUMBER>9,<PHONE_NUMBER>8, 1772.4276462 ])
p2d_exact = group2.project(p3d)
p3d_re = group2.triangulate(p2d_exact) #[ 152.11,  295.77, 1772.4 ]
p3d_fast = group2.triangulate(p2d_exact, fast=True)
assert np.allclose(p3d_fast, p3d_re) #==p3d

p2d_outlier = p2d_exact.copy()
p2d_outlier[0] += [10, 20] #pixel offset error
p3d_fast_outlier = group2.triangulate(p2d_outlier, fast=True)
p3d_outlier = group2.triangulate(p2d_outlier)
print(p3d_outlier, p3d_fast_outlier)
assert np.allclose(p3d_outlier, p3d_fast_outlier) # WILL BE FAIL

p2d_fast_outlier_proj = group2.project(p3d_fast_outlier)
p2d_outlier_proj = group2.project(p3d_outlier)

Compare the difference
>>p2d_outlier
array([[[389.59998058,<PHONE_NUMBER>4]],   # (+10,+20) offset outlier
       [[312.17573999,<PHONE_NUMBER>3]],
       [[275.15611537,<PHONE_NUMBER>3]]])

>> p2d_fast_outlier_proj
array([[384.59449266,<PHONE_NUMBER>5],
       [307.36613674,<PHONE_NUMBER>7],
       [270.15910116,<PHONE_NUMBER>6]])

>> p2d_outlier_proj
array([[[382.71630948,<PHONE_NUMBER>9]],
       [[309.07071715,<PHONE_NUMBER>7]],
       [[271.79303786,<PHONE_NUMBER>5]]])

I've added the fast flag. It would work fine.

Thank you for adding the flag!
I'm sorry it's taken me a while to review this. I'll spend some time testing it next week and will merge into next version of aniposelib if it's good.

How was it going?

I realized I'm not sure I will have to test it by itself. However, since you added the fast flag and the code looks good, I'll merge it as is.
I also came across the Argus method for triangulation recently:
https://argus.web.unc.edu/formal-methods-and-definitions/
"Argus again uses OpenCV to reconstruct 3D points after estimating the projection matrices. For n cameras, Argus reconstructs the points for n – 1 camera pairs where all pairs contain the last camera. One camera must be contained in all the pairs to keep the coordinate system consistent. Argus takes the reconstructed points from all n – 1 pairs, normalizes them by dividing by the average distance from the origin, and averages them for the final estimation of a reconstructed point."
It sounds kinda weird, but Argus is quite popular and maybe there is some advantage to doing it this way as well.
This pull request then paves the way for having a mode parameter in the aniposelib triangulation (and then within anipose). We could have three modes:

"svd" (for original triangulation)
"fast" (your mode for opencv with median at the end)
"argus" (the triangulation described above)

Thank you @chenxinfeng4 for your contribution!!


Is there a NeoVim command that I can run to add missing import statements?

This would be extremely useful.

Invoke codeAction and find Add all missing imports.

@chemzqm  Thank you for the reply.
Sorry to ask, but what do you mean by codeAction?
Is it referring to a :CocAction? The only Coc command I managed to find regarding imports is editor.action.organizeImports.
Thank you!

" Applying codeAction to the selected region.
" Example: `<leader>aap` for current paragraph
xmap <leader>a  <Plug>(coc-codeaction-selected)
nmap <leader>a  <Plug>(coc-codeaction-selected)

From my findings this only works in TypeScript projects, in my JavaScript projects it doesn't work.

@hoschi yes, it's limitation of tsserver.


== Feature Suggestions ==

Having been playing with some mods that adds things missing from ProjectEX, there's a few things I'd love to see implemented as well in this.

EMC-Linked Fuel of some sort, to where it'll pull the equivalent of 1 Coal to restart the burn cycle instead of having to fill numerous sets of coal into a machine or absolutely overkill ones like the 40 months burn time one.

Integration with Mass Storage Mods such as Refined Storage or Applied Energistics 2, This feature has been quite enjoyable to use as it removes the constant need to run back and forth from Tablet/Table to my crafting menu, and removes need to have all the raw materials stored in my system and can be linked using External Storage and stored in EMC form instead.

The mod that currently adds both of these features is a Helper Mod someone wrote for the modpack "Project Architect" called "Project Architect Additions" - CurseForge: Project Architect Additions
That mod also features an infinitely consumable food that drains EMC on consumption but the two things I'd love to see actually added is the EMC-Linked Fuel (EMC Coal) and integration  with mass storage mods like RS and AE2

or absolutely overkill ones like the 40 months burn time on

I'm planning on doing something about those eventually, not sure what though
I might just make them the same time across the board because it gets way up there way too quick

something something AE2

I want to do an integration like this but I have no idea how to
As for the infinite fuel bit, that also sounds really interesting

Got a working prototype for two of these suggestions (emc fuel & emc steak)

Just gotta work out a few kinks here and there and they'll be in the next release
As for the AE2 integration, I still have no idea how to go about that

gotta port this stuff over to 1.15, then I'll make a release & close this

Both mentioned features have been added
Releases:

1.15: 1.0.14 (955c1fa7cb9756e6e9570b9737edd99217de2340)
1.16: 1.0.15 (7bb227299f77c9dceef499696f38247c265db8b6, cc4eebe9acf17241fefe5a9d491a96782ec3eb4f)


Implement a WriteComponent class

Problem Statement

Currently we have two types of components:

LoadComponent : takes as input user arguments for loading dataset (e.g. dataset_id) and loads the dataset from a remote location. This component also creates the initial manifest based on the metadata passed to the component and the component specs.
The user is expected to change the column names to subset_field if the columns of the loaded dataset do not have this. (this might change.

TransformComponent takes as input the evolved manifest based on the component spec and loads the dataset from the artifact registry. it also presents the dataframe to the user as subset_field

Both components share some common functionalities based on the abstract run method:

loading the manifest
processing the dataset based on the load or transform function implemented by the user
evolving the manifest based on the component spec
writing the new datasets
uploading the manifest

What is still missing is a WriteComponent (this is currently implemented with a transform component). This component should take as an argument a write_path and write the dataset with an appropriate schema based on the component spec.
Proposed Approach

Let's take the write_to_hub component as an example. What we want is the following:

Allow users to write the dataset with custom columns names
This can be done by providing a mapping dict argument similar to what Bert proposed for the loading component link

The user returns the dataset with the modified names and we take care of writing it to the appropriate location
Two options here:

(Option A): User has to implement the writing functions themselves similar to how it's currently implemented here
Not ideal since they have to call the schema stuff and the to_parquet method which we normally handle in the backend.
(Option B): User returns a url of where to write the data as well as the dataframe. We take care of writing the dataset to the appropriate location. However, this would require us to implement a DaskDataSink component similar to the DaskDataWriter (we have to change some names) where the biggest difference is that:

The write location is the one returned by the user and not based on the manifest (run_id + subset)
We do not write any subsets in this component
Only caveat here is that we're assuming that all the remote locations can be sinked to using the to_parquet method (example). This applies to both the cloud and hf. Also, it will require injecting some dependencies into the Fondant code (writing to hf://) requires hf_hub as a dependency
We might want to introduce specific classes for the Data Sinks since it enables for a nicer isolation of the behavior of the components. E.g. the dataset needs to have a specific schema when writing to hub in order to render properly (see below). Where the specific classes would subclass a general DaskDataSink class. Wondering whether we should follow a similar approach for the LoadComponent if we want to introduce many sources.

To sum up, option A allows for more flexibility for the end user but more complexity whereas option B requires
Implementation Steps/Tasks

Depends on the choice of solution.
another thing that we will have to implement is change the schema passed to the to_parquet method from a dict to a pyarrow.Schema data type. This is mainly to support adding additional metadata to the schema needed for the write_to_hub component.

Potential Impact

if Option B is introduced:
Component class will have to be adjusted by adding a new class and potentially modifying the run method (maybe we'll have to implement a separate run method per component type since they will share many common methods anymore if the WriteComponent is introduced ) as well as DataIo
Testing

Documentation

We will have to document all 3 types of component in the custom_component.md
Feedback and Suggestions

Dependent features

Additional Notes

Problem Statement

Currently we have two types of components:

LoadComponent : takes as input user arguments for loading dataset (e.g. dataset_id) and loads the dataset from a remote location. This component also creates the initial manifest based on the metadata passed to the component and the component specs.
The user is expected to change the column names to subset_field if the columns of the loaded dataset do not have this. (this might change.

TransformComponent takes as input the evolved manifest based on the component spec and loads the dataset from the artifact registry. it also presents the dataframe to the user as subset_field

Both components share some common functionalities based on the abstract run method:

loading the manifest
processing the dataset based on the load or transform function implemented by the user
evolving the manifest based on the component spec
writing the new datasets
uploading the manifest

What is still missing is a WriteComponent (this is currently implemented with a transform component). This component should take as an argument a write_path and write the dataset with an appropriate schema based on the component spec.
Proposed Approach

Let's take the write_to_hub component as an example. What we want is the following:

Allow users to write the dataset with custom columns names
This can be done by providing a mapping dict argument similar to what Bert proposed for the loading component link

The user returns the dataset with the modified names and we take care of writing it to the appropriate location
Two options here:
A) User has to implement the writing functions themselves similar to how it's currently implemented here
Not ideal since they have to call the schema stuff and the to_parquet method which we normally handle in the backend.
B) User returns a url of where to write the data as well as the dataframe. We take care of writing the dataset to the appropriate location. However, this would require us to implement a DaskDataSink component similar to the DaskDataWriter (we have to change some names) where the biggest difference is that:

The write location is the one returned by the user and not based on the manifest (run_id + subset)

We do not write any subsets in this component
Only caveat here is that we're assuming that all the remote locations can be sinked to using the to_parquet method (example). This applies to both the cloud and hf. Also, it will require injecting some dependencies into the Fondant code (writing to hf://) requires hf_hub as a dependency

To sum up, option A allows for more flexibility for the end user but more complexity whereas option B requires
Implementation Steps/Tasks

Depends on the choice of solution.
Potential Impact

if Option B is introduced:
Component class will have to be adjusted by adding a new class and potentially modifying the run method (maybe we'll have to implement a separate run method per component type since they will share many common methods anymore if the WriteComponent is introduced ) as well as DataIo
Testing

Documentation

We will have to document all 3 types of component in the custom_component.md
Feedback and Suggestions

Dependent features

Additional Notes

I think we need two levels of this:

A general WriteComponent class, similar to the LoadComponent, which creates the skeleton for a component that only consumes data.
Implementations of this WriteComponent class for specific sinks, eg. write_to_hub. Ideally these can work by only taking arguments, so the user doesn't need to reimplement them.

-> Implementations of this WriteComponent class for specific sinks, eg. write_to_hub. Ideally these can work by only taking arguments, so the user doesn't need to reimplement them.
So those will be normal reusable components that we provide and not handled in the backend of Fondant right?


Support oauth2 compatible auth responses (uses access_token field, not token)

Adds support for more container registries, eg: Azure (which is what I am attempting to use, requiring this change).
According to the docker specs:

For compatibility with OAuth 2.0, we will also accept token under the name access_token. At least one of these fields must be specified, but both may also appear (for compatibility with older clients). When both are specified, they should be equivalent; if they differ the client's choice is undefined.

Serde doesn't support deriving a Deserialize instance with required fields that may appear under multiple names, so rather than manually implement the complex Deserialize trait here we use an intermediate struct with a simpler TryFrom implementation. No changes to the auth handling logic itself.

@steveeJ this PR is perhaps a little more controversial with using the intermediate struct. I favoured this initially as it kept it as part of deserialisation and left the auth logic untouched and ensured that the BearerAuth datatype has a non-optional token field.
An alternative approach is implemented in this branch here: https://github.com/camallo/dkregistry-rs/compare/master...edwardgeorge:access_token_getter
If you prefer that method I can overwrite the commit in this PR with the commit from this other branch?
It would be good to get this support in to allow use of the library with, eg, Azure CR which i am presently using this lib against.


CodeInterpreter.reconnect() not working as expected

I ran into this issue and am extremely confused, is this a problem on my end or through the library

Can you show the collapsed frames?

One more thing @im-calvin , can you add console.log(sandboxId) to make sure sandboxId is not undefined?


CAMEL-12025: Possible Intermittent failures in ReactorStreamsServiceTest

@lburgazzoli this is the backport from https://github.com/wildfly-extras/wildfly-camel/pull/2324

Thanks for the PR it has been merged. Do you mind closing this?


adding wait logic for webhook/aws.  when used, this allows a service …

…to wait for its DNS to propagate before attempting to subscribe to AWS SNS.

this will fix
https://github.com/Comcast/webpa-common/issues/290


Separate XML serializers to Microsoft.AspNet.Mvc.Xml

Remove all references to XML Serializers from MVC, and create a new package that will include all the XML formatting concerns.

SerializableError in Mvc.Core and HttpError in WebApiCompatShim depend on System.Xml, so not sure if we can remove the dependency on System.Xml
https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNet.Mvc.Core/ActionResults/SerializableError.cs#L19

Commit: 5c2dc5db11b63fd7b031aa265e8d51c10f2676f9


FaceWall Memo APP

项目名:FaceWall(思过) 项目作者：巴云琦 项目功能：见readme.md

Thank you for your participation! Please pull the latest version and only pr the facewall folder


featureImplement HLL with 128 buckets to support statistics cache.

Doris HLL implementation contains 16384 buckets, which is too much for statistics. This pr implement HLL128 with only 128 buckets and provide a method of converting 16384 buckets to 128 buckets. HLL128 will consume much less memory and the estimate accuracy is higher than 90% which is acceptable for statistics.

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall


feature: Don't repeat existing code

Feature request
Repeating existing code (unchanged) by llm in chat,  is prone for mistakes ,slow and also makes it harder for the user to work out the changes by eye.
Motivation
It is the way in cursours TBH .
Other
No response

Related: #582 #583

The latest version already supports minimal diff.