Make a request for funds / apply for grants

User story
As a collective, I should be able to make a request for fund to a host or to an organization.
E.g. Can we have $5,000 to do this? Then one of the admins of the host/org can approve then pay.
Best solution for this problem
I go to the profile page of the host / org and there is a tier that says “grants” with a call to action “apply”. The amount can be fixed or variable with a ceiling. There might be some custom questions asked, including a long description (this goes well with #2128). Behind the scene, it’s basically a tier –i.e. another way to contribute– but with a “negative amount” in the sense that it’s not about giving money but receiving money. When you apply, this would create a pending order that needs to be approved by one of the admin of the host / org. Once approved, it could be paid and the collective that applied receives the grant (a donation).
MVP
A first MVP could be using a slightly modified version of the Expense Flow where it wouldn’t be required to upload a picture (since there is no receipt/invoice). In the drop down to select the payout method, we should be able to select “put the money in my collective”.
Metrics
How many people are using that feature.
This will be a great feature for hosts and foundations.
This will also help the open source community. At Sustain in London we discussed how we could facilitate and standardize the application process for open source projects to ask for grants to companies https://twitter.com/xdamman/status/1055865769815429120?s=21
@duaneobrien @michaelmcandrew were especially interested in following up on that.

Do we have any grant-makers that want this feature? We should build it in partnership with them. Right now, all the grants are being managed in a semi-manual way, where we receive and credit funds to the Organization or Collective of the grant-maker, who then distributes the funds to projects that were selected through a seperate application process.
Most grantmaking orgs either use a simple form or a more involved product like Submittable. I don't really see how Open Collective providing overlapping functionality is a value add. The value for grantmakers that we offer is in the funds distribution, not the processing of applications.
To me, this seems like a whole seperate feature that we should properly design and implement if we think there is demand for it, not shoe-horn in as a 'negative contribution'. If anything it's more like an adaptation of an expense (apply to be paid, including evidence/documentation, and they approve or reject it).

We are currently exploring adopting OC for an organisation that has many collectives that we would ideally like to offer the opportunity to apply for 'grants' that we can then allocate to each group.
The adaptation of expense (apply to be paid, including evidence/documentation, approve/reject) would be a perfect solution.
How would you suggest building this in partnership?
Thanks!

In the redesign of the Expense Flow, we will include the ability to add custom fields to include evidence/documentation (such as adding a picture of the t-shirts you printed, or a link to the blog post that has been written, or to the pull request on github, etc.) /cc @raulgrafico

Good to know @lgagarcia ! I would be happy to help facilitate that. Is the organization already a fiscal host on OC?
We are just about to start a project to revamp the expense flow. It's possible we could add an "apply for funding" adaptation of the expense process. I think we should make it a toggle option in settings though, because we don't want a bunch of people applying for funding from groups who don't offer it.
We are already going to add an "expense type" question so submitters can choose between "invoice" and "reimbursement". We could possibly add "funding application" there. If applicants were instructed to attach their documentation as a PDF or other document, would that work?
I don't think we'll be able to build in a full fledged application form... if you need more specific info from people it might make more sense to run the applications outside Open Collective and then instruct successful applicants to create a Collective and then you can fund it. This is how grant-makers are currently using Open Collective to disburse funds.
@xdamman I think the above would entail allowing a Collective to submit an expense as opposed to an individual, and the payout to be a Collective to Collective transfer. I think this is a good idea anyway, as we have more and more Collectives hiring other Collectives (e.g. OSC hiring OC Design).

Exactly. In the same way that we allow a collective to donate to another collective, we should allow the opposite operation, ie. "request donation". The only difference being who initiated the transaction (a donation on one side is an expense on the other side).

hey all, a bit late to the party. thanks for including me on this ticket.
@xdamman - at this point in time, I'm probably more interested in understanding the motivations of corporations that give to open source and the ways in which they do it rather than standardising the process per se.
hope you have fun with this in any case :)

@michaelmcandrew ok. Please share what you find! :-)

will do

Implemented. It is now possible to submit a grant request to fund collectives.


Bug on CC0068 (RemovePrivateMethodNeverUsed) with Main

static void Main(string[] args) will usually not have any outside reference. It should be an exception on RemovePrivateMethodNeverUsedAnalyzer.
According to msdn:

The Main method is the entry point of an .exe program; it is where the program control starts and ends.
Main is declared inside a class or struct. Main must be static and it should not be public. (In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
Main can either have a void or int return type.
The Main method can be declared with or without a string[] parameter that contains command-line arguments. When using Visual Studio to create Windows Forms applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. Parameters are read as zero-indexed command-line arguments. Unlike C and C++, the name of the program is not treated as the first command-line argument.

What I have seen is that the accessibility of the method does not matter. We should exempt the method if and only if:

It returns void or int.
It is static.
It is called exactly Main (not main, or MAIN or any other variation)
it takes exactly on parameter of string[] or no parameter at all.

Can I do this one?

Sure, @rtbortolin, go ahead.


ERROR pnqquant path '/var/task/pngquant' is not accessible

Hi,
I changed the Thumbor config file (PNGQUANT_QUALITY=80 to PNGQUANT_QUALITY=90) and uploaded my zip again to my AWS Lambda function. But now I got the following CloudFront Error message:

ERROR pnqquant path '/var/task/pngquant' is not accessible

Did I need to change anything else on AWS or in my config or is the error somewhere else?
Thanks in advance

Would you provide more details about how you attempted to make this change?
Did you start with the published version, download the ZIP file from Lambda, only change the config file, update your ZIP file and then update your lambda function?

correct, exactly what I did so far. published, download the ZIP from Lambda console, changed only thumbor.conf and uploaded the new ZIP again.
And thanks for your response!

Would you verify that your updated ZIP file contained all the files in the "root" of the ZIP file and not in a subfolder? For example, if you extract serverless-image-handler.zip into the folder "serverless-image-handler", you need to make sure that you are not zipping up "serverless-image-handler" folder into the new ZIP. You need something like the following:
unzip -d serverless-image-handler serverless-image-handler.zip
cd serverless-image-handler
#Edit the thumbor/thumbor.conf file
zip -q -r9 ../serverless-image-handler.zip *

As an alternative to changing the ZIP file, you could try using the original zip file that was working, and use a Lambda environment variable with this same setting to change this configuration variable:
PNGQUANT_QUALITY=90

I also had this error appear in my Lambda logs today.
It didn't ultimately affect the transform process, but I was somewhat curious why it was happening.
I noted where it appeared to have been installed in the build-s3-dist.sh script that comes with this repo.
Interestingly, I tried running yum install pngquant in a docker container of Amazon Linux that I have been using to test some things related to this, and received No package pngquant available..
Would there be any harm in just commenting it out in the thumbor.conf file, like all the other optimizers listed there? I had figured that it was good to keep at the time, so left it as it was, but if it's not installing anyway, then I'm fine with getting rid of it.


Add options to pass custom replacer to json function

Sometimes people want to remove null values from response .It will be good if json function accepts custom replacer like below
JSON.stringify(x, (k, v) => v ?? undefined)
Although I can manually send Response Object but it will be good if its added in api itself. If its fine I can raise a pull request

Hi @divyam234
That could be a good idea indeed. But, we would need to carefully discuss the API design for it. I'd be interested to hear your thoughts on this.


chore: fix context

Background: https://github.com/trpc/trpc/issues/2160
If you add me as a contributor I can open a better PR on origin and follow the guidelines better. :)

Hi Alex,

Background: https://github.com/trpc/trpc/issues/2160

We implemented the context as per your kitchen-sink example: https://github.com/trpc/examples-kitchen-sink/blob/main/src/server/context.ts

If you add me as a contributor I can open a better PR on origin and follow the guidelines better. :)

Invited you as a contributor.

Ohhh I seee, I have too many example projects 😂 if you ever want a reference, this is to go to: https://github.com/trpc/examples-next-prisma-starter

Superseded by #324.


imagebuildah: add AdditionalTags

Add an AdditionalTags field to the imagebuildah options structure, to provide for additional tags which we'll want to apply to the image that we're writing.

Added some context to the error message returned if we get an error from SetNames().

Removed a redundant type assertion that @TomSweeneyRedHat spotted out of band.

@rh-atomic-bot r+ 3c3174c


Cannot load assembly System.Security.Cryptography.X509Certificates

Starting with 1.0.0-alpha-26810-01 I get the following exception when trying to make a connection using HttpClient:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Cryptography.CryptographicException: Unable to set field TbsCertificate on type System.Security.Cryptography.X509Certificates.Asn1.CertificateAsn. ---> System.IO.FileNotFoundException: Cannot load assembly 'System.Security.Cryptography.X509Certificates, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'. No metadata found for this assembly.
   at Command!<BaseAddress>+0x32d340
   at Command!<BaseAddress>+0x33fa9e
   at Command!<BaseAddress>+0x334669
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0x84
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0xa7

   --- End of inner exception stack trace ---
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0x179
   at System.Security.Cryptography.Asn1.AsnSerializer.Deserialize[T](ReadOnlyMemory`1, AsnEncodingRules) + 0xad
   at Internal.Cryptography.Pal.CertificateData..ctor(Byte[]) + 0x6f
   at Internal.Cryptography.Pal.AppleCertificatePal.EnsureCertData() + 0x5b
   at Internal.Cryptography.Pal.AppleCertificatePal.get_Extensions() + 0xb
   at System.Security.Cryptography.X509Certificates.X509Certificate2.get_Extensions() + 0x6a
   at Internal.Cryptography.Pal.CertificatePolicyChain.ReadPolicy(X509Certificate2) + 0x2d
   at Internal.Cryptography.Pal.CertificatePolicyChain.ReadPolicies(List`1) + 0x4d
   at Internal.Cryptography.Pal.SecTrustChainPal.IsPolicyMatch(Tuple`2[], OidCollection, OidCollection) + 0xb7
   at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime, Boolean, OidCollection, OidCollection, X509RevocationFlag) + 0xa0
   at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean, ICertificatePal, X509Certificate2Collection, OidCollection, OidCollection, X509RevocationMode, X509RevocationFlag, DateTime, TimeSpan) + 0xc4
   at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2, Boolean) + 0xdb
   at System.Net.CertificateValidationPal.VerifyCertificateProperties(SafeDeleteContext, X509Chain, X509Certificate2, Boolean, Boolean, String) + 0x43
   at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback, ProtocolToken&) + 0x28f
   at System.Net.Security.SslState.CompleteHandshake(ProtocolToken&) + 0x55
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken, AsyncProtocolRequest) + 0xf0
   at System.Net.Security.SslState.StartSendBlob(Byte[], Int32, AsyncProtocolRequest) + 0x148
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[], Int32, AsyncProtocolRequest) + 0x1c0
   at System.Net.Security.SslState.StartReceiveBlob(Byte[], AsyncProtocolRequest) + 0xe8
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken, AsyncProtocolRequest) + 0x190
   at System.Net.Security.SslState.StartSendBlob(Byte[], Int32, AsyncProtocolRequest) + 0x148
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[], Int32, AsyncProtocolRequest) + 0x1c0
   at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest) + 0x60
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult) + 0x4f
   at Command!<BaseAddress>+0x65f282
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Net.Http.ConnectHelper.<EstablishSslConnectionAsyncCore>d__5.MoveNext() + 0x1e3

   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.<EstablishSslConnectionAsyncCore>d__5.MoveNext() + 0x32f
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x56
   at System.Net.Http.HttpConnectionPool.<ConnectAsync>d__51.MoveNext() + 0x6f6
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x7c
   at System.Net.Http.HttpConnectionPool.<CreateHttp11ConnectionAsync>d__52.MoveNext() + 0x18b
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x72
   at System.Net.Http.HttpConnectionPool.<WaitForCreatedConnectionAsync>d__58.MoveNext() + 0x190
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x74
   at System.Net.Http.HttpConnectionPool.<SendWithRetryAsync>d__46.MoveNext() + 0x1f1
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Net.Http.RedirectHandler.<SendAsync>d__4.MoveNext() + 0x1a9
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__62.MoveNext() + 0x3ad
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at sttz.InstallUnity.Scraper.<Load>d__12.MoveNext() + 0x254
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at sttz.InstallUnity.UnityInstaller.<UpdateCache>d__43.MoveNext() + 0x526
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at sttz.InstallUnity.InstallUnityCLI.<Setup>d__30.MoveNext() + 0x84b
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x1b
   at Command!<BaseAddress>+0x58103d
   at sttz.InstallUnity.Program.<Main>d__0.MoveNext() + 0x2af

Using 1.0.0-alpha-26809-02 or earlier, there is no exception and the connection succeeds.
.NET Core SDK (reflecting any global.json):
 Version:   2.1.302
 Commit:<PHONE_NUMBER>

Runtime Environment:
 OS Name:     Mac OS X
 OS Version:  10.13
 OS Platform: Darwin
 RID:         osx.10.13-x64
 Base Path:   /usr/local/share/dotnet/sdk/2.1.302/

Host (useful for support):
  Version: 2.1.2
  Commit:  811c3ce6c0

.NET Core SDKs installed:
  2.1.3 [/usr/local/share/dotnet/sdk]
  2.1.302 [/usr/local/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Seems like dotnet/corefx#31421 put a custom reflection-based deserializer in the HTTPS handling path. Sigh. This will require some RD.XML to fix. Could you add <IlcArg Include="--completetypemetadata" /> to one of your ItemGroups in the project file and rebuild? It might give a better exception message.

Here's the exception with --completetypemetadata:
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Cryptography.CryptographicException: Unable to set field TbsCertificate on type System.Security.Cryptography.X509Certificates.Asn1.CertificateAsn. ---> System.IO.FileNotFoundException: Cannot load assembly 'System.Security.Cryptography.X509Certificates, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null'. No metadata found for this assembly.
   at Command!<BaseAddress>+0x45ff26
   at Command!<BaseAddress>+0x47d062
   at Command!<BaseAddress>+0x46b6f1
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0xcb
   at System.Security.Cryptography.Asn1.AsnSerializer.<>c__DisplayClass21_0.<GetSimpleDeserializer>b__11(AsnReader) + 0x30
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0x12e

   --- End of inner exception stack trace ---
   at System.Security.Cryptography.Asn1.AsnSerializer.DeserializeCustomType(AsnReader, Type, Asn1Tag) + 0x264
   at System.Security.Cryptography.Asn1.AsnSerializer.<>c__DisplayClass21_0.<GetSimpleDeserializer>b__11(AsnReader) + 0x30
   at System.Security.Cryptography.Asn1.AsnSerializer.Deserialize[T](ReadOnlyMemory`1, AsnEncodingRules) + 0xb2
   at Internal.Cryptography.Pal.CertificateData..ctor(Byte[]) + 0x7f
   at Internal.Cryptography.Pal.AppleCertificatePal.EnsureCertData() + 0x73
   at Internal.Cryptography.Pal.AppleCertificatePal.get_Extensions() + 0x16
   at System.Security.Cryptography.X509Certificates.X509Certificate2.get_Extensions() + 0x82
   at Internal.Cryptography.Pal.CertificatePolicyChain.ReadPolicy(X509Certificate2) + 0x5a
   at Internal.Cryptography.Pal.CertificatePolicyChain.ReadPolicies(List`1) + 0x64
   at Internal.Cryptography.Pal.CertificatePolicyChain..ctor(List`1) + 0x64
   at Internal.Cryptography.Pal.SecTrustChainPal.IsPolicyMatch(Tuple`2[], OidCollection, OidCollection) + 0x117
   at Internal.Cryptography.Pal.SecTrustChainPal.Execute(DateTime, Boolean, OidCollection, OidCollection, X509RevocationFlag) + 0x117
   at Internal.Cryptography.Pal.ChainPal.BuildChain(Boolean, ICertificatePal, X509Certificate2Collection, OidCollection, OidCollection, X509RevocationMode, X509RevocationFlag, DateTime, TimeSpan) + 0xcc
   at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2, Boolean) + 0x1a8
   at System.Security.Cryptography.X509Certificates.X509Chain.Build(X509Certificate2) + 0x23
   at System.Net.CertificateValidationPal.VerifyCertificateProperties(SafeDeleteContext, X509Chain, X509Certificate2, Boolean, Boolean, String) + 0x67
   at System.Net.Security.SecureChannel.VerifyRemoteCertificate(RemoteCertValidationCallback, ProtocolToken&) + 0x367
   at System.Net.Security.SslState.CompleteHandshake(ProtocolToken&) + 0x94
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken, AsyncProtocolRequest) + 0x11c
   at System.Net.Security.SslState.StartSendBlob(Byte[], Int32, AsyncProtocolRequest) + 0x2d2
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[], Int32, AsyncProtocolRequest) + 0x274
   at System.Net.Security.SslState.StartReadFrame(Byte[], Int32, AsyncProtocolRequest) + 0x1f6
   at System.Net.Security.SslState.StartReceiveBlob(Byte[], AsyncProtocolRequest) + 0x155
   at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken, AsyncProtocolRequest) + 0x1b9
   at System.Net.Security.SslState.StartSendBlob(Byte[], Int32, AsyncProtocolRequest) + 0x2d2
   at System.Net.Security.SslState.ProcessReceivedBlob(Byte[], Int32, AsyncProtocolRequest) + 0x274
   at System.Net.Security.SslState.StartReadFrame(Byte[], Int32, AsyncProtocolRequest) + 0x1f6
   at System.Net.Security.SslState.PartialFrameCallback(AsyncProtocolRequest) + 0x7d
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at System.Net.Security.SslState.ThrowIfExceptional() + 0x66
   at System.Net.Security.SslState.InternalEndProcessAuthentication(LazyAsyncResult) + 0x83
   at System.Net.Security.SslState.EndProcessAuthentication(IAsyncResult) + 0x16b
   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult) + 0x24
   at System.Net.Security.SslStream.<>c.<AuthenticateAsClientAsync>b__47_1(IAsyncResult) + 0x5a
   at Command!<BaseAddress>+0x959d4f
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() + 0x19
   at System.Net.Http.ConnectHelper.<EstablishSslConnectionAsyncCore>d__5.MoveNext() + 0x25b

   --- End of inner exception stack trace ---
   at System.Net.Http.ConnectHelper.<EstablishSslConnectionAsyncCore>d__5.MoveNext() + 0x3ab
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x7e
   at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() + 0x31
   at System.Net.Http.HttpConnectionPool.<ConnectAsync>d__51.MoveNext() + 0x9df
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0xad
   at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() + 0x48
   at System.Net.Http.HttpConnectionPool.<CreateHttp11ConnectionAsync>d__52.MoveNext() + 0x232
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0x97
   at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() + 0x3d
   at System.Net.Http.HttpConnectionPool.<WaitForCreatedConnectionAsync>d__58.MoveNext() + 0x285
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Threading.Tasks.ValueTask`1.get_Result() + 0xa5
   at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() + 0x48
   at System.Net.Http.HttpConnectionPool.<SendWithRetryAsync>d__46.MoveNext() + 0x221
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() + 0x23
   at System.Net.Http.RedirectHandler.<SendAsync>d__4.MoveNext() + 0x1e6
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() + 0x23
   at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__62.MoveNext() + 0x421
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() + 0x23
   at sttz.InstallUnity.Scraper.<Load>d__12.MoveNext() + 0x297
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() + 0x23
   at sttz.InstallUnity.UnityInstaller.<UpdateCache>d__43.MoveNext() + 0x5b8
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() + 0x23
   at sttz.InstallUnity.InstallUnityCLI.<Setup>d__30.MoveNext() + 0xbe3
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() + 0x31
   at Command!<BaseAddress>+0x8138f2
   at Command!<BaseAddress>+0x8137cd
   at Command!<BaseAddress>+0x8136ea
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() + 0x32
   at sttz.InstallUnity.Program.<Main>d__0.MoveNext() + 0x2e4

Do you know what site is it connecting to? Can I get the TLS certificate that is used?

FYI, I just hit a very similar exception that might be related (ValidityAsn cannot be found):
Unhandled Exception: System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Cryptography.CryptographicException: Unable to set field TbsCertificate on type System.Security.Cryptography.X509Certificates.Asn1.CertificateAsn. ---> System.TypeLoadException: The type 'System.Security.Cryptography.X509Certificates.Asn1.ValidityAsn' cannot be found in assembly 'System.Security.Cryptography.X509Certificates, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

Yes, it is related. I checked all the ASN serialization code and there's not a single RD.xml for it in any of the assemblies (System.Security.Cryptography.[Algorithms/X509Certificates/Pkcs]. My PR linked above merely introduced the problem on more exposed code path. I will need some guidance and input from code maintainers on how to fix it properly in long term. In short term I can try to add RD.xml to the affected assemblies, but right now I don't have a setup to test the changes.

@sttz @robertmiles3 Could you try this: RD.XML that the CoreRT compiler understands looks like this, you add it to the project like this and the RD.XML snippet that should help for the FileNotFoundException is
<Assembly Name="System.Security.Cryptography.X509Certificates">
    <Type Name="System.Security.Cryptography.X509Certificates.Asn1.ValidityAsn" Dynamic="Required All" />
</Assembly>

Whether we need to put RD.XML into System.Security.Cryptography depends on whether this would also fail with .NET Native for UWP apps. If this only affects OSX, we probably don't urgently need RD.XML on the CoreFX side (.NET Native for UWP apps is Windows-only).
CoreRT currently uses a weird dialect of RD.XML and wouldn't understand the embedded manifest in System.Security.Cryptography anyway. The thing that is able to parse the real RD.XML with all the complicated rules (including rules like "I want to be able to recursively reflection-access properties on all types passed as a typeof() to some method") is closed source and currently not hooked up into CoreRT compilations. Until that's hooked up, this will unfortunately require everyone who wants to use HTTPS on OSX to carry their own RD.XML in the app. We just need to find what's the right RD.XML. I don't have an OSX environment readily available.
What's worth checking is what this is doing to IL Linker and whether we need an ILLinkTrim.xml file. Reflection based serialization tends to be not friendly to things that try to remove unused stuff in assemblies (or selectively compile only used stuff, such as CoreRT).
Cc @bartonjs

The particular code path affects only macOS, but other instances of the AsnSerializer are used for APIs that are exposed on Windows as well. Namely the ones in S.S.C.Algorithms, which are not shipping yet.

@MichalStrehovsky
Unfortunately, adding ValidityAsn didn't help. I went ahead and added all types in S.S.C.X509Certificates and then bisected them.
In the end, adding CertificateRequest is required to make the error go away:
<Assembly Name="System.Security.Cryptography.X509Certificates">
    <Type Name="System.Security.Cryptography.X509Certificates.CertificateRequest" Dynamic="Required All" />
</Assembly>

I can confirm the rd.xml from @sttz above works for me. For others that come here, my full changes were...
rd.xml:
<Directives>
    <Application>
        <!-- ISSUE WORKAROUND: https://github.com/dotnet/corert/issues/6221 -->
        <Assembly Name="System.Security.Cryptography.X509Certificates">
            <Type Name="System.Security.Cryptography.X509Certificates.CertificateRequest" Dynamic="Required All" />
        </Assembly>
    </Application>
</Directives>

.csproj addition:
<ItemGroup>
  <RdXmlFile Include="rd.xml" />
</ItemGroup>

@MichalStrehovsky In some other issue I found this:

Yes, the rule is that if the method is statically reachable in the callgraph, and the type that owns the method was allocated (with a new or at least referenced with a typeof), it should be reflection-callable. If that's not the case, GetMethod will just give you null, as if the method wasn't there.

Is that still accurate? Would it not make sense to also include types that are used as generic arguments of methods? In this particular case the usage is AsnSerializer.Deserialize<some ASN class>(some byte[] array, ...). If there's an issue that already discussing this I would be happy to subscribe to it and follow the conversation there.

We don't have any other issue discussing this for now.
I assume the semantic you would like is for all static references to AsnSerializer.Deserialize<some ASN class>(some byte[] array, ...), generate code and data structures for all properties on some ASN class, recursively, so that they can be accessed through reflection at runtime. This is something that can be expressed in RD.XML - we would go for something along the lines of
<Type Name="AsnSerializer">
    <Method Name="Deserialize{T}">
        <GenericParameter Name="T" Serialize="Required All"/>
    </Method>
</Type>

It's just this syntax requires whole program analysis and the CoreRT compiler doesn't have infrastructure to do that - so it won't understand this annotation anyway. Only the closed source .NET Native compiler for UWP apps would be able to understand this. We might need to add this as an embedded RD.XML in the assembly that hosts AsnSerializer if the AsnSerializer is something we want to support in .NET Native for UWP apps (cc @bartonjs on that again), but it won't help CoreRT on OSX for now.
At some point we would like the closed source reflection analysis component to be usable from CoreRT as well, but it's not on our schedules for now.

AsnSerializer is not public API yet, but it is supposed to become one at some point (https://github.com/dotnet/corefx/issues/21833). I spent some time in last few weeks trying to replace any usage of the old ASN/DER reading/writing code with the new APIs (the linked PR above and couple more that are waiting in the pipeline). The idea is to expose and identify any possible problems with the new APIs and get them to a mature state where they will become part of System.Security.Cryptography.Encoding. Thanks for the RD.xml above, it is one more thing on the list that has to be done when the APIs become public.
Separate issue is whether we should optimize the CoreFX code not to require reflection and to improve performance on the hot paths. I'm willing to work on that, but it's pending some guidance and executive decisions. There are two sets of APIs - low-level AsnReader/AsnWriter and the high-level AsnSerializer on top of that. The original guidance was to use AsnSerializer for any complex types since it's easier to make the code work correctly and handle all the data validation properly. I still think that's a correct decision in most cases, but it may be problematic for performance reasons and due to the reflection. Performance-wise it's trivial to add caching of the de/serializer built from the reflected data, but it will still result in a small performance penalty on first use. It doesn't solve the reflection aspect of the problem. Solving the reflection problem is a larger project, which would require a tool to convert the ASN objects to generated de/serialization code, which would use the low-level APIs.

I assume the semantic you would like is for all static references to AsnSerializer.Deserialize<some ASN class>(some byte[] array, ...), generate code and data structures for all properties on some ASN class, recursively, so that they can be accessed through reflection at runtime.

Fields, actually, but yeah.  Also AsnSerializer.Serialize<T>(someT, someRules) or AsnSerializer.Serialize<T>(someT, someWriter).

if the AsnSerializer is something we want to support in .NET Native for UWP apps (cc @bartonjs on that again)

We've already shipped usages of AsnSerializer in .NET Core 2.1, so if things are broken in UWP without some rd.xml then it just means that no one has used SignedCms in UWP, I guess. (And that the tests must not be running, or that I don't know where to see the failures)

but it won't help CoreRT on OSX for now.

As @filipnavara mentioned, more and more things are moving to use the AsnSerializer.  It's in use for all OSes via System.Security.Cryptography.Pkcs!System.Security.Cryptography.Pkcs.SignedCms (shipped that way in 2.1) and now places built using the previous reader are being upgraded past the new reader up to the new deserializer.  While it will be in higher use for macOS and Linux than Windows (just due to where we P/Invoke to Windows vs write things ourselves) it'll still be needed for all OSes and all execution stacks executing the assemblies produced from corefx.
Since the AsnSerializer type is internal, and all the types it talks about are internal, we can do an embedded rd.xml if that helps.  If not, then (reductio reasoning) eventually any application doing any crypto at all will need their local rd.xml to say "yeah, I want to do crypto".

@bartonjs My primary worry is about performance impact of the reflection-based serializer design in CoreCLR context. The reflection-based serializers have always been a performance problem in the past. Was there any analysis done on performance of the old serializer and new serializer, for both startup and steady state?

Not a detailed one, no.  But it improves the security of the code over using the reader directly.  So the security code metric applies: reviewably secure code until needs prove otherwise.
Pretty much every input to this thing is considered hostile, untrusted data.  Certs included.

I am pretty sure that there is number of designs that do same or better on your security code metric, and avoid the reflection performance trap. We want .NET Core to be secure and performant at the same time. I would recommend doing the performance analysis of the new reflection based serializer before we spend more time converting stuff to it. It may save us yet another conversion in future once we discover that it has poor performance.

I would recommend doing the performance analysis of the new reflection based serializer before we spend more time converting stuff to it.

I am going to make some elementary benchmark today or tomorrow. Note that the conversion to AsnSerializer/AsnReader/AsnWriter is already a time that was invested. There are pending PRs that convert all the remaining code that used DerEncoder/DerSequenceReader before.

The preliminary data from the microbenchmark (parsing one certificate):
            Method |      Mean |     Error |    StdDev |
------------------ |----------:|----------:|----------:|
        Serializer | 508.56 us | 3.3825 us | 3.1640 us |
 Serializer_Cached | 118.36 us | 1.1392 us | 1.0099 us |
 DerSequenceReader |  16.39 us | 0.3195 us | 0.3680 us |

DerSequenceReader is the old code from CertificateData.cs with hand-written reading, which was arguably not strict, so wouldn't pass on the correctness.
Serializer is AsnSerializer.Deserialize<CertificateAsn>(certificateBytes, AsnEncodingRules.DER);.
Serializer_Cached is same as Serializer, but with added cache in AsnSerializer.GetFieldInfo. Note that it is not representative of an approach with proper caching since a lot of reflection is still done in that case. It was merely an attempt to cut down the heavy reflection part a bit.

For the sake of completeness, here's comparison between the two low-level APIs:
            Method |     Mean |     Error |    StdDev |
------------------ |---------:|----------:|----------:|
 DerSequenceReader | 16.37 us | 0.1470 us | 0.1375 us |
         AsnReader | 14.07 us | 0.0419 us | 0.0350 us |

DerSequenceReader is the obsolete one, AsnReader is the new one. Both were used to parse the same certificate and the code is nearly identical except (based on the old CertificateData.cs in GIT).

The CoreFX code was updated and now the AsnSerializer is no longer used. All usages were replaced by a code generator that doesn't rely on reflection and offers better performance overall. Can we close this issue now?

Same here, all good without RD.xml. Thanks!


STORM-3041 improve worker-launcher messages

@srdo - renamed nm-related methods and variables.

@agresch Thanks. +1. Please squash to one commit, then we can merge.
If you want this on 1.x branches as well, I think we need a separate PR for that branch (the files have moved).


Fix/bug source list filter cut off

This PR fixes the bug with the filter being cut off to the right when the source list was open while you were editing a production for some screen sizes

Something a bit weird happens on inventory-page, it gets a scrollbar on the page and the bottom gets very "long":


Convert index-prefix into a choice-field in SavedSearch

Currently index-prefix is a simple string indexing into ElasticSearch. But AlertSearches are going to be targeted at both ElasticSearch, for index-based searching and at the ProstGresDB, for field-based searching. We want index_prefix to reflect this.
So lets convert index_prefix into a ChoiceField object called record_type which will map to one of {vulnerabilities, logs, events, api-calls }.
Correspondingly the AlertSearchSQL and AlertSearchES subclasses will be mapped based on where the data resides, via the record_type field.

need some sort of custom search editor.  falls under UI design topic.


Add the ability to create new files

Would be happy to help out on this! I'll see how far I can get on this!

Great!

@johno How exactly do you want the user to set the file name?

For now we can prolly copy the GitHub UI and add a basic input to start. Keep it simple! Save the fancy stuff for a bit down the road. But I'm open to suggestions and animations : )


add support of rdfs:label

could you please also add the rdfs:label  support? :) thanks!

I believe it's there. Please either use the getLabel($lang, $fallbackLang = 'en') method on the class/property object or access the $label property of the class/property object directly (it's an associative array of labels with a language as a key).


Build Vagrant boxes for VMware and QEMU

The current VM release pipeline only builds Virtualbox and AWS Vagrant boxes.
I propose this is expanded to cover additionally VMware and QEMU.
This can be accomplished by modifying the way the build process works.
Specifically the changes need are:

Install VMware Player on the build server
Install QEMU on build server
Change build process to download the Ubuntu Cloud OVA
Use ovftool to create a VMX file for use with a new Packer builder that will go from VMX -> box
Convert the VMDK inside the OVA to QCOW2 and use it with a new QEMU builder to produce the libvirt compatible box.

The proposed build process looks like this:
+-------+      +-------+      +----------+
|  OVA  +----->+  VMX  +----->+  VMware  |
+---+---+      +-------+      +----------+
    |
    |          +-------+      +----------+
    +--------->+ QCOW2 +----->+   QEMU   |
    |          +-------+      +----------+
    |
    |                         +----------+
    +------------------------>+VirtualBox|
                              +----------+

Further investigation has revealed that using the OVA as a source isn't really a viable option due to it's dependence on cloud-init.
Instead a slightly more complex but more hygienic approach is warranted.
That is building base boxes from ISO for each provider and then doing the build on-top of those.
This will be done as a 2 stage process so that the base image will only need to be build once per provider, per version of the source ISO.
For consistency I think it's wise to do this for VirtualBox as well despite it being possible to skip due to the existing conversion from box -> OVA -> box.


Create Help section for Newark/Newark on Trent

FreeCEN1 search is free text, and looks for strings anywhere, e.g. search for "pauper" finds "Pauper - Lab's. Widow " and "Farm Labs Widow/pauper", as well as "Pauper".
For this version, I think implement as is at the moment.  But Phase 2, implement a search which uses a structure created from the various census models (see http://www.visionofbritain.org.uk/census/EW1911GEN/5 for details of changes from 1841 to 1911).

Now done and deployed so closing.


[flake8-use-pathlib] Implement glob (PTH207)

Discovered that the usage of glob.glob is widespread when working on the previous lints for flake8-use-pathlib.

Good harvest, violations seem correct

I like replacing glob with pathlib a lot, but i don't think they are equivalent, e.g. in the ruff project root:
>>> from glob import glob
>>> len(glob("crates/**/*.py"))
2
>>> from pathlib import Path
>>> len(list(Path("crates").glob("**/*.py")))
3057
>>> len(list(Path().glob("crates/**/*.py")))
3057

@konstin That's absolutely right. In the rule itself, I think it suffices to mention the differences that exists to make users aware that a fix is simple, but not trivial. Implementing autofix is doable, but needs to consider each case.
There are a couple of differences between glob and Path.glob that do not make them equivalent, e.g.:

Hidden files: Pathlib intentionally does not filter out hidden files, glob does link. In Python 3.11, glob gets the include_hidden parameter to match this behaviour.
Iterator: Path.glob returns an iterator, just like glob.iglob
Working directory: The glob functions have an argument root_dir that change the working dir (and thus the working dir is not included in the resulting path), Path.glob does not have this.
globstar (**): Pathlib uses globstar only to match directories, not files. For glob, if recursive=False, ** seems to be the same as doing *.

Each of the differences between glob with Path.glob can be easily mitigated when fixing:

Filtering hidden files post-hoc in the iterator is simple (compared to adding them later), or by explicitly excluding hidden files and directories in the pattern e.g. see this post.
Going from iterator to list is simply casting it with list(), this is also what the glob implementation does under the hood.
Starting with Python 3.11, the contextlib.chdir can be used to achieve the same behaviour explicitly, e.g.

from contextlib import chdir

with chdir(root_dir):
    print(list(Path().glob(pattern)))

For earlier versions this can be emulated:
from contextlib import contextmanager
import os

@contextmanager
def chdir(file_path):
    curdir = os.getcwd()
    os.chdir(file_path)
    try:
        yield
    finally:
        os.chdir(curdir)

If recursive=False, one can simply replace ** with * in some cases. I'm not absolutely sure here what cases this wouldn't work, but probably modifying the pattern will make conversion possible.

Extended the documentation and included iglob.


Update formatting and revert sddc Backport

The sddc backport to satellite cv's didn't work as expected. Best to revert to a known working state.

Hi Pat, looking at the changes of this pull request I cannot see the reversion of the backport itself - does it contain everything you would like to get pulled?

There's also a satellite filter to exclude the python-gobject-base package from the necessary CV's.

perfect thank you!!


Fix syntax of models.txt

I am trying to parse the models.txt. Therefore, the syntax errors should be fixed.
I added a TODO in Line 733. Can someone tell me what field it should be?

See line 757

See line 757
Done. Can this be merged?


Adds support to aws_dynamodb output for deleting items

What
this PR adds support for deleting items to the aws_dynamodb output via a new delete_mapping bloblang mapping config field.
Why
For standard change-data-capture use cases, where there is a desire to sync data (including deletion markers) to DynamoDB.
@Jeffail, curious to hear your thoughts on this approach..

Hey @cludden, I'd eventually like to deprecate the string_columns and json_map_columns fields and replace them with a bloblang mapping, similar to how to the new mongodb output works. Maybe we can use this as a starting point where your new delete_mapping field becomes the key map itself, so you could configure something like:
output:
  aws_dynamodb:
    table: foobar
    delete_mapping: |
      root.id = this.document.id
      root.key = meta("kafka_key")
    max_in_flight: 10

Then eventually we'd add a field put_mapping with similar behaviour:
output:
  aws_dynamodb:
    table: foobar
    put_mapping: |
      root.id = this.document.id
      root.key = meta("kafka_key")
      root.name = this.user.name
      root.topic = meta("kafka_topic")
    max_in_flight: 10

Also it's now been brought to my attention that the mongodb output fields have a _map suffix, but we have mapping fields elsewhere so maybe that should change. It's experimental so if there's stuff we learn with this output then we can update mongodb to follow it.

closing in favor of #753


Add size indication to commit history

Hey there!
First off thanks for the awesome tool! It is great :)
One thing that I think could make it even better is having some sort of indication next to the side of the commit header to show how big a commit is. As it is currently you need to open each commit to see how many files have been changed:

This is indicated using the size of a circle in one of my favorite git tools in atom (git-time-machine):

But I think any sort of indication could work, maybe something like dots:

Or just simply showing the number of files modified.
Anyways, I know it would help me visually scan for the commit I'm looking for :)
Thanks!

Excellent suggestion -- thanks!

👍😄 👍😄 👍😄 👍😄 👍😄

@tnrich if you think this feature should be built, consider adding a reward to this issue using speedoss.com :)


Preview mode for the script

This is super hacky but I thought it might become handy for some people: A way to preview the result of the script, at least roughly. Currently only tested with the example script in the repo. No fancy camera controls or light effects. But it allows editing the Python script, reloading the page, and seeing it in action.
Live demo: https://jkrems.dev/xmastree2020/preview/

Hi I followed the link, but I can't edit the script... :(

Hi, I've been working on something similar - but wanted a fully web-based way for users to edit things (similar to jsfiddle) and found trinket.io.
Feel free to steal some of my code (e.g the matrix rotation stuff etc):
https://trinket.io/python/61921f843e
I've only gotten as far as to draw the dot cloud as well as do some simple matrix rotations
(I've run out of time for today so I'll post this here as-is).
current status:

quick'n'dirty snapshot (I hope the code is somewhat readable)
Tree class stores the dot cloud (each dot is a Vector3d instance)
Tree().rotate(zangle=123) returns the dot cloud after rotating it by zangle degrees around the z-axis
TODO maybe return a new, rotated Tree instance instead (to allow method chaining)
I've tried to run the drawTree() method repeatedly (also calling screen.clearscreen()) but it doesn't work for some reason
and I've run out of time to investigate further :)
haven't worked with the turtle lib yet (and I'm kinda abusing it - a lower level drawing lib would be sufficient, but turtle is what's supported on this site and is easy to use)
re-running things causes flickering (so you can't really see the animation unless you focus on single dots on the edge of the tree)
everything in helpercode.py only relies on builtin python3 stuff and should be reusable
the "turtle" is still visible - this should be fixable
if you disable the turtle.on() and .off() calls, you can see the lines - i.e. the 'wiring' of the led strips
(assuming their addressing matches their position on the led strip)
this also makes it easier to see the rotation
no colors yet - I was planning on doing the tree display and rotation first (i.e. the TreeSimulator™ :) ) and only add a simple animation, share the link and let users play with it and try out their own animations

Note: I'm looking for input but don't wanna hijack the conversation in this pull request - I'll maybe open an issue later to have a separate thread if people are interested.
Just wanted to post this here in case @jkrems finds some code they wanna include in their solution ;)

Hi I followed the link, but I can't edit the script... :(

Sorry for the confusion there. Right now the text on the site isn't editable but the way to try out changes would be:

Clone the repo.
Run python3 -m http.server 8000 in the checkout directory.
Open http://localhost:3000/preview.
Change xmaslights-spin.py and reload the browser.

Pretty manual but it kind of works (and at least faster than to wait for Matt to run it on a real tree).
I didn't have time to make live editing in the browser work last night, so I just added a readonly to the <textarea> to reduce the confusion a little bit.

Hi, I've been working on something similar - but wanted a fully web-based way for users to edit things (similar to jsfiddle) and found trinket.io.

Thanks for sharing, @mreithub! That looks pretty neat. I think in the background both solutions use the same "guts" (Skulpt). I had briefly looked at trinket as the editing solution but I couldn't (quickly) find a way to render the 3D tree or plug a trinket into custom runtime code. And without the custom runtime, it seemed hard to make the real tree scripts work 1:1 in the browser. But I think having an at least partially copy&paste-able, simpler fiddle would be awesome!

Pushed some cleanup:

It's no possible to edit the script in the browser.
When editing, it updates the # fragment in the URL to contain the script source. The resulting URL should be somewhat sharable.
To see the result of an edit reflected in the render, it's necessary to click ▶.
There's no a checkbox to rotate the rendered tree to see it from other directions. It's a poor replacement for mouse camera control but it's a start.

Not sure why, but this simulator produces random results for my fire script. The other simulators work fine, eg. https://github.com/standupmaths/xmastree2020/pull/5

Hi, I've been working on something similar - but wanted a fully web-based way for users to edit things (similar to jsfiddle) and found trinket.io.

Hi, mreithub, I've adapted the example to your code, and tried to allow for both hardware and simulation target. I'm really unsure as to whether I got the front/back right. I might have a try at hitting the lower-level tk later.
https://trinket.io/python/01af695133


[PL-55745] SMP 0.19.0 Release Notes

Thanks for contributing to the Harness Developer Hub! Our code owners will review your submission.
Description

Please describe your changes: __________________________________
Jira/GitHub Issue numbers (if any): https://harness.atlassian.net/browse/PL-55745
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://66a76eeef2394a1a31bfb605--harness-developer.netlify.app

PR is ready except CCM Ticket numbers left to add.
@joeyouss will be adding the respective ticket numbers to New Feature -> CCM section.


core: add support for Sepolia testnet

Current dependencies on/for this PR:

main

PR #383   👈

This stack of pull requests is managed by Graphite.


Use Plek to find url-arbiter address

Nice.  The simplicity of that change is an indication that the Plek API is in good shape.


How to propogate taint across data casting

Currently I'm trying to detect intent redirection, using this as a example code to test for.
Intent redirectIntent = (Intent) getIntent().getParcelableExtra("redirect_intent");
...
startActivity(redirectIntent);

I defined the sink to be the default for launching components, and for sources, I defined it to be
{
  "model_generators": [
    {
      "find": "methods",
      "where": [
        {
          "constraint": "name",
          "pattern": ".*getParcelableExtra.*"
        }
      ],
      "model": {
        "modes": [
          "taint-in-taint-out"
        ],
        "generations": [
          {
            "kind": "IntentRedirectSource",
            "port": "Argument(0)"
          }
          ]
      }
    }
  ]
}

The models do not detect the flow of data, a little curious as to why that would be the case. Do I need to write a method to detect that it was casted as an Intent, or is there something wrong with my interpretation of the modeled source and sink?

generations with Argument(0) means that the source is added on argument 0, i.e this.
For instance, if foo has a generation on Argument(0) then:
void method(Class x) {
  String y = x.foo(); // x is now tainted, but y is not tainted

It is the opposite with Return: y would be tainted but x wouldn't be.


Remove a double quote from a link.

Removes the double quote from the api documentation link. I do apologize if this comes across as pedantic.

We'll fix typos like these without merging.


Develop

What is your Pull Request about?

My apologies.
I only have a github user id/password because I needed to post an issue
to the cereal library project.
Separately, Gennadiy Rozental of Boost recommended that I download Boost
Test v3.  I tried, only to find out that I had no idea of how github
works.  I thought "pull request" was the way to extract files.
When I realized that a pull did something else entirely, I tried to back
out gracefully.  However, I couldn't find a Cancel button or anything
obviously related.  Similarly, while there was a login button, I could
find no logout.

I have since decided to patiently wait until the next release of Boost
to try the new Test Library.
Again, I apologize for any problem my ignorance created.
Merrill Cornish


Server scraping can fail for large pages

When i try to archive this page linkding runs into a timeout and is unable to bookmark it, tried it with the chrome extension and on linkding itself, will timeout after 60 seconds:
https://instances.vantage.sh/
Running linkding 1.15.0 on a dedicated server in Docker using cloudflared tunnel to access it remotely, works fine for every other page.
Any idea what the issue could be?
PS: I love linkding!

I guess i found the issue: the machine where it was running only had 512MB ram, upgraded it to 1GB and now i can archive this link.

Yeah, the website delivers an HTML document that is 5 MB in size, which the server-side scraper doesn't handle very well. The scraper will first load the full HTML, and then parse it into an actual DOM structure, which requires more memory the larger the HTML document is.
The scraper could be improved, for example:

only parse the contents of the head tag, as that is the only part of the document that is queried for metadata
do not parse the document into a structure, instead use regex to extract metadata
do not load the full document

Regarding memory usage, you should be absolutely fine with 512 MB, this is very much an edge-case. The linkding demo instance is running on fly.io with just 256MB, which is borderline, but usually working fine.


AS3 Support for Clone/Server Pools on Virtual Server

ISSUE TYPE

Feature Idea

AS3 BUILD/ VERSION

 Future

BIGIP VERSION

12.1+

SUMMARY

Customer is looking to utilize the clone pool features of the virtual server. this would allow them to specify a declaration which contains sending traffic to other tools for IDS/IPS/ protocol inspections

STEPS TO REPRODUCE

I think this would be a schema update to support these Virtual Properties:

    "clonePools": [
        {
            "name": "client_clone_pool",
            "partition": "Common",
            "context": "clientside",
            "nameReference": {
                "link": "https://localhost/mgmt/tm/ltm/pool/~Common~client_clone_pool?ver=<IP_ADDRESS>"
            }
        },
        {
            "name": "server_clone_pool",
            "partition": "Common",
            "context": "serverside",
            "nameReference": {
                "link": "https://localhost/mgmt/tm/ltm/pool/~Common~server_clone_pool?ver=<IP_ADDRESS>"
            }
        }

Full GET from VS with clone:

{
    "kind": "tm:ltm:virtual:virtualstate",
    "name": "clone_vs",
    "fullPath": "clone_vs",
    "generation": 20953,
    "selfLink": "https://localhost/mgmt/tm/ltm/virtual/clone_vs?ver=<IP_ADDRESS>",
    "addressStatus": "yes",
    "autoLasthop": "default",
    "cmpEnabled": "yes",
    "connectionLimit": 0,
    "destination": "/Common/<IP_ADDRESS>:42",
    "enabled": true,
    "gtmScore": 0,
    "ipProtocol": "tcp",
    "mask": "<IP_ADDRESS>",
    "mirror": "disabled",
    "mobileAppTunnel": "disabled",
    "nat64": "disabled",
    "rateLimit": "disabled",
    "rateLimitDstMask": 0,
    "rateLimitMode": "object",
    "rateLimitSrcMask": 0,
    "securityNatPolicy": {
        "useDevicePolicy": "no",
        "useRouteDomainPolicy": "no"
    },
    "serviceDownImmediateAction": "none",
    "source": "<IP_ADDRESS>/0",
    "sourceAddressTranslation": {
        "type": "none"
    },
    "sourcePort": "preserve",
    "synCookieStatus": "not-activated",
    "throughputCapacity": 0,
    "translateAddress": "enabled",
    "translatePort": "enabled",
    "vlansDisabled": true,
    "vsIndex": 22,
    "clonePools": [
        {
            "name": "client_clone_pool",
            "partition": "Common",
            "context": "clientside",
            "nameReference": {
                "link": "https://localhost/mgmt/tm/ltm/pool/~Common~client_clone_pool?ver=<IP_ADDRESS>"
            }
        },
        {
            "name": "server_clone_pool",
            "partition": "Common",
            "context": "serverside",
            "nameReference": {
                "link": "https://localhost/mgmt/tm/ltm/pool/~Common~server_clone_pool?ver=<IP_ADDRESS>"
            }
        }
    ],
    "policiesReference": {
        "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~clone_vs/policies?ver=<IP_ADDRESS>",
        "isSubcollection": true
    },
    "profilesReference": {
        "link": "https://localhost/mgmt/tm/ltm/virtual/~Common~clone_vs/profiles?ver=<IP_ADDRESS>",
        "isSubcollection": true
    }
}

EXPECTED RESULTS

ACTUAL RESULTS

Feature Request to NA

Feature Request to NA

3.9.0 was released a while ago. Closing.


Error while reinstalling.

I've reinstalled XIVAlexander and followed the instructions on the installation page, however I get this error when I try to load the program now. Tried to reinstall again, same thing. Exclusions have been added to my AV, even tried running it without it. I run it in administrator mode.

You shouldn't be running XivAlexander install from %LOCALAPPDATA% path. I'll add a special handling when it detects being ran from that folder.
Meanwhile:

Did you refer to Manual installation section? If then, which part in the wiki article was written in a way that can be misleading?
Otherwise, did you intentionally run the loader from that path?

If then, why?
If you didn't, how did the loader get placed into that path?

Same error. My XIVA is NOT in appdata, I put the files into H:/FFXIV Stuff/XIVA, but it still throws out this same error even after unistalling Alexander beforehand. Nothing else done apart from downloading the release, putting it in the folder named above, hitting Install XivAlexander as d3d9 and d3d11, then uninstalling the existing release, then trying again, then trying to install for directx 11 and 9 separately, all with the same error message (apart from the uninstall which worked).

Update: Apparently the process, once again, didn't actually close despite me force closing FFXIV through the Alexander menu before trying to update. No idea what causes THAT particular issue, but apparently I will have to go through the task mngr each time.


Catch 1.8.2

update to latest version

@dvirtz released https://github.com/hunter-packages/Catch/archive/v1.8.2-p0.tar.gz


Create list of cloud stored app settings with description

https://docs.ruuvi.com/communication/cloud/cloud-stored-app-settings


fix: do not render Resolved sub-component's children while promise is on "running" phase

#14

Codecov Report

Merging #15 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master      #15   +/-   ##
=======================================
  Coverage   98.14%   98.14%
=======================================
  Files           1        1
  Lines          54       54
  Branches       13       12    -1
=======================================
  Hits           53       53
  Misses          1        1

Impacted Files
Coverage Δ

src/index.js
98.14% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Agent is not switching to sidecar mode

Describe the bug
Agent does not switch to sidecar mode after toggling the flag in agents.fluxninja.com.
Steps to reproduce
kubectl edit agents.fluxninja.com

switch sidecar enabled to true.
What did you expect to see?
Daemonset to disappear, containers being injected into new pods with sidecar.fluxninja.com/injection annotation.
What did you see instead?
Agent pods still there, no injection happening.
What version did you use?
a6424948f212ffb1aab7a88d94c7597595f8b4b4
What config did you use?
-
Environment
Playground
Additional context
In agent-operator logs I see only the defaulter-related logs.

1.6675731102953045e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "d321ac66-dec2-4bd9-9826-16e2ba8e00e4", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.667573110316306e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "d321ac66-dec2-4bd9-9826-16e2ba8e00e4", "allowed": true}
1.6675731103335567e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "40ef361b-aa63-4fea-98c3-8b6218d9cbc2", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731103477905e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "40ef361b-aa63-4fea-98c3-8b6218d9cbc2", "allowed": true}
1.6675731103804872e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "94144780-f49b-4d74-858b-bc95838e2330", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731103933454e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "94144780-f49b-4d74-858b-bc95838e2330", "allowed": true}
1.667573110420257e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "8e9e1b9d-6b50-4c2f-96b1-ef9f0e123336", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731104310045e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "8e9e1b9d-6b50-4c2f-96b1-ef9f0e123336", "allowed": true}
1.6675731104563844e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "0836f591-3cb5-44d5-9aa3-4a01eae8661e", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731104716227e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "0836f591-3cb5-44d5-9aa3-4a01eae8661e", "allowed": true}
1.667573111976816e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "6791b2da-2899-475e-88a8-ba49a4653fe1", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731119880106e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "6791b2da-2899-475e-88a8-ba49a4653fe1", "allowed": true}
1.6675731120970306e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "11c09d87-9e65-4cea-a476-4131543e1706", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731121063836e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "11c09d87-9e65-4cea-a476-4131543e1706", "allowed": true}
1.6675731121230109e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "b86941a3-07d6-4865-8f21-e3080538e582", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.667573112133824e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "b86941a3-07d6-4865-8f21-e3080538e582", "allowed": true}
1.6675731121580439e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "f6177e08-d31b-440b-aa7a-9e09c8b1f10a", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731121692302e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "f6177e08-d31b-440b-aa7a-9e09c8b1f10a", "allowed": true}
1.6675731121909857e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "51749586-cdb4-4a57-91af-0409f2580fb0", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731121999407e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "51749586-cdb4-4a57-91af-0409f2580fb0", "allowed": true}
1.6675731122230392e+09	DEBUG	controller-runtime.webhook.webhooks	received request	{"webhook": "/agent-defaulter", "UID": "89a4df25-be37-4b77-b3d3-337c59ebda58", "kind": "fluxninja.com/v1alpha1, Kind=Agent", "resource": {"group":"fluxninja.com","version":"v1alpha1","resource":"agents"}}
1.6675731122311687e+09	DEBUG	controller-runtime.webhook.webhooks	wrote response	{"webhook": "/agent-defaulter", "code": 200, "reason": "", "UID": "89a4df25-be37-4b77-b3d3-337c59ebda58", "allowed": true}

cc @hdkshingala

@krdln Have you enabled the injection at namespace level by adding label aperture-injection=enabled?
To enable the sidecar injection, we need the label on the namespace or you can add the namespace under sidecar.enableNamespacesByDefault parameter in the CR.

@krdln Can we close this one?

@hdkshingala Let's add a warning that detects such attempt and then we can close the issue. I believe it's not a high priority though.

@krdln Adding warning is going to be tricky as we don't get the previous state so I'll check once other high priority tasks are completed.


Help with setting up CSS or HTML files to make tabs work with material

I commented in a closed issue so I thought I would create a new one to ask for some help.
I am a newbie to using Mkdocs and I was told it was simple as adding
    blah blah

  yada yada

to make tabs work.  Never that simple ;-)  Note the above has three backticks then android followed by tab="Tabname", then it is duplicated for iOS .
I downloaded markdown-fenced-code-tabs and realize I need to add some CSS or Javascript code but I don't know where.   Any help or advice is appreciated.  I am not a developer but a documentation person at a new job.

Good day Yassir!  I did not include the pages as that is the boring stuff. From what I have been reading, the 'material' theme is problematic with tabs.
Theme directory
theme:
name: 'material'
feature:
tabs: true
palette:
primary: 'blue'
accent: 'cyan'
favicon: 'images/favicon.ico'
logo: 'images/SAP_scrn_R.png'
#theme: 'material'
#theme_dir: 'docs/theme'
markdown_extensions:

codehilite:
linenums: true
admonition
toc(permalink=true)
footnotes
pymdownx.inlinehilite
pymdownx.critic
pymdownx.tilde
pymdownx.tasklist
pymdownx.superfences

use_directory_urls: false
Page tree
pages:

I found out what my problem was.  My mkdocs-material was out of date. I had to do a force reinstall of 2.9.2 and first word after the backticks is the language name.


Intermittent pub windows test failure during git clone

See: http://chromegw.corp.google.com/i/client.dart/builders/pub-win/builds/1163/steps/annotated_steps/logs/stdio
  Expected stderr to match "Package "foo" doesn't have a pubspec.yaml file." but got:
  | Git error. Command: git clone C:\Users\CHROME~2\AppData\Local\Temp\tempdir-015107a6-453a-11e2-ab4c-005056030208\cache\git\cache\foo-31b316ff8efd11d9c051c7d9f7610ceff1a4572b C:\Users\CHROME~2\AppData\Local\Temp\tempdir-015107a6-453a-11e2-ab4c-005056030208\cache\git\foo-50d7998e6c2f13485255fc1dd42033f8e26336ea
  |       0 [main] us 0 open_stackdumpfile: Dumping stack trace to us.stackdump
  | fatal: Could not read from remote repository.
  |
  | Please make sure you have the correct access rights
  | and the repository exists.

This issue has been moved to dart-lang/pub#375.


Fix Swift compile error in Demo

I cloned the repo and tried to run it in Xcode but got Swift error here. The variable should not be re-initialized.
Fixes #93

In case you missed my reply to the inline conversation:
Funnily I opened my Xcode again and the original code compiles now. Anyway I opted to just rename the instance variable to controllers and retain the use of setViewControllers(_:animated:) for clarity.

Hmm, then I don’t think we need to merge any changes, right? Can we close this?

But I did encounter that odd error earlier. To eliminate it completely is
it ok to merge?
On Sat, 6 Aug 2022 at 1:16 AM, Joe Masilotti @.***>
wrote:

Hmm, then I don’t think we need to merge any changes, right? Can we close
this?
—
Reply to this email directly, view it on GitHub
https://github.com/hotwired/turbo-ios/pull/94#issuecomment-1206674732,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKH6NFV7TS4LQQK2EVPPKLVXVD6VANCNFSM55VM37BA
.
You are receiving this because you authored the thread.Message ID:
@.***>

I'm not seeing that error even with a fresh clone, to be honest. Can you try cloning again and seeing if you still see it?

OK nvm I will close this for now. Probably some initial Xcode glitch.


Add possibility to run cloudexplain in inference mode

We should enable runs without y being defined.

done in #7


Improve rtl support with modern css

Fixes #3731
Improves rtl support among other things. Replaces attributes like top/left/margin-right/padding-left as well as tailwind classes with *-inline* and *-block* version.
padding-inline-start is for ltr the same as padding-left but for rtl it is the same as padding-right. The browser just does the right thing.
For tailwind we should always use ms-1 instead of ml-1 and me-1 instead of mr-1 etc. The s/e stands for start/end.
Test Steps

[ ] Look at multiple pages and confirm that the styling is not off/look weird anywhere.

Nice.
Small doubt, for the icons, since the icons itself are not moving to the right on the text, does it make sense to update the margin on the icon from right to left.
As per current logic, I believe this is what is going to happen.
ltr setup
[icon][margin][text]

rtl setup
[margin][icon][text-reversed]

We really need a space b/w the icon and the text.
Also, what would be best way to test the code for a rtl language?

Ignore my comment above. I tested with dir=rtl with english itself, and looks like browser also swaps the icon position, and does exactly how it should happen.
which is
[text][margin][icon]

💯

Looking good. Let's get this merged in.
Can you also create another ticket to find other minor issues related to rtl support and fix them.

Feedback from test: "The 'copy questions to clipboard' doesn't really align with anything. I could see it better fitting to the direct right of the title and centered, or maybe directly under. Not a priority by any means"

Feedback from test: also not a priority, but the 'requesting to receive services' choice might be missed, would be better if directly under the other two options (Rapid Response Round - Jan 2024)

Feedback from test: more space between the 'addressed problems' in RRF could make the options easier to read (edited)

Above are super minor so we can move this forward to deploy live. Let me know if that is the case.

@Techslammer Please create issues for these things. They are unrelated to this PR.
The "the 'requesting to receive services' choice" is in an option you add to application forms in Wagtail admin. The forms on test are very likely different form them on live.

@frjo When this is deployed live, i'll check in with PMs to review if those issues are still there and if so, will create issues on GH


+Accessing types in polymorphic queries

Getting to https://github.com/edgedb/edgedb/issues/6086 now that the select page cleanup is merged. Two points stand out here that I felt were important:

The best way to demonstrate the utility of this is by reminding that the Default::SomeType output you see is just a convenience in the REPL but not a parameter you can access, and output in  is the best way to show this up front
A bit of explanation that __type__ isn't just magic, and that the splat operator is a good way to get a look into the internals. I remember way back in the day just sort of rote remembering __type__ without knowing exactly what was inside and feels better now with the splat operator able to show you everything.

Nice suggestions! I applied them all.


Support interpolated stop times

Uncommonly used feature in Germany, but quite common elsewhere. See discussion at #2089.
GTFSlib can do this, but I removed support for it when I wanted to thin out library use and had other things on my plate.

The PR: https://github.com/graphhopper/graphhopper/pull/2096

Thanks! And does it solve the issue for you?
Now I wonder why it was removed in the first place. Or maybe I'm making this up and it was never there, and only added to GTFSlib later. Mysterious.

It looks like it has! :D


Instance stuck in deploying state

Version: main
UI: dev-d4bedf4
Commit ID: 8f7ced5963979c432a3953e24c49434c916b5853
Env: Ubuntu 22.04 amd64, aws EC2
Test Steps:

Deploy some instances.

Test Result:

One instance stuck in Deploying state. But its resources are ready. There is no way to reproduce it yet.

closed in favor of #814, let's trace the inconsistent status under #840.


Precompute and store attribute and executor id together in a single h…

…ashmap.
the executor id so complex fields use the same executor.
@toregge and @geirst PR

Unified selection of executorId.

Doesn't match executor id used in AttributeWriter::heartBeat(), AttributeWriter::onReplayDone(),
AttributeWriter::compactLidSpace(), FlushableAttribute::initFlush(), ExclusiveAttributeReadAccessor::takeGuard(), AttributeManager::asyncForEachAttribute(),
FilterAttributeManager::asyncForEachAttribute(), GidToLidChangeListener::GidToLidChangeListener(),
and allocShrinker() (not necessarily a complete list).

Now, I think I have caught all of them ..


Return the current time as a Number

The withTime event now returns time as a Number, rather than an
Int. This is probably sensible, as the current time since epoch in ms
is bigger than what we can store in a 32-bit int, so this gets truncated
as soon as it is used. This commit simply changes its representation to
a number, ensuring that it can remain as precise.

Thanks!


Spring: onRest does not get triggered, if one animated value stays equal

I want to animate with Spring from { opacity: 1, transform: -50% } to { opacity: 1, transform: 0 }. This Spring is embedded in a larger, configurable script, where you need to have the apparently redundant { opacity: 1 }. But this property keeps onRest from being triggered.
Is this a bug? And is there a way around that? For example, when I set the from-opacity to 0.99 (which is not a solution for me) it's working.
Code sandbox: https://codesandbox.io/s/64kr4wm0o3

this is a bug for sure 😓, thanks for the sandbox! For now i would recommend from: 0.99 even if it's a hack. i'll fix this in the meantime.

Thank you!

@AndreasFaust should be fixed.

@drcmda Amazing. Thank you once again!


fix(style): use 'rem' for font sizes

:tada: This PR is included in version 3.0.0-beta.10 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 3.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Validate that referenced columns exist in upstream sources

We need to make sure that any referenced column in a model actually exists in an upstream source. For example, in:
SELECT tbl.x FROM schema.tbl AS tbl

we should throw an error @ load time, if column x doesn't appear in schema.tbl.

Fixed in https://github.com/TobikoData/sqlmesh/commit/2715f9aece434193510e2f51a99add19fc5d7bd2


adds psr-2 corrections and coverage badge

Changes Unknown when pulling 351c009c5aa630229ad35d850d16b8cd899b0597 on hotfix/psr-2-coverage into ** on master**.


[enhancement] configuration file support for console application and PAM module

The changes in this patch add support for a configuration file which has handlers for all arguments of google-authenticator and pam_google_authenticator.so.
This option is only compiled in with ./configure --enable-config, otherwise the behaviour of the application is not changed.
The exception to the is the command line options for the console app. Even when configuration support has not been compiled in, the short argument has been changed from '-c'( for counter) to '-H'(for hash-based).

I signed it!

For this github username? googlebot doesn't see it, and now that I'm double-checking neither do I. Could you try again?

I have signed the agreement under my google account's primary email (pantsman0@gmail.com), I have added my new email to the CLA (woolford.philip@gmail.com).

<EMAIL_ADDRESS>is in there, but not the other one.  Could be a sync delay. I'm looking into it.

sorry, for the confusion, I have added a CLA under my google account email<EMAIL_ADDRESS>but in the CLA where you add your github username, I have put in the email that I use on github (woolford.philip@gmail.com).

Your github username should be just "pantsman0" as I understand it.

You know, I never actually though about that. GitHub lets you log in with you email address so it didn't seem out of place when I put it in the cla. I should have figured considering my repo urls are /pantsman/...
Anyway, enough of me making excuses for myself. I have updated my CLA so that the github username is pantsman0.

Ah, great.
Because of the time of year I won't have time to look at this for a couple of weeks, but it seem like a good optional way of configging for those that prefer this way.
I'll add some initial comments. Overall:

Where possible, break out all config file reading stuff into its own file and conditionally include it. That's better than sprinkling #ifdefs in code.
When merging the final history shouldn't have any bug fixes or warning cleanups, since we already know about them. You can git rebase squash them, or I can take a stab at it in the end.

thanks for the comments, I'll address the questions in reply to the comments, and I'll make the code changes in the coming weeks for when you will have time for review.

Hi Tom,
I'm going to change tac with this, as I got pulled  away onto other projects and only came back to write on a different feature.
I'm closing this PR, I'll submit my new PR. While the PR is being worked on, I will re-implement the config feature with the last change you suggested, factoring out the config reading code into a separate file.
I'm sure you'll see the new PR soon,
Philip


Why do we ignore default metadata?

The basic logger purges rather useful metadata like line file and function.
When I tested this locally, I was able to completely wipe out the blacklisted fields and this library worked just fine.
I'm happy to make a PR with my changes to remove the rather annoying discard if we're up for that.

@SophisticaSean it was coming from a time when we weren't able to properly encode functions (because we did not have a safe encoder), and even before the same list was part of some Elixir.Logger code :).
The basic formatter is very minimalistic, I'm not sure it's a good idea to change it now because we don't want to accidentally send more data to log ingestion than people that already use it are expecting. If you want to have them in your logs it's better to define your own formatter.

@SophisticaSean I just stared using the basic logger and I was also very surprised that it basically ignores all metadata.
I think the docs should clearly mention what metadata is supported and what not. Right now, there's no mention of metadata being removed.

Thanks @AndrewDryga. However, it's the system metadata (especially mfa) I'm interested in :)
Not saying you guys don't have good reasons for it, all I'm saying is that there should be a sentence in the docs mentioning this.

@maxmarcon I pushed an updated readme, please tell me if you have ideas on how to make it more explicit.

Many thanks @AndrewDryga ! Really appreciated. I left a comment on the commit.


Better error management and documentation

Hi let me explain my problem so you can help me find a solution or consider this issue a future improvement to do.
Hi, I'm using loki with try/catch for managing errors. Right now errors seems a simple message, for example: Duplicate key for property username....
My application needs to return different HTTP messages depending if the error is due a duplicated key, a key not found or a system error and, with the current loki error implementation it is hard to detect the type of error.
It would be great if Error objects contains a status, like in node style, with the error number or each error was a concrete subclass. I look for something I can compare quickly like: error instanceof DuplicatedError or error.code === LokiJS.Errors.DUPLICATED_KEY.
On the other hand I'm finding a bit complex to know the API documentation. The one existent at http://lokijs.org/#/docs is not enough and the project wiki seems not perfect too. For example I saw collections accept options, like unique not very well documented. Are there any other resources?
A side of criticism, I would like to contribute with my 5cents on the project and I think I can try to improve the doc using some kind of tool like jsdoc3. This way the docs could be synchronised with the code. What do you think?

@acanimal all good points. Yes defining the nature of an error definitely helps managing errors in a better / safer way.
Will see what i can come up with, it could be a case of breaking backward compatibility and a major version release.

+1
Had to find out how some things in the library work from reading strings in the debugger...


tmp and tmp2 in Tuple.swift

https://github.com/pointfreeco/swift-prelude/blob/8cbc93417c7dca20124d25ab9f2c0d31999e26ec/Sources/Tuple/Tuple.swift#L35-L36
Are these identifiers intended to be in this file? If so, what is their purpose?

oops no, that is test code that accidentally snuck in. it should be removed.
thanks for the heads up!


Include request property in loaders

For some reason the resolver for the less loader and possibly the postcss loader resolver based on #109 and possibly the sass loader resolver from #95 return loader objects with only the path and query property but the css loader uses the request property of the loader which is just the concatenation of path and query.

Current coverage is 90.51% (diff: 100%)

Merging #125 into master will increase coverage by 0.03%

@@             master       #125   diff @@
==========================================
  Files            22         22
  Lines           777        780     +3
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            703        706     +3
  Misses           74         74
  Partials          0          0

Powered by Codecov. Last update 08aaff0...3eed5ab

Nice! Thank you. I will try the change with the mentioned tickets to see if it does solve them, but no harm in merging this as-is.


Add helm upgrade --name

Currently helm doesn't support name parameter for upgrade command, but I have projects XXX YYY ZZZ with services AAA BBB CCC. And service AAA for example is working for these multiple projects XXX YYY ZZZ using single chart "service-aaa".
I would like to use:
helm upgrade --install --name=xxx-aaa --namespace=xyz service-aaa
Please, add --name parameter for upgrade command

Would this command work for you:
helm upgrade AAA service-aaa ?

Yes, thank you. Just googled it and opened issue to close it with commentary that it works this way


⚠ Bofrost.de has degraded performance

In c3ac315, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 3038 ms

Resolved: Bofrost.de performance has improved in 230f679 after 8 minutes.


changing the header to X-MoneyTrace to match project documentation.

[Current coverage][cc-pull] is 84.61%

Merging [#9][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master         #9   diff @@
==========================================
  Files             3          3
  Lines           182        182
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            154        154
  Misses           26         26
  Partials          2          2

Powered by Codecov. Last updated by [61949f1...2aa2753][cc-compare]
[cc-base-branch]: https://codecov.io/gh/Comcast/golang-money/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/Comcast/golang-money/compare/61949f14560e775645f9bf6cdce1abaca7f37e26...2aa2753bdd1f403c5032ab987acdcc2fc0ae5dea?src=pr
[cc-pull]: https://codecov.io/gh/Comcast/golang-money/pull/9?src=pr


Ruby CallCredentials does not invoke provided proc

I'm trying to implement (non-Google) OAuth with CallCredentials, like so:
GRPC::Core::CallCredentials.new(
  proc do
    puts "generating new credentials!"
    { auth_header: "blahblahblah" }
  end
)

This doesn't work (the server doesn't see the auth_header that it expects). It seems that the proc is never called, so how are the credentials being passed along?  Maybe this isn't the right way to use CallCredentials.  I just couldn't find much documentation for supporting custom authentication for the ruby gRPC library.  Any help is much appreciated!

Are the call credentials being used on a secure channel? e.g., using ChannelCredentials?
There's some documentation (with ruby and other languages) in http://www.grpc.io/docs/guides/auth.html, with an example use of CallCredentials in the "Authenticate with Google" section

Does it ONLY work when composed with ChannelCredentials?  I've played with the Java grpc library, and for that library, CallCredentials work without ChannelCredentials.  Here's how it's being used in ruby:
creds = GRPC::Core::CallCredentials.new(proc { auth_header: "blahblahblah" })
stub = NameSpace::Stub.new("someaddress", :this_channel_is_insecure)
stub.get_foo(request_object, credentials: creds)

yes AFAIK this is the case with the ruby client

I see. Thanks for your help!

Is there any chance this could be revisited? Running into the same issue now with Node (I would assume anything based on the C API?)
This is likely to become more of an issue if service meshes such as Istio rise in popularity, as they offload mTLS outside of the client applications anyway (thus making the RPC appear insecure to the app, while still going secure over the wire).
It's not the end of the day in the interim, it just means that I have to craft Metadata instances to pass around manually, but it would be much cleaner if gRPC would allow this. If there's concern over the security of passing credentials on insecure channels, what about an option that is disabled by default?

If there's concern over the security of passing credentials on insecure channels, what about an option that is disabled by default?

reopening this issue to look into this last suggestion

Thanks! I posted over on the grpc-io mailing list here some reasons why this makes sense to me. It feels worth enumerating them again here if this is where the discussion would happen:

At least gRPC-java does support this. At best, the inconsistency is strange, at worst it could lead to painful realizations down the road if starting on Java and assuming that similar patterns will "just work" on other languages. This is what happened in my case, where our gRPC-Java implementations worked fine, but attempting to do the same thing in Node did not work and took a while before I realized this was the reason.
While I understand gRPC's belief that it's insecure to exchange tokens over plaintext channels, the reality is that the application-level implementation really has no idea what channel the data will actually be exchanged over. For example, in Istio deployments, the application may think it's communicating insecurely (and thus not allow CallCredentials to be sent), when in fact the traffic is going to hit an external container that will perform mTLS auth with the destination service. From the client and server perspective, this is an insecure channel, but in reality - it's not (unless you're concerned about the ability to tcpdump the loopback interface - at which point you're probably screwed anyway).
There are plenty of cases where the CallCredentials themselves are not nearly as sensitive (i.e. they're enforced single-use tokens like JWTs), and thus may be less risky to exchange over plaintext anyway. This could be the case in scenarios where the services themselves are not dealing with private information, but perhaps they perform an action that should still be authenticated. Understandably, everything should be TLS anyway, but see point #2 for cases in which the service could be using TLS in ways that gRPC may not know about.
Finally, from a developer experience perspective, it's still possible to send this information anyway - but it results in more fragile implementations of gRPC clients. For example, in Node, I've worked around this limitation by simply pre-generating Metadata instances that can be passed to calls (instead of using CallCredentials), but this requires me to take care to ensure that, at all call-sites, I have valid metadata (i.e. it hasn't expired since it was generated - we're using JWTs). CallCredentials provide a single way for me to do this, but it's currently not possible because of the restriction to use secure channels.

I am closing this issue because this is more of a feature request than a bug but @colinmorelli I don't mean to close your question that you posted here. @colinmorelli for your question, I am leaving open the google groups chat.