Provide simple JSON endpoint of releases nuget.exe versions

This is a requirement coming from VSTS.

A list of nuget.exe versions that is only appended to. Versions never should not be removed.
This file should be machine readable – JSON file is the clear candidate.
A version string and download URL for each nuget.exe version.
The list of versions should be updated at the same time as the dist.nuget.org page
a. Vsts should likely be able to test out v 4.x after it is posted to DIST, but before it is posted to that page – for partner signoff testing, etc…

/cc @rrelyea
The shape of the JSON is up to us but should be more minimal than:
http://dist.nuget.org/index.json
One proposal:
[
    {
        "version": "4.0.0-rc4",
        "url": "https://dist.nuget.org/win-x86-commandline/v4.0.0-rc4/nuget.exe"
    },
    {
        "version": "3.5.0",
        "url": "https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe"
    },
    {
        "version": "3.4.4",
        "url": "https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe"
    },
    {
        "version": "3.3.0",
        "url": "https://dist.nuget.org/win-x86-commandline/v3.3.0/nuget.exe"
    },
    {
        "version": "3.2.0",
        "url": "https://dist.nuget.org/win-x86-commandline/v3.2.0/nuget.exe"
    },
    {
        "version": "2.8.6",
        "url": "https://dist.nuget.org/win-x86-commandline/v2.8.6/nuget.exe"
    }
]

(The major reason why http://dist.nuget.org/index.json isn't sufficient is that it only shows the last 7 or so versions and omits older versions.)

index.json is a view concern. I don't want people coupled to that. We should be able to change the freely given it was never a supported contract.

Spoke to @rrelyea offline and decided we could broaden this for more consumers:
{
    "nuget.exe": [
        {
            "version": "4.0.0",
            "url": "https://dist.nuget.org/win-x86-commandline/v4.0.0/nuget.exe",
            "stage": "Released",
            "uploaded": "2017-03-03T09:30:00.0000000-08:00"
        },
        {
            "version": "3.5.0",
            "url": "https://dist.nuget.org/win-x86-commandline/v3.5.0/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2016-12-19T15:30:00.0000000-08:00"
        },
        {
            "version": "3.4.4",
            "url": "https://dist.nuget.org/win-x86-commandline/v3.4.4/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2016-12-19T15:30:00.0000000-08:00"
        },
        {
            "version": "3.3.0",
            "url": "https://dist.nuget.org/win-x86-commandline/v3.3.0/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2016-02-22T14:30:00.0000000-08:00"
        },
        {
            "version": "3.2.0",
            "url": "https://dist.nuget.org/win-x86-commandline/v3.2.0/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2015-09-16T14:00:00.0000000-07:00"
        },
        {
            "version": "2.8.6",
            "url": "https://dist.nuget.org/win-x86-commandline/v2.8.6/nuget.exe",
            "stage": "ReleasedAndBlessed",
            "uploaded": "2015-09-01T12:30:00.0000000-07:00"
        }
    ]
}

Schema
{
  "title": "NuGet Tool Versions",
  "description": "The schema for versions of nuget.exe available on the download site.",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "nuget.exe": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "version": {
            "description": "The Semantic Version string of the tool. Regex from https://github.com/mojombo/semver/issues/232.",
            "type": "string",
            "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$"
          },
          "url": {
            "description": "The absolute URL to download this version of the tool.",
            "type": "string"
          },
          "stage": {
            "description": "An enum to describe just how vetted this version of the tool is. 'ValidationOngoingNotFinalRelease' versions are not yet visible on the download site and should be validated by partners.\\n'Released' has been made available on the download site but is not yet recommended for wide-spread consumption.\\n'ReleasedAndBlessed' has been made available on the download site and is recommended for consumption.",
            "type": "string",
            "enum": [
              "ValidationOngoingNotFinalRelease",
              "Released",
              "ReleasedAndBlessed"
            ]
          },
          "uploaded": {
            "description": "The ISO-8601 time when the version was uploaded.",
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{7}-\\d{2}:\\d{2}$"
          }
        }
      }
    }
  }
}

Perhaps reuse the json document that powers dist.nuget.org? New API keep popping up daily it seems.

Perhaps reuse the json document that powers dist.nuget.org? New API keep popping up daily it seems.

I wouldn't consider this API part of V2 or V3. The only purpose here is to communicate released nuget.exe versions.
Concerning the existing JSON document on dist.nuget.org, that is a view concern where versions are periodically removed. VSTS wants a document where versions are not removed.

Would still be cool to have it documented though. TeamCity, AppVeyor, MyGet, Travis, Jenkins, ... could benefit from this API too.

This data is now available here:
http://dist.nuget.org/tools.json
This is a better alternative to http://dist.nuget.org/index.json.


Fix a bit upward position with newly trained checkpoints in simple-romp

Hello author, Excuse me, I would like to ask what is the approximate final loss function. I changed the batchsize to 16, and the loss function is bigger after it runs.
Epoch: [119][1593/1653] Time 0.35 RUN 0.77 Lr 5.000000000000001e-07 Loss 220.56 | Losses {'reg': 167.9, 'det': 52.66, 'CenterMap': 52.66, 'P_KP2D': 42.3, 'MPJPE': 29.3, 'PAMPJPE': 37.73, 'Pose': 56.1, 'Shape': 0.14, 'Prior': 2.32}
Epoch: [119][1643/1653] Time 0.34 RUN 0.77 Lr 5.000000000000001e-07 Loss 219.14 | Losses {'reg': 170.75, 'det': 48.4, 'CenterMap': 48.4, 'P_KP2D': 44.36, 'MPJPE': 29.71, 'PAMPJPE': 37.84, 'Pose': 56.38, 'Shape': 0.14, 'Prior': 2.33}

How are the evaluation results? The loss of CenterMap(for detection) is a bit high. The rest are fine.Get Outlook for Android

Thank you very much for your reply, with simple_romp test, the human body position is a bit upward.
My outlook account is: guoees@outlook

Hi, there,
This bug is caused by some different configuration during training.
With your trained model, please set smpl_mesh_root_align=True during inference.
To use simple-romp, I just commited a new version to support root_align.
Please git clone the latest repo. Then re-install simple-romp via
pip uninstall simple-romp
cd ROMP/simple-romp
python setup.py install

Then please run simple-romp with --root_align=True with your checkpoints.
Thanks for the bug report!

Hi, there,
This bug is caused by some different configuration during training.
With your trained model, please set smpl_mesh_root_align=True during inference.
To use simple-romp, I just commited a new version to support root_align.
Please git clone the latest repo. Then re-install simple-romp via
pip uninstall simple-romp
cd ROMP/simple-romp
python setup.py install

Then please run simple-romp with --root_align=True with your checkpoints.
For instance, romp -m image -i demo.jpg --root_align=True --show
Thanks for the bug report!

Thanks a lot for your help

.
show in active_cionfigs
smpl_mesh_root_align: true.

I used the latest simple_romp and I got a new error.

I try to modify the default value. The returned result has not changed, the position is still a little up

Hi,

The config smpl_mesh_root_align is for the old ROMP, not simple-romp.

2.Caution: Maybe you need to uninstall the previous simple-romp via
pip uninstall simple-romp

Then you can upgrade your simple-romp via
pip install --upgrade simple-romp

If you want your modification works, please run

cd ROMP/simple_romp
python setup.py install

4. It would be much better if you can show me your test image results!


chore(spin-pluginify.toml): add description

A description will be necessary to pass plugin manifest validation when we'd like to add this to the spin-plugins repo.
Please advise on ideal wording.

@itowlson would we like to list this trigger plugin in fermyon/spin-plugins?  I'd be happy to PR adding its manifest.  Also understand if we'd like to hold off per its experimental status.

@vdice yeah, we should probably list it there, despite my nerves about doing so.  Thanks!


Ability to update/replace statements

I am looking for a tool to do mass edits to a Wikibase. It would be useful if the same tool could do both adding missing data and updating existing data. Based on my understand, currently OpenRefine is only able to add new items and new statements.
Proposed solution
Brute force solution
In Wikibase schema editor, have a checkbox to replace existing statements for the given property. Internally this would be implemented as deletion of all statements for the subject using that property. This would be sufficient for our case.
Ideal solution
"Reconcile" statements. Ideally the Query Service can be used to output statement identifiers that uniquely identify the statement. Otherwise a manual reconciliation is needed (but limited to the statements of the already reconciled item). Then the value (in another column) could be updated in OpenRefine and it would automatically update the existing statement instead of creating a new one.
Alternatives considered
I think I saw a suggestion to export to quickstatements and duplicate lines so that they are preceded by deletions. But this is rather difficult to do manually.
I think I could write my own tool that processes either the quickstatements v1 format, but it wouldn't know which columns should be overwritten. I could also write my own tool that just takes CSV (from Query Service, then modified) that does this, but for the end user there are already many tools to learn for the data update process (Wikibase, Query Service, OpenRefine, QuickStatements, this new tool?).
Additional context
https://nimiarkisto.nikerabb.it/w/index.php?title=Item:Q5106574&diff=6759469&oldid=6759468 example of an attempted edit creating a new statement instead of updating it.
#2116 is similar to this request, but per my understanding it is about updating qualifiers rather than the value of the statement.
https://github.com/OpenRefine/OpenRefine/issues/2999#issue-667012515 mentions that deleting statements is currently not possible.

Yes this is a very legitimate request. The tricky part is to make this feature work for a wide range of use cases. Therefore we need to make multiple things configurable:

How do we match the generated statements with the existing ones? Only on the basis of the property? Property and value? Property, value and some qualifiers?
What do we do when we find a matching statement? Replace it by the new one, keep the existing one, merge qualifiers?
I am keen to work on this but it'll have to wait a few months still since I am busy with a migration to a new architecture (https://github.com/OpenRefine/OpenRefine/projects/7)

Asynchronous distributed updates are a difficult problem in general, but I think may be impossible to do reliably without at least some minimal machinery on the backend. Freebase had an entire framework that was put in place for bulk updates (which also included things like sampled quality reviews, etc). I think that, at a minimum, you'll need some type of "commit if conflict free" primitive that could capture the state of the world that you reconciled against and tell if it had changed since then.
It feels dangerous to try and innovate in this space as long as the Wikidata team is ignoring needs of bulk updates. They really need to put the architecture in place to support clients like OpenRefine.

It is true that Wikibase-side support for this would be great. Pinging @addshore who has been thinking about this recently.
That being said, in the current context of Wikibase, I would not be too worried about atomicity: the edit rate on Wikidata is still really manageable and the chances that simultaneous editing ends up in data races is pretty low (compared to, for instance, the problems stale reconciliation data can cause).

In the context of the Wikimedia Commons integration project, we have updated Wikidata-Toolkit to a new version, which breaks the limited deduplication of statements we had, so I am going to build it back better, more configurable.


Clockwise or Anticlockwise direction

provide support for rotating the gauge progress either clockwise or anticlockwise

Hi! Thanks for suggestion, will look into it.


Logout

Hi... Thank You in advance for your great library!
I'm testing it with my Genus One to understand the best configuration for the winter.
Why isn't there a Logout/Disconnect method for closing the session?

Hi @nocelab!
I think ariston cloud does not provide session close. At least I did not find it. Based on my experience the access token works about 30 hours after you receive it.

I tried to Get /R2/Account/Logout and seems to correcly nullify the Access Token


Emit GroupFeatureChanged event on class patch.

When a class has changed, emit a GroupFeatureChanged event.

:boom: Acceptance test Core-API-Tests-ocis-storage-7 failed. Further test are cancelled...


Adding Tanzu GemFire native-client samples and new videos

Added new samples for the Tanzu GemFire .NET client.
Added new videos for Tanzu GemFire.

Feedback:

Consider making your Sample titles slightly more descriptive. Readers may find these outside of the sites page structure (eg Google), so something like "Tanzu GemFire .NET Client - Using Client Cache XML & Properties File"
Consider adding a content section to Video "Tanzu GemFire - RAM vs SSD vs Hard Disks"
Otherwise this LGTM.


Service Unavailable Without Heavy Load

Really nice tool.
But I just encountered such a mistake.
Error encountered while requesting the server.
HTTP ERROR 503
Problem accessing /api/processFulltextDocument. Reason:

    Service Unavailable

Then I looked through the documents and found this.

A 503 error with the default parallel mode normally means that all the threads available to GROBID are currently used. The client need to re-send the query after a wait time that will allow the server to free some threads. The wait time depends on the service and the capacities of the server, we suggest 2 seconds for the processHeaderDocument service.

But I don't have a heavy load. I only requested the interface a few times.
A few hours later, it was still the same.
My CPU is 4 cores with 8G RAM. It should not be the reason for the lack of memory.
I'm confused about what caused this.
My log file like this.
07:54:00.259 [main] INFO org.grobid.service.main.GrobidServiceApplication - Found conf path: /opt/grobid/grobid-home/config/grobid.yaml
07:54:00.263 [main] WARN org.grobid.service.main.GrobidServiceApplication - Running with default arguments: "server" "/opt/grobid/grobid-home/config/grobid.yaml"
07:54:00.263 [main] INFO org.grobid.service.main.GrobidServiceApplication - Configuration file: /opt/grobid/grobid-home/config/grobid.yaml
INFO  [2021-12-17 07:54:01,646] io.dropwizard.server.DefaultServerFactory: Registering jersey handler with root path prefix: /
INFO  [2021-12-17 07:54:01,649] io.dropwizard.server.DefaultServerFactory: Registering admin handler with root path prefix: /
INFO  [2021-12-17 07:54:01,650] io.dropwizard.assets.AssetsBundle: Registering AssetBundle with name: grobidAssets for path /*
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/opt/grobid/grobid-service/lib/guice-4.1.0.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
INFO  [2021-12-17 07:54:02,182] com.hubspot.dropwizard.guicier.DropwizardModule: Added guice injected health check: org.grobid.service.resources.HealthResource
WARN  [2021-12-17 07:54:02,190] org.grobid.core.main.GrobidHomeFinder: Grobid config file location was not explicitly set via 'org.grobid.config' system variable, defaulting to: /opt/grobid/grobid-home/config/grobid.yaml
INFO  [2021-12-17 07:54:02,223] org.grobid.service.GrobidRestService: Initiating Servlet GrobidRestService
INFO  [2021-12-17 07:54:02,225] org.grobid.core.main.LibraryLoader: Loading external native sequence labelling library
INFO  [2021-12-17 07:54:02,230] org.grobid.core.main.LibraryLoader: Loading Wapiti native library...
INFO  [2021-12-17 07:54:02,230] org.grobid.core.main.LibraryLoader: Native library for sequence labelling loaded
INFO  [2021-12-17 07:54:02,233] org.grobid.core.lexicon.Lexicon: Initiating dictionary
INFO  [2021-12-17 07:54:02,233] org.grobid.core.lexicon.Lexicon: End of Initialization of dictionary
INFO  [2021-12-17 07:54:02,234] org.grobid.core.lexicon.Lexicon: Initiating names
INFO  [2021-12-17 07:54:02,234] org.grobid.core.lexicon.Lexicon: End of initialization of names
INFO  [2021-12-17 07:54:02,880] org.grobid.core.lexicon.Lexicon: Initiating country codes
INFO  [2021-12-17 07:54:02,880] org.grobid.core.lexicon.Lexicon: End of initialization of country codes
INFO  [2021-12-17 07:54:03,059] org.grobid.core.factory.GrobidPoolingFactory: Number of Engines in pool active/max: 1/10
INFO  [2021-12-17 07:54:03,059] org.grobid.service.GrobidRestService: Initiating of Servlet GrobidRestService finished.
INFO  [2021-12-17 07:54:03,065] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.resources.HealthResource as a root resource class
INFO  [2021-12-17 07:54:03,066] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.GrobidRestService as a root resource class
INFO  [2021-12-17 07:54:03,066] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.exceptions.mapper.GrobidServiceExceptionMapper as a provider class
INFO  [2021-12-17 07:54:03,067] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.exceptions.mapper.GrobidExceptionsTranslationUtility as a provider class
INFO  [2021-12-17 07:54:03,067] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.exceptions.mapper.GrobidExceptionMapper as a provider class
INFO  [2021-12-17 07:54:03,067] com.hubspot.dropwizard.guicier.DropwizardModule: Registering org.grobid.service.exceptions.mapper.WebApplicationExceptionMapper as a provider class
INFO  [2021-12-17 07:54:03,070] org.grobid.service.main.GrobidServiceApplication: Service config=GrobidServiceConfiguration{server=DefaultServerFactory{applicationConnectors=[io.dropwizard.jetty.HttpConnectorFactory@45d64d27], adminConnectors=[io.dropwizard.jetty.HttpConnectorFactory@36dfbdaf], adminMaxThreads=64, adminMinThreads=1, applicationContextPath=/, adminContextPath=/}, logging=DefaultLoggingFactory{level=INFO, loggers={org.apache.pdfbox.pdmodel.font.PDSimpleFont="OFF"}, appenders=[io.dropwizard.logging.ConsoleAppenderFactory@26cb5207, io.dropwizard.logging.FileAppenderFactory@2687725a]}, metrics=MetricsFactory{frequency=1 minute, reporters=[]}}
INFO  [2021-12-17 07:54:03,095] io.dropwizard.server.ServerFactory: Starting grobid-service

 _______  _______  _______  ______  _________ ______     _______  _______  _______          _________ _______  _______
(  ____ \(  ____ )(  ___  )(  ___ \ \__   __/(  __  \   (  ____ \(  ____ \(  ____ )|\     /|\__   __/(  ____ \(  ____ \
| (    \/| (    )|| (   ) || (   ) )   ) (   | (  \  )  | (    \/| (    \/| (    )|| )   ( |   ) (   | (    \/| (    \/
| |      | (____)|| |   | || (__/ /    | |   | |   ) |  | (_____ | (__    | (____)|| |   | |   | |   | |      | (__
| | ____ |     __)| |   | ||  __ (     | |   | |   | |  (_____  )|  __)   |     __)( (   ) )   | |   | |      |  __)
| | \_  )| (\ (   | |   | || (  \ \    | |   | |   ) |        ) || (      | (\ (    \ \_/ /    | |   | |      | (
| (___) || ) \ \__| (___) || )___) )___) (___| (__/  )  /\____) || (____/\| ) \ \__  \   /  ___) (___| (____/\| (____/\
(_______)|/   \__/(_______)|/ \___/ \_______/(______/   \_______)(_______/|/   \__/   \_/   \_______/(_______/(_______/

INFO  [2021-12-17 07:54:03,198] org.eclipse.jetty.setuid.SetUIDListener: Opened application@734ce281{HTTP/1.1,[http/1.1]}{<IP_ADDRESS>:8070}
INFO  [2021-12-17 07:54:03,198] org.eclipse.jetty.setuid.SetUIDListener: Opened admin@49b89425{HTTP/1.1,[http/1.1]}{<IP_ADDRESS>:8071}
INFO  [2021-12-17 07:54:03,201] org.eclipse.jetty.server.Server: jetty-9.4.18.v20190429; built: 2019-04-29T20:42:08.989Z; git: e1bc35120a6617ee3df052294e433f3a25ce7097; jvm 11.0.11+9
WARN  [2021-12-17 07:54:03,514] org.glassfish.jersey.internal.inject.Providers: A provider org.grobid.service.exceptions.mapper.GrobidExceptionsTranslationUtility registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.grobid.service.exceptions.mapper.GrobidExceptionsTranslationUtility will be ignored.
 Sending service unavailable.
<IP_ADDRESS> - - [17/Dec/2021:14:49:14 +0000] "POST /api/processHeaderDocument HTTP/1.1" 503 277 "-" "Go-http-client/1.1" 1069
<IP_ADDRESS> - - [17/Dec/2021:14:50:36 +0000] "GET /api/isalive HTTP/1.1" 200 4 "-" "Go-http-client/1.1" 2
ERROR [2021-12-17 14:50:37,540] org.grobid.service.process.GrobidRestProcessFiles: Could not get an engine from the pool within configured time. Sending service unavailable.
<IP_ADDRESS> - - [17/Dec/2021:14:50:37 +0000] "POST /api/processHeaderDocument HTTP/1.1" 503 277 "-" "Go-http-client/1.1" 1046
<IP_ADDRESS> - - [17/Dec/2021:14:50:38 +0000] "GET /api/isalive HTTP/1.1" 200 4 "-" "Go-http-client/1.1" 1
ERROR [2021-12-17 14:50:39,800] org.grobid.service.process.GrobidRestProcessFiles: Could not get an engine from the pool within configured time. Sending service unavailable.
<IP_ADDRESS> - - [17/Dec/2021:14:50:39 +0000] "POST /api/processReferences HTTP/1.1" 503 273 "-" "Go-http-client/1.1" 1056
ERROR [2021-12-17 14:51:05,866] org.grobid.service.process.GrobidRestProcessFiles: Could not get an engine from the pool within configured time. Sending service unavailable.
<IP_ADDRESS> - - [17/Dec/2021:14:51:05 +0000] "POST /api/processFulltextDocument HTTP/1.1" 503 279 "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36 Edg/96.0.1054.53" 2045
<IP_ADDRESS> - - [17/Dec/2021:15:31:36 +0000] "HEAD /api/processFulltextDocument HTTP/1.1" 405 277 "-" "python-requests/2.17.3" 3
ERROR [2021-12-17 16:02:04,844] org.grobid.service.process.GrobidRestProcessFiles: Could not get an engine from the pool within configured time. Sending service unavailable.
<IP_ADDRESS> - - [17/Dec/2021:16:02:04 +0000] "POST /api/processFulltextDocument HTTP/1.1" 503 279 "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36 Edg/96.0.1054.53" 2124

Did I do something wrong that caused this to happen？

Hello !
It seems that you are using biblio-glutton online for consolidation and it is not responding (probably because I stopped the biblio-glutton demo... it was overloaded by queries). You can set to crossref the consolidation option on the server with the config file if you just occasionally use Grobid or install your own biblio-glutton if the usage is more intensive.
I need to better manage connectivity issues with biblio-glutton.

Thanks very much! I'll try to deploy the biblio-glutton.

I'll try to deploy the biblio-glutton.

biblio-glutton is very heavy to install and deploy, it's for scaling beyond CrossRef web API capacities and having richer metadata, slightly more accurate matching. For a normal usage, a few thousand PDF, using CrossRef API for consolidation is good (see here).

Thanks for the replay.
I've tried both these two methods.
When I use CrossRef Web API, I met an error looks like a network error. Maybe I should start a proxy service for this?

And then I try to build the docker image of biblio-glutton. But I find out this.
Building biblio
Step 1/23 : FROM openjdk:8-jdk as builder
 ---> 5bbce51c9625
Step 2/23 : USER root
 ---> Using cache
 ---> 8b60e1fa24f4
Step 3/23 : RUN apt-get update
 ---> Using cache
 ---> 231dd5bef5b6
Step 4/23 : WORKDIR /app/glutton-source
 ---> Using cache
 ---> 5f08186cdab0
Step 5/23 : RUN mkdir -p .gradle
 ---> Using cache
 ---> fda93c61777e
Step 6/23 : VOLUME /app/glutton-source/.gradle
 ---> Using cache
 ---> 79018165cfcd
Step 7/23 : COPY lookup/ ./lookup/
 ---> Using cache
 ---> e825da01add4
Step 8/23 : COPY matching/ ./matching/
 ---> Using cache
 ---> 50cb4a2abc0b
Step 9/23 : RUN cd /app/glutton-source/lookup && ./gradlew clean assemble --no-daemon
 ---> Using cache
 ---> d6a46e68ffcb
Step 10/23 : FROM openjdk:8-jre-slim
 ---> 781db64a09bd
Step 11/23 : RUN apt-get update -qq && apt-get -qy install curl build-essential unzip
 ---> Using cache
 ---> 2560d3028235
Step 12/23 : RUN mkdir -p /app
 ---> Using cache
 ---> bc2135d44697
Step 13/23 : WORKDIR /app
 ---> Using cache
 ---> 83bfc4becbe3
Step 14/23 : RUN curl -sL https://deb.nodesource.com/setup_10.x | bash -
 ---> Using cache
 ---> 00fdd2beef0a
Step 15/23 : RUN apt-get update -qq && apt-get -y install nodejs
 ---> Using cache
 ---> 201e18a7e6ba
Step 16/23 : COPY --from=builder /app/glutton-source/matching /app/matching
 ---> Using cache
 ---> bd04082980e4
Step 17/23 : RUN cd matching; npm install
 ---> Running in 1d216a66ef99
/bin/sh: 1: npm: not found
ERROR: Service 'biblio' failed to build: The command '/bin/sh -c cd matching; npm install' returned a non-zero code: 127

After that I find a image from docekrhub https://registry.hub.docker.com/r/bjrne/biblio-glutton and try it.
It started successfully. But return a 500 error everytime I call the interface which looks like this.
biblio_1  | WARN  [2021-12-18 16:37:18,547] org.glassfish.jersey.internal.Errors: The following warnings have been detected: WARNING:
biblio_1  | WARNING: The (sub)resource method getByBiblioStringWithPost in com.scienceminer.lookup.web.resource.LookupController conta
biblio_1  | WARNING: The (sub)resource method getDoiByMetadataDoi in com.scienceminer.lookup.web.resource.OAController contains empty
biblio_1  | WARNING: The (sub)resource method getDocumentSize in com.scienceminer.lookup.web.resource.DataController contains empty pa
biblio_1  | WARNING: The (sub)resource method getDoiByMetadataDoi in com.scienceminer.lookup.web.resource.OaIstexController contains e
biblio_1  |
biblio_1  | WARN  [2021-12-18 16:38:37,128] com.scienceminer.lookup.web.resource.LookupController: DOI did not matched, move to additi
biblio_1  | <IP_ADDRESS> - - [18/Dec/2021:16:38:37 +0000] "GET /service/lookup?doi=10.1484/J.QUAESTIO.1.103624 HTTP/1.1" 404 58 "-" "cur
biblio_1  | <IP_ADDRESS> - - [18/Dec/2021:16:44:03 +0000] "GET /service/lookup?parseReference=false&atitle=Attention+Is+All+You+Need&firstAuthor=Vaswani HTTP/1.1" 500 58 "-" "Apache-HttpClient/4.5.10 (Java/11.0.11)" 246
biblio_1  | <IP_ADDRESS> - - [18/Dec/2021:16:44:27 +0000] "GET /service/lookup?parseReference=false&atitle=Attention+Is+All+You+Need&firstAuthor=Vaswani HTTP/1.1" 500 58 "-" "Apache-HttpClient/4.5.10 (Java/11.0.11)" 19
biblio_1  | <IP_ADDRESS> - - [18/Dec/2021:16:47:32 +0000] "GET /service/lookup?parseReference=false&atitle=Attention+Is+All+You+Need&firstAuthor=Vaswani HTTP/1.1" 500 58 "-" "Apache-HttpClient/4.5.10 (Java/11.0.11)" 7
biblio_1  | <IP_ADDRESS> - - [18/Dec/2021:16:47:33 +0000] "GET /service/lookup?parseReference=false&atitle=Attention+Is+All+You+Need&firstAuthor=Vaswani HTTP/1.1" 500 58 "-" "Apache-HttpClient/4.5.10 (Java/11.0.11)" 10

But whatever, it worked for me now. Without consolidation but no blocking.

If you're calling the consolidation service behind a proxy, you need to indicate the proxy information in the Grobid settings as documented here. Don't forget to indicate your email in the CrossRef parameter too for the "polite" usage.
The docker image is just the service without any data. You would still need to load and index the resources (crossref dump at least) into the database, and this is the heavy part. Consolidation is very valuable I think if you're exploiting extracted metadata and citations, so it worth setting CrossRef at least.

Thanks a lot. I fully understand.


Error doing job: Task exception was never retrieved

Describe the bug
Error doing job: Task exception was never retrieved,
The integration is not working anymore
To Reproduce
Steps to reproduce the behavior:

Add the integration
Configure it
See error

Expected behavior
i expected it's not crash and able to use it.
Screenshots
If applicable, add screenshots to help explain your problem.


Registry health check is too expensive

https://github.com/docker/distribution/blob/master/registry/handlers/app.go#L347-L350
Docker registry uses app.driver.List to do health check, this is too expensive for registries that have large amount of images.
Can't we use app.driver.Stat instead?

@carlsverre

@yixizhang Please submit a PR.

https://github.com/docker/distribution/pull/2115


Errors in page causing asserts to show as text on page

Challenge http://freecodecamp.com/challenges/waypoint-declare-string-variables has an issue.
Browser: Version 44.0.2403.157 (64-bit)
OS: OS X 10.9.5
Description:
JavaScript errors causing assert function to display in tasks to complete section of page.
Image:
![Screen shot]
(http://new.tinygrab.com/5be59a8681200a79680d1c65c198d2f658515666db.png)
Steps to reproduce:

Load challenge at http://freecodecamp.com/challenges/waypoint-declare-string-variables

That is normal behavior.

@psabo thanks for posting this issue!
This is neither an error nor a bug. See my comment, thanks.

Please review the Guidelines for Contributing, thank you!.


Improve receiver and sender test coverage

See coverage here:

https://coveralls.io/builds/58298808/source?filename=roc%2Freceiver.go
https://coveralls.io/builds/58298808/source?filename=roc%2Fsender.go

Cover the following branches:

Receiver:

OpenReceiver: nil context
OpenReceiver: closed context

Sender:

OpenSender: nil context
OpenSender: closed context

See also #43, #44.


amtool: Add silence display subcommand, add silence-ids validation, fix nil pointer dereference.

This change brings missing amtool functionality, which allows to request and display silence information by user-specified silence ID. Silence IDs are verified to be valid UUIDs, and when they are, retrieved from alertmanager. Before this change a user would need to filter silences by silence ID using other tools (think grep, jq, etc).
Naming for the subcommand, i.e. display, was chosen over show to not bring confusion to users, given that amtool already has query. Happy to change if any objections.
This PR also adds validation for silence-ids  supplied to the silence display, silence update and silence expire subcommands, so when supplied values are not valid UUIDs, error is returned.
Additionally, this PR fixes a nil pointer dereference  bug which happens due to the change in #2471, where the IsEqual *bool field of the Matcher model is optional and at the same time is intended to have true as its default value. Therefore, when a Matcher – with its IsEqual field set to nil–  is received by the format/labelsMatcher() func, amtool panics.
Edit: typos

@simonpasquier or @w0rm – may I seek your reviews, when possible? Thanks!

Hi,
I've been running into panic: runtime error: invalid memory address or nil pointer dereference whenever I run amtool silence query with either simple or extended formatting. Wanted to confirm if this is related to the above, although it runs fine with the -q quiet tag or -o json otherwise. If so, the issue has rendered amtool silence query unusable. It'd be great if this could be pushed along. Thanks!

Hi @angelinelee22,
It is very likely that you are facing the bug covered by this PR, if your alertmanager version is v0.22.0 or older, where #2602 was not yet fixed.

Hi @yurkeen,
Sorry for missing this. I am actually using 0.22.2 on the darwin/amd64 platform and can confirm I'm still facing this issue.


Update reviewers list

Now that Miguel's no longer working on MEF, swapping the reviewer list over to automatically add me instead. Didn't see a distinction for optional vs required reviewers. Am also happy to just remove him and leave @AArnott as the only required reviewer if that's preferred.

Codecov Report

Merging #339 (85e40f5) into main (437dc50) will decrease coverage by 0.34%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #339      +/-   ##
==========================================
- Coverage   76.17%   75.82%   -0.35%
==========================================
  Files         110      110
  Lines        7194     7194
==========================================
- Hits         5480     5455      -25
- Misses       1714     1739      +25

Impacted Files
Coverage Δ

....Composition.AppDomainTests/OpenGenericExport`1.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...mposition.AppDomainTests/ExternalExportOnMember.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...mposition.AppDomainTests/ExternalExportWithLazy.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...osition.AppDomainTests2/CustomMetadataAttribute.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...dTypeReceiver/PartThatImportsLazyOfEmbeddedType.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...rtThatLazyImportsExportWithMetadataOfCustomType.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...atLazyImportsExportWithTypeMetadataViaTMetadata.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...tLazyImportsExportWithTypeMetadataViaDictionary.cs
0.00% <0.00%> (-100.00%)
:arrow_down:

...ft.VisualStudio.Composition/LazyMetadataWrapper.cs
68.71% <0.00%> (-3.07%)
:arrow_down:

...soft.VisualStudio.Composition/ReflectionHelpers.cs
69.67% <0.00%> (-1.30%)
:arrow_down:

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


Globals are not resolved in Flow 0.81.0

I recently upgraded to Flow 0.81.0 and Flow-Typed 2.5.1.
But I encountered problems with the detox globals.
So running flow results in a lot of:
Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ e2e/signUp.spec.js:17:27
Cannot resolve name by.
 14│   });
 15│
 16│   it('should sign up when correct form is submitted', async () => {
 17│     await waitFor(element(by.id('sign-up-username-input'))).toBeVisible();
 18│
 19│     await element(by.id('sign-up-username-input')).typeText(user.username);
 20│     await element(by.id('sign-up-email-input')).typeText(user.email);

Or Cannot resolve name...element/waitFor/device
This occurs after upgrading from Flow 0.66.0, I think it works until flow 0.75.0.

We do not maintain flow types, they were added by the community to flow-typed.
You are of course welcome to update/add what ever's necessary, but this is probably out of Detox's scope. :(


How writing text on screen in C

Hello, Can You show how put text to screen from C?
Simple example for writing text , no justification etc.
I'm trying but nothing showing

As it is your question is not well posed. I guess you want to show some text in some graphical application.
You should before choose a library for managing a windows and the graphics, for example SDL2. With SDL2 you may show some text using the SDL_ttf library.
I advice to get started with SDL2 and practicing with the library itself. Once you are familiar with SDL2 you can begin working with SDL_ttf to display some text.
You may found more help in this tutorial https://lazyfoo.net/SDL_tutorials/lesson07/index.php .
In Lite XL the method for displaying text is complicated and I don't recommend use it in a brand new application except if you want to have a very similar architecture for your application. In Lite the text drawing is simpler but it does use another library for fonts, stb_truetype. In any case Lite and Lite XL both use SDL2 to manage the window and the graphical operations.
Normally the issues are not meant to ask for help but you are welcome anyway.

Which are fastest and no memory leak?
I don't want to rewrite but I want to use this code


Token set_fact

There is an issue when setting the token fact.
`fatal: [node1.domain.com]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: list object has no element 0\n\nThe error appears to have been in '/kubeadm-playbook/roles/node/tasks/main.yml': line 2, column 3, but may\ be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:

set_fact: kubeadm_token="{{ hostvars[groups['master'][0]]['kubeadm_token'].stdout_lines[0] }}"
^ here
We could be wrong, but this one looks like it might be an issue with missing quotes.  Always quote template expression brackets when they start a value. For instance:   with_items:     - {{ foo }} Should be written as:    with_items:      - "{{ foo }}"`

This is quoted as per:
`- set_fact: kubeadm_token="{{ hostvars[groups['master'][0]]['kubeadm_token'].stdout_lines[0] }}"
when: kubeadm_master_config.token is not defined
tags:

node`

hey,
this was tested further in the newer version, and also some improvements added.
Please provide the logs if you still face the issue.

I have now pulled the master branch and redone my group vars from scratch. I now get an error as follows:-
ERROR! Syntax Error while loading YAML.
  mapping values are not allowed in this context

The error appears to have been in '/home/lbrewerton/personal_projects/kubeadm-playbook/roles/node/tasks/main.yml': line 43, column 80, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: add api section to the kubeadm_master_config (if does not exist)
  set_fact: kubeadm_master_config="{{ kubeadm_master_config | combine ( { 'api': kubeadm_master_config.api | default ({}) } ) }}"
                                                                               ^ here

This should work according to the Ansible docs for the combine filter.

I've found the issue. I shall fork and make a pull request

Pull request 44 submitted.

I guess it's solved now. If not, please reopen.
Note: master has moved to k8s 1.12.


Proper Akka.NET Dependency Injection: IRequiredActor<TActor>

Changes
This addresses one of the criticisms of Akka.Hosting we've heard from a number of current active users: the ActorRegistry is service location and that's a smelly pattern.
All of the work we've done on the ActorRegistry so far makes it feasible for us to now expose proper, strongly typed dependency injection to users who wish to integrate their Akka.NET actors with other popular technologies (i.e. ASP.NET) or even with other Akka.NET actors via Akka.DependencyInjection.
This PR introduces the IRequiredActor<TActor> type, which is designed to allow for real dependency injection rather than service location:
public sealed class MyConsumer
{
    private readonly IActorRef _actor;

    public MyConsumer(IRequiredActor<MyActorType> actor)
    {
        _actor = actor.ActorRef;
    }

    public async Task<string> Say(string word)
    {
        return await _actor.Ask<string>(word, TimeSpan.FromSeconds(3));
    }
}

The IRequiredActor<TActor> exposes a single property:
public interface IRequiredActor<TActor>
{
    /// <summary>
    /// The underlying actor resolved via <see cref="ActorRegistry"/> using the given <see cref="TActor"/> key.
    /// </summary>
    IActorRef ActorRef { get; }
}

We intentionally chose not to have IRequiredActor<T> inherit from IActorRef directly because that could cause some undesirable side effects (i.e. death watch not working properly out of the box). We think just returning the IActorRef in a property should be sufficient.
By default, you can automatically resolve any actors registered with the ActorRegistry without having to declare anything special on your IServiceCollection:
using var host = new HostBuilder()
  .ConfigureServices(services =>
  {
      services.AddAkka("MySys", (builder, provider) =>
      {
          builder.WithActors((system, registry) =>
          {
              var actor = system.ActorOf(Props.Create(() => new MyActorType()), "myactor");
              registry.Register<MyActorType>(actor);
          });
      });
      services.AddScoped<MyConsumer>();
  })
  .Build();
  await host.StartAsync();

Adding your actor and your type key into the ActorRegistry is sufficient - no additional DI registration is required to access the IRequiredActor<TActor> for that type.
We went with the name IRequiredActor<TActor> in order to follow the "required services" pattern established by Microsoft.Extensions.DependencyInjection - in that same spirit, if you attempt to resolve a TActor that is not registered you will get a MissingActorRegistryEntryException thrown by Akka.Hosting.
We would love your feedback on this PR!
Checklist
For significant changes, please ensure that the following have been completed (delete if not relevant):

[x] This change follows the Akka.NET API Compatibility Guidelines.
[x] This change follows the Akka.NET Wire Compatibility Guidelines.
[x] I have reviewed my own pull request.
[x] Design discussion issue #144
[ ] Changes in public API reviewed, if any.
[ ] I have added website documentation for this feature.

We will need to add documentation to the README.md demonstrating how to use this feature before we publish 1.0.

Definitely seems like a big step forward over the current actor registry 👍

@Arkatufus I'll add documentation to the README.md (or maybe a separate file) for this in a separate PR


Allow media to be deleted from a Story in Administrate dashboard

Currently media can't be deleted in Administrate because it's a field on Story. Let's add a button to the Story edit page on the administrate dashboard that can clear and delete media attachments individually or all of them.

Taken care of during Ruby by the Bay 2019.


Enforce digest validation

Currently, bundles don't have digests for invocation images (and other images). The deislabs/duffle#355 PR is skipping validation when there is no digest present. Bundles should have digests and we should instead enforce the validation. This would be a breaking change at the moment (given state of bundles) so once deislabs/duffle#391 is completed, swap digest validation to be required, unless explicitly disabled.

In the last CNAB community meeting, we discussed validation in cnab-go with regard to this same issue. Note that deislabs/duffle#355 was closed a while ago without actually adding the validation in, so it's time to at a minimum revisit that and add the digest validation in. This issue is still highly relevant though, and we should tackle it in implementation of that. We still need to resolve the default behavior. Bundles built by cnab-go (i.e. duffle and other tools) are currently not inserting the digest. Indeed, this can't be done until a bundle is pushed to an OCI registry.
With that in mind:
1.) Should the validation by default assume there is a digest and fail if there isn't one?
2.) Should the validation by default skip any attempt to validate if no digest is present and not produce an error?
For either of these cases, we probably need to include a flag that inverts the default behavior (i.e. for #1, no error would be produced if the flag is provided, #2 would error if the flag is provided).
Any thoughts @chris-crone @silvin-lubecki @radu-matei @youreddy @ryanmoran @astrieanna @technosophos @carolynvs @glyn

As @ryanmoran pointed out in the last CNAB community meeting, the runtime spec does not specify anything about digest validation.
However, the bundle definition does specify the following:

During bundle development, it may be ideal to omit the contentDigest field and/or skip validation. Once a bundle is ready to be transmitted as a thick or thin bundle, it must have a contentDigest field.

In the proposed changes for cnab-to-oci, the behaviour is the following: if the bundle does not contain a digest, size, and media type, by default it populates them (by pushing the images). There is a flag to control this and avoid mutating the bundle.
My opinion is that we should enforce the digest validation at runtime (option 1).

In the proposed changes for cnab-to-oci, the behaviour is the following: if the bundle does not contain a digest, size, and media type, by default it populates them (by pushing the images). There is a flag to control this and avoid mutating the bundle.

Yeah, so that occurs after we "push" the bundle somewhere. So for local use/development, we'd need to do something like tool install --skip-validation for option 1. That's my preferred approach.

To me, it's still very strange that the final contentDigest for a bundle or image is obtained remotely from an image registry, instead of a local build. This allows a compromised image registry to deceive bundle or image builders into signing malicious images. This is something we should keep in mind while we design CNAB security.
I concur with @radu-matei that we should enforce digest validation at runtime (option 1) by default, and fail hard.

To me, it's still very strange that the final contentDigest for a bundle or image is obtained remotely from an image registry, instead of a local build.

This is a common view :)

@radu-matei more relevant text:
The contentDigest field MUST contain a digest, in OCI format, to be used to compute the integrity of the image. The calculation of how the image matches the contentDigest is dependent upon image type. (OCI, for example, uses a Merkle tree while VM images are checksums.) If this field is omitted, a runtime is not obligated to validate the image. During bundle development, it may be ideal to omit the contentDigest field and/or skip validation. Once a bundle is ready to be transmitted as a thick or thin bundle, it must have a contentDigest field.

Of importance there: If this field is omitted, a runtime is not obligated to validate the image.
@ryanmoran also suggested we open a spec issue to clarify. It would seem the opposite is true, if it is there, we are obligated to validate it. We're not obligated to validate if it's NOT there but we can, which I think is the meet of this issue.

Since it's always fun to rehash an issue over and over again, here is a comment from @simonferquel from a while back: https://github.com/deislabs/duffle/pull/355#issuecomment-436179873
 think a simpler solution would be to change a bit the logic behind build and push:

On build, generate an image tag consisting of the hash of the build context + build settings used as the image receipe (I think we only hash the build context right now)
On push,
first, push the image with this tag on the registry an retrieve the digested reference from the registry (myimage: reference would become myimage@sha256:)
patch the local bundle with the digested reference, re-sign it if it was signed
push the bundle
This way, the system would rely on un-modifiable digested-reference, and would not need to do anything locally to validate the image content.

In the proposed changes for cnab-to-oci, the behaviour is the following: if the bundle does not contain a digest, size, and media type, by default it populates them (by pushing the images). There is a flag to control this and avoid mutating the bundle.

Yeah, so that occurs after we "push" the bundle somewhere. So for local use/development, we'd need to do something like tool install --skip-validation for option 1. That's my preferred approach.
My original question about validation happening at all for 1.0 really relates to:
As @ryanmoran pointed out in the last CNAB community meeting, the runtime spec does not specify anything about digest validation.

Ha, I meant "That's not my preferred approach". I feel like that gets cumbersome for any scenario until we are publishing bundles..and the spec says: "If this field is omitted, a runtime is not obligated to validate the image."
Oopps :)

If all tools had to validate a digest, and the only way to get a digest is to push to registry, this would make the development experience for authoring bundles frustrating. Authors either have to push constantly, a time tax, or they would have to always add this --skip-validation flag, a typing tax. I would not be surprised if the end result was that it trained people to ignore our efforts at security all the time, not just during development.
This is going to be a poor experience that I really want to avoid.
I don't know what's on the table, but if we can solve having a digest without pushing to a registry that would be ideal.
If not, I would vastly prefer a solution a solution that didn't have such an impact on the authoring loop. For instance, when the digest is blank, tools can skip validation. It only needs to be enforced when present.

@carolynvs While I understand your sentiment, and they must certainly be taken into serious consideration, I am also equally worried about a world where security is opt-in, and no one ends up using it by default. Ideally, security should be opt-out and usable.

This is an interesting issue. I definitely want to ensure that validation is the default, which is implied but not so stated in the key line:

Once a bundle is ready to be transmitted as a thick or thin bundle, it must have a contentDigest field.

This is way too imprecise, methinks. "ready to be transmitted" is like, what precise state? I realize that validation before the bundle is moved off the disk will be quite useful for dev iteration scenarios, but I think the direction that we took with --force in the cnab spec is useful here:

the contentDigest MUST be populated to be "ready to be trasmitted"
a runtime MUST warn the user and fail if the contentDigest is not populated unless specifically overridden with a --skip-verification type call.

This enables users to happily use tools that can "force"-warn devs to set --skip-validation in some .settings file and respect it prior to certain commands for "readying for transmission", but enables the smooth developer workflow that does't torture the poor working developer class.
What do we think? Is that a good way through the thickets here?

I join @trishankatdatadog thinking that we should have a secured model by default.
@carolynvs I also understand your concern about removing friction for developer, but I think that tools can handle that gracefully, like @squillace proposed in a .settings file and/or in an environment variable.

the contentDigest MUST be populated to be "ready to be transmitted"
a runtime MUST warn the user and fail if the contentDigest is not populated unless specifically overridden with a --skip-verification type call.
IFF the contentDigest is populated, it must be verified regardless of the --skip-verification state.

I like this behavior 👍

I agree with @squillace and @silvin-lubecki. As long as we don't make security-by-default difficult for developers, we will be in a better place. I'm even willing to accept that developers can override digest validation with --skip-verification if they really, really want to, even if contentDigest is populated.

I've opened a pull request that introduces a digest validation interface that clients can call. It implements point 2 and point 3 in what @squillace calls out. It only supports Docker/OCI images for now, for obvious reasons.
Duffle and other clients will need to call the validation with the appropriate images. This enables duffle to do things like support image relocation. I didn't automatically insert this into the Operation and driver code path, since that stuff currently doesn't know anything aside from the Invocation Image that will be run, but I'm happy to modify that stuff (we'll need to give the operation the digest as well as a collection of images for the image map) and make the validation calls happen from in there.


Add getAspectRatio() function to VideoMode

Description
Add getAspectRatio() function to VideoMode
Reopening of #2410
Tasks

[ ] Tested on Linux
[ ] Tested on Windows
[ ] Tested on macOS
[ ] Tested on iOS
[ ] Tested on Android
[ ] Add detailed description
[ ] Add some tests

How to test this PR?
Describe how to best test these changes. Please provide a minimal, complete and verifiable example if possible, you can use the follow template as a start:
#include <SFML/Graphics.hpp>
#include <iostream>

int main()
{
    sf::VideoMode vm = sf::VideoMode({1280, 720});
    sf::Vector2u aspectRatio = vm.getAspectRatio();

    std::cout << aspectRatio.x << " " << aspectRatio.y << std::endl;
}

As mentioned, could you add a test case with 5-10 resolutions in this file?
https://github.com/SFML/SFML/blob/master/test/Window/VideoMode.test.cpp

As mentioned, could you add a test case with 5-10 resolutions in this file?
https://github.com/SFML/SFML/blob/master/test/Window/VideoMode.test.cpp

Yes, I am working on it. I just had some troubles with compiler #2413

As mentioned, could you add a test case with 5-10 resolutions in this file?
https://github.com/SFML/SFML/blob/master/test/Window/VideoMode.test.cpp

Everything isn't so rainbow as I expected:
+
+        SUBCASE("Aspect ratios")
+        {
+            SUBCASE("4:3")
+            {
+                sf::Vector2u aspectRatio(4, 3);
+                CHECK(sf::VideoMode({640, 480}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({768, 576}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({800, 600}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1024, 768}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1152, 864}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1400, 1050}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1600, 1200}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({2048, 1536}).getAspectRatio() == aspectRatio);
+            }
+
+            SUBCASE("16:9")
+            {
+                sf::Vector2u aspectRatio(16, 9);
+                CHECK(sf::VideoMode({1024, 576}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1280, 720}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1366, 768}).getAspectRatio() == aspectRatio); //Fail
+                CHECK(sf::VideoMode({1600, 900}).getAspectRatio() == aspectRatio);
+                CHECK(sf::VideoMode({1920, 1280}).getAspectRatio() == aspectRatio); //Fail
+                CHECK(sf::VideoMode({2560, 1440}).getAspectRatio() == aspectRatio);
+            }
+        }

You can see fails in places where the real math conflicts with people agreements... It looks like the feature doesn't have much sense 😔
@Bromeon What can you say about tests in general? What can you say about math?

You should actually push these tests so we can see precisely why the tests are failing.

The test for 1366, 768 is failing because that aspect ratio is only approximately 16:9. It's actually very slightly off. 1366 / 758 = 1.778 whereas 16 / 9 = 1.77. 1920 / 1280 is even farther off with a ratio of 1.5.

The test for 1366, 768 is failing because that aspect ratio is only approximately 16:9. It's actually very slightly off. 1366 / 758 = 1.778 whereas 16 / 9 = 1.77. 1920 / 1280 is even farther off with a ratio of 1.5.

I've just found a typo... I needed to write 1920, 1080

but people agreements treat it as 16:9...

Then how do you want to reconcile the fact that what humans perceive isn't what math dictates? Does that warrant an API change? An implementation change?

but people agreements treat it as 16:9...

Then how do you want to reconcile the fact that what humans perceive isn't what math dictates? Does that warrant an API change? An implementation change?

No. I am about fate of PR. About it is closing as unreliable.
proportionally changing of window size (it's weak argument) - the only use case that I see now... It isn't so good if it has only one use case...

About 1366, 768 you are right that it's approximately but people agreements treat it as 16:9...

Do they though? Just a quick search has shown both sides, many people asking why this non-16:9-resolution exists at all.
There are two behaviors possible:

Stay true to math and return the actual fraction. This is typically not that useful in practice (and is something the user can do themselves).
Special-case known resolutions and document this. I.e., return (16, 9) for (1366, 768). This might make the function actually useful, since it's no longer something that users can quickly do themselves.

We could also accept a parameter bool approximate to allow both.

On a separate note, this is a great example why tests are so helpful. We might not have seen this fundamental design issue until much later, possibly at a time where breaking changes are not possible anymore.

There are two behaviors possible:
* Stay true to math and return the actual fraction. This is typically not that useful in practice (and is something the user can do themselves).

* Special-case known resolutions and document this. I.e., return `(16, 9)` for `(1366, 768)`. This might make the function _actually_ useful, since it's no longer something that users can quickly do themselves.

We could also accept a parameter bool approximate to allow both.

In my opinion, it is look a bit messy to use bool. It looks like a look up table that uses an almost useless function :/
If it is so necessary, shouldn't it just be a constexpr look up table for common resolutions in a separate namespace? Without any getAspectRatio functions...
As internet says the world mobile devices have a more complicated zoo of display resolutions (for which I even don't know statistic and common examples) and aspect ratios *(which aren't good represent with integers) 18:9, 18.5:9, 19:9, 19.5:9, 20:9, 21:9
So both ideas of special cases or look up table isn't so good
*(19.5:9 is 39:18)

Hm... maybe you're right and it's not SFML's job to do that. Or if it is, we should at least have a clearer idea about the use case and thus work out a design accordingly 🤔

Don't think a lookup table would be needed here. Keep in mind this is for VideoMode after all. The user can define any dimensions, it's not just what the system reports for an active screen. So if the result is 22:9 or whatever, that should be reported.
However, there could be a second variation (or changed by parameter?) that tries to report the closest common aspect ratio, e.g. a 21.5:9 would result in returning 21:9.

I personally wouldn't add this to SFML, given that there can be different options on how to handle it. It's not a fundamental feature that users couldn't do without SFML providing additional APIs, it's not that complicated to calculate some ratio on your own, and it leaves the decision on how to deal with odd ratios to each developer, rather than us trying to implement an overcomplicated API in an attempt to satisfy everyone's preference.

Thank you for the suggestion! With the reasons given in my previous comment, I'll close this PR.
I think the code could be extracted and wrapped up in a small extension that could find a good place on the wiki: https://github.com/SFML/SFML/wiki/Sources


Better Postgres-Support

This PR is an updated version of https://github.com/eu-federation-gateway-service/efgs-federation-gateway/pull/245.
As in the migrations, the autoIncrement is added twice in the same migration, and Postgres (and maybe other Database-Languages?) don't like that, we now use the context tag to control the application of said migration.
According to a blog post from 2009 (https://www.liquibase.org/blog/what-affects-changeset-checksums), the context Tag on the changeSet field should not modify the checksum, and hence should not break existing systems, where the migrations was already applied. I also shortly looked at the code base on github and looking at the ChangeSet class, it still seems to be the case.
Further, the docker-compose setup was adjusted, to allow for multiple different configs using shared compose-files. The default behaviour - using docker-compose up --build as described in the README should not be any different, but with docker-compose -f docker-compose.yml -f docker-compose.psql.yml up --build the postgres configuration can now be used.
Further, the mysql service in the Dockerfile was adjusted to not automatically expose the database port to the host, as this can pose a security risk (if overseen in production), and also can fail, if the host is already running a native mysql DB or any other service that binds to port 3306, leading to unnecessary pitfalls when trying to run the container .
On the other hand, the default configuration now includes a bind mount to the current folder to actually be able to see the log files, without changing the configuration.
Last but not least, the POM-File now includes a runtime dependency to the postgres db-connector.

Hi @ubamrein,
thank you for your contribution and the detailed description!
But we have a little problem with this PR. As long as we do not officially support psql for efgs we cannot merge psql support in our master branch :( .
So we have two options now:

Your can create a fork of efgs and offer (and maintain) a psql version there.
We can create a new branch in our repo for psql-support. This branch will not be maintained by us but you (and the OS community) will be able to create PR to maintain this branch.

Please let me know which option you've choosed.

Well then can you give an explanation, why you apply the the autoIncrement on the field twice? This seems to not be needed and if removed would work for any supported database according to liquibase.
I can remove the docker-compose and application-psql stuff, and move that to a fork, where we keep an eye on future migrations.

It looks like this was a mistake on my side - The "double auto increment" makes no sense.
I would suggest to delete the changesets create-certificate-entity-table-increment, create-callback-task-entity-table-increment and create-callback-subscription-entity-table-increment
As long as we delete the whole changeset it should not be a problem for existing databases.
I've created a PR for this: #258
With this change the usage of other database systems than mysql should be possible :)

Fine with me :) since we normally use Flyway, we were not sure, if deleting entire changesets will be validated or no (since technically a version is missing), so we tried to find a solution, which should not change anything for already deployed systems.
But if you are sure that this works, that's even better :)
Thanks for the fast replies :)
I then think, just since it is already there, I will make another PR with just the docker-compose and application-psql.yaml files, which can be taken as a starting point for people using postgres. I would be fine to keep that on a postgres branch on your side, if you agree.

Yes I've tested that on my local efgs instance.
I've created a branch community/postgres - Please create a PR to merge into this branch :)
I will close this PR as soon as your new PR is ready.

I think everything should now be fine :)
Thanks for the help!


Add lit-element dependency

When running npm run build with a custom css file, this error is shown, because of the lit-element import:
1:1  error  'lit-element' should be listed in the project's dependencies. Run 'npm i -S lit-element' to add it  import/no-extraneous-dependencies

This dependency needs to be declared, and that's what this PR does.

A custom file should import lit and not lit-element. The documentation was still mentioning lit-element, which is fixed in https://github.com/mrin9/RapiDoc/pull/689. So this PR is closed in favor of that one.


Bugfix: background thread object updates

Here's a new PR off of develop.   It adds the refreshing after merge fix.

@ndonald2 @KingOfBrian I'd like to merge this in today, unless you guys disagree, and get a release out. Seems like this code has been lived on a bit.

Going to hold this next release until we can update and merge this patch.

Hey @ndonald2 @mgorbach -- Finally remembered to do this. Few things came up:

I'm evaluating a predicate on a MO sent from a merge event, inside the main MO block. I'm not sure if that's legitimate or not. I'm going to play with some debug flags and see if it raises any red flags. Bouncing into the context in the save also seemed to be a bit concerning as that's going to force a substantial amount of thrashing, and may run into a re-entrancy issue. Given the merge is going to access the MO's, it may be a safe thing to do, but I don't know, and I don't have a great test bed to try this out on.

I didn't auto-register NSFRC, since the fix can only be applied to NSFRC connected to the main context. It seemed weird to add that behavior some of the time, and add exposure of RZCoreDataStack to the categories. It's a little bit more API overhead, but it's substantially less voodoo.

@KingOfBrian uh oh, unit test crashes?

@KingOfBrian regarding your concern, docs say:
You can pass a NSManagedObjectContextDidSaveNotification notification posted by a managed object context on another thread, however you must not use the managed objects in the user info dictionary directly. For more details, see Concurrency with Core Data.
I have an idea though: Can you

The last fix fell a bit short and wasn't too smart with threading. This should be more safe.
There's an issue with the unit test target creating duplicate [RZDataStack defaultStack] objects which is causing the tests to fail. Basically CocoaPods is linking RZVinyl with the app target, and the test target. When the test target is injected into the app target, there are two symbol spaces for RZVinyl in memory, and defaultStack resolves to a different one on the first call sometimes. This is a CocoaPod's issue I've seen before, but defaultStack going to two different places is new.... The variable list on the left showed one hex value for s_defaultStack, and po s_defaultStack returned another. I called over @jvisenti to ensure I wasn't going mad, and confirmed things, but then I couldn't reproduce things.  @mgorbach was noticing that the NSHashTable wasn't holding onto the FRC and that's why the test was failing. However, it turns out that he was probably looking at two different stack objects! If you're skeptical of this, create a +(void)load function in RZVinyl, set a break point, and run the tests. Cats and dogs I say!
However, this failure by travis on this commit appears to be a travis issue -- https://www.traviscistatus.com/incidents/9gthpk16gs93, because this is the issue that doesn't want to die!

What can I do to help move the needle on this PR, @KingOfBrian?

Hey @jwatson -- I merged things in and updated the nullability annotations.  I confirmed that the fix is working and reviewed things. I think this is ready to go into a minor release, but might be worth another review ( @mgorbach  / @jvisenti ). I'm not a huge fan of the double performBlockAndWait:  in handleContextDidSave:, but I can't see how else it could be done, or how it could cause problems, so I think it's fine.


add removeDueDate to Card Model

Hi,
i wanted to add the removeDueDate method to the Card Model because setDueDate does not allow resetting the DueDate because of the missing default value.
From the CardInterface public function setDueDate(\DateTime $due);
I was thinking about changing it to public function setDueDate(\DateTime $due = null);
But rather found having a dedicated removeDueDate method more suitable.
I know that Trello\Api\Cardwould allow me resetting the due date already.
public function setDueDate($id, \DateTime $date = null)
But please see the example below where i would need it.
<?php
     $manager = new Manager($trelloClient);

     ...

     $list = $manager->getList($listId);
     $cards = $list->getCards();
     foreach ($cards as $card) {
          $card->removeDueDate();
          $card->save();
     }
     ...

@null9beta Hi Marco
As you suggested, I think it would make more sense to update the setDueDate method to allow setting null to keep in line with conventions used throughout the library and the way Api\Card works.
Any reason you decided to go the other way?

@cdaguerre
I was comparing usage of
<?php
foreach ($cards as $card) {
    $card->removeDueDate();
    $card->save();
 }

over
<?php
foreach ($cards as $card) {
    $card->setDueDate();
    $card->save();
 }

I just found it little more convenient having the remove method over a
setDueDate method without the argument.
I could have also used setDueDate(null) to be more explicit on the call itself but
also from my comment as you saw i was not super sure about it, both ways feel correct to me, only as i said the remove method made it more explicit to me.
I can change the setDueDate method to except the default value if you want to?

Now that i was writing maybe it makes sense having both of them.
a) make it possible in setDueDate to accept the default argument
b) make the removeDueDate use the setDueDate
<?php

public function setDueDate(\DateTime $due = null);

and
<?php
public function removeDueDate()
{
    return $this->setDueDate(null);
}

What do you think?

I prefer not implementing a second method that does something which you can (should be able to)  achieve with another method.
IMO opinion, we should simply accept null as an argument to the setDueDate method.

:+1:
I changed the pull request accordingly.

:+1: @null9beta Great thanks


Autoplay on mobile devices

It seems like Youtube has changed the autoplay behavior on mobile devices. When lity opens the modal with the Youtube iframe it doesn't play the video automatically.
I am using lity without options and just passing the href as parameter. I am not sure but maybe you have to change the iframe and use the Youtube API instead.
Thanks

Did you ever get a solution to this?

Video will not auto play on mobile, that is restriction at browser level.

Bump


added back Zapp network numbers

Zapp was bought by Telekom.
https://en.wikipedia.org/wiki/Zapp_Mobile
And for example, 07887xxxxx is still a valid number.

I signed it!

Awesome and thank you for your contribution.
Could you please provide some sourced proof of this ownership and number range reallocation?
From the wiki page you linked (https://en.wikipedia.org/wiki/Zapp_Mobile) I see "As of 24 March 2013 Zapp CDMA licence expired" but I suppose Telekom was granted that pool/range since you say that range is still active. Some official documentation like IR.21 forms would be good to capture this.
I'll be happy to dig for those docs if I find the time.
Context we should capture:

Number range reallocated to Telekom.
Acquisition of Zapp Mobile by Telekom.

Hi Majid,
Sorry, missed to update this PR.
As we found supporting IR.21 doc, merging this PR.


Update ConfigService.md

please review @roywant  @schilit

@roywant are you done reviewing?

@g-ortuno can't merge, please sync


[TCID-DIR-AUTH-LOCAL-USER]: local user authentication

GUi test to verify local user login to DOP.

ref: https://github.com/mayadata-io/gui-automation/pull/30


fixed minor run script errors

Run script fails on archive if ${BUILD_PRODUCTS_DIR} contains spaces (added quotes)
Run script fails on archive if ${BUILD_PRODUCTS_DIR}/SwiftAA.framework is a symlink (added additional slash)

Thanks again!


added animation to the neon clock #20

I added an animation to the neon clock border, background and the fingers.
The colors disokayed on the screen is different from the one in the css code, this is due to the usage of filter:hue-rotate( ).

Thanks for the contribution. Do not forget to star the project.


x/mobile: manual declaration of uses-sdk in AndroidManifest.xml not supported

We need to set the minSdkVersion and targetSdkVersion in the AndroidManifest.xml file. But it won't build, gomobile will exit with err:
manual declaration of uses-sdk in AndroidManifest.xml not supported

minSdkVersion and targetSdkVersion is a commonly used in Android. If not set, app market like Google Play will refused to accept the app.

UP. Any ideas, how target to custom SdkVersion?

@xape4ka Don't use go/mobile to build apk, but use go/mobile to build a shared .so file, and then call it in your Android projects, it works.

@xape4ka Don't use go/mobile to build apk, but use go/mobile to build a shared .so file, and then call it in your Android projects, it works.

This is not a practical solution. gomobile meant to build apk I don't want to create an Android project from scratch (don't want to install stupid Android Studio)

It seems gomobile no longer maintained

Also, there's a pretty large time gap in updates ...

Probably pkg.go.dev shows only part of them.
https://github.com/golang/mobile/commits/master


Treat action code as attachments for created/updated actions

Supersedes https://github.com/apache/incubator-openwhisk/pull/2847.

@dubeejw can we close this PR? You can setup travis on your own repository if you want to have full travis coverage.

@rabbah, @markusthoemmes, a cache concurrency test fails on this one. I have figured out the failure is due the need of two DB writes for saving attachments. Where the first write is for the DB document and the second write is for the DB document attachment.
When only caching Java actions as done in https://github.com/apache/incubator-openwhisk/pull/2855 and implementing the same concurrency test for Java actions, the test will fail as well.

Failure output shown here. The test fails because `update` does two writes as stated above, so a concurrent `get` request can fail as `update` does not finish as quickly for attachments.

whisk.core.database.test.CacheConcurrencyTests > the cache should support concurrent CRUD without bogus residual cache entries, iter 1 FAILED
org.scalatest.exceptions.TestFailedException: update+get: failed for testy4 404 was not equal to 200

I suppose another option would be to change the test to accept a 200 or 404 from the get requests.

Codecov Report

Merging #3286 into master will decrease coverage by 0.05%.
The diff coverage is 90%.

@@            Coverage Diff             @@
##           master    #3286      +/-   ##
==========================================
- Coverage    74.5%   74.45%   -0.06%
==========================================
  Files         126      126
  Lines        5950     5961      +11
  Branches      378      384       +6
==========================================
+ Hits         4433     4438       +5
- Misses       1517     1523       +6

Impacted Files
Coverage Δ

...in/scala/whisk/core/database/DocumentFactory.scala
89.47% <100%> (+1.23%)
:arrow_up:

...src/main/scala/whisk/core/entity/WhiskAction.scala
77.62% <100%> (ø)
:arrow_up:

.../scala/src/main/scala/whisk/core/entity/Exec.scala
79.37% <81.81%> (-4.5%)
:arrow_down:

...src/main/scala/whisk/core/entity/Attachments.scala
88.88% <0%> (+11.11%)
:arrow_up:

Continue to review full report at Codecov.

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

Closing https://github.com/apache/incubator-openwhisk/pull/2847 in favor of this PR as it was easier to rebase with the merged caching changes.

@chetanmeh, do you think these changes will be useful in the future?

@dubee Yes this would be useful as document size limitation is impacting nodejs kind also for us. So would like to convert all types to attachments. With support for Inlined attachments #3709 switching to attachment should not have negative impact on small functions.

@dubee  Do you plan to work on this otherwise I can look into it. Given recent changes in master the ArtifactStore does not make use of attachmentName attribute from manifest. So was thinking to do away with manifest entry for name attribute.
For attachment type I am not sure - For e.g. if its a simple code snippet then type can be text/plain otherwise if its a zip (say js code packaged as zip) then it would be application/octet-stream.
Further with inlining support now we can always store the code for all kinds as attachments by design and let ArtifactStore inline the binary if its small. So no need to different between attachment for various kinds

@dubee Ping

PR #3945 supersedes this one


CI/CD: Use pre-build Opendatacam Darknet Images

Currently the CI/CD pipeline builds https://github.com/opendatacam/darknet from source every time. As Darknet is not going through many changes we could create a Darknet Docker Image for Opendatacam and then use this image directly.
It should cut off approx 5 minutes of execution time from the Workflow.
See also

https://github.com/opendatacam/opendatacam/pull/354

@tdurand If you have some spare minutes, I would appreciate you preparing the darknet repository so I can use a "pre-built" darknet in our docker images. See https://github.com/opendatacam/darknet/pull/8

@tdurand If you have some spare minutes, I would appreciate you preparing the darknet repository so I can use a "pre-built" darknet in our docker images. See https://github.com/opendatacam/darknet/pull/8

@vsaw I gave you full access to the repo, let me know if you can do it yourself or if you still need me :-)

@vsaw I gave you full access to the repo, let me know if you can do it yourself or if you still need me :-)

@tdurand Thank you. If you can set up the DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets I can take care of the rest. (See https://docs.docker.com/docker-hub/access-tokens/ how to create tokens).

@tdurand Thank you. If you can set up the DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets I can take care of the rest. (See https://docs.docker.com/docker-hub/access-tokens/ how to create tokens).

Ok, sorry was not around.. adding it now

Ok, sorry was not around.. adding it now

done 👍

done 👍

Thanks. I'm currently testing the newly created development branch here: https://github.com/opendatacam/darknet/actions/runs/487387229
If this works I will merge it into master and change the Opendatacam Dockerfiles to use the pre-compiled darknet.

Thanks. I'm currently testing the newly created development branch here: https://github.com/opendatacam/darknet/actions/runs/487387229
If this works I will merge it into master and change the Opendatacam Dockerfiles to use the pre-compiled darknet.

Worked out like a charm. See https://hub.docker.com/r/opendatacam/opendatacam-darknet-base/tags?page=1&ordering=last_updated for the new base images.
Currently only the development run finished. The "master" release will finish in a few minutes. Then I can continue the refactoring on opendatacam side.

Worked out like a charm. See https://hub.docker.com/r/opendatacam/opendatacam-darknet-base/tags?page=1&ordering=last_updated for the new base images.
Currently only the development run finished. The "master" release will finish in a few minutes. Then I can continue the refactoring on opendatacam side.

 They are great tools to manage complexity, increase confidence in releases and keep up development speed. 😄

Yeah I'm a big believer in testing and automation. They are great tools to manage complexity, increase confidence in releases and keep up development speed. 😄

exactly what was much needed for this project 😂

exactly what was much needed for this project 😂

I could successfully run https://hub.docker.com/layers/opendatacam/opendatacam/development-nano/images/sha256-a985abb2748668e09d261ec9e067e702c9f17536ea5c892f43b29c78b2937786?context=explore. Therefore I will consider this as closed and done 👍

I could successfully run https://hub.docker.com/layers/opendatacam/opendatacam/development-nano/images/sha256-a985abb2748668e09d261ec9e067e702c9f17536ea5c892f43b29c78b2937786?context=explore. Therefore I will consider this as closed and done 👍


Laptop mouse, touchpad & keyboard mapped to single :

Hey,
I'm facing the problem that my laptops touchpad inputs are interpreted as keyboard inputs. My laptop is running NixOS 24.05 and keyd v2.4.3.
My config:
[ids]
04F3:31B9

[main]
capslock=overload(nav, esc)

[nav]
h=left
j=down
k=up
l=right

journalctl log of keyd starting
Jun 04 14:25:39 lnix systemd[1]: Started Keyd remapping daemon.

As you can see, there seem to be multiple devices mapped to exactly the same resource address (unlike in #709, where one address seems to have subnodes).

Help is much appreciated :)

#345
Try the following
[ids]
k:04F3:31B9

@rvaiya It would be better to write about k: and m: in the manual.

Thanks a lot & sorry for just scanning through the man page :/


music.163.com: cannot scrobble songs with white space in the title/artist

First of all, a big thanks to everyone who contributed to this plugin.
Lately I started using netease, but I noticed that the method.getInfo request returns 400 Bad Request if the song title has white space in it. I did some more checking and it appears to be an encoding issue; for music.163.com, white spaces in title are encoded to %C2%A0, which is the non-breaking space in UTF-8. This causes the getInfo API call to return 400. However, the exact same method.getInfo call returns 200 OK if I replace all %C2%A0 with %20 in the Request URL.
Is it a simple fix to swap all non-breaking spaces with regular spaces before UTF-8 encode? I'm new to Github and Chrome extension development but I'm willing to get my feet wet by testing a fix.

Have you got an example URL which is showing the problem?

Do you mean the Request URL for the method.getInfo call?
Here is one:
https://ws.audioscrobbler.com/2.0/?method=track.getinfo&autocorrect=1&artist=interior palette toeshoes&track=traffic jam
I've removed my api_key for security reasons. The request returns

Track not found

If I change the %C2%A0 in the track query string to %20, such as:
https://ws.audioscrobbler.com/2.0/?method=track.getinfo&autocorrect=1&artist=interior palette toeshoes&track=traffic jam
then it returns

82084417
Traffic Jam

http://www.last.fm/music/interior+palette+toeshoes/_/Traffic+Jam

617000
0
163
520

interior palette toeshoes

http://www.last.fm/music/interior+palette+toeshoes

The song is here:
http://music.163.com/#/song?id=748718
The white space issue does appear in this example to only affect the track string, and not the artist string. I am using Chrome on OSX. IIRC I ran into non-scrobbling issue for netease on Chrome on Windows 7 as well, though I didn't check if it was the same white space issue.

Any word on how progress on this is going? I've just run into the same problem and it looks like your findings are all sound.

Looks like the issue was fixed by fakelbst in
https://github.com/david-sabata/web-scrobbler/commit/6c7ab508ea43d92ef249189b408292bb96b5c22a
by replacing char code 160 with regular space.
Thank you fakelbst!!!


feature: 支持 IPv6 后的复制交互优化（closed #1438）

Codecov Report

Merging #1450 (cd4c69b) into v2.3.1-dev (a6e95f4) will increase coverage by 0.00%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##           v2.3.1-dev    #1450   +/-   ##
===========================================
  Coverage       73.83%   73.84%
===========================================
  Files             369      369
  Lines           25104    25104
===========================================
+ Hits            18536    18537    +1
+ Misses           6568     6567    -1

Impacted Files
Coverage Δ

...nents/collections/agent_new/choose_access_point.py
95.37% <0.00%> (+0.46%)
:arrow_up:

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


(WiP) Top down islands

Will eventually fix #8 & #11. Currently broken because of the need to perform a hacky patch, the exact mechanism of which remains elusive: in short, the hot-path from the root vnodes down to the Island must be 'decomposed' - ie a real-DOM-equivalent tree must be fashioned which excludes all component vnodes between the root and the Island contents, in order to avoid m.render triggering the views for each of these.
I attempted to do this with a clever reduce function but there were caveats:

Nested O(patch) Patchinko operations weren't unwrapped
The recursive Patchinko operation doesn't address the mismatch between the root.vnodes structure & the desired patch - couldn't find a way to establish that the component nodes need their contents 'bringing up' a level.

Another half baked attempt at fixing decomposition

More progress:

Local redraws work without triggering higher order redraws
Higher order redraws kinda trigger local redraws

The current blocker is a loss of DOM references between local redraw and global redraw 🤔

The same code works in Flems but not locally 🤔


DO NOT MERGE Document new option msg_store_disk_error_strategy

Docs for https://github.com/rabbitmq/rabbitmq-server/pull/512
https://github.com/rabbitmq/rabbitmq-server/issues/75

As described in https://github.com/rabbitmq/rabbitmq-server/issues/75, this PR is a WIP and should not be merged.

Closing since https://github.com/rabbitmq/rabbitmq-server/pull/512 was closed.


Add a mock Rusk server, which can be used for testing

Fixes #488

Codecov Report

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

@@             Coverage Diff             @@
##             rusk-ipc     #536   +/-   ##
===========================================
  Coverage            ?   54.87%
===========================================
  Files               ?      155
  Lines               ?     9143
  Branches            ?        0
===========================================
  Hits                ?     5017
  Misses              ?     3510
  Partials            ?      616

Continue to review full report at Codecov.

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

Codecov Report

:exclamation: No coverage uploaded for pull request base (rusk-ipc@34acd3c). Click here to learn what that means.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             rusk-ipc     #536   +/-   ##
===========================================
  Coverage            ?   54.72%
===========================================
  Files               ?      155
  Lines               ?     9166
  Branches            ?        0
===========================================
  Hits                ?     5016
  Misses              ?     3535
  Partials            ?      615

Continue to review full report at Codecov.

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


#2663 Remediation Workflow for Keptn 0.8

Closes #2663
As mentioned in Issue #2663, The integration test test_self_healing_scaling.sh depends on the completion of Issue #2558

Codecov Report

Merging #2688 (3127f48) into master (ff23900) will increase coverage by 0.04%.
The diff coverage is 58.92%.

@@            Coverage Diff             @@
##           master    #2688      +/-   ##
==========================================
+ Coverage   36.07%   36.11%   +0.04%
==========================================
  Files         161      161
  Lines        9248     9232      -16
  Branches      195      195
==========================================
- Hits         3336     3334       -2
+ Misses       5377     5368       -9
+ Partials      535      530       -5

Flag
Coverage Δ

moduleA
22.94% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

...emediation-service/handler/problem_open_handler.go
57.35% <27.77%> (-6.59%)
:arrow_down:

...diation-service/handler/evaluation_done_handler.go
50.57% <28.57%> (+6.43%)
:arrow_up:

remediation-service/handler/handler.go
61.92% <74.28%> (+4.82%)
:arrow_up:

...-service/event_handler/start_evaluation_handler.go
29.20% <86.20%> (+0.35%)
:arrow_up:

...diation-service/handler/action_finished_handler.go
47.82% <100.00%> (ø)

api/ws/hub.go
60.78% <0.00%> (-13.73%)
:arrow_down:

lighthouse-service/event_handler/common.go
33.33% <0.00%> (-3.23%)
:arrow_down:

Continue to review full report at Codecov.

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

From my perspective, the PR looks good (except for the two minor enhancements regarding logging)


refactor: migrate ExploreResultsButton component to FC & tsx

SUMMARY
Migrated ExploreResultsButton to TypeScript to apply direction outlined in #18100 .

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS

ADDITIONAL INFORMATION

[x] Has associated issue: #18100
[ ] Required feature flags:
[ ] Changes UI
[ ] Includes DB Migration (follow approval process in SIP-59)

[ ] Migration is atomic, supports rollback & is backwards-compatible
[ ] Confirm DB migration upgrade and downgrade tested
[ ] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

@ad-m @AAfghahi renderInvalidColumnMessage, renderTimeoutWarning, buildVizOptions are not used anywhere

@ad-m @AAfghahi renderInvalidColumnMessage, renderTimeoutWarning, buildVizOptions are not used anywhere. Should I remove them?

I do not feel entitled to judge the issue of style in this project (I have too little experience in the project), but due tagging, I will express my opinion: dead code should be removed from the codebase, and besides, it is probably removed from bundles provided to the user by the Webpack.

Hello! We can set up a test environment to see if it affects the functionality of the component, if it does not then we should remove them, I agree.

@EugeneTorap you have some linting errors on CI. You might wanna install pre-commit to avoid committing code like that. Just pre-commit install in the project directory to setup Git hooks. In addition, pre-commit speed-up linting code thanks to linting only changed files.

Oh I think this is already happening here: https://github.com/apache/superset/pull/17987

@AAfghahi This #17987 PR only converts code to FC and there's no typescript

@lyndsiWilliams Can you help me to fix ExploreResultsButton.test.jsx and also convert this test to typescript?

@lyndsiWilliams Can you help me to fix ExploreResultsButton.test.jsx and also convert this test to typescript?

Hey @EugeneTorap! What error are you getting when you run the test?
As far as conversion: My conversion method for JS to TS in these tests is to change the file to .tsx then fix all the errors, making sure to reuse any pre-existing types in the codebase. Are you running into a specific error in your conversion? We’re also trying to convert all of our Enzyme tests to React testing library. If you’re interested, you could take the TS/RTL conversion to a new PR for this test and I’d be delighted to give you some pointers.

@lyndsiWilliams

Error: useTheme() could not find a ThemeContext. The  component is likely missing from the app.

@lyndsiWilliams

Error: useTheme() could not find a ThemeContext. The  component is likely missing from the app.

You'll need to wrap each render in a <ThemeProvider />, as seen here in ExploreActionButtons.test.jsx. Upon further inspection, this test will need to be converted to RTL since this is a functional component now. The Enzyme tests are set up to test class function-only behavior like props, so these will now be broken. We've got some handy helper functions set up for our RTL tests in the spec/helpers file that will provide the theme (and other handy things if needed) for you.

@geido @AAfghahi @lyndsiWilliams Can you review the PR again.
And I think we can close #17987

/testenv up


Leftover child processes when using Lwt.pick

The following example (saved as par.ml, in this example) will leave a stray par.native running after the main program exits.
let f x =
  Lwt_unix.sleep x

let () =
  Parallel.init ();
  Lwt_main.run @@ Lwt.pick [
    Parallel.run f 0.1;
    Parallel.run f 1.0;
  ]

built with
ocamlbuild -use-ocamlfind -package lwt-parallel par.native

par.native is the executable itself :)

There are multiple par.native instances running during execution of the program. The child processes are not killed when their Lwt thread is canceled.
So while you are correct, there shouldn't be any left running after the main process exits.

Do you mean, that there is a process left after the process exits?

@ivg yes, that's what happens for me in the example above. The forked child process remains after the parent process exits.

ah, sorry, I misread you the first time. Will take a look. I do remember that we had this problem in the original program from which this library was forked. Maybe I should bump the fix from the upstream.
Thanks for noticing this!

I even get a leftover process when compiling and running the following:
let _ = Parallel.init ()

Also it seems that there exist the same amount of leftover processes after execution of program as the times Parallel.run is called.

If someone need a quickfix like I do - I'm wrapping my ocaml program with the following script. This will of course not be a good idea to run if your program hasn't got a unique name (:
#! /bin/bash

PN=$1; shift 1

./$PN $*
retc=$?
killall $PN
exit $retc


Conflicts with L5.3 NotificationServiceProvider

Laravel 5.3 introduces it's NotificationServiceProvider for https://laravel.com/docs/5.3/notifications which conflicts with this package.

Also see Notifications section at https://laravel.com/docs/5.3/upgrade

Quick-fix: If you do not use Laravel notifications just comment out Notification alias.

I used on Laravel 5.3 like this
'HtmlNotification' => Krucas\Notification\Facades\Notification::class,
then
Notification::success('Success message');
and all seems to work well


Slice bounds out of range in App.generateHandler…→UTF8Reader.Read

Saw a crash when a second client connected to gotty into a tmux session holding htop (i.e., ran via gotty tmux attach -t gotty to show it to a coworker, 'cause this is pretty awesome).
$ tmux new-session -s gotty htop
…
$ gotty tmux attach -t gotty
2015/08/17 07:59:02 Sever is running at :8080, command: tmux attach -t gotty
2015/08/17 07:59:04 New client connected: <IP_ADDRESS>:58751
2015/08/17 07:59:26 New client connected: <IP_ADDRESS>:63808
panic: runtime error: slice bounds out of range

goroutine 5 [running]:
github.com/yudai/utf8reader.(*UTF8Reader).Read(0xc82003ef58, 0xc82021c800, 0x400, 0x400, 0x400, 0x0, 0x0)
	GOPATH/src/github.com/yudai/utf8reader/utf8reader.go:47 +0x2ca
github.com/yudai/gotty/app.(*App).generateHandler.func1.1(0xc8201e1e30, 0xc820032018, 0xc820112460, 0xc8201101e0)
	GOPATH/src/github.com/yudai/gotty/app/app.go:89 +0x1f3
created by github.com/yudai/gotty/app.(*App).generateHandler.func1
	GOPATH/src/github.com/yudai/gotty/app/app.go:103 +0x5d3

… other goroutines behaving normally …

Unfortunately haven't been able to reproduce it, so possibly a fluke. Figured I'd open an issue and if I come up on other details I'll amend the issue.

Thank you for the report.
It was a kind of corner case and I overlooked it.
A new release with the fix is now available on the releases page.
Thank you!

Awesome!


Multiplatform HLS streaming player examples?

Hello, are there any renative multiplatform (aka. Android, MacOS, iOS, Windows, Tizen, WebOS) streaming player examples, as a starting point to understand the logic?

@analyserdmz , you can create a platform specific base file and use createElement  from react-native-web like so :
import { createElement } from "react-native-web"; const Video = (props) => {   const attrs = {     src: props.source,     poster: props.poster,     controls: "controls"   }   return createElement("video", attrs) } export default Video
Then use it the same way you do with react-native-video element :
<Video   source={require("./video.mp4")}   poster={'https://path-to-poster'} />
Furthermore, you can use html5 elements/tags directly inside your codebase, like using  element and it'd be interpretable without further code.

considering this closed


Getting API token is invalid for reads but writing works

Describe the bug
I am able to write to a database but unable to read from it. notion.pages.create(...) works fine but notion.databases.query(...) throws the following error:
APIResponseError: API token is invalid.

I am using the same integration secret and database ID for both create and query.  I also have all permissions checked on the integration.
To Reproduce
Node version: Node.js v20.0.0
Notion JS library version: ^2.2.10
Steps to reproduce the behavior:
const notion = new Client({auth: MY_INTEGRATION_SECRET})
const response = await notion.databases.query({database_id: MY_DATABASE_ID})
console.log(response)

Additional context
Here's the error output in the console:
@notionhq/client warn: request fail { code: 'unauthorized', message: 'API token is invalid.' }
/Users/qodesmith/repos/notion-bible/node_modules/@notionhq/client/build/src/errors.js:162
        return new APIResponseError({
               ^

APIResponseError: API token is invalid.
    at buildRequestError (/Users/qodesmith/repos/notion-bible/node_modules/@notionhq/client/build/src/errors.js:162:16)
    at Client.request (/Users/qodesmith/repos/notion-bible/node_modules/@notionhq/client/build/src/Client.js:347:54)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async file:///Users/qodesmith/repos/notion-bible/query.js:5:18 {
  code: 'unauthorized',
  status: 401,
  headers: Headers {
    [Symbol(map)]: [Object: null prototype] {
      date: [ 'Wed, 09 Aug 2023 18:06:15 GMT' ],
      'content-type': [ 'application/json; charset=utf-8' ],
      'content-length': [ '87' ],
      connection: [ 'close' ],
      'x-powered-by': [ 'Express' ],
      etag: [ 'W/"57-QCRLT3IovYEW+CkwyJQlFtiXiG8"' ],
      vary: [ 'Accept-Encoding' ],
      'cf-cache-status': [ 'DYNAMIC' ],
      'set-cookie': [
        '__cf_bm=33mACEOrIyHVjdW1eHWsSVHZfYmiAOGzlESz7OpVySM-1691604375-0-ATO1AawyUNzwJqjNYT1up01x2kroCltKDcExfueFAhOxy+O7/rQ60ChMbZLm5S2XdNtiJua1C/2HtIxYpZ8FPHk=; path=/; expires=Wed, 09-Aug-23 18:36:15 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None'
      ],
      server: [ 'cloudflare' ],
      'cf-ray': [ '7f41ee94c963425c-EWR' ]
    }
  },
  body: '{"object":"error","status":401,"code":"unauthorized","message":"API token is invalid."}'
}

Closing this issue as the issue is actively being debugged through Notion customer support.