Why getting Grpc.Core.RpcException StatusCode=Unavailable, Detail=“Connect Failed”, with Google Cloud Firestore 1.0.0-beta05 C# SetAsync? HTTP/2.0 issue?

Jon Skeet (@jskeet) suggested we file an issue here.
Jon provided a link that suggests HTTP/2.0 may be used in all traffic.
Is this true?
We are behind a Company Proxy (squid-cache) and it does not allow HTTP/2.0 traffic.
If this is the issue, is there any way to downgrade the traffic to HTTP/1.1?
The original issue is as follows:
We are using C# with the Google.Cloud.Firestore.1.0.0-beta05 NuGet package, and we always get a Grpc.Core.RpcException when we try to call SetAsync.
Details:

Visual Studio 2017
.NET Framework V4.6.2
ASP.NET
Version: Google.Cloud.Firestore.1.0.0-beta05
Date Published: Thursday, June 07, 2018 (6/7/2018)
Environment Variable GOOGLE_APPLICATION_CREDENTIALS has been set.
Proxy configured in web.config per our Company setup.
Environment variables http_proxy and https_proxy have been set.

Can anyone help us understand why we get the following?
Grpc.Core.RpcException: Status(StatusCode=Unavailable, Detail="Connect Failed")
The relevant snippets follow.
Any help would be greatly appreciated.
Regards,
Eamonn
C# Method:
private async Task FirebaseSetAsync(string projectId)
{
    var database = FirestoreDb.Create(projectId: projectId);

    var docRef = database.Collection("users").Document("company");

    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Alan" },
        { "Middle", "Mathison" },
        { "Last", "Turing" },
        { "Born", 1912 }
    };

    try
    {
        var result = await docRef.SetAsync(user);
    }
    catch (Exception exception)
    {
        Log.Error("Exception.", exception);
    }
}

web.config snippet:
<system.net>
  <defaultProxy>
    <proxy proxyaddress="http://w.x.y.z:pppp/" />
  </defaultProxy>
</system.net>

Log file snippet:
20:15:26.938 [   7] [(null)] ERROR FirebaseFive.Controllers.HomeController - Exception.
Grpc.Core.RpcException: Status(StatusCode=Unavailable, Detail="Connect Failed")
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Google.Api.Gax.Grpc.ApiCallRetryExtensions.<>c__DisplayClass0_02.<<WithRetry>b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Google.Cloud.Firestore.WriteBatch.<CommitAsync>d__15.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at Google.Cloud.Firestore.DocumentReference.<SetAsync>d__24.MoveNext() --- End of stack trace from previous location where exception was thrown ---    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)    at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
at FirebaseFive.Controllers.HomeController.d__1.MoveNext() in D:\Projects\Git\Firebase\FirebaseFive\FirebaseFive\Controllers\HomeController.cs:line 33

@Eamonn-Duffy The firestore package uses HTTP/2.0 only; and unfortunately there is currently no way to downgrade this to use HTTP/1.1
As far as I can see, squid-cache does not yet support HTTP2, so I guess the only options are to bypass the proxy somehow, or change the proxy to one that supports HTTP2.

@chrisdunelm Thank you very much for the clarification. It explains a lot.
Our Systems people need a list of IP Addresses to bypass the Proxy.
Do you know if there is anywhere I can get such a list of IP Addresses for accessing Firestore and any other associated services/domains?

@Eamonn-Duffy I don't think there is a list of such IP addresses; partly because I would expect the IP addresses to change over time and location.
However the hostname used by firebase is "firestore.googleapis.com" (see the code here).
So you might be able to manually lookup the IP addresses used by this hostname - e.g. "nslookup firestore.googleapis.com", and then bypass your proxy for those IP addresses.
If this is just for dev work, you could possibly put one of those IP addresses in your local machine's "hosts" file to force only one IP address for the hostname, and then only bypass the proxy for that one IP address.
Note that I haven't tried this myself to check it definitely works.

@Eamonn-Duffy Thanks for your feedback; it would seem a shame if only a lack of proxy-HTTP2 support prevents you using firestore, especially as HTTP2 is not exactly new so I'm surprised there are still proxies that don't support it!
If we can be of any further help, please do open a new issue.
I'll close this issue now, but yes you can close an issue you open, and yes generally it's correct to close an issue once you feel it's been brought to a conclusion.


fix: typo

https://github.com/HarshKapadia2/css-linking-types/blob/291c5ba1a684fd6b5767edc9391f7b5b8346e293/assig-4.html#L45

Thank you, @tusharnankani!

Oops!
I thought that this issue referred to the index.html file. Anyways, I found the typo in that file as well.

The typo in assig-4.html was corrected in commit 6b4c8d20a7b0e546a9603a0605882ef96a3b95b9.


Expand GLTF Model support

This PR adds a number of changes to the code of GLTF model loading, as well as a number of features to the support list.

Models that use a base color instead of an albedo texture, should load that color value in the color field of the MaterialMap struct. Should address https://github.com/raysan5/raylib/issues/1025

Occulsion texture are loaded and placed into their proper struct field

Emissive texture and color value (factor) are loaded and placed into their proper struct field

@Gamerfiend thank you very much for the improvement! Maybe I'll review some variables names... :)


trained network

b20 network

Did kata_speed gone

Yes accordingly

Yes accordingly

holy

then there is not good

Accordingly, I think the b60 netwokr is not used to train

Accordingly, I think the b60 netwokr is not used to train

yeah


Allow --pages to accept the page from the same file more than once

Make it so you can do qpdf a.pdf --pages a.pdf 1 b.pdf 1 a.pdf 1 b.pdf 2 -- out.pdf instead of having to specify different strings to represent the paths of the same file when duplicating a page.

never mind

I did not understand ! Is this will fix next release or not ?

It's not a bug. I was mis-remembering the problem. It works in 6.0.0.

So my question in:
https://github.com/qpdf/qpdf/issues/112
is not needed to be asked & no need to use "./" isn't it ?

Correct, for your question in #112, there is no need to use "./".


Facing - Uncaught (in promise) Error: Initialization Failed. No Parent window found.

When trying to run the test-app, I see this on the console. The app is not getting initialized.

VITE v3.0.7
yarn v1.22.19
npm v8.1.0
node v16.13.0

@craterkamath Hi, what's your test app version? Is it 1.0.4? Also, could you provide how you initialize your app?


DynamicNavMesh TileCache.removeObstacle() is protect

TileCache.removeObstacle()
This method is protected，external cannot be accessed

Thanks for reporting. The method has been made public.

can you update it for maven maven repository?thanks☺

Done. Version 1.5.2 has been released


feat: fix fanout test data race

What this PR does:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Codecov Report

Merging #326 (1373cb0) into master (d2b0e7c) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #326   +/-   ##
=======================================
  Coverage   53.08%   53.08%
=======================================
  Files          87       87
  Lines        4506     4506
=======================================
  Hits         2392     2392
  Misses       1970     1970
  Partials      144      144

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


[Feature Request]: Support Onlyoffice integration as documenta backend or at least for viewing attachements

Describe the feature you'd like
It would be really good if onlyoffice document server was supported to view and edit attachements inside of bookstack even better if it was used for the edition backend (along with standard editor and Markdown editor)
Describe the benefits this feature would bring to BookStack users
it would allow for user to edit attachements directly instead of downloading, editing, reuploading also it seems only office editor is better suited for complex documents edition.
Additional context
No response

Thanks for the request although I'd consider this a duplicate of #3064 so I will therefore look to close this off as out of scope unless there's anything specifically new/different to discuss as part of this request.

As per last comment, will close this off as out of scope.


[Cosmos DB] az cosmosdb create: add --key-uri to support adding key vault encryption information

History Notes:
(Fill in the following template if multiple notes are needed, otherwise PR title will be used for history note.)
[Component Name 1] (BREAKING CHANGE:) (az command:) make some customer-facing change.
[Component Name 2] (BREAKING CHANGE:) (az command:) make some customer-facing change.

This checklist is used to make sure that common guidelines for a pull request are followed.

[x] The PR title and description has followed the guideline in Submitting Pull Requests.

[x] I adhere to the Command Guidelines.

add to S166.

@Juliehzl I made the suggested changes, and I think I fixed the broken CI tests

Will this be merged for the next release?

Will this be merged for the next release?

Yes, I can help you merge it. But I have a small suggestion here: can we make the parameter name shorter e.g. --key-uri?

@Juliehzl it looks like the pipeline failed because of a network error. Could you rerun the CI? I made the name change

@shurd can you help confirm if the title is fine to you as release note? If yes, I will help merge it.

Yes the title is good for the release notes


0.9-updates

I'm holding off on the -halogen updates as there's another breaking change coming: slamdata/purescript-halogen#317

Ok, should I close this or just leave it here?

May as well keep this open and just update it once the new Halogen release goes out :) I don't think it will break anything here.

That Halogen PR has been merged now, so if you bump the dependency to ^0.10.0 this is good to go :+1:

bumped

Looks like some other dependency requires a different version of Halogen? The travis error is a problem with resolving a suitable version, not that 0.10 doesn't exist, I think. (It definitely does).

Sorry, hopefully should work now

:tada:


⚠ Bofrost.at has degraded performance

In b06b901, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1882 ms

Resolved: Bofrost.at performance has improved in 773eb9d after 14 minutes.


[Question] How to hook into page changes?

gmail.get.current_page() will provide us with the current page. but is there a way to subscribe to an event that will fire when the page changes?
i need to add toolbar buttons for each inbox-like page. currently when i navigate away from inbox my custom toolbar button disappears.

This has been answered in quite a few other issues, like this one. https://github.com/KartikTalwar/gmail.js/issues/459.
Closing as duplicate.


Fixing NPE from EnergyAcceptorWrapper.java not handling ticks

Code was incorrectly handling non-TileEntity possibilities thus causing an NPE. NPE is now fixed as the system now does not return a null value as easily.

i should probably also note that these crashes seem to be chunk loading related. I'd come back near my base after being far away and then the server would crash with an NPE. Until you guys can come up with a better fix, i recommend accepting this pull request, merging the development branch with master and then releasing a stable build. I know a lot of peeps are waiting on the fluid fix for Mekanism v8 with forge 1365+.


Import statements for some icons doesn't work

It appears icons that have a hypen in their name get messed up when being displayed in the docs.  For example, link-next appears like this (notice the spaces):
var Link next = require('grommet/components/icons/base/Link next');
//or var Link next = Grommet.Icons.Base.Link next
<Link next />

Fixed by https://github.com/grommet/grommet-docs/commit/aa28e2760a34797a754118943326b1fda342af40


Running Traefik with Docker 1.12 Swarm Mode

What I am attempting to do is run Traefik as a docker service in the new swarm mode and have it auto discover all the other services.
docker service create --name traefik -p 80:80 -p 8080:8080 traefik

However, without the ability to bind the docker socket in swarm mode, what can we do to have traefik do auto service discovery for all the other services in docker swarm. Thanks

My goal is to run traefik as a global service in docker swarm and have it communicate with the docker swarm API and use the label of the service (this use case is unique the docker 1.12) in docker swarm for hostname matching.
https://docs.docker.com/engine/reference/commandline/service_create/

@timchunght for sure, we will make traefik compliant with Docker swarm mode :)

We are watching closely the 1.12 feature and how they will evolve between 1.12 and 1.13, but we're definitely going to support that :angel: :wink:

WoW, Can't wait! 👯 🎵

@vdemeester is there any timeline on this feature. Really excited and looking forward to it! Thanks!

I'm new to traefik but searching for reverse proxy solution in docker swarm mode. I think, in the meantime, we can use file backend and route them using domain name with attached network. Swarm already handles service discovery and load balancing.

Im writing a code to support that, lets what happen.

Fixed by #602

Think you mean fixed by #602 ;)


CentOS7 needs bzip2

I see the code commit for it. When can I expect the release of the next version?

+1

same. Looks like no new version has been tagged since 2013...

Finally ended up created a new base box which has bzip2
https://atlas.hashicorp.com/avinashkolluru/boxes/centos7-1508.01-bzip2
Installed bzip2 over centos/7 box image

+1 for adding bzip2 to installation

+1, please publish new rev!

:+1:
Is this project still active? This seems like too important of a plugin to have a 3 year old release..

Just released 0.10.1 which includes 'bzip2'.

Thanks for the turnaround @fnordfish !


Test-Path -IsValid should return $false with an non-rooted path on OpenSUSE 13.2

Steps to reproduce
On OpenSUSE 13.2
	$badPath = " :;!@#$%^&*(){}?+|_-"
	Test-Path -Path $badPath -IsValid

see Test Should return false if the syntax of the path is incorrect when using the IsValid switch
Expected behavior
should return $false
Actual behavior
returns $true
Environment data

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.0.0-alpha
PSEdition                      Core
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   <IP_ADDRESS>
GitCommitId                    v6.0.0-alpha.17
CLRVersion
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

.Net Core stopped the support for OpenSUSE 13.2

Fedora 23 and openSUSE 13.2 recently went out of support, per their respective project lifecycle. As a result, we are now no longer supporting or building for Fedora 23 and openSUSE 13.2.
We will be publishing a more formal policy on Linux distro support, in particular on managing end-of-life of distros. There will be opportunity for feedback on the policy before it is finalized.

Thanks @iSazonov

per #2393 opensuse 13.2 is not supported


Code-Editor improvement suggestions

Godot version:
3.x
OS/device including version:
Not relevant
Issue description:
The GODOT editor UI is still missing some features already existing in almost any modern code editor.
The code editing is the complex part of the engine, but also the one who makes it so powerful and beyond creating simple template games as done by all the game makers tools.
The following features should help reducing editing time:

When we close the editor it should save the open-scenes to the project and re-open them next time we launch the project.
Now it opens the main scene and unless you do a one scene game it is the least important as it is most of the time just a container for the other scenes.
Please add search & replace history so we won't need to type the same search terms repeatedly.
It should probably save the last X search/replace texts.
Search & replace texts should remain when switching between source files.
Today it looks like a bug and very frustrating.
Search & replace - current-match is hard to see. As the editor marks all the occurrences of a search, the current match looks the same as all the other occurrences.
Need to do something to make it stand forward, especially when there are couple of matches on the same line.
Search & replace texts with regular-expressions (Advanced feature)
Show Debug-Line-Marker.
It is hard to know the debugger's current line. A single click to focus on the editor moves the current line marker away from the debug line.

Steps to reproduce:
Minimal reproduction project:

Please open one issue per suggestion (after checking for duplicates) so it's easier to discuss them individually :slightly_smiling_face:

Also check this: #2982

When we close the editor it should save the open-scenes to the project and re-open them next time we launch the project.

Editor Settings -> Interface -> Scene tabs -> Restore Scenes On Reload

Thanks @KoBeWi , I found it in the settings and removed from the list.
Is it OFF by default for a particular reason? It looks like a good feature which should be ON by default.

Hi @Calinou , I did a single list to have all in one place and once it will be complete and I will see that it has no duplicates I will separate it to several issues.
Thanks.

Is it OFF by default for a particular reason? It looks like a good feature which should be ON by default.

The reason is that if you have lots of opened scenes and they are big, it causes long startup time of editor. At least that's the reasoning from people against having it ON by default.

I would love being able to open a second GDscript window on my second monitor

The reason is that if you have lots of opened scenes and they are big, it causes long startup time of editor. At least that's the reasoning from people against having it ON by default.
Yes that makes sense.  Thanks again for that.

I would love being able to open a second GDscript window on my second monitor

There is an open issue about it - #9059

Opened issue per each item in the list.
Thanks.


Refactoring of a boolean return if statement changes return type

Issue description or question
Before:
def sth(somedict):
    if not somedict.get("somekey"):
        return False

    return True

After:
def sth(somedict):
    return somedict.get("somekey")

As you can see a check for the existence of a key which is meant to return a boolean is refactored to returning the actual value under the key which could easily be False.
Code editor or IDE name and version
Pycharm v2019.2.1
OS name and version
OSX 10.14.6

Good point - maybe we should wrap it in a bool in these cases.

OK have pushed a fix - should be included in our next version.

Awesome 🎉


Goaccess stops parsing after one second

Hello
I used go access 1.8.1 on my log file to generate an HTML file and it worked great
Since I updated on 1.9.3, I run my parsing with goaccess access.log -o stats.html, goaccess runs for one second and then stops.
I have only 3 days of logs (the first three days of the file)
when using the --debug-file option, my debug file contains only "Bye."
I am probably doing something wrong, can you help me on this ?
my conf file contains :
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
date-format %d/%b/%Y
time-format %H:%M:%S

and here is some samples of my log file
<IP_ADDRESS> - - [11/Oct/2024:22:56:49 +0000] "GET /fixtures/mochis/Ablelite/Beam%20620/?C=M;O%3DA HTTP/1.1" 200 3168 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
<IP_ADDRESS> - - [11/Oct/2024:22:56:53 +0000] "GET /fixtures/mochis/Ablelite/Beam%20620/?C=M;O%3DD HTTP/1.1" 200 3168 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
<IP_ADDRESS> - - [11/Oct/2024:22:56:58 +0000] "GET /fixtures/mochis/Ablelite/Beam%20620/?C=N;O%3DD HTTP/1.1" 200 3169 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
<IP_ADDRESS> - - [11/Oct/2024:22:57:01 +0000] "GET /fixtures/mochis/Ablelite/EVA%20150S/?C=D;O%3DA HTTP/1.1" 200 3154 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
<IP_ADDRESS> - - [11/Oct/2024:22:57:05 +0000] "GET /fixtures/mochis/Ablelite/EVA%20150S/?C=D;O%3DD HTTP/1.1" 200 3156 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"
<IP_ADDRESS> - - [11/Oct/2024:22:57:09 +0000] "GET /fixtures/mochis/Ablelite/EVA%20150S/?C=N;O%3DA HTTP/1.1" 200 3156 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)"

This should work:
# goaccess log --log-format=COMBINED

It's not, I've downgrade to 1.8.1 with same conf file and it works
Le dim. 10 nov. 2024, 01:07, Gerardo O. @.***> a écrit :

This should work:
goaccess log --log-format=COMBINED
2024-11-09-180636_559x310_scrot.png (view on web)
https://github.com/user-attachments/assets/a87990f1-9bb0-41d5-92ec-08e35c09d5fc
—
Reply to this email directly, view it on GitHub
https://github.com/allinurl/goaccess/issues/2756#issuecomment-2466517122,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABXGT7FARH2YSGJDUHDT7R3Z72PUNAVCNFSM6AAAAABRPINKHOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRWGUYTOMJSGI
.
You are receiving this because you authored the thread.Message ID:
@.***>

It seems like there's an issue with your config file. I recommend deleting it and starting from scratch. The screenshot I shared above is from the latest version, v1.9.3. Let me know if that works for you.

I made some tests.
I really don't understand how my config file should be the issue, it works with 1.8.1 but not with 1.9.3 and if I use "--log-format=COMBINED", I have the same issue
with version 1.8.1 and my config file
command
wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null`
result
[RENDERING /home/wwwroot/logs/blinderkitten.access.log] {1917065} @ {9585/s}
Cleaning up resources...

with version 1.9.3 and my config file
command
goaccess /home/wwwroot/logs/blinderkitten.access.log -o /home/wwwroot/hazlab/stats.html --ignore-crawlers
result
[PARSING /home/wwwroot/logs/blinderkitten.access.log] {6144} @ {6144/s}
Cleaning up resources...

with version 1.9.3 and log combined
command
goaccess /home/wwwroot/logs/blinderkitten.access.log -o /home/wwwroot/hazlab/stats.html --ignore-crawlers --log-format=COMBINED
result
[PARSING /home/wwwroot/logs/blinderkitten.access.log] {6139} @ {6139/s}
Cleaning up resources...

hum, my log file was "corrupted" on the line 7187 -_-
Sorry for bothering you


UUIDListType fields codegen with errors in the Builder

A field defined as :
horseIDs: UUIDListType({
  nullable: true,
  fieldEdge: {
    schema: 'Horse',
    inverseEdge: {
      name: 'competitionEntries',
    },
  },
}),

generates the following code block in getEditedFields:
addField('horseIDs', input.horseIds);
if (input.horseIds !== undefined) {
  if (input.horseIds) {
    this.orchestrator.addInboundEdge(
      input.horseIds, // Error here
      EdgeType.HorseToCompetitionEntries,
      NodeType.Horse,
    );
  }
  if (
    this.existingEnt &&
    this.existingEnt.horseIds &&
    this.existingEnt.horseIds !== input.horseIds
  ) {
    this.orchestrator.removeInboundEdge(
      this.existingEnt.horseIds, // Error here
      EdgeType.HorseToCompetitionEntries,
    );
  }
}

There error is Argument of type 'ID[]' is not assignable to parameter of type 'ID'. Not sure if it matters, but for me the field is defined on a pattern.

The should probably be generated as:
addField('horseIDs', input.horseIds);
if (input.horseIds) {
  input.horseIds.forEach((horseId) =>
    this.orchestrator.addInboundEdge(
      horseId,
      EdgeType.HorseToCompetitionEntries,
      NodeType.Horse,
    ),
  );
}
if (this.existingEnt && this.existingEnt.horseIds) {
  this.existingEnt.horseIds.forEach((horseId) => {
    if (!input.horseIds?.includes(horseId)) {
      this.orchestrator.removeInboundEdge(
        horseId,
        EdgeType.HorseToCompetitionEntries,
      );
    }
  });
}

hmm, i think UUIDlistType with inverseEdge hasn't worked in the past. is this a new field? or did this break with v0.2?

This is a new field. I ended up going a different direction anyways, so I'm not blocked on this, but it's still a valid bug.

Everything else seemed to work except that builder setting edges.


Merge consecutive {% load %} tags

Fixes #8.

Hi @adamchainz ,
First of all - thanks for the tools in Django ecosystem and your blog 👍
As for that issue - is there any plan to add feature to disable that feature?
In my use-case I prefer to have at separate line of loading cause something when I need to find where I use one or another tags by searching in my project by {% load NAME_OF_TAG_OR_FILTER and remove it or adapt depending in my use-case.


"the page you are looking for is currently unavailable"

I have the container running and continuously processing changes, but when I do this query:
curl "http://localhost:12346/api/interpreter?data=node(3470507586)%3Bout geom%3B"
I get:
<!DOCTYPE html>

<title>Error</title>

An error occurred.

Sorry, the page you are looking for is currently unavailable.

Please try again later.

If you are the system administrator of this resource then you should check
the error log for details.

Faithfully yours, nginx.

It mentions some error log, but I can't find one anywhere. There is a changes.log which just lists the changes it has processed so far.

Please provide docker logs for this container (like last 20 lines or whatever you think is relevant).

Sorry for delayed reply; I had to run off to the dentist right after posting.
Environment is Ubuntu 18.04 with all prerequisites installed (from here: https://wiki.openstreetmap.org/wiki/Overpass_API/Installation#Ubuntu_or_Debian_6.0_.28squeeze.29_or_Debian_7.0_.28wheezy.29)
The logs repeat this pattern:
2021-12-14 21:11:47 INFO: Using replication server at https://planet.openstreetmap.org/replication/minute/
2021-12-14 21:11:47 DEBUG: Using given sequence ID 4844410
2021-12-14 21:11:47 DEBUG: Starting download at ID 4844411 (max 100 MB)
2021-12-14 21:11:48 DEBUG: Downloaded change 4844411. (102299 kB available in download buffer)
/app/bin/update_from_dir --osc-dir=/db/diffs --version=2021-12-14T21:10:54Z --flush-size=16
Reading XML file ... finished reading nodes. Flushing to database ...... done.
Reading XML file ... finished reading ways. Flushing to database ....2021/12/14 21:11:53 [crit] 34#34: *1121 connect() to unix:/nginx/fcgiwrap.socket failed (2: No such file or directory) while connecting to upstream, client: <IP_ADDRESS>, server: localhost, request: "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1", upstream: "fastcgi://unix:/nginx/fcgiwrap.socket:", host: "localhost"
<IP_ADDRESS> - - [14/Dec/2021:21:11:53 +0000] "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1" 502 494 "-" "curl/7.64.0"
.. done.
Reading XML file ... finished reading relations. 2021/12/14 21:12:23 [crit] 34#34: *1123 connect() to unix:/nginx/fcgiwrap.socket failed (2: No such file or directory) while connecting to upstream, client: <IP_ADDRESS>, server: localhost, request: "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1", upstream: "fastcgi://unix:/nginx/fcgiwrap.socket:", host: "localhost"
<IP_ADDRESS> - - [14/Dec/2021:21:12:23 +0000] "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1" 502 494 "-" "curl/7.64.0"
Flushing to database ....... done.
Update complete.
There are still some updates remaining
2021-12-14 21:12:27 INFO: Using replication server at https://planet.openstreetmap.org/replication/minute/
2021-12-14 21:12:27 DEBUG: Using given sequence ID 4844411
2021-12-14 21:12:27 DEBUG: Starting download at ID 4844412 (max 100 MB)
2021-12-14 21:12:27 DEBUG: Downloaded change 4844412. (102170 kB available in download buffer)
/app/bin/update_from_dir --osc-dir=/db/diffs --version=2021-12-14T21:11:56Z --flush-size=16
Reading XML file ... finished reading nodes. Flushing to database ...... done.
Reading XML file ... finished reading ways. Flushing to database .....2021/12/14 21:12:53 [crit] 34#34: *1125 connect() to unix:/nginx/fcgiwrap.socket failed (2: No such file or directory) while connecting to upstream, client: <IP_ADDRESS>, server: localhost, request: "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1", upstream: "fastcgi://unix:/nginx/fcgiwrap.socket:", host: "localhost"
<IP_ADDRESS> - - [14/Dec/2021:21:12:53 +0000] "GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1" 502 494 "-" "curl/7.64.0"

So there is actually some problem finding this fcgiwrap.socket file, but I have no idea what it is.

What I can see here is healthchecks calls that are failing. Looks like the updates are working though.
Can you restart the container and show the logs that show from restart until the first healtheck ("GET /api/interpreter?data=[out:json];node(1);out; HTTP/1.1)?
Also, what filesystem backs /db volume?

Restarted the container. From that query, I get:

403 Forbidden

Request forbidden by administrative rules.

The volume is back by a mounted drive with xfs filesystem

From the logs I suspect that dispatcher did not start. Without logs showing why it did not start I cannot help you.


Changing image variant transformation options

How things work
Images (and videos) can have variants in Active Storage. Variants are defined by their operations and Active Storage is set up to generate these just-in-time.
resize_to_fit: [200, 200]

There are two ways to deal with variants and then I will explain how we currently do it in Alonetone.
For the upcoming examples, I'm going to assume there is a variant variable, which is assigned like this:
variant = playlist.cover_image.variant(
  resize_to_fit: [200, 200]
)

Representations controller
When you add <%= image_tag(variant) %> to your template you will create an <img> tag pointing to the representations controller. The Active Storage engine has a route like this:
# variation_key contains the serialized and signed
# contents of the transformation options
/representations/:signed_blob_id/:variation_key/*filename

The controller ensures the variant on S3 and then redirects to a presigned S3 URL. Ensuring the variant has a number of steps:

HEAD request to object
If exists: do nothing
If missing: call processed to generate and upload the variant

The controller also sets Etag, modified, etc headers to allow the browser to cache the image efficiently.
Calling processed
Alternatively you can call processed from the template by using <%= image_tag(variant.processed) %>. This obviously makes rendering the template potentially very slow when variants have to be generated but has the upside that it can be cached pretty well (but not longer than the S3 URL expiration).
What Alonetone currently does
When an image is uploaded Alonetone processes all variants:
variants.each do |transformations|
  playlist.cover_image.variant(**transformations).processed
end

This means all variants should be on S3 and we can just generate a URL to S3 or CloudFront knowing that it should be able to serve the image.
Changing variants
There is no Active Storage solution for changing these transformation options. Let's take the situation where we want to change the variation operations:
# from
resize_to_fit: [200, 200]
# to
resize_to_fill: [200, 200], saver: { quality: 68, optimize_coding: true, strip: true }

What happens:

It effectively orphans S3 objects fro previously generated variants
Files for the new operations have to re-generated

To keep our previously generated variants from getting lot we would have to copy existing S3 objects to the new key and schedule deletion of the old variants. Immediate deletion would break the site until the new code is deployed.
Solutions
Hijack the representations controller solution
We can hijack the representations controller and implement a version that returns a CloudFront URLs. This allows us to remove variants/* from S3 and lazily generate the new variants we need. Downside is added latency when fetching images due to processign and redirect.
cold

GET https://alonetone.com/representations/a3d7/45e7/original.jpg
HEAD https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
vipsthumbnail original.jpg
PUT https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
redirect_to https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg

hot

GET https://alonetone.com/representations/a3d7/45e7/original.jpg
HEAD https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
redirect_to https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg

Change CloudFront to use alonetone.com as origin
We can change CloudFront to use alontone.com and the representations controller route as origin. This allows us to remove variants/* from S3 and lazily generate the new variants we need. Improvement relative to previous solution is that it shifts responsibility of caching files to CloudFront and removes latency entirely when cache is hot.
/representations/:signed_blob_id/:variation_key/*filename
cold

GET https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg
GET https://alonetone.com/representations/a3d7/45e7/original.jpg
HEAD https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
vipsthumbnail original.jpg
PUT https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
self.response_body = open('original.jpg')

warm

GET https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg
GET https://alonetone.com/representations/a3d7/45e7/original.jpg
HEAD https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg
self.response_body = open('original.jpg')

hot

GET https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg

Keep the current approach and implement variation migration
When storing the generated variant a key is generated based on these options.
# When unwrapping the call stack the code looks like this:
variation_key = Digest::SHA256.hexdigest(
  ActiveStorage.verifier.generate(
    transformations,
    purpose: :variation
  )
)
"variants/#{blob.key}/#{variation_key}"

So we can easily write a migration where we copy all S3 objects to their new location:
ImageVariantMigration.create(
  from: { resize_to_fit: [200, 200] },
  to: { resize_to_fill: [200, 200], saver: { quality: 68, optimize_coding: true, strip: true } }
)

When we persist this information we can delete the old objects once the code has been deployed.

First run: copy or generate all new variants
Take down Alonetone
Second run: copy or generate all new variants for recently uploaded files
Deploy new version of Alonetone
Delete objects for old variants

Result is that we are always warm.
warm

GET https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg
GET https://s3.amazonaws.com/alonetone/a3d7/45e7/original.jpg

hot

GET https://cdn.alonetone.com/representations/a3d7/45e7/original.jpg

Bonus option
Finally as a bonus alternative we can move variant generation out of Active Storage and to NGINX + ngx_http_image_filter_module.
location /scaled/ {
  proxy_pass http://<IP_ADDRESS>:10101;
  proxy_cache nginx_cache;
  proxy_cache_key "$proxy_host$uri";
  proxy_cache_valid 7d;
  expires 7d;
}

# Proxy to resize image data
server {
  listen 10101;
  server_name image.alonetone.com;
  location ~ ^/scaled/([0-9]+)x([0-9]+)/(.+) {
      error_page 415 =404 /public/images/blank.jpg;
      image_filter_buffer 128M;
      image_filter_jpeg_quality 68;
      image_filter_interlace off;
      image_filter resize $1 $2;
      rewrite ^ $request_uri;
      rewrite ^/scaled/([0-9]+)x([0-9]+)/(.*) $3 break;
      return 400;
      proxy_pass http://<IP_ADDRESS>:10102/$uri;
      proxy_cache_valid 200 7d;
      expires 7d;
  }
}

# Proxy to fetch data from AWS S3
server {
    listen 10102;
    resolver <IP_ADDRESS>;
    resolver_timeout 60s;
    set $backend alonetone-production.s3.eu-central-1.amazonaws.com;
    proxy_buffering on;
    proxy_http_version 1.1;
    proxy_pass_request_body off;
    proxy_pass_request_headers off;
    proxy_hide_header "x-amz-id-2";
    proxy_hide_header "x-amz-request-id";
    proxy_hide_header "x-amz-storage-class";
    proxy_hide_header "Set-Cookie";
    proxy_ignore_headers Set-Cookie Cache-Control;

    proxy_connect_timeout   60;
    proxy_send_timeout      60;
    proxy_read_timeout      60;

    location ~ ^/(.+) {
        rewrite ^ $request_uri;
        rewrite ^/(.*) $1 break;
        return 400;

        proxy_pass https://$backend/$uri;
        error_page 415 =404 /public/images/blank.jpg;
        proxy_cache nginx_cache;
        proxy_cache_key "temp_$proxy_host$uri";
        proxy_cache_lock on;
        proxy_cache_valid 200 7d;
        expires 7d;
    }
}

Which totally side-steps the variants code in Active Storage and just generates URLs to the image. You could put CloudFront in front of this as well as a CDN.

Thanks for this write up!
It's unfortunate that the rails default is to download, process, upload a file inside the request cycle. Not only is that a poor user experience, but it also clogs rails processes/threads. Perhaps the expectation is that the user uploading experiences the thumbnail delays themselves, so it's "understandable" from a usability perspective. Also, I guess generating 6+ variants in the request cycle on upload (like we are doing now) isn't a silver bullet, though there is (more) user expectation that "I'm uploading, this takes time."
I'll give this a bit more thought and reading. My knee jerk for what we should do is:

Figure out what variants we need "for reals" (get rid of 25x25, add 200x200).

Remove variants/* on s3

Re-run the migrate script.

Hope we never have to change the variant settings en-masse, only add/remove em.

Hope we don't grow too large.

But I will think through the caching issues. I'd like to invest a bit of thinking in future-proofing. So I'm thinking about questions like:

When we have 500k covers and avatars, it's going to be unfriendly to download them all to generate variants. So, some "lazy" generation is going to make sense otherwise we are in Backfill City™ 🌇

If we go the route of cloudfront caching from the app and ever have to flush cache, it's going to make browsing fairly miserable and clunky.

Why doesn't the representation controller implementation support cloudfront natively. That's sort of red flaggy to me but looks like it's easy to work around https://github.com/gitcoinco/code_fund_ads/pull/115/files

It's unfortunate that the rails default is to download, process, upload a file inside the request cycle.

Active Storage was built to be a simple drop-in solution for file uploads for most people. I'm guessing their reasoning is that large websites with lots of traffic will have to implement their own specific solution anyway.
They probably wanted to avoid any kind of background processing because it would require shared filesystems between web and background servers.
I'm guessing the design decision was that networks and servers are fast enough to deal with synchronous processing when you have a site that takes less than 1rpm traffic.
Also; nobody generates 6 variants, you really shouldn't need more than 2 every IMO.

If we go the route of cloudfront caching from the app and ever have to flush cache, it's going to make browsing fairly miserable and clunky.

Yeah, maybe for the first 5 minutes or so, I don't think there are that many images on Alonetone that are seen frequently.

Why doesn't the representation controller implementation support cloudfront natively.

CDNs work best for sites that take repeated traffic to the same assets. I'm willing to bet that most sites using Rails are internal or authenticated sites and only a handful of users look at the same images. Using an edge network solution is going to have very little impact on the speed of those sites. Also; I think people will eventually merge some sort of CDN support into Active Storage.

How I'm seeing things right now:
Variants created on upload, stored on s3, served by Cloudfront
❤ Consistently fast, single GET request to cloudfront per image
❤ Doesn't pollute the alonetone rails server with image requests
❤ CPU from Variant creation depends on write behavior, not read behavior
👎 New Variant sizes are hard to make. D/L all originals and iterate through them. Backfill City™ 🌇
❓ Potential tipping point where backfilling becomes cost prohibitive? Unlikely to hit anytime soon, we are at 20k pictures, 5gb originals.
Variants lazily created, served by Cloudfront with TTL of 1 year
❤ When cache is warm, Consistently fast, single GET request to cloudfront per image
❤ Ability to modify variants easily without need for migrations or redownloading originals
👎 Degrades UX when cache is cold, adds a minimum of ~500ms latency.
👎 Every image request is now a request to rails/puma, goes against Performance 101 best practices, images not served when rails app down.
❓ An increase in traffic potentially results in an increase of rails requests / vips CPU. I was thinking googlebots etc might keep cloudfront cache warm for the long tail, but actually it'll likely only do that for 1 or 2 edge locations.

I don't think it's very hard to do a quick and dirty implementation of the second way on my development setup if you want to know how slow it actually gets.

I'm fairly reluctant to send all image requests through Rails. I'm wondering if there's a hybrid solution where we can serve Cloudfront URLs, it checks s3, if variant isn't present, it's built.

Looks like the migration was ~50 bucks even for our small amount of data, mainly for GetObject.

🌞


Don't block the opening of an existing wallet that uses a local backend even when blockchain syncing ongoing

An activity related to #1377 would be to allow a user that has a Liana wallet already installed with local backend to not need to wait the blockchain syncing to open it. This is particularly relevant for the case of Liana managed bitcoind.
A practical usecase would be one that we encountered recently: if a user needs to urgently receive funds and he didn't open the wallet for a while, he should not have to wait for the blockchain synchronization to be able to generate an address. He should be able to open the wallet while being aware of the fact that the wallet is still syncing and that the information could be not up-to-date.
Since the solution for #1377 was to show the "syncing" state until the first poll runs and since the first poll typically runs only after the blockchain synchronization*, as a first step it should be enough to just eliminate the syncing step in the GUI and directly open the wallet while still performing the sync in background. The fact that the wallet is syncing is already communicated to the user by the syncing state implemented in the above PR.
A second step of this work (which is not part of this issue), could be to improve the information communicated to the user by showing the progress on the blockchain syncing if this is happening, while keeping it generic for the cases in which it is synced and we are waiting for the wallet to catch up (i.e. the poller has not run yet).
For the moment, I would not apply this change to the IBD situation, i.e. if the user never opened the wallet before (checked via the wallet height). This is because the progress bar step after the backend choice seems to be an important moment for the user to realize the time and space implications of using a managed bitcoind and could affect its choice of using other more immediate solutions such as Liana Connect. This is valid also considering that we don't currently give the possibility of switching to a different backend after opening the wallet (other than recreating it). This point is open to discussion and could be also targeted later, when we will have a proper communication of the progress of the syncing also in the wallet home.
*The only corner case in which this is not the case seems to be when the user broadcasts a transaction while the blockchain is still syncing. This automatically triggers a poll and would make the syncing state disappear. As per the discussion we had with @jp1ac4, we could manage such case by not automatically performing the poll after broadcasting a transaction if the blockchain sync is still ongoing, which seems a consistent behavior also in general.

*The only corner case in which this is not the case seems to be when the user broadcasts a transaction while the blockchain is still syncing. This automatically triggers a poll and would make the syncing state disappear. As per the discussion we had with @jp1ac4, we could manage such case by not automatically performing the poll after broadcasting a transaction if the blockchain sync is still ongoing, which seems a consistent behavior also in general.

I've added a commit to https://github.com/wizardsardine/liana/pull/1376 to not poll after user broadcasts a spend if blockchain is syncing.

For the moment, I would not apply this change to the IBD situation

Seems fair. A user might want to deposit their coins to the wallet though, but maybe this is a edge case itself.
Example: I set up a good Liana multisig, I store my keys securely, and I want to move my coins before the IBD completes.
(i'm only going to save a couple of days)

Another option could be to open the wallet once the the IBD progress reaches X%.

For the moment, I would not apply this change to the IBD situation

Seems fair. A user might want to deposit their coins to the wallet though, but maybe this is a edge case itself. Example: I set up a good Liana multisig, I store my keys securely, and I want to move my coins before the IBD completes. (i'm only going to save a couple of days)

I personally believe that, based on how we show the information right now, the risk of skipping to the home screen of the wallet during IBD without understanding that it will require a lot of time and disk space is higher than the benefit of this edge case. We also offer a good workaround with Liana Connect (or Electrum).
I think we should reconsider this when we will show more details on the blockchain syncing.


MRG, ENH: Minor speedup of permutation tests

Minor refactoring to speed up permutation tests. This PR brings about 1~2% speedup (best case 5%).
Testing
Setup
import numpy as np
import time
from mne.stats import permutation_cluster_1samp_test

def large_samples_perm(n_perm=100, n_space=100, n_time=100):
    noise_level = 20
    n_time_1 = n_time
    n_time_2 = n_time
    normfactor = np.hanning(20).sum()
    rng = np.random.RandomState(42)
    condition1_1d = rng.randn(n_time_1, n_space) * noise_level
    for c in condition1_1d:
        c[:] = np.convolve(c, np.hanning(20), mode="same") / normfactor
    pseudoekp = 10 * np.hanning(round(n_space / 2))[None, :]
    condition1_1d[:, round(n_space / 2):] += pseudoekp

    thresh_tfce = dict(start=0, step=0.2)
    permutation_cluster_1samp_test(condition1_1d, threshold=thresh_tfce,
                                   n_permutations=n_perm, tail=0, seed=1,
                                   buffer_size=None)

n_perm=100, n_space=100, n_time=100
%timeit large_samples_perm()
# master: 436 ms ± 13.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# opt: 413 ms ± 2.04 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

5.2% speedup
n_perm=1000, n_space=100, n_time=100
%timeit large_samples_perm(n_perm=1000, n_space=100, n_time=100)
# master: 3.85 s ± 13.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# opt: 3.75 s ± 6.31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

2.6% speedup
n_perm=1000, n_space=300, n_time=300
%timeit large_samples_perm(n_perm=1000, n_space=300, n_time=300)
# master: 5.83 s ± 22.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# opt: 5.73 s ± 31 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

1.7% speedup
n_perm=1000, n_space=1000, n_time=1000
t0 = time.time()
large_samples_perm(n_perm=1000, n_space=1000, n_time=1000)
t1 = time.time()
elapsed = t1 - t0
# master: 17.224292039871216
# opt: 16.965471029281616

1.5% speedup

Current results
n_perm=100, n_space=100, n_time=100
370 ms ± 4.16 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
15.13% speedup
n_perm=1000, n_space=100, n_time=100
3.39 s ± 39.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
11.95% speedup
n_perm=1000, n_space=300, n_time=300
5.11 s ± 39.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
12.35% speedup
n_perm=1000, n_space=1000, n_time=1000
14.764962434768677
14.28% speedup
The performance is better than I think :partying_face:

Thanks @yh-luo !

(FYI, we are not notified of title changes, so thanks for the ping to review -- it probably would have taken me a while to notice otherwise)


Bug: the shop portal and user profile are missing the footer

Description
The shop portal and User profile do not have a footer.
Proposed Solution
I would like to add the footer to both of these links.
Screenshots

Browser 🥦
Google Chrome
Checklist ✅

[X] I checked and didn't find similar issue
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue (blank for no).

Could you assign me this issue

@TahaHameed23 I would love to work on this issue

Hey @Yash-Sajwan24 , you can start to work on this. But we would have the Footers only on pages that do not have a Coming Soon.

@tamalCodes I have submitted a pull request for your review. Please take a look at it. https://github.com/MilanCommunity/Milan/pull/1169


Add test to the pipeline before pushing the image

closes #21

@jschirrmacher do you care to review this change? I have managed to find a way to test the image within the action before pushing it. We really only know if this works once we have merged, since there are steps in the workflow that only run on main.

So now you create and push a docker image in any case, right?
Apart from the number of images that are created, I have no concerns.

Actually, the number of images (or rather layers) is unchanged, unless we actually have a faulty image. The retagged images are unchanged compared to the first one.
Thanks for looking over it. Using the registry was the only way possible, since docker cannot locally load multi architecture images built with buildx.


Request to fix Coup de Grace

"As a full-round action, you can use a melee weapon to deliver a coup de grace (pronounced “coo day grahs”) to a helpless opponent. You can also use a bow or crossbow, provided you are adjacent to the target.
You automatically hit and score a critical hit. If the defender survives the damage, he must make a Fortitude save DC 10 + damage dealt) or die. A rogue also gets her extra sneak attack damage against a helpless opponent when delivering a coup de grace."
As stated by RAW.
In-game, however, the Coup de Grace has some random calculation for the Fort Save that is nowhere near the actual rules. I have no idea what it uses to calculate.
Example:

The DC should be 10 + 44, as stated by RAW, but somehow it ends up being 29?
29 doesn't make any sense tho, even if you'd assume it's not taking the Crit damage into account, cause that's not even half.
I'd love to have you take a crack at this, as it's massively annoying to set up a Coup de Grace and then have basic enemies automatically succeed their saves cause they have +20 Fort Save or whatever.

Already an issues for this: #20


Fix for Chrome 58 issue which require SAN field in certificates

Which platform are you running AnyProxy
Windows 7.
The version of the AnyProxy
3.10.2
Your expected behavior of AnyProxy
Works  with Chrome 58 version with https protocol
The actual behavior of AnyProxy
Doesn't work properly because certificates generated by anyproxy are not recognized by the browser as valid.  The SAN  field is missing in certificates
The log of the error
'ERR_CERT_COMMON_NAME_INVALID'

certGeneratorFinal.zip

Here is as attachment the fix
certGeneratorFinal.zip

Hi @JulienBeaudeau
Thanks so much for your fix, the issue should have been fixed in 4.x@beta, you can take a try:)


Librelens Takeoff checklist

[X] create project
[x] #6
[ ] automatically detect new releases at lensapp/lens and create pull requests for this repository
[ ] add new documentation to the repo

[x] #8

[ ] test builds

[ ] #5
[ ] #9
[ ] #10

[ ] fully rename OpenLens to LibreLens

[X] OpenLens
[ ] k8slens.dev

[ ] triage and fix detected issues in the build process
[ ] check all (stale) branches if they are still needed
[ ] create communications and documentation infrastructure
[ ] create support workflows

@PhilippKuntschik I wonder if librelens should see a major security overhaul as one of the early steps, like removing the overload/injection libs or even a partial downgrade. Can open a discussion, if you think it does not fit in this setup PR, to gain ppls attention and discuss ideas separately first (such a step would def. need some ppl with coding exp).

I'll be testing the build once a mac binary is built and released. In the long term, maintenance works better with an organisation where more than one person has the keys. So i'm looking forward to switching over to this. Also if this is going to become a true fork, we probably want to look at renaming (LibreLens seems suitable) since that will make it easier to get things like Homebrew and various linux package managers working once we have more things sorted out down the track.

@jerch, a security audit is a good idea, as soon as there are enough resources available. For this to happen, the project requires at least

competencies in typescript security (or resources to have an independent audit).
competencies in typescript development
some people that help merging when a new upstream release is available.

I am also open to downgrade to any version. A discussion about which versions to support could happen in a separate issue. Would you initialize this?
@techdragon you are correct. I will update the checklist accordingly. A mac build should be available here: https://github.com/LibreLens/lens/releases/tag/v6.0.0 I opened a separate issue to collect any obstacle with the build: https://github.com/LibreLens/lens/issues/5
Right now, the packages are still unsigned since I miss the required infrastructure (an apple computer) and the development account. If someone has a "spare" apple developer account, please let me know.

@PhilippKuntschik while its not really "spare" (since I use it) but I do have a personal Apple Developer account that I don't mind using to help out 😄
Github have documented things pretty well but I'd need the appropriate org/repo level membership/permissions to be able to safely edit the appropriate encrypted secrets to securely store the various necessary secret files and keys.

@PhilippKuntschik while its not really "spare" (since I use it) but I do have a personal Apple Developer account that I don't mind using to help out smile
Github have documented things pretty well but I'd need the appropriate org/repo level membership/permissions to be able to safely edit the appropriate encrypted secrets to securely store the various necessary secret files and keys.

I sent you an invite for the organization. Give me a ping at<EMAIL_ADDRESS>so that we could have a more direct sync. A big question that you may be able to answer is:
Does signing a package with your personal Apple Developer Account unalterably bind the project resources to your account? In other words: Does you signing the packages with your personal account forever require you to sign these packages? If so, I would argue that a more organizational approach is required.

@PhilippKuntschik Thanks for that invite, I've accepted that just now.
Since I've never needed the answer to that very relevant question I did some digging, and it has a slightly complicated answer unfortunately. There is no technical lock in tying the application to being signed by the same person/organisation... so yes it can be changed... however if the owner level identity of the signer changes, there is the potential for various APIs that check the value of the code signing identity, to throw up a warning to the user for the obvious reason that if this identity has changed without their knowledge someone may have swapped the app for a malicious version. ( Covered in part here -> https://developer.apple.com/forums/thread/669350 )
Since I wasn't opposed to sorting out the setup of a more formal "organisation" account to mitigate that problem, I decided to look into it, and it turns out to be quite a pain. In order to setup an organisation accounts that multiple developers can be invited to, share access to, replace certificates in future with another one setup by a different developer in the organisation without potential security warnings, Apple requires a DUNS number, which requires giving Dun & Bradstreet a pile of formal information like company names, phone numbers, and other such things... Effectively its "register as a business" territory. This is obviously an annoying situation for a random open source team to be in, and its been that way for half a decade ( see here ->  https://opensource.stackexchange.com/questions/5379/duns-signing-open-source-application )
So either a formal legal entity needs to be created to get a DUNS number and proceed with setting up a multi-developer Apple developer ID account, or the limitations inherent in using a single individual's Apple Developer ID to perform the code signing and notarisation needs to be accepted.
And I've replied with all this publicly in the issue here rather than via email since, if we do go down the path of using my Apple Developer ID it felt appropriate to keep the decision process as public as possible in the interest of giving anyone downloading the application being as much trust in the signed binary as possible and to help mitigate any future potential trust issues with a change over if later on months/years from now a more formal legal entity is setup to look after everything.

@PhilippKuntschik Thanks for that invite, I've accepted that just now.
Since I've never needed the answer to that very relevant question I did some digging, and it has a slightly complicated answer unfortunately. There is no technical lock in tying the application to being signed by the same person/organisation... so yes it can be changed... however if the owner level identity of the signer changes, there is the potential for various APIs that check the value of the code signing identity, to throw up a warning to the user for the obvious reason that if this identity has changed without their knowledge someone may have swapped the app for a malicious version. ( Covered in part here -> https://developer.apple.com/forums/thread/669350 )
Since I wasn't opposed to sorting out the setup of a more formal "organisation" account to mitigate that problem, I decided to look into it, and it turns out to be quite a pain. In order to setup an organisation accounts that multiple developers can be invited to, share access to, replace certificates in future with another one setup by a different developer in the organisation without potential security warnings, Apple requires a DUNS number, which requires giving Dun & Bradstreet a pile of formal information like company names, phone numbers, and other such things... Effectively its "register as a business" territory. This is obviously an annoying situation for a random open source team to be in, and its been that way for half a decade ( see here -> https://opensource.stackexchange.com/questions/5379/duns-signing-open-source-application )
So either a formal legal entity needs to be created to get a DUNS number and proceed with setting up a multi-developer Apple developer ID account, or the limitations inherent in using a single individual's Apple Developer ID to perform the code signing and notarisation needs to be accepted.
And I've replied with all this publicly in the issue here rather than via email since, if we do go down the path of using my Apple Developer ID it felt appropriate to keep the decision process as public as possible in the interest of giving anyone downloading the application being as much trust in the signed binary as possible and to help mitigate any future potential trust issues with a change over if later on months/years from now a more formal legal entity is setup to look after everything.

That was exactly right. these things have to be discussed in public. I asked that specific question because we had a similar case back in the days when I developed android apps and we "lost" the signing certificate.
My "from the hip" train of thought would be the following: we rename the application to librelens-beta as to not block the forks name on the long-run and give it a go using a individual developer certificate. In case this project has to become the main open source package provider for lens, I would consider creating a legal entity like a "Verein" in German (something like club/association/foundation in english? basically a NPO) which controls the signing keys. Nonetheless, I would like to give this more thought until maybe next week. Thoughts from you?

I think there's not a lot of risk that GitHub would "lose" the key data so it really just comes down to the potential issues around swapping the key in the future if that becomes suddenly necessary, if its not suddenly necessary we could pre-warn users what to expect if we plan a key change in advance... and given the organisational complexity inherent getting a DUNS number and getting a multi-developer Apple Developer account setup... I think going the individual key is the right call for at least the time being.
Longer term I think setting up as either a stand alone legal entity or as a "sub-project" of an existing open source associated legal entity (the term I'm familiar with for this sort of legal relationship is "auspicing") is definitely the right way to go. Once that legal entity situation is dealt with a DUNS number would either exist already or can be created, Apple stuff setup, and the signing key can be swapped for one that designates that organisation account as the primary identification, so any subsequent keys won't cause issues since having more than one person able to create signing keys would good from a maintenance point of view.
I'm not sure about the rename though, given the ability to give advanced warning (and the fact I can't actually find any example of what the macOS warning dialog popup from changing the signing key would look like, so I'm wondering how likely it is that a user will see a scary warning of some kind) it might be better to go ahead without the name change, but I don't have a strong feeling on this one and other than that calling it a "beta" might make it harder to get Homebrew package related stuff setup since they have some policies about forks, versioning, and naming https://docs.brew.sh/Acceptable-Casks#finding-a-home-for-your-cask
I definitely think your right @PhilippKuntschik about taking a little to think on it before making choices, the social/organisational stuff around forks, be they friendly or otherwise, are important enough we should definitely try and get it right.
I would also welcome the thoughts from anyone else following long, this is meant to be a community focused fork after all.

I am also open to downgrade to any version. A discussion about which versions to support could happen in a separate issue. Would you initialize this?

Currently to me it seems the overall sentiments are against such a step, which would include code reworks right from the beginning. I dont see other arguments into such a direction beside my own. From my perspective the need for a hardfork is an unavoidable step sooner or later (I think mirantis will work on making builds from their OSS repo harder, or even drop it completely in the future).
The lengthy discussions about easy deploy-able builds are ok and help to bridge to current rollout gap, but dont answer yet the pressing question of proper code maintenance in longer terms. For this we need at least a few coders, but I see no one else offering something in that regard. If we cannot get more peeps involved here, any "build-through repo with signed binary output" thingy is doomed to fail, once mirantis removed key functionality from their OSS repo,  lets say in 3 - 6 months.
While I think that this will happen, I am not keen to be the only one offering some coding and security reworks upfront. I think it is not worth yet to be discussed, unless we have more coders aboard. Which may never happen, or not before mirantis seriously cuts into the OSS functionality and we are stuck with aging code anyway. So currently thats a "no, not yet" from my side.

I think there's not a lot of risk that GitHub would "lose" the key data so it really just comes down to the potential issues around swapping the key in the future if that becomes suddenly necessary, if its not suddenly necessary we could pre-warn users what to expect if we plan a key change in advance... and given the organisational complexity inherent getting a DUNS number and getting a multi-developer Apple Developer account setup... I think going the individual key is the right call for at least the time being.
Longer term I think setting up as either a stand alone legal entity or as a "sub-project" of an existing open source associated legal entity (the term I'm familiar with for this sort of legal relationship is "auspicing") is definitely the right way to go. Once that legal entity situation is dealt with a DUNS number would either exist already or can be created, Apple stuff setup, and the signing key can be swapped for one that designates that organisation account as the primary identification, so any subsequent keys won't cause issues since having more than one person able to create signing keys would good from a maintenance point of view.
I'm not sure about the rename though, given the ability to give advanced warning (and the fact I can't actually find any example of what the macOS warning dialog popup from changing the signing key would look like, so I'm wondering how likely it is that a user will see a scary warning of some kind) it might be better to go ahead without the name change, but I don't have a strong feeling on this one and other than that calling it a "beta" might make it harder to get Homebrew package related stuff setup since they have some policies about forks, versioning, and naming https://docs.brew.sh/Acceptable-Casks#finding-a-home-for-your-cask
I definitely think your right @PhilippKuntschik about taking a little to think on it before making choices, the social/organisational stuff around forks, be they friendly or otherwise, are important enough we should definitely try and get it right.
I would also welcome the thoughts from anyone else following long, this is meant to be a community focused fork after all.

Thank you @techdragon for your elaboration. You may have been able to silence my fears. The story with android back then played around the fact that its play store would never accept an app-update with a signing-key other than the one used to create the initial version of the app. If you lose that key, you can only delete the previous version of the app and initialize a new app. I realized that this is only peripherally our use case since the users would not install Lens from a store, but from github. Switching certificates could be resolved by the user removing the app from the system and installing the new version.
You should have the required permissions to add secrets/certificates and to update the github workflows. If you feel confident in sharing your key for signing the binaries, you are free to do so.

From my perspective the need for a hardfork is an unavoidable step sooner or later (I think mirantis will work on making builds from their OSS repo harder, or even drop it completely in the future).

Fully agree with you. Their announcement of a "web browser version" while the issue about OSS builds is not resolved made me think that they may move away from the installed version completely. I shudder thinking about the security implications of such a version, especially since I expect way to many cluster not utilizing RBAC at all.
Creating this repo primarily has two goals for me: i) fully automating the necessary CI/CD workflows so that big chunks of work are already solved, once a real fork is necessary and ii) Getting a better overview and understanding of the code, its organization and its quality. It seems that they never removed any stale/merged/closed branch ever, which made exploring the tree a bit hard.

..
While I think that this will happen, I am not keen to be the only one offering some coding and security reworks upfront. I think it is not worth yet to be discussed, unless we have more coders aboard. Which may never happen, or not before mirantis seriously cuts into the OSS functionality and we are stuck with aging code anyway. So currently thats a "no, not yet" from my side.

Thank you for speaking freely. I don't blame you and I don't expect you to do anything at all. With regards to code reworks, I do not think there will happen much in the foreseeable future, since it is not the current goal of this repository. (I may solve some bugs if they really annoy me, though). I hope I can still count on your help by reporting any issue that you come across in the binaries.

It would be nice if you add chocolatey support to your TODO list.


Determines at runtime is UIApplication is available as per #1082

:+1: But also suggest lowering the deployment target to 8.0 on the framework.

:+1:

On 8.2 at least it is possible to call [UIApplication sharedApplication] inside an extension so these checks will pass when used in an extension. The net result is tricking the compiler into letting you use non-extension safe API which will pass app review (possibly) but could still lead to instability during use.

Yeah, that's exactly the purpose. But why would it lead to instability 'during use'? Do you have examples? We have one extension going to review and live as we speak. We're waiting to hear back from it.
On Tue, Apr 14, 2015 at 9:30 AM, A UiBrian<EMAIL_ADDRESS>wrote:

On 8.2 at least it is possible to call [UIApplication sharedApplication] inside an extension so these checks will pass when used in an extension. The net result is tricking the compiler into letting you use non-extension safe API which will pass app review (possibly) but could still lead to instability during use.
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-92835676

A call to applicationDelegate will return nil
How openURL is meant to work inside an extension is undefined

NS_EXTENSION_UNAVAILABLE was presumably created for a reason, and given that [UIApplication sharedApplication] actually works inside of an extension the assumption is that there were problems there that Apple didn't want to address right now so they made it a compile time error.

What’s your point here?
On Tue, Apr 14, 2015 at 9:54 AM, A UiBrian<EMAIL_ADDRESS>wrote:

A call to applicationDelegate will return nil
How openURL is meant to work inside an extension is undefined
NS_EXTENSION_UNAVAILABLE was presumably created for a reason, and given that [UIApplication sharedApplication] actually works inside of an extension the assumption is that there were problems there that Apple didn't want to address right now so they made it a compile time error.

Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-92857699

My point is that your runtime check for availability of UIApplication sharedApplication will always return true. We don’t know why Apple designated the API unsafe so your change means that we are now using API considered unsafe in our extension.

More specific to this exact commit:

what happens when an extension starts a background task?

and then the extension is killed?

I don't know the answers to these questions, I could speculate, but I have no concrete knowledge. So for the sake of having a singular build target (which I agree is preferable) we're introducing an unknown quantity into our extensions and we're having to fake out the compiler to do so.

Extensions can’t start background tasks through sharedApplication, as it’s not available.
We all agree a single build target is the way to go, so all sanity checks have to be performed at runtime. You’re welcome to explore the issue :)
I believe the current tests showed a proper behaviour on the simulator. As it wasn’t impossible to test on real devices, that was our best shot to get a fellow use to get his extension in review. We’ll see how the submission go and it will be easy to refactor/improve the code once we can confirm/infirm the workaround is properly designed.
On Tue, Apr 14, 2015 at 10:24 AM, A UiBrian<EMAIL_ADDRESS>wrote:

More specific to this exact commit:

what happens when an extension starts a background task?

and then the extension is killed?
I don't know the answers to these questions, I could speculate, but I have no concrete knowledge. So for the sake of having a singular build target (which I agree is preferable) we're introducing an unknown quantity into our extensions and we're having to fake out the compiler to do so.

Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-92870688

That's actually what I have been trying to convey: I have explored it further, and they can start background tasks because sharedApplication is available. Here is proof: https://github.com/auibrian/SafeExtension
The runtime checks do nothing, they always pass. That's my entire point.
Further, from past experience again: Apple don't seem to be checking overly hard for this, because even without using performSelector I've had an app approved where I unintentionally used sharedApplication from an extension. (You can work around the check by changing where/what you link etc) So I won't be surprised at all if the app is accepted but it will mean nothing.

So what's your solution?
On Tue, Apr 14, 2015 at 11:30 AM, A UiBrian<EMAIL_ADDRESS>wrote:

That's actually what I have been trying to convey: I have explored it further, and they can start background tasks because sharedApplication is available. Here is proof: https://github.com/auibrian/SafeExtension
The runtime checks do nothing, they always pass. That's my entire point.
Further, from past experience again: Apple don't seem to be checking overly hard for this, because even without using performSelector I've had an app approved where I unintentionally used sharedApplication from an extension. (You can work around the check by changing where/what you link etc) So I won't be surprised at all if the app is accepted but it will mean nothing.
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-92910493

Chime in here. Quick update on my app review. There was a legal thing I had to fix on my app, but after an appeal its still "In Review" so we will see where it goes.

AND APPROVED :+1:

Alright!
On Tue, Apr 14, 2015 at 7:27 PM, bassrock<EMAIL_ADDRESS>wrote:

AND APPROVED :+1:
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93109552

Processing for the store right now but once its available: https://itunes.apple.com/us/app/disney-wait-times/id963982614?ls=1&mt=8
Its (hopefully) the first DisneyLand Wait Time app for the Watch.

Good job man! Glad we could help!
On Tue, Apr 14, 2015 at 7:29 PM, bassrock<EMAIL_ADDRESS>wrote:

Processing for the store right now but once its available: https://itunes.apple.com/us/app/disney-wait-times/id963982614?ls=1&mt=8
Its (hopefully) the first DisneyLand Wait Time app for the Watch.
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93110101

As I said, this isn't a surprise. I already had an app approved that uses extension unsafe API. That doesn't mean you should do it, that's the entire problem with this PR.

On Apr 14, 2015, at 7:27 PM, bassrock<EMAIL_ADDRESS>wrote:
AND APPROVED
—
Reply to this email directly or view it on GitHub.

So what's the alternative?
On Tue, Apr 14, 2015 at 7:55 PM, A UiBrian<EMAIL_ADDRESS>wrote:

As I said, this isn't a surprise. I already had an app approved that uses extension unsafe API. That doesn't mean you should do it, that's the entire problem with this PR.

On Apr 14, 2015, at 7:27 PM, bassrock<EMAIL_ADDRESS>wrote:
AND APPROVED
—
Reply to this email directly or view it on GitHub.

Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93117776

@auibrian would be helpful if you could provide a solution

Yeah... The goal is that the community don't wonder about compiler warnings, Carthage builds properly, the framework works in all environment and that the framework don't lead to App Store rejection.
So far all of the above are OK. You're welcome to superseed the solution, and PR.
On Tue, Apr 14, 2015 at 7:57 PM, bassrock<EMAIL_ADDRESS>wrote:

@auibrian would be helpful if you could provide a solution
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93117948

PR'd in November: https://github.com/rs/SDWebImage/pull/953
I also can't tell if you are being purposely obtuse: You are purposely circumventing a compiler warning in order to only have to compile something once, and in the process you are doing exactly what Apple have requested you not do: access sharedApplication. I've proven to you that the code WILL run in an extension and that your runtime check is not actually doing anything but your only concern is whether it passes app review. I don't think the community prefers potentially unsafe code to compiler warnings. Whether or not you made it past app review this is not a PR that should be accepted.

You're not giving answers. Your solution imposes a preprocessor macro, that leads to incompatibility with Carthage. Therefore, yours should not be accepted either. I'm open to solutions. I'm not blaming you on your PR that you're not Carthage compatible. So please, either be constructive, or let the maintainers decide wether it should be accepted or not. And tested in extensions, the behavior is fine, doesn't lead to instability or crash. provide some code that will force crash the extension or app. We'll refine the solution. I guess we can detect with another runtime attribute, property, class that we're running into an extension.
On Tue, Apr 14, 2015 at 8:10 PM, A UiBrian<EMAIL_ADDRESS>wrote:

PR'd in November: https://github.com/rs/SDWebImage/pull/953
I also can't tell if you are being purposely obtuse: You are purposely circumventing a compiler warning in order to only have to compile something once, and in the process you are doing exactly what Apple have requested you not do: access sharedApplication. I've proven to you that the code WILL run in an extension and that your runtime check is not actually doing anything but your only concern is whether it passes app review. I don't think the community prefers potentially unsafe code to compiler warnings. Whether or not you made it past app review this is not a PR that should be accepted.
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93119491

The problem is plain simple:

Single framework

No warnings

Extension and watch kit safe, at runtime and review

You're welcome to come with a solution that solves all the above
On Tue, Apr 14, 2015 at 8:10 PM, A UiBrian<EMAIL_ADDRESS>wrote:

PR'd in November: https://github.com/rs/SDWebImage/pull/953
I also can't tell if you are being purposely obtuse: You are purposely circumventing a compiler warning in order to only have to compile something once, and in the process you are doing exactly what Apple have requested you not do: access sharedApplication. I've proven to you that the code WILL run in an extension and that your runtime check is not actually doing anything but your only concern is whether it passes app review. I don't think the community prefers potentially unsafe code to compiler warnings. Whether or not you made it past app review this is not a PR that should be accepted.
Reply to this email directly or view it on GitHub:
https://github.com/rs/SDWebImage/pull/1085#issuecomment-93119491

Any plans on when this will be added? As AppBoy has a direct dependency to SdWebImage, we are forced to stay behind on a buggy cocoa pods version as SDWebImage cannot build for extensions. Would be great to hear from you!

@rs Any chance of this getting merged?

Suggesting this: https://github.com/rs/SDWebImage/pull/1182 as a replacement to this recently merged issue.


API using Fluent interface of library, return all times 200, and empty response body

Issue Summary
When I have gone to work with a part of the package, I have noticed that there is a strange behavior, not very suitable, in the whitelabel method, when it is used at least in fluent mode.
I always return 200

The same if the domain exists or not.
Whether it is verified or not.
Always 200 Ok and always with an empty body []

Steps to Reproduce

This is the first step
This is the second step
Further steps, etc.

Code Snippet

$domain_whitelabeled = 'domain.tld';

// First test
$sg = new \SendGrid('mytoken'));
$query_params = json_decode('{"domain": $domain_whitelabeled);
$response = $sg->client->whitelabel()->domains()->get(null, $query_params);

// response dumped OK
array:3 [▼
  0 => SendGrid\Response {#2441 ▶}
  1 => 200
  2 => array:1 [▼
    0 => array:12 [▼
      "id" => 12753033
      "user_id" => 23123539
      "subdomain" => "em8774"
      "domain" => "domain.tld"
      "username" =><EMAIL_ADDRESS>      "ips" => []
      "custom_spf" => false
      "default" => false
      "legacy" => false
      "automatic_security" => true
      "valid" => false
      "dns" => array:3 [▶]
    ]
  ]
]

// Not  in sendgrid
$domain_not_whitelabeled='notlabeled.tld';
$sg = new \SendGrid('mytoken'));
$query_params = json_decode('{"domain": $domain_whitelabeled);
$response = $sg->client->whitelabel()->domains()->get(null, $query_params);

array:3 [▼
  0 => SendGrid\Response {#2441 ▼
    #statusCode: 200
    #body: "[]"
    #headers: array:24 [▶]
  }
  1 => 200
  2 => []
]

// Wrong $query_params
// return all domains whitelabeled

Technical details:

sendgrid-php version: 7.11.0
php version: 8.0

I think is not correct.

Thanks for submitting a GitHub issue! We are very sorry that you are running into this problem. In order to better serve you, as this does not present itself as a library specific issue, we would like to ask that you reach out to our support team at support.sendgrid.com.


Edit this page button not working on this page

File: engine/reference/builder.md

Thanks for reporting this! I'm closing it as a duplicate of #6102


Personal page

Additional Information

[x] I have read the contributing docs (if this is your first contribution)
[x] This is not a duplicate of any existing pull request

Related Issues
https://github.com/BuidlGuidl/batch4.buidlguidl.com/issues/8
Your ENS/address:
0x2Ca3355E6e09e54bE4A70F44d6709DABA08fC786

@carletex , thanks!
Fixed on mobile:

Good stuff!!


min function does not working as expected

I tired to use the built-in min() function on an array containing negative numbers, but the result was wrong.
{% set a = [-5, 5, 10, -10, 20, -20] %}
{{ min(a) }}

Expexted: -20
Got: -10
This is because you do a.sort() then return a[0] and in JS the sort does this:
const a = [-5, 5, 10, -10, 20, -20];
a.sort();
// a => [-10, -20, -5, 10, 20, 5]

https://github.com/NightlyCommit/twing/blob/master/src/lib/extension/core/functions/min.ts#L10
Better (faster) approach would be:
return Math.min.apply(null, array);

The max function does not affected because you wrote a proper compare function there.

Will be fixed in<EMAIL_ADDRESS>


Formatter is appending to file

This just started happening today after months of using this plugin. Whenever I save a file, the entire contents of that file are formatted then appended to the end, with messed up formatting in the beginning. For example:
Before

Heading

<form method="post" action="{% url 'a_url' %}" class="a_class">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit" name="action">Submit</button>
</form>

After

Heading

<form method="post" action="{% url 'a_url' %}" class="a_class">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" name="action">
Submit
</button>
</form>

Heading

<form method="post" action="{% url 'a_url' %}" class="a_class">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit" name="action">Submit</button>
</form>

From what I can tell, there have been no updates or environment changes in the past day.
Environment
Version: 1.70.2 (user setup)
Commit: e4503b30fc78200f846c62cf8091b76ff5547662
Date: 2022-08-16T05:35:13.448Z
Electron: 18.3.5
Chromium: 100.0.4896.160
Node.js: 16.13.2
V8: <IP_ADDRESS>-electron.0
OS: Windows_NT x64 10.0.19044

Also mentioned this in the DJLint thread. Unsure of where the fault lies here, but if I roll back to djlint==1.12.0 the issue goes away. A commenter on that thread noted:
https://github.com/Riverside-Healthcare/djLint/issues/359#issuecomment-1232952888

It sounds like djlint isn't being called correctly.

Fixed in https://github.com/Riverside-Healthcare/djLint/pull/361.

Added a note to the README with a solution to this problem - https://github.com/monosans/djlint-vscode/commit/8996069b139e899b2ca5127527dd4ffe8460eb8b.


Fails to run

Upon starting a shrunken adventurer run and running the script, you get:
Script exception: Function 'to_location( )' undefined. This script may require a more recent version of KoLmafia and/or its supporting scripts. (.../KoLmafia/NEWMAF/scripts/loopsmol/loopsmol.js#9761)

Are you on the latest version of the script? I think this was fixed by #29.

Yeah seems it was failing to update, I had to delete and reinstall the project. Thanks


Add files via upload

A basic tic tac toe game using javascript

Thanks for the PR. The website looks dope. It has been merged.
I will be glad if you can leave a star on this repository.


Fix basic zemu test

basic sign & verify test not working for unclear reason. Got the transaction from ledger-tendermint-rs.
Now working. I had to modify the ledger app and update the way we process chunks. The JS app has also been updated in some ways.

Continuous integration is missing here. I will add it

Continuous integration is missing here. I will add it

Closing.. it is included in https://github.com/Zondax/ledger-tendermint/pull/3

Closing.. it is included in https://github.com/Zondax/ledger-tendermint/pull/3


Clarity on <IP_ADDRESS> and <IP_ADDRESS>

This article mentions the requirement to allow traffic to and from <IP_ADDRESS> and <IP_ADDRESS> for VMs to work properly.
With default NSG rules, the allow Internet outbound should allow communication to those addresses.
For the inbound rules, however, the document isn't clear if these are allowed. The LoadBalancer tag explanation states, "The tag translates to an Azure datacenter IP address where Azure's health probes originate."
Does "an Azure datacenter IP address" mean <IP_ADDRESS> and <IP_ADDRESS>, or something else, or both of those as well as other IPs?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 5e905802-0b08-4b3b-25ec-0f88c023bc32
Version Independent ID: f31325e5-49ea-b28c-336e-10f2a3fc12b4
Content: Azure security groups overview
Content Source: articles/virtual-network/security-overview.md
Service: virtual-network
GitHub Login: @jimdial
Microsoft Alias: jdial

@dcbrown16 Thanks for the feedback. We are actively investigating and will get back to you soon.

@dcbrown16 the IP Addresses <IP_ADDRESS> and <IP_ADDRESS> are for health monitoring of a VM, and are different from a Load Balancer's Health Probe, which can be used for more than just a VM. The Health Monitoring IP Addresses are vital for a VM to to report to Azure that it is running, and blocking those addresses can cause your VM to show as "Failed" in the portal.

@TravisCragg-MSFT the page you linked to explicitly says "All Load Balancer health probes originate from the IP address <IP_ADDRESS> as their source."
Can you please confirm with engineering if both <IP_ADDRESS> and <IP_ADDRESS> are included in the AzureLoadBalancer service tag?

@dcbrown16 I am following up now to find out exactly what IPs are included in the AzureLoadBalancer service tag.

@dcbrown16 the AzureLoadBalancer service tag just allows the <IP_ADDRESS> IP Address, not the .25 Address.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

@TravisCragg-MSFT
I ran across this again and need to reconfirm.
About <IP_ADDRESS> (we seem to have lost the last "4" above), the doc states "If you block traffic to or from these IP addresses, a virtual machine may not function properly."
However, that address would not be part of the VirtualNetwork tag and according to your findings is not part of the AzureLoadBalancer tag.
By default, those two tags are the only ones allowed inbound.
Should we conclude that the default configuration of an NSG blocks an essential IP address?
This is contrary to my experience - setting up a default NSG does not impact Metrics reporting or anything else that I can see.

@dcbrown16 a default NSG will allow internet both inbound and outbound, and that will include these IP Addresses.

@TravisCragg-MSFT a default NSG does not seem to allow inbound Internet traffic in my experience or per the documentation. Here's a screenshot of a freshly made NSG - for inbound it allows vnet and LB, then denies all else, as documented.

The "allow selected ports" dialog when creating a VM would let you open ports for HTTP, HTTPS etc., but it isn't the default.
I added the default NSG to a VM and it has no problems running, so the monitoring IPs must be let through somewhere. Can you reconfirm that <IP_ADDRESS> isn't included in the AzureLoadBalancer tag? That would seem to make the most sense, unless there is a secret rule allowing the monitoring IPs or something.

@dcbrown16 the <IP_ADDRESS> IP Address has many purposes, including the Azure Instance Metadata Service. In my test environment, I had no issues with the VM & Load balancing when traffic was blocked coming from the <IP_ADDRESS> IP.
The documentation states that this could have an effect on the VM, and should be something to keep in mind when configuring your NSGs.
We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.

@TravisCragg-MSFT Honestly, I am still confused regarding @dcbrown16 's original issue. I understand that the LoadBalancer tag allows traffic from <IP_ADDRESS>.
However, do we ever have to explicitly take the link-local IP address <IP_ADDRESS> in the NSG rules? Is it even possible to block inbound and/or outbound link-local IP addresses through NSG rules?

Yes, this was never satisfactorily resolved. Either the document is wrong that <IP_ADDRESS> needs to be allowed, the LoadBalancer tag allows it, or it is allowed by some means that isn't exposed in the NSG.

I agree clarification is required and could we also get clarification as to if both <IP_ADDRESS> and <IP_ADDRESS> are both bi-directional, ie connections are initiated in both directions?  Perhaps <IP_ADDRESS> is only outbound and that's why the default rules work!?!

Just as a followup, I did some packet sniffing and although I saw outbound packets to <IP_ADDRESS>, I never saw inbound packets from <IP_ADDRESS> in the several days I let the sniffer run on a VM NIC.  (I did add an NSG rule to allow this traffic explicitly just in case.) So maybe this IP address has only outbound requirements and is thus covered by the default NSG.
So then I tried this with a VM behind an NVA (firewall) and user-defined routes.  No traffic for <IP_ADDRESS> ever passes through the NVA even though the routing should force it to and I do see the packets at the VM NIC!  How the heck are they getting where they are supposed to?
Check the host routing table. A (linux) VM with default networking provided by Azure DHCP, has routes for both these special IP addresses:
[soandso@host]# sudo netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
<IP_ADDRESS>         <IP_ADDRESS>        <IP_ADDRESS>         UG        0 0          0 eth0
<IP_ADDRESS>        <IP_ADDRESS>         <IP_ADDRESS>   U         0 0          0 eth0
<IP_ADDRESS>   <IP_ADDRESS>        <IP_ADDRESS> UGH       0 0          0 eth0
<IP_ADDRESS>     <IP_ADDRESS>         <IP_ADDRESS>     U         0 0          0 eth0
<IP_ADDRESS> <IP_ADDRESS>        <IP_ADDRESS> UGH       0 0          0 eth0
Given the traffic is not seen at my NVA, I have to assume this traffic heads to the subnet gateway and passes directly into the Azure backbone (leaving my VNet and my control) without going through UDR handling and my NVA!  One could argue this is smart but on the other hand why not admit to it and document it?
It would be great to get clarification of these details!  If I do not need such rules on my NVA then it saves me work.  If one of the IPs is only outbound, it simplifies the NSG rules.  Why are you (Azure) making this hard?
Thanks.

MS Azure Tech support confirms that traffic to the special IPs, <IP_ADDRESS> and <IP_ADDRESS> are routed at the subnet gateway by an invisible routing table and thus will never appear at an NVA or other egress device specified by implementing User-defined routes.  The special routing for these magic IP addresses can be "seen" in the VM host-OS routing tables but not where they are implemented at the subnet routing tables, at least not using the portal's "effective routes" feature.

Thanks @gjustice. I attempted a PR with that info, we'll see what the authors want to do.


swift4.1 error

public static func buildPublicKeyHashOut(pubKeyHash: Data) -> Data {
return Data() + OP_DUP + OP_HASH160 + OP_0 + pubKeyHash + OP_EQUALVERIFY + OP_CHECKSIG
}

I fixed by:
public static func buildPublicKeyHashOut(pubKeyHash: Data) -> Data {
    var tmp = Data() + OP_DUP + OP_HASH160 + OP_0 + pubKeyHash + OP_EQUALVERIFY
    return tmp + OP_CHECKSIG
}

@Jax1993 make a pull request:)

https://github.com/kishikawakatsumi/BitcoinKit/pull/67

This should be fixed.
Thanks for reporting the issue!
We already fixed in yenom/BitcoinCashKit, and it is now on PR.


Feature/civ 65

JIRA link (if applicable)
https://tools.hmcts.net/jira/browse/CIV-65
https://tools.hmcts.net/jira/browse/CIV-67
Change description
Add new action INITIATE_GENERAL_APPLICATION under claim to enable user to initiate an application creation process. Add first 2 screens and corresponding fields.
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[x] No

Deleting PR and creating PR with another branch


fix Quit cooldown task when remote fs attached to policy id is not found

Proposed changes
Issue Number: close #xxx
If the user has dropped the storage policy, the corresponding cooldown task should correctly quit the following procedure instead of limitless retry.

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

run buildall

run buildall