Add policy feedback permissions

Issue number: N/A
Description of change
Adds permissions to control access to policy feedback interactions.
Checklist

[x] Have any relevant search models been updated?
[x] Have any relevant fixtures (fixtures/test_data.yaml) been updated?
[x] Have any relevant select-/prefetch-related field lists in the views and search apps been updated?
[x] Has the admin site been updated (for new models, fields etc.)?
[x] Has the README been updated (if needed)?

Codecov Report

Merging #948 into develop will increase coverage by 0.02%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop     #948      +/-   ##
===========================================
+ Coverage    96.66%   96.68%   +0.02%
===========================================
  Files          182      182
  Lines         5066     5104      +38
  Branches       479      484       +5
===========================================
+ Hits          4897     4935      +38
  Misses         112      112
  Partials        57       57

Impacted Files
Coverage Δ

datahub/interaction/permissions.py
100% <100%> (ø)
:arrow_up:

datahub/search/query_builder.py
99.35% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


invalid issuer in UserPrincipalManager (#642)

Summary
Allowing https://login.microsoftonline.com/ issuer to pass the token claim validation
Issue Type

Bug fixing

Starter Names

active directory spring boot starter

Additional Information

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: ekonwlo sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.


Map doesn't work

Subject: Map doesn't work
Description:
Go to the map on firefox
Results:
Get the "Your device doesn't support the map..." message
Backend version: develop-0a2f2ed7
Frontend version: develop-0a2f2ed7
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0
Page: https://app.couchers.org/search
User: aapeli (1)

Tested on FF dev edition + latest stable

Bleh. This was just some weird driver issue on ubuntu.


SPM issue

Running swift build on this package leads to:
Source files for target SFSafeSymbolsTests should be located under 'Tests/SFSafeSymbolsTests', or a custom sources path can be set with the 'path' property in Package.swift

This also means the project can't be regenerated with swift package generate-xcodeproj

Thanks! https://github.com/piknotech/SFSafeSymbols/pull/57 fixed a similar issues for the source files, but I forgot to also apply the fix to the test files.


[docs] Update builderbook.org image in showcase

@oliviertassinari sorry for my delay on #21274! I have now updated the builderbook.org image for the showcase section.
Thank you again for reviewing and merging my last pull request.

[x] I have followed (at least) the PR section of the contributing guide.

👌

thanks @oliviertassinari !


Lag, can't delete user input

This commit seems to have introduced a lot of lag...often can't type into chatbox now.
Lost delete button on user messages
https://github.com/tarasglek/chatcraft.org/commit/c052184d80618020c52c47bebd454c2b33982bc3

Looking at the code I don't understand why things got expensive. I noticed we now rerender mermaid diagram on every character too. Perhaps we need some test for overly frequent state updates? Is there some standard react tooling to help with that?

Can you give STR for lag?
I think rendering previews as tokens stream in is always going to be bad UX: poor performance as Mermaid/HTML get re-rendered; high failure rate as syntax is incomplete, etc.  I'd prefer to only render when message is complete.
Can you split this into two different issues, they don't seem related.  Also, you say "Lost delete button," but it got moved into the dots-menu (like GitHub).  No good?

i'm no longer seeing either issue. will open separate issues if i repro


Rename TemperatureCharts

Closes #
Description
Renamed to DateRangeTemperatureCharts

Current behavior (updates)

New behavior

Is this a breaking change (Yes/No):

Additional Information

Please review again. @taroj1205


handle sticky mode

I've created following class to handle sticky mode for wheelView.
use this if you need sticky mode for your wheelView.
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.lukedeighton.wheelview.WheelView;

import java.util.Timer;
import java.util.TimerTask;

/**
 * Created by shayan on 10/20/17.
 */
public class StickyWheelView extends WheelView implements WheelView.OnWheelAngleChangeListener {

    Timer timer;
    TimerTask timerTask;

    boolean handleSticky;
    Handler uiHandler;

    OnWheelAngleChangeListener onWheelAngleChangeListener;

    public StickyWheelView(Context context) {
        super(context);
        init();
    }

    public StickyWheelView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public StickyWheelView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init() {
        super.setOnWheelAngleChangeListener(this);
        uiHandler = new Handler(Looper.getMainLooper());
    }

    @Override
    public void setOnWheelAngleChangeListener(OnWheelAngleChangeListener listener) {
        this.onWheelAngleChangeListener = listener;
    }

    @Override
    public boolean onTouchEvent(@NonNull MotionEvent event) {

        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            handleSticky = false;
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
            handleSticky = true;
            onWheelAngleChange(getAngle());
        }

        return super.onTouchEvent(event);
    }

    @Override
    public void onWheelAngleChange(float angle) {
        timer = invalidateTimerAndCreateNew(timer, timerTask);
        timerTask = new TimerTask() {
            @Override
            public void run() {
                goToNearestFixItem();
            }
        };

        timer.schedule(timerTask, 100);

        // call listener if is not null
        if (onWheelAngleChangeListener != null) {
            onWheelAngleChangeListener.onWheelAngleChange(angle);
        }
    }

    private void goToNearestFixItem() {

        if (!handleSticky) {
            return;
        }
        // getAngle is wide range, we map it too 0 - 360
        float correctAngle = Math.abs(getAngle()) % 360;

        // each item angle
        float itemAngle = 360 / getWheelItemCount();

        // item is currently sticky.
        if (correctAngle % itemAngle == 0) {
            return;
        }

        int power = Math.abs((int) (getAngle() / 360));

        float nextAngle = ((int) (correctAngle / itemAngle) + 1) * itemAngle + (360 * power);
        float preAngle = ((int) (correctAngle / itemAngle)) * itemAngle + (360 * power);
        int sign = getAngle() < 0 ? -1 : 1;

        if (correctAngle % itemAngle > itemAngle / 2) {
            goToAngleWithAnimation(nextAngle * sign);
        } else {
            goToAngleWithAnimation(preAngle * sign);
        }
    }

    private float temporaryFinalAngel;

    private void goToAngleWithAnimation(float angle) {
        temporaryFinalAngel = angle;

        final boolean increase;
        increase = getAngle() <= angle;

        uiHandler.post(new Runnable() {
            @Override
            public void run() {

                if (temporaryFinalAngel == getAngle()) {
                    return;
                }

                // user changed angle again, don't set angle again
                if (!handleSticky) {
                    return;
                }

                float nextAngle;
                if (increase) {
                    nextAngle = Math.min(getAngle() + 3, temporaryFinalAngel);
                } else {
                    nextAngle = Math.max(getAngle() - 3, temporaryFinalAngel);
                }

                setAngle(nextAngle);
                uiHandler.postDelayed(this, 10);
            }
        });
    }

    private Timer invalidateTimerAndCreateNew(Timer timer, TimerTask timerTask) {
        if (timer != null) {
            timer.cancel();
            timer.purge();
        }

        if (timerTask != null) {
            timerTask.cancel();
        }

        timer = new Timer();
        return timer;
    }
}

for use this class add StickyWheelView instead of WheelView in your xml or java code

I know this is kind of a late time, but were you able to test this with an odd number of items? I found a bug where it doesn't sticks properly with in this case

For which purpose it is used and how to use this component? Can you please share some more info about StickyWheelView.

@jinchuika Sorry for the late answer:
I don't remind this class actually, in one project we need to show one item as sticky, the project started in the hackathon and I write this code, actually, I don't test it in the real application with the dynamic case,
@prem-p-simform For using this class you need to replace it with default wheelView, in XML or Java class, everywhere you have wheelView, simply replace it with this class, but as Jinchuika mentioned, this class might have some issue in the odd number of the items.
I can spend some time fixing it for odd number items, if it's an emergency to you tell me, I will fix issues.

@shayanpourvatan I have requirement of sticky item, For example sticky headers. I want to stick item at start of the list.

@prem-p-simform I think you need to search for other libraries, this library as shown on the start page, used for wheel items, I think you need a recyclerView sticky header.

I searched for that, Could not find RecyclerView LayoutManager which satisfy my needs. I need curved half cirlce layout.

@prem-p-simform This library is not what you want, I think you must write it by your self or do some hacky way ( I don't have an idea right now )


Add a new CleanFilesReporter

Fixes #430
I realized that #430 was essentially a request for a reporter, not a config option. Here's an implementation. I like the idea of the reporter having access to all of the files that were linted, because people can write reporters with statistical elements, like what % of files are clean, what % of lines are clean, etc.

:+1:

Thanks for the pull request, @srawlins.
Merged in 2a8b0ba.


feature request: led control via services?

we can turn off led via configuration - but what if we could turn on/off led via services also? it would be neat to have an automation which would turn on the led during pairing timer, and then turn off the led after timer finishes (and pairing mode is off).

i agree - that would be useful.
Is that possible?
thanks

I think the best way to implement this would be for zigbee2mqtt to make this configurable via MQTT (like permit_join and some other aspects of the configuration). Right now, I don't see that this is an option in the docs.

MQTT implementation sounds good too - as long as we will be able to turn on/off led "on the fly", I'm good with everything ;)

#https://github.com/Koenkk/zigbee2mqtt/issues/1442

Considering there is no support for this for some time, I don't think this will get implemented soon. Also with the boom of possible adapters I don't think led is generic enough to get support anymore.


TypeError: feathers.errors is not a function

Following the steps under https://github.com/feathersjs/feathers-logger#vanilla-usage, I get that TypeError at the line:
.configure(feathers.errors())

Sorry @funkybunky this is massively out of date. Right now you probably shouldn't use feathers-logger with new versions of feathers-errors. Really you should just use your own logging function like the one created by the generator. Any Express compatible one will work.
I'll add a disclaimer to the readme and look to update it over the next week or two.

This was just a documentation issue. The logger should still work with latest Feathers as described.


stable repo update ?!

Hey,
Stable Repo still has v 0.0.27. When still the most stable version, everything great, if not please update in stable-repo.
(see https://github.com/ioBroker/ioBroker.repositories)
Thanx for checking
Ingo F

Ok, I will send a pullrequest.


DeFi 'super-node' upstream proxying service

What would you like to be added:
An API gateway/proxy service for DeFiChain jellyfish users.
Why is this needed:
Currently, the JSON-RPC channel in DeFiCh/ain is password protected by default. Important and intentional by design. However, this makes it difficult to setup password-less service for public to uplink to. It does not make sense to implement API gateway/proxy features in C++. This will also offload the networking layer to a purpose built provider. (👀 NGINX & Related)
We need:

Whitelist based service/system for super-node hosting to on/off certain RPCs?
A build of DeFiCh/ain without wallet features
HTTPS & HTTP2 capable gateway for TLS termination
Cloud Native - docker capable setup

We should:

Use infrastructure as code for deployment
Open source the setup for anyone that wants to run it
Use solution with high memory/networking pressure capability over fully featured solutions.

@uzyn @monstrobishi what are your thoughts on this?

It will be publicly hosted nodes with no password protection, similar Infura.
e.g. https://ocean.defichain.com is the endpoint and it will be mapped to various stateless nodes.
We can add HTTPS/HTTP2 with nginx load balancer in front and build an image with proxy and node readily available.

Thanks @uzyn I was going to reply the same

But we can still look into this suggestion past the initial stage

Thanks for the inputs!

I will create a repo in due time called DeFiCh/ocean to codename the development.
Draft a RFC for the technical design of the project, will tag y'all when it's ready for review.

Closed in favour of DeFi Whale & DeFi Ocean projects that are work in progress.


[WIP] Swap integers/numerics naming

Full integers don't work in LightGBM.

@guolinke Can merge.
@szilard this should be better (default to numeric).

Yeah, I figured that out (full ints not working).
Yeah, new default better.


Azure Active Directory should be a typo

"You can install Azure DevOps on more than one server if the servers are all joined to an Azure Active Directory domain that's based on a functional level that the servers support."
Here, "Azure Active Directory" should be "Active Directory"

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

ID: 4cf58945-edff-cb3b-ab71-d45d480f1044
Version Independent ID: 8a1c8ac9-a829-837b-5e52-81766c1f545e
Content: Requirements for setup, upgrade, and administration - Azure DevOps Server & TFS
Content Source: https://mseng.visualstudio.com/DefaultCollection/TechnicalContent/_git/tfs-docs-pr?path=%2fdocs%2frequirements.md&version=GBlive&_a=contents
Product: devops-server
Technology: tfs-admin
Git Login: aaronhallberg
Microsoft Alias: aaronha

@wandersick - Thank you for the correction. I am updating the article today.


Known problematic fonts

See https://github.com/fontist/fontist/issues/344

@ronaldtse This is the way we should show the list? Like as a part of docs, right?


No 'Access-Control-Allow-Origin' with base64 data

Access to XMLHttpRequest at 'http://x.x/v1/media/store' from origin 'http://localhost:3002' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Standard forms works without ant problems. Error is present only while I try to pass base64 media in request by Axios post, from Nuxt (Vue) to my API in Laravel.
<?php

return [

    'paths' => ['v1/*'],

    'allowed_methods' => ['*'],

    'allowed_origins' => ['*'],

    'allowed_origins_patterns' => [],

    'allowed_headers' => ['*'],

    'exposed_headers' => false,

    'max_age' => false,

    'supports_credentials' => false,

];

Something related?
dev.ERROR: implode(): Invalid arguments passed {"userId":8,"exception":"[object] (ErrorException(code: 0): implode(): Invalid arguments passed at /home/vagrant/x/vendor/asm89/stack-cors/src/Asm89/Stack/CorsService.php:94)
[stacktrace]

Same issue here :/

If you have that error, it would seem that exposed_headers is something other then false but not an array. Can you update to the latest version and double-check your config (and clear the cache?)

I am currently on 1.0.5.
I have tried clearing my cache.
My config is a direct copy of the template, except I have:
'paths' => ['*'],
Thoughts?

Error:
Access to XMLHttpRequest at 'http://localhost:6001/socket.io/?EIO=3&transport=polling&t=N3FD_67' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Config: (I'm experimenting with allowed_headers)
`<?php
return [
/*
|--------------------------------------------------------------------------
| Laravel CORS Options
|--------------------------------------------------------------------------
|
| The allowed_methods and allowed_headers options are case-insensitive.
|
| You don't need to provide both allowed_origins and allowed_origins_patterns.
| If one of the strings passed matches, it is considered a valid origin.
|
| If array('*') is provided to allowed_methods, allowed_origins or allowed_headers
| all methods / origins / headers are allowed.
|
*/

/*
 * You can enable CORS for 1 or multiple paths.
 * Example: ['api/*']
 */
'paths' => ['*'],

/*
* Matches the request method. `[*]` allows all methods.
*/
'allowed_methods' => ['*'],

/*
 * Matches the request origin. `[*]` allows all origins.
 */
'allowed_origins' => ['*'],

/*
 * Matches the request origin with, similar to `Request::is()`
 */
'allowed_origins_patterns' => ['*'],

/*
 * Sets the Access-Control-Allow-Headers response header. `[*]` allows all headers.
 */
'allowed_headers' => [
    '*',
    'Content-Type',
    'X-Auth-Token',
    'Origin',
    'Authorization',
    'Access-Control-Allow-Origin',
],

/*
 * Sets the Access-Control-Expose-Headers response header.
 */
'exposed_headers' => false,

/*
 * Sets the Access-Control-Max-Age response header.
 */
'max_age' => false,

/*
 * Sets the Access-Control-Allow-Credentials header.
 */
'supports_credentials' => false,

];
`

Here is the request details according to chrome:
GET /socket.io/?EIO=3&transport=polling&t=N3FEaAe HTTP/1.1 Host: localhost:6001 Connection: keep-alive Accept: */* Sec-Fetch-Dest: empty User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36 Origin: http://localhost:8000 Sec-Fetch-Site: same-site Sec-Fetch-Mode: cors Referer: http://localhost:8000/ Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9

socket.io? Is that running through your laravel application?

I am running socket.io to connect my Vue application to my laravel-webhooks instance on localhost:6001. I am new to socket.io, so my setup might be wrong as well.

socket.io has nothing to do with how you configure laravel-cors. You should handle CORS there.

Okay. I will look into that. Thank you!

@Krystus how are you processing the media? Are you returning the response or die()/echo() somewhere?

@barryvdh after composer update problem is no longer present.
Updating fruitcake/laravel-cors (v1.0.4 => v1.0.5): Downloading (100%)


fix fault in fix-permissions where group perms were not set correctly

Currently this line means: find all files where group read is not set AND group write is not set, and chmod them g+rw.
I think it should be: find all files where group read is not set OR group write is not set, and chmod them g+rw.
Otherwise files which are already g+r do not become g+rw.
This broke the origin extended image ecosystem test.
@hhorak

@hhorak assuming this is good to merge, please will you then rebuild and push all builder images affected by this?
@bparees fyi

[test]

Can one of the admins verify this patch?

Yes, thanks for spotting this, I'll merge once we get tests results.

please delay merging for a moment, I just want to confirm one more thing here

ok, all good here, tests have passed, please merge if happy

tests passed. merging.


feat(subscription): implement new rising protocol graphql-ws

The official GraphQL specification deliberately does not specify the transport layer.
For subscription, historically, GraphQL over WebSocket Protocol by apollographql/subscriptions-transport-ws library is widely adapted as de-facto standard.
However, the library is not actively maintained, and it officially recommends migrating to the "new" GraphQL over WebSocket Protocol of enisdenjo/graphql-ws.
Those two protocols are incompatible with each other.
The ecosystem is incrementally adapting to the new de-facto standard.
Currently, graphql_flutter only implements subscriptions-transport-ws's protocol. So, if a server uses graphql-ws protocol, graphql_flutter cannot be used.
Thus, hereby I request implementing a new protocol.
Thanks.

Thanks @jjangga0214 for these details. It should be mentionned on the readme that graphql-flutter is not supporting graphql-w protocol (and thus, it's - for now - a useless library as it's the new standard...)

Would be nice to implemented as soon as possible. thx!

I also needed this, so i put together a quick working example: https://github.com/maximilianmaihoefner/graphql-flutter/tree/graphql-transport-ws
You can try it out by specifying the following in your pubspec.yaml:
dependencies:
  graphql:
    git:
      url: https://github.com/maximilianmaihoefner/graphql-flutter/tree/graphql-transport-ws
      path: packages/graphql
      ref: graphql-transport-ws
  graphql_flutter:
    git:
      url: https://github.com/maximilianmaihoefner/graphql-flutter
      path: packages/graphql_flutter
      ref: graphql-transport-ws

dependency_overrides:
  graphql:
    git:
      url: https://github.com/maximilianmaihoefner/graphql-flutter
      path: packages/graphql
      ref: graphql-transport-ws

And specifying the new Subprotocol when creating the WebsocketLink:
final WebSocketLink websocketLink = WebSocketLink(
  subscriptionUri,
  config: const SocketClientConfig(autoReconnect: false),
  subProtocol: SocketSubProtocol.graphqlTransportWs,
);

The main changes have been made in (websocket_client.dart)[https://github.com/maximilianmaihoefner/graphql-flutter/blob/graphql-transport-ws/packages/graphql/lib/src/links/websocket_link/websocket_client.dart], it is however not a super clean implementation.

@maximilianmaihoefner Why not open a PR to contribute to your work?

@vincenzopalazzo I considered opening a PR, but I don't think my implementation is super clean or maintainable, it probably needs a better concept for supporting both subprotocols. Right now I'm just doing string comparisons to decide which Message to send, it is also missing tests. And I'm not sure I have the time right now to work on these issues. If you want I can submit a PR, but as mentioned, I don't think its in a mergeable state.

@maximilianmaihoefner I see the code, and yes I agree with your with the better implementation of the protocol healing.
However, we can integrate it and clean it after more testing.
Nothings born clean the first time :)

@vincenzopalazzo I opened a PR, another thing that should be looked at is the ping implementation, right now I'm highjacking the inactivityTimeout, which results in a ping every 30 Seconds, the original JS-Client, by default, never sends pings. Only if the keepAlive is specified.

I am confused by some of the comments. Based on the PR, graphql-ws (the newer protocol) was already implemented. It's the older version of the protocol that you're adding?

Nevermind, I see the difference now.

@chrisdrobison No worries, I was confused when I looked at the code for the first time as well. The new protocol is called graphql-transport-ws (which was the name of the old library) and the old protocol is called graphql-ws (which is the name of the new library). So I can definitely understand the confusion.


Hard-coded format vs. custom formatDate

When using a custom formatDate (and parseDate) I've noticed that the default altFormat is actually still hard-coded further down in the code, notably F j, Y at:
https://github.com/chmln/flatpickr/blob/master/src/flatpickr.js#L514

Hello,
aria-label is an attribute for those using accessibility devices.
It has nothing to do with altFormat and is hard-coded to provide the most readable date format for those with accessibility needs.
User-specified altFormats are not always easily readable and accessible.

I was using momentjs in those custom methods, which means the given format cannot be used. While easy to work around, I was hoping it could still be configured to use a format that's appropriate.

@fabien ah ok. I'll make it configurable. But if you're using moment just for date parsing/formatting, I'd recommend ditching it in favor of flatpickr's built-in & lightweight parser/formatter

@chmln thanks for reopening! I'm using momentjs throughout my app, so I prefer to have consistent formatting across all my components that deal with dates.
I was using a hybrid of flatpickr's built-in functionality an momentjs before, and contemplated mapping from momentjs format to flatpickr's until I discovered you could completely swap out formatting/parsing with your own.
Much appreciated, keep up the great work!


Fixing share name for archive shares

There was an underscore missing in the share name. Fixed that

@alkohli
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

emailed author

emailed assignee

#sign-off


reducing poll latency with ioctl serial control

This pr fixes the latency on the serial port that is only noticeable when communicating at high speeds.

Tested on HW.

Tested on which hardware is the important part missing here. I suppose it's an ftdi converter?
Please add such details to the commit message.

I tested this on FTDI on an Up Core board, and it noticeably reduced latency.
Also of interest, MAVROS uses this same technique if you give it the serial port directly:
https://github.com/mavlink/mavros/blob/7c8b06ba17c9912628cd7c64f1f238e989863418/libmavconn/src/serial.cpp#L100

Tested it with the pocket beagle serial port which doesn't have a USB->Serial connection works fine, also tested with my FDTI adaptor.


Apply compiler warnings to test utilities

Description
This was an oversight. Because sfml-test-main isn't made via a macro, it was overlooked that we weren't applying compiler warnings to these source files. Thanks to @JonnyPtn for spotting this.
Tasks

[x] Tested on Linux
[x] Tested on Windows
[x] Tested on macOS
[x] Tested on iOS
[x] Tested on Android

SFMLBuildMaster: Build this please.


Proposed v0.28.0 "bijou" release: smaller binaries, faster processing, more ARM64, integrated mozjpeg+pngquant

This is a meta-issue to track the many improvements that are planned/proposed for the forthcoming v0.28.0 of sharp.
The release date is very much to be determined; please don't ask.
Smaller install footprint, faster install time
The latest version of sharp v0.27.2 occupies 38MB of disk space, a figure has been creeping up recently, especially with the addition of AVIF support via libaom.
$ npm install<EMAIL_ADDRESS>$ du -sh node_modules/
38M	node_modules/

For sharp v0.28.0, the plan is to approximately halve this to around 20MB of disk space.
Changes to prebuilt binaries:

[ ] Statically-compile a single libvips shared library with all of its dependencies (Linux and macOS)
[ ] Optimise select dependencies for binary size (-Os) where libvips' use of them does not benefit from performance (-O3)
[ ] Only decompress C header files when sharp is to be built from source
[ ] For AVIF de/compression, replace libaom with the smaller and slightly faster dav1d+rav1e combo

Changes to npm dependency tree:

[ ] replace array-flatten dependency with [].concat(...arr)
[ ] revert simple-get dependency to v3.1.0 for de-duping with prebuild-install
[ ] replace npmlog dependency with console.log/error

Faster processing
Changes to prebuilt binaries:

[ ] Replace zlib with zlib-ng to improve PNG de/compression performance by ~20%
[ ] x64 binaries compiled with support for newer SIMD intrinsics (e.g. SSE4.2, CLMUL)

Improve ARM64 support
ARM64 is currently supported on modern glibc-based Linux such as Raspberry Pi OS. The aim is to expand the provision of binaries for more aarch64 platforms:

[ ] Apple M1 (darwin-arm64v8)
[ ] Alpine Linux aarch64 (linuxmusl-arm64v8)
[ ] Replace Travis CI with services kindly donated to the libvips project by https://aarch64.com/
[ ] Find a CI provider that makes Apple M1 hardware available to open source projects

Optimise output
It's quite common for packages that depend on sharp to also depend on imagemin for imagemin-mozjpeg and imagemin-pngquant, which can lead to an inefficient two stage process.
Changes to prebuilt binaries:

[ ] Replace libjpeg-turbo with mozjpeg
[ ] Provide experimental libimagequant v2.4.1 (BSD 2-clause)

Supporting improvements to API and documentation:

[ ] Improve sharp jpeg API to easily select "maximum" mozjpeg options (see below)
[ ] Add code examples to docs with equivalents of running mozjpeg and pngquant

This will allow access to the features of mozjpeg and pngquant as part of your existing sharp image processing pipelines without the need to install further dependencies or spawn child processes.
// PROPOSED API - NOT YET AVAILABLE

sharp(input)
  .jpeg({ mozjpeg: true })
  .toBuffer()

// PROPOSED API - NOT YET AVAILABLE

Exciting news :)
I just want to let you know that if you need any help or simply testing with Intel/M1 macs, I'd be glad to help.

Really excited about replacing libaom with dav1d and rav1e.
Currently most popular CI services are yet to support M1. CodeMagic (no affiliation) provides mac-based CI specifically and supports open-source projects according to their FAQs. Maybe it could be used as a secondary CI in addition to the non-M1 CI.

https://github.com/lovell/sharp/issues/2604

The first pre-release of v0.28.0 is now available for some early testing:
npm install lovell/sharp#v0.28.0-alpha1

Notes:

Prebuilt libvips is v8.10.6-beta2
For Apple M1, prebuilt libvips binaries are provided but not prebuilt sharp binaries
32-bit Windows support is not yet available in this pre-release
For help accessing mozjpeg and pngquant features, please see the updated documentation/examples for jpeg and png (temporary links)
The version of zlib-ng v2.0.0-RC2 is a release candidate

This pre-release uses ~1/3rd less disk space than v0.27.2, e.g. here's Linux x64:
$ du -sh node_modules/
27M	node_modules/

Can't seem to get Sharp running on M1. Tried this using M1, getting an issue:
⚠  Error: 'darwin-arm64v8' binaries cannot be used on the 'darwin-x64' platform. Please remove the 'node_modules/sharp' directory and run 'npm install' on the 'darwin-x64' platform.

package.json:
"sharp": "github:lovell/sharp#v0.28.0-alpha1"

brew info vips
vips: stable 8.10.5 (bottled)
Image processing library
https://github.com/libvips/libvips
/opt/homebrew/Cellar/vips/8.10.5_2 (167 files, 14MB) *

Tried:
reinstalling libvips, removing node_modules directory and rerunning install. Tried non-alpha sharp version. Am I missing a step?

@SaviourSelf The message 'darwin-arm64v8' binaries cannot be used on the 'darwin-x64' platform means that ARM64 Node.js is being used at npm install time but (Rosetta emulated) x64 Node.js is being used at runtime. You probably have multiple, conflicting architectures of Node.js installed.

The (first and hopefully only) v0.28.0 beta release is now available. It would be especially great if those with Apple M1 devices are able to help test this:
npm install lovell/sharp#v0.28.0-beta1

Notes:

Upgrade to libvips v8.10.6 release.
Upgrade to zlib-ng v2.0.2 release.
Upgrade to aom v3.0.0 release without high bit rate support. Please see https://github.com/lovell/sharp-libvips/issues/97 for the future possible switch to dav1d+rav1e.
Excludes yet-to-be-released filesystem size improvements https://github.com/nodejs/node-addon-api/pull/889 and https://github.com/libvips/libvips/pull/2119 - we can pick these up in a future release when they're ready.

Clean M1 Mac test:

Failed, without developer command line tools:

npm ERR! Error while executing:<br/>
npm ERR! /usr/bin/git ls-remote -h -t<EMAIL_ADDRESS>npm ERR!
npm ERR! xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
npm ERR!
npm ERR! exited with error code: 1
npm ERR!      /Users/mike/.npm/_logs/2021-03-27T19_17_49_305Z-debug.log

After installing the command line tools it installed fine!

I also tested it also in a Ubuntu20.04 container ( nvidia/cuda:11.1.1-cudnn8-runtime-ubuntu20.04 ), it failed using either of these commands:
npm install lovell/sharp#v0.28.0-beta1
npm --arch=x64 --platform=linux install lovell/sharp#v0.28.0-beta1

Current version of sharp installs in the container without issue.
 Extracting by manifest.
317 silly tarball no local data for fs-constants@https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz. Extracting by manifest.
318 silly tarball no local data for base64-js@https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz. Extracting by manifest.
319 silly tarball no local data for buffer@https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz. Extracting by manifest.
320 silly tarball no local data for readable-stream@https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz. Extracting by manifest.
321 silly tarball no local data for chownr@https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz. Extracting by manifest.
322 silly tarball no local data for ansi-regex@https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz. Extracting by manifest.
323 silly tarball no local data for readable-stream@https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz. Extracting by manifest.
324 silly tarball no local data for is-fullwidth-code-point@https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz. Extracting by manifest.
325 silly tarball no local data for number-is-nan@https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz. Extracting by manifest.
326 silly tarball no local data for code-point-at@https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz. Extracting by manifest.
327 silly tarball no local data for is-arrayish@https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz. Extracting by manifest.
328 silly tarball no local data for mimic-response@https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz. Extracting by manifest.
329 silly tarball no local data for simple-concat@https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz. Extracting by manifest.
330 silly tarball no local data for lru-cache@https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz. Extracting by manifest.
331 silly tarball no local data for decompress-response@https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz. Extracting by manifest.
332 silly tarball no local data for yallist@https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz. Extracting by manifest.
333 silly tarball no local data for util-deprecate@https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz. Extracting by manifest.
334 silly tarball no local data for safe-buffer@https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz. Extracting by manifest.
335 silly tarball no local data for process-nextick-args@https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz. Extracting by manifest.
336 silly tarball no local data for string_decoder@https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz. Extracting by manifest.
337 silly tarball no local data for core-util-is@https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz. Extracting by manifest.
338 silly tarball no local data for inherits@https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz. Extracting by manifest.
339 silly tarball no local data for strip-json-comments@https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz. Extracting by manifest.
340 silly tarball no local data for isarray@https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz. Extracting by manifest.
341 silly tarball no local data for ini@https://registry.npmjs.org/ini/-/ini-1.3.8.tgz. Extracting by manifest.
342 silly tarball no local data for wrappy@https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz. Extracting by manifest.
343 silly tarball no local data for deep-extend@https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz. Extracting by manifest.
344 silly tarball no local data for once@https://registry.npmjs.org/once/-/once-1.4.0.tgz. Extracting by manifest.
345 silly tarball no local data for wide-align@https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz. Extracting by manifest.
346 silly tarball no local data for strip-ansi@https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz. Extracting by manifest.
347 silly tarball no local data for end-of-stream@https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz. Extracting by manifest.
348 silly tarball no local data for string-width@https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz. Extracting by manifest.
349 silly tarball no local data for aproba@https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz. Extracting by manifest.
350 silly tarball no local data for signal-exit@https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz. Extracting by manifest.
351 silly tarball no local data for object-assign@https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz. Extracting by manifest.
352 silly tarball no local data for has-unicode@https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz. Extracting by manifest.
353 silly tarball no local data for delegates@https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz. Extracting by manifest.
354 silly tarball no local data for readable-stream@https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz. Extracting by manifest.
355 silly tarball no local data for gauge@https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz. Extracting by manifest.
356 silly tarball no local data for set-blocking@https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz. Extracting by manifest.
357 silly tarball no local data for console-control-strings@https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz. Extracting by manifest.
358 silly tarball no local data for which-pm-runs@https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz. Extracting by manifest.
359 silly tarball no local data for are-we-there-yet@https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz. Extracting by manifest.
360 silly tarball no local data for rc@https://registry.npmjs.org/rc/-/rc-1.2.8.tgz. Extracting by manifest.
361 silly tarball no local data for pump@https://registry.npmjs.org/pump/-/pump-3.0.0.tgz. Extracting by manifest.
362 silly tarball no local data for npmlog@https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz. Extracting by manifest.
363 silly tarball no local data for noop-logger@https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz. Extracting by manifest.
364 silly tarball no local data for napi-build-utils@https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz. Extracting by manifest.
365 silly tarball no local data for mkdirp-classic@https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz. Extracting by manifest.
366 silly tarball no local data for expand-template@https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz. Extracting by manifest.
367 silly tarball no local data for github-from-package@https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz. Extracting by manifest.
368 silly tarball no local data for semver@https://registry.npmjs.org/semver/-/semver-5.7.1.tgz. Extracting by manifest.
369 silly tarball no local data for simple-swizzle@https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz. Extracting by manifest.
370 silly tarball no local data for minimist@https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz. Extracting by manifest.
371 silly tarball no local data for color-name@https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz. Extracting by manifest.
372 silly tarball no local data for color-string@https://registry.npmjs.org/color-string/-/color-string-1.5.5.tgz. Extracting by manifest.
373 silly tarball no local data for tunnel-agent@https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz. Extracting by manifest.
374 silly tarball no local data for color-convert@https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz. Extracting by manifest.
375 silly tarball no local data for simple-get@https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz. Extracting by manifest.
376 silly tarball no local data for tar-fs@https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz. Extracting by manifest.
377 silly tarball no local data for semver@https://registry.npmjs.org/semver/-/semver-7.3.5.tgz. Extracting by manifest.
378 silly tarball no local data for node-addon-api@https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz. Extracting by manifest.
379 silly tarball no local data for prebuild-install@https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.0.1.tgz. Extracting by manifest.
380 silly tarball no local data for detect-libc@https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz. Extracting by manifest.
381 silly tarball no local data for color@https://registry.npmjs.org/color/-/color-3.1.3.tgz. Extracting by manifest.
382 silly tarball no local data for bl@https://registry.npmjs.org/bl/-/bl-4.1.0.tgz. Extracting by manifest.
383 silly tarball no local data for tar-stream@https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz. Extracting by manifest.
384 silly tarball no local data for node-abi@https://registry.npmjs.org/node-abi/-/node-abi-2.21.0.tgz.  System Linux 5.10.21-Unraid
556 error gyp ERR! command "/home/mike/.nvm/versions/node/v14.15.4/bin/node" "/home/mike/.nvm/versions/node/v14.15.4/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
556 error gyp ERR! cwd /home/mike/Dev/test/node_modules/sharp
556 error gyp ERR! node -v v14.15.4
556 error gyp ERR! node-gyp -v v7.1.2
556 error gyp ERR! not ok
557 verbose exit 1

@mikeburgh Thank you very much for testing.

After installing the command line tools it installed fine!

This is the expected behaviour. Prebuilt darwin-arm64v8 binaries will be provided for libvips but not sharp. This will be documented - see https://github.com/lovell/sharp/blob/bijou/docs/install.md#apple-m1
The Linux problem looks like it might be an npm v7 permissions thing. You mentioned Ubuntu 20.04 but the appearance of "Linux 5.10.21-Unraid" suggests this could be some kind of NAS device? If attempting to install a known-good tag e.g. npm install lovell/sharp#v0.27.2 fails in the same manner than it's unlikely to be related to the changes in v0.28.0.

@lovell On the M1, figured the command tools would be required, just wanted to give you full results from a clean machine.
With linux, yes the container runs inside an Unraid machine (https://unraid.net/), however installing prior versions work, which is why I raised it:
npm install lovell/sharp#v0.27.2:
[                  ] \ reify:sharp: http fetch GET 200 https://codeload.github.com/lovell/sharp/tar.gz/956f7e29db3c[                  ] \ reify:sharp: http fetch GET 200 https://codeload.github.com/lovell/sharp/tar.gz/956f7e29db3c[                  ] \ reify:sharp: http fetch GET 200 https://codeload.github.com/lovell/sharp/tar.gz/956f7e29db3c[                  ] \ reify:sharp: http fetch GET 200 https://codeload.github.com/lovell/sharp/tar.gz/956f7e29db3c
added 74 packages, and audited 75 packages in 54s

9 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

@mikeburgh I've tried using Node.js 14 installed via nvm in a clean Ubuntu 20.04 container and sharp v0.28.0-beta1 installs (from GitHub) correctly. If this problem persists on your specific machine after sharp v0.28.0 is published to npm, we can work out what's wrong in a new issue.

$ docker run -it --rm ubuntu:20.04 /bin/bash

Inside the container:
# apt-get update
# apt-get install -y curl git
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
# source /root/.bashrc
# nvm install 14
# node -v
v14.16.0
# npm -v
6.14.11
# npm install lovell/sharp#v0.28.0-beta1
+<EMAIL_ADDRESS>added 70 packages from 186 contributors and audited 70 packages in 17.314s

v0.28.0 is now available, thanks for everyone's help, please open a new issue for any problems.
As well as the performance improvements and added features of mozjpeg and pngquant, filesystem usage has been reduced by 30% (12MB) and we have identified further, future possible savings.
$ npm install<EMAIL_ADDRESS>$ du -sh node_modules/
26M	node_modules/

If you work at an organisation that benefits commercially from sharp and libvips, please consider a donation to https://opencollective.com/libvips as we're looking for financial help to cover paid summer internships.

Due to a small administrative error on my part, the just-published v0.28.1 contains the complete set of filesystem savings that should have been part of v0.28.0.
https://packagephobia.com/result?p=sharp reports that v0.28.1 has an install size of 23MB.


ERROR : vcpkg install boost:x64-windows miniupnpc:x64-windows openssl:x64-windows

Package<EMAIL_ADDRESS>Host Environment

Host: x64-windows
Compiler: MSVC 19.39.33519.0
vcpkg-tool version: 2024-03-14-7d353e869753e5609a1f1a057df3db8fd356e49d
vcpkg-scripts version: ce1916404 2024-03-30 (3 days ago)

To Reproduce
vcpkg install boost:x64-windows miniupnpc:x64-windows openssl:x64-windows
Failure logs
-- Downloading https://github.com/tukaani-project/xz/archive/v5.4.4.tar.gz -> tukaani-project-xz-v5.4.4.tar.gz...
[DEBUG] To include the environment variables in debug output, pass --debug-env
[DEBUG] Trying to load bundleconfig from D:\OpenDev\vcpkg\vcpkg-bundle.json
[DEBUG] Failed to open: D:\OpenDev\vcpkg\vcpkg-bundle.json
[DEBUG] Bundle config: readonly=false, usegitregistry=false, embeddedsha=nullopt, deployment=Git, vsversion=nullopt
[DEBUG] Metrics enabled.
[DEBUG] Feature flag 'binarycaching' unset
[DEBUG] Feature flag 'compilertracking' unset
[DEBUG] Feature flag 'registries' unset
[DEBUG] Feature flag 'versions' unset
[DEBUG] Feature flag 'dependencygraph' unset
Downloading https://github.com/tukaani-project/xz/archive/v5.4.4.tar.gz
[DEBUG] Trying to hash D:\OpenDev\vcpkg\downloads\tukaani-project-xz-v5.4.4.tar.gz.11332.part
[DEBUG] D:\OpenDev\vcpkg\downloads\tukaani-project-xz-v5.4.4.tar.gz.11332.part has hash fdadd30ae9a23919092425fcc312e8c3369ff12d3ddc81197170b75b253e0a800ceafdd73a16a18c246816a7f3a5ae6076e8e6929a5905d370788542185aa015
error: Failed to download from mirror set
error: File does not have the expected hash:
url: https://github.com/tukaani-project/xz/archive/v5.4.4.tar.gz
File: D:\OpenDev\vcpkg\downloads\tukaani-project-xz-v5.4.4.tar.gz.11332.part
Expected hash: c28461123562564e030f3f733f078bc4c840e87598d9f4b718d4bca639120d8133f969c45d7bdc62f33f081d789ec0f14a1791fb7da18515682bfe3c0c7362e0
Actual hash: fdadd30ae9a23919092425fcc312e8c3369ff12d3ddc81197170b75b253e0a800ceafdd73a16a18c246816a7f3a5ae6076e8e6929a5905d370788542185aa015
[DEBUG] D:\a\_work\1\s\src\vcpkg\base\downloads.cpp(1031):
[DEBUG] Time in subprocesses: 0us
[DEBUG] Time in parsing JSON: 3us
[DEBUG] Time in JSON reader: 0us
[DEBUG] Time in filesystem: 720us
[DEBUG] Time in loading ports: 0us
[DEBUG] Exiting after 7.7 s (7646018us)

CMake Error at scripts/cmake/vcpkg_download_distfile.cmake:32 (message):

      Failed to download file with error: 1
      If you are using a proxy, please check your proxy setting. Possible causes are:

      1. You are actually using an HTTP proxy, but setting HTTPS_PROXY variable
         to `https://address:port`. This is not correct, because `https://` prefix
         claims the proxy is an HTTPS proxy, while your proxy (v2ray, shadowsocksr
         , etc..) is an HTTP proxy. Try setting `http://address:port` to both
         HTTP_PROXY and HTTPS_PROXY instead.

      2. If you are using Windows, vcpkg will automatically use your Windows IE Proxy Settings
         set by your proxy software. See https://github.com/microsoft/vcpkg-tool/pull/77
         The value set by your proxy might be wrong, or have same `https://` prefix issue.

      3. Your proxy's remote server is out of service.

      If you've tried directly download the link, and believe this is not a temporary
      download server failure, please submit an issue at https://github.com/Microsoft/vcpkg/issues
      to report this upstream download server failure.

Call Stack (most recent call first):
  scripts/cmake/vcpkg_download_distfile.cmake:270 (z_vcpkg_download_distfile_show_proxy_and_fail)
  scripts/cmake/vcpkg_from_github.cmake:106 (vcpkg_download_distfile)
  ports/liblzma/portfile.cmake:1 (vcpkg_from_github)
  scripts/ports.cmake:175 (include)

### Tasks

duplicate of https://github.com/microsoft/vcpkg/issues/37839


Update README.md

Minor edits
Description of changes:
Grammar
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thank you very much!


platform: add Radxa ROCK 3B platform support

Hi @tingleby, can you take a look at this pr?  I have tested it and it works!

To be far to another PR (already had them rebase once) that i just merged, can you please increase the enum that just got taken by the Orangepi

To be far to another PR (already had them rebase once) that i just merged, can you please increase the enum that just got taken by the Orangepi

Yeah, thanks for the review, and I fix the conflict just now.


Update bootstrappers

@ryanbrandenburg,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

It was determined that the linux failure is an existing issue.


Align the models for MPD and MEOW

Make sure the MEOW and MPD models are  aligned when they are done.

separate the diagram in https://build.fhir.org/ig/IHE/pharm-meow/branches/main/1330_overview.html:
1.1. one diagram for the model overview (no element details): Overview, line, treatment, prescription (line), dispense, administration, medication, patient.
1.2. one diagram for the model details (data elementS) for MEOW only (Overview + line + treatment)


Create App Icon

app icon needed

bhaiya bhaiya hamka chahiye wala

please assign it to me

Gl @karanpreet8082

@ken1000minus7
pls assign this to me

Sorry sir, I have just submitted the pr(before seeing this msg) by thinking
that It can be assigned
Forgive me sir, If I did any mistake, I am new to this github platform
On Wed, Oct 5, 2022, 18:58 Ashutosh Aswal @.***> wrote:

@Perumallpardhiv https://github.com/Perumallpardhiv thanks for you
interest 😃😃, but currently the issue is assigned . But hey, you can
explore the codebase and search for issues 😄
—
Reply to this email directly, view it on GitHub
https://github.com/PEC-CSS/MovieDroid/issues/36#issuecomment-1268433896,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXBLRA54DXYP4HDRMK2BCZLWBV673ANCNFSM5WBP3QIQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

And if possible once check my pr and pls say feedback
On Wed, Oct 5, 2022, 19:04 VANKA PERUMALL PARDHIV @.***>
wrote:

Sorry sir, I have just submitted the pr(before seeing this msg) by
thinking that It can be assigned
Forgive me sir, If I did any mistake, I am new to this github platform
On Wed, Oct 5, 2022, 18:58 Ashutosh Aswal @.***>
wrote:

@Perumallpardhiv https://github.com/Perumallpardhiv thanks for you
interest 😃😃, but currently the issue is assigned . But hey, you can
explore the codebase and search for issues 😄
—
Reply to this email directly, view it on GitHub
https://github.com/PEC-CSS/MovieDroid/issues/36#issuecomment-1268433896,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXBLRA54DXYP4HDRMK2BCZLWBV673ANCNFSM5WBP3QIQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Bump Rust version to 1.62 in build scripts.

Purpose
Bump the base version in client to the latest main.
Changes
No major changes other than version of the toolchains in build scripts.
The only code change is the removal of NonExistingRewardAccount variant which has been removed in base some time ago.
On the way, an obsolete Dockerfile has been removed. The file was clearly not used in a very long time (it uses stack resolver 16.20).
Checklist

[x] My code follows the style of this project.
[x] The code compiles without warnings.
[x] I have performed a self-review of the changes.
[x] I have documented my code, in particular the intent of the
hard-to-understand areas.
[x] (If necessary) I have updated the CHANGELOG.

Is the Dockerfile not used anymore? I can see it used an old GHC version compared to what we use now.

Yeah, it was clearly not used anymore since the build just does not work, and has not for a long time. There is no reason to build concordium-client in a docker image.


Need to have consistent comments (and translations of those comments) throughout curriculum files

A PR (#37111 ) was recently merged which adds the following comment to the Solutions section of all the back-end challenges. I just saw a new PR (#37592) added the untranslated comment to a non-English challenge. This got me to thinking about more a general question: shouldn't all comments regardless where they appear in the challenge (i.e. Solutions section, example code in description or instructions, or challenge seed code) be translated to the applicable language?
By Solutions section, I mean the comment like // solution required or the new multi-line comment like the one below:
/**
Backend challenges don't need solutions,
because they would need to be tested against a full working project.
Please check our contributing guidelines to learn more.
*/
```

For at least the Solutions section, we need to inquire with the community to find out the "correct" translation for that particular comment and then see if we can limit the comments in the challenge seed section to only a few variances and then have the community tell us the "correct" translation. By "correct", I mean not just using Google to create a machine translation that might have to be tweaked several times in various PRs for each language.
For the challenge seed code, we would need to try and limit the number of unique comments.  In just the challenge seed code, I have found the following comment variations the curriculum in JavaScript code:
//en.wikipedia.org/wiki/Larry_Page" target="_blank" class="links">Larry Page

//en.wikipedia.org/wiki/Sergey_Brin" target="_blank" class="links">Sergey Brin

//en.wikipedia.org/wiki/Larry_Page" target="_blank" class="links">Larry Page

//freecatphotoapp.com/" target="_blank">CatPhotoApp

/* add your code below this line */

/* add your code above this line */

//fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">

//bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on its back.">

/* change code below */

/* change code above */

/* add code below */

/* add code above */

//bit.ly/fcc-relaxing-cat" alt="A cute orange cat lying on its back.">

//freecatphotoapp.com" target="_blank">cat photos

//freecatphotoapp.com" target="_blank">cat photos.

//pbs.twimg.com/profile_images/378800000147359764/54dc9a5c34e912f34db8662d53d16a39_400x400.png" alt="Quincy Larson's profile picture" class="profile-thumbnail">

/* change the code below this line */

/* change the code above this line */

/* enter your code below this line */

/* enter your code above this line */

/* change code below this line */

/* change code above this line */

/* modify the code below this line */

/* modify the code above this line */

/* To avoid rounding errors the largest allowed diff is set at 0.01px */

/* Add media query below */

//s3.amazonaws.com/freecodecamp/FCCStickerPack.jpg" alt="freeCodeCamp stickers set">

//s3.amazonaws.com/freecodecamp/FCCStickers-CamperBot200x200.jpg" alt="freeCodeCamp sticker that says 'Because CamperBot Cares'">

// What is the new fad diet for ghost developers? The Boolean.

// Break it up.

// "Never give up and good luck will find you."

// -- Falcor

// Don't show a false ID to this bouncer.

// repeat after me

// You can do this!

// It's alive. It's alive!

// Clear out that junk in your trunk

// Find my place in this sorted array.

// change code below this line

//change code above this line

// do not change code above this line

// change code below this line to test different cases:

// change code above this line

// do not change code below this line

// change code here to test different cases:

// change this line

// Example

// equals 50

// Setup

// Only change code below this line.

// Only change code below this line

// Change this line

// Only change code below this line;

// Change this Line

// Only change code above this line

// Change this value to test

// Only modify code below this line

// Add/remove calls to test your function.

// Note: Only the last will display

// Declare myName below this line

// Fix this line

// Only change code above this line.

// Change these values to test your function

// Declare your variable here

// Assign 5 to oopsGlobal Here

// Change these values to test

// you shouldn't need to edit this line

// Run and check the console

// myVar is not defined outside of myLocalScope

// Now remove the console log line to pass the test

// removedFromOurArray now equals 3, and ourArray now equals [1,2]

// ourArray now equals ["Stimpson", "J", "cat", ["happy", "joy"]]

// removedFromOurArray now equals "Stimpson" and ourArray now equals ["J", ["cat"]].

// ourArray now equals ["J", "cat"]

// ourArray now equals ["Happy", "J", "cat"]

// Add record here

// ourArray now equals [18,45,99].

// Use console.clear() on the next line to clear the browser console.

// Use console.log() to print the output variable.

// Check the two consoles to see the difference. The freeCodeCamp console should have printed the variable twice, once for each test of this challenge. The browser console should only print the variable once because you cleared it first.

// Creates a 2-D array with m rows and n columns of zeroes

// Adds the m-th row into newArray

// Pushes n zeroes into the current row to create the columns

// Pushes the current row, which now has n zeroes in it, to the array

// Add your code below this line

// responseFromServer represents a response from a server

/**
 * makeList(result.failure) should return:
 * [ `<li class="text-warning">no-var</li>`,
 *   `<li class="text-warning">var-on-top</li>`,
 *   `<li class="text-warning">linebreak</li>` ]
 **/

// responseFromServer is set to true to represent a successful response from a server

// responseFromServer is set to false to represent an unsuccessful response from a server

// add code above this line

// s = [2, 5, 7]; <- this is invalid

// returns 7

// returns 6

/* Alter code below this line */

/* Alter code above this line */

// => should be 'carrot'

// should be 6

// should be 8

// should be 64

// should be 77

// should be not defined

// should be 80

// use function argument destructuring

// should be object

// should be 28.015

// change this

// should be [3,4,5,6,7,8,9,10]

// should be [1,2,3,4,5,6,7,8,9,10];

// setting in Fahrenheit scale

// 24.44 in C

// 26 in C

// 6

// test your code

// returns a proper object

// Add your code above this line

// the global variable

// Should be "winter-is-coming"

// Should equal 5

// Should print 4

// the global Array

/**
 * A long process to prepare tea.
 * @return {string} A cup of tea.
 **/

/**
 * Get given number of cups of tea.
 * @param {number} numOfCups Number of required cups of tea.
 * @return {Array<string>} Given amount of tea cups.
 **/

// :(

/* This function should add a book to the list and return the list */

// New parameters should come before bookName

/* This function should remove a book from the list and return the list */

// New parameters should come before the bookName one

/**
 * A long process to prepare green tea.
 * @return {string} A cup of green tea.
 **/

/**
 * A long process to prepare black tea.
 * @return {string} A cup of black tea.
 **/

/**
 * Get given number of cups of tea.
 * @param {function():string} prepareTea The type of tea preparing function.
 * @param {number} numOfCups Number of required cups of tea.
 * @return {Array<string>} Given amount of tea cups.
 **/

// tabs is an array of titles of each site open within the window

// we keep a record of the array inside the object

// When you join two windows into one window

// When you open a new tab at the end

// let's open a new tab for now

// When you close a tab

// get the tabs before the tab

// get the tabs after the tab

// join them together

// Let's create three browser windows

// Your mailbox, drive, and other work sites

// Social sites

//  Entertainment sites

// Now perform the tab opening, closing, and other operations

// Open a new tab for cat memes

// Close third tab in video window, and join

// only change code below this line

// only change code above this line

//ia.media-imdb.com/images/M/MV5BMjAxMzY3NjcxNF5BMl5BanBnXkFtZTcwNTI5OTM0Mw@@._V1_SX300.jpg",

//ia.media-imdb.com/images/M/MV5BMjIxNTU4MzY4MF5BMl5BanBnXkFtZTgwMzM4ODI3MjE@._V1_SX300.jpg",

//ia.media-imdb.com/images/M/MV5BMTMxNTMwODM0NF5BMl5BanBnXkFtZTcwODAyMTk2Mw@@._V1_SX300.jpg",

//ia.media-imdb.com/images/M/MV5BNTM3OTc0MzM2OV5BMl5BanBnXkFtZTYwNzUwMTI3._V1_SX300.jpg",

//ia.media-imdb.com/images/M/MV5BMTYwOTEwNjAzMl5BMl5BanBnXkFtZTcwODc5MTUwMw@@._V1_SX300.jpg",

// :)

// Same, same; but different.

// Drop them elements.

// Is everyone being true?

// Complete the method below and implement the others similarly

// Remove all the values

// "It's such a fine line between stupid, and clever."

// --David St. Hubbins

// I'm a steamroller, baby

// What's in a name?

// LBH QVQ VG!

// Change the inputs below to test

// Here is your change, ma'am.

// Example cash-in-drawer array:

// [["PENNY", 1.01],

// ["NICKEL", 2.05],

// ["DIME", 3.1],

// ["QUARTER", 4.25],

// ["ONE", 90],

// ["FIVE", 55],

// ["TEN", 20],

// ["TWENTY", 60],

// ["ONE HUNDRED", 100]]

// Good luck!

// Should print "nom nom nom"

// Should print "Woof!"

// Modify the code below this line

// => true

// Fix the code below so that it evaluates to true

/* jshint expr: true */

// After passing the challenge experiment with myString and see how the grouping works

// example crowd gathering

// Only change this line

//bit.ly/fcc-running-cats" class="img-responsive" alt="Three kittens running towards the camera.">

// const styles =

// write your code here

// initialize state here

// change code here

/* remove comment and change code below this line

Welcome to React!

Be sure to close all tags!

    remove comment and change code above this line */

/* your code here */

/* change code here */

// << change code here

// Redux:

// React:

// React-Redux:

// define the Container component here:

// complete the return statement:

// Change code below this line

// Change code above this line

// define ADD, addMessage(), messageReducer(), and store here:

// add handleChange() and submitMessage() methods here

/* render an input, button, and ul here */

// import React from 'react'

// import ReactDOM from 'react-dom'

// import { Provider, connect } from 'react-redux'

// import { createStore, combineReducers, applyMiddleware } from 'redux'

// import thunk from 'redux-thunk'

// import rootReducer from './redux/reducers'

// import App from './components/App'

// const store = createStore(

//   rootReducer,

//   applyMiddleware(thunk)

// );

// ReactDOM.render(

//   <provider store="{store}">

//     <app>

//   </app></provider>,

//   document.getElementById('root')

// Redux Code:

// React Code:

// render the Provider here

// define the root reducer here

// don't mutate state here or the tests will fail

// Redux methods are available from a Redux object

// For example: Redux.createStore()

// Define the store here:

// Define an action here:

// Define an action creator here:

// Dispatch the action here:

// A list of strings representing tasks to do:

// an example todo argument would be 'Learn React',

// global count variable:

// dispatch request action here

// dispatch received data action here

// define a constant for increment action types

// define a constant for decrement action types

// define the counter reducer which will increment or decrement the state based on the action it receives

// define an action creator for incrementing

// define an action creator for decrementing

// define the Redux store here, passing in your reducers

// The main.scss file

/* Add your code below this line */

/* Add your code above this line */

// Create the scale here

// Call the scale with an argument here

// Padding between the SVG canvas boundary and the plot

// Create an x and y scale

// Returns 30

//jsonplaceholder.typicode.com/posts';

// test array:

// [1, 4, 2, 8, 345, 123, 43, 32, 5643, 63, 123, 43, 2, 55, 1, 234, 92]

// All inventory must be accounted for or you're fired!

// Example inventory lists

// Distance object returned

// Source: http://adripofjavascript.com/blog/drips/object-equality-in-javascript.html

// Create arrays of property names

// If number of properties is different,

// objects are not equivalent

// If values of same property are not equal,

// If we made it this far, objects

// are considered equivalent

// collection will hold our set

// this method will check for the presence of an element and return true or false

// this method will return all the values in the set

// write your add method here

// write your remove method here

// write your size method here

// case 1: target has no children, change code below this line

// find the target value and its parent

// count the children of the target to delete

// case 1: target has no children

// case 2: target has one child, change code below this line

// case 2: target has one child

// case 3: target has two children, change code below this line

// check if array is sorted

// generate a randomly filled array

// the var collection will hold the set

// this method will add an element to the set

// this method will remove an element from a set

// this method will return the size of the collection

// this method will return the union of two sets

// this method will return the intersection of two sets as a new set

// this method will return the difference of two sets as a new set

// this method will return the size of the set

// {1}

//Create a set with values 1, 2, 3, 4, & 5

//Remove the value 2

//Remove the value 5

//Return the set

// Should return [ true, 3 ]

// only add code below this line

// You can do it!

// 3, 6

// empty

// 1

// 0,1,2,3,4,5,6

// 0

// noprotect

// Change after this line

// TODO add more tests

// good luck!

Valid question. I'm the author of the PR you mentioned(#37592). I was thinking about this myself and saw that english comments were already used so I kept them in English (just slightly synced them to the ones I found in the English version).
My opinion is that since those comments are intended to developers, I would rather keep them in English, however, we can also add the translated version of it below it. This way in case there was a general fix or layout changes, comments are still more universal than waiting for Arabic speaking developers to change those files. But there is also another reason (just a personal opinion from experience) why I would rather not put comments in Arabic (for example) in my code: Arabic is right to left language and editors are not so friendly to this layout despite best efforts to change the layout on the menu etc. They don't have the power of sth like MS word. The words can seem mixed with each other especially if you put english letters in the middle of a sentence. So, if the output was properly rendered in the frontend it will be ok, but inside the code it can sometimes appear jumbled. I actually had to use an arabic markdown editor to translate the ones in the PR I did.


Support retrieval of Metrologia entries from IOP

e.g. DOI https://doi.org/10.1088/1681-7575/aa7b3f
[9] Flowers-Jacobs N-E, Pollarolo A, Coakley J J, Fox A E, Rogalla H, Tew W L and Benz S P 2017 A Boltzmann constant determination based on Johnson noise thermometry Metrologia 54, 730-737 (8 pp)
Gets forwarded to https://iopscience.iop.org/article/10.1088/1681-7575/aa7b3f

e.g. DOI https://doi.org/10.1088/1681-7575/aa7b3f
[9] Flowers-Jacobs N-E, Pollarolo A, Coakley J J, Fox A E, Rogalla H, Tew W L and Benz S P 2017 A Boltzmann constant determination based on Johnson noise thermometry Metrologia 54, 730-737 (8 pp)
Gets forwarded to https://iopscience.iop.org/article/10.1088/1681-7575/aa7b3f

We have many citations to Metrologia in Metanorma due to handling of BIPM documents. We need to support citation of Metrologia articles. If necessary we will need to update the Relaton BIPM bibdata model (or establish a new one for academic articles).

We have many citations to Metrologia in Metanorma due to handling of BIPM documents. We need to support citation of Metrologia articles. If necessary we will need to update the Relaton BIPM bibdata model (or establish a new one for academic articles).

@ronaldtse I'm unable to find Metrologia articles index or any search form. Do you have an idea of how to search Metrologia articles?

@ronaldtse I'm unable to find Metrologia articles index or any search form. Do you have an idea of how to search Metrologia articles?

I think we should have a syntax that fetches per:

"volume"
"issue"
"page number" to identify the article

The main Metrologia page is this:
https://iopscience.iop.org/journal/0026-1394

Volumes:

Issues in that Volume:
https://iopscience.iop.org/volume/0026-1394/29

The first issue in that list: https://iopscience.iop.org/issue/0026-1394/29/6

The first paper/article in that issue:
https://iopscience.iop.org/article/10.1088/0026-1394/29/6/001

Notice the citation writes this:
"E C Morris 1993 Metrologia 29 373"
I believe we can have two types of searches for this article:

Citation locator string: "Metrologia 29 6 373" or "Metrologia 29 373" => this article.
Cite by DOI: either one should lead to this article

https://iopscience.iop.org/article/10.1088/0026-1394/29/6/001
https://doi.org/10.1088/0026-1394/29/6/001

For citing the Issue, we can do:

Citation locator string: "Metrologia 29 6" => this Issue.
Cite by DOI: either one should lead to this Issue

https://iopscience.iop.org/article/10.1088/0026-1394/29/6
https://doi.org/10.1088/0026-1394/29/6

For citing the Volume, we can do:

Citation locator string: "Metrologia 29" => this Volume.
Cite by DOI: either one should lead to this Volume

https://iopscience.iop.org/article/10.1088/0026-1394/29
https://doi.org/10.1088/0026-1394/29

For citing the Series, we can do:

Citation locator string: "Metrologia" => the full series.
Cite by DOI: either one should lead to this series

https://iopscience.iop.org/article/10.1088/0026-1394
https://doi.org/10.1088/0026-1394

I think we should have a syntax that fetches per:

"volume"
"issue"
"page number" to identify the article

The main Metrologia page is this:
https://iopscience.iop.org/journal/0026-1394

Volumes:

Issues in that Volume:
https://iopscience.iop.org/volume/0026-1394/29

The first issue in that list: https://iopscience.iop.org/issue/0026-1394/29/6

The first paper/article in that issue:
https://iopscience.iop.org/article/10.1088/0026-1394/29/6/001

Notice the citation writes this:
"E C Morris 1993 Metrologia 29 373"
I believe we can have two types of searches for this article:

Citation locator string: "Metrologia 29 6 373" or "Metrologia 29 373" => this article.
Cite by DOI: either one should lead to this article

https://iopscience.iop.org/article/10.1088/0026-1394/29/6/001
https://doi.org/10.1088/0026-1394/29/6/001

For citing the Issue, we can do:

Citation locator string: "Metrologia 29 6" => this Issue.
Cite by DOI: either one should lead to this Issue

https://iopscience.iop.org/article/10.1088/0026-1394/29/6
https://doi.org/10.1088/0026-1394/29/6

For citing the Volume, we can do:

Citation locator string: "Metrologia 29" => this Volume.
Cite by DOI: either one should lead to this Volume

https://iopscience.iop.org/article/10.1088/0026-1394/29
https://doi.org/10.1088/0026-1394/29

For citing the Series, we can do:

Citation locator string: "Metrologia" => the full series.
Cite by DOI: either one should lead to this series

https://iopscience.iop.org/article/10.1088/0026-1394
https://doi.org/10.1088/0026-1394

Instead of scraping, we can also directly take the BibTeX export of that page:
https://iopscience.iop.org/export?articleId=0026-1394/29/6/373&doi=10.1088/0026-1394/29/6/001&exportFormat=iopexport_bib&exportType=abs&navsubmit=Export+abstract

Instead of scraping, we can also directly take the BibTeX export of that page:
https://iopscience.iop.org/export?articleId=0026-1394/29/6/373&doi=10.1088/0026-1394/29/6/001&exportFormat=iopexport_bib&exportType=abs&navsubmit=Export+abstract

@ronaldtse I can guess how to map an article to BibModel but I have no idea how to map Issue, Volume, and Series. Do you have a suggestion?

@ronaldtse I can guess how to map an article to BibModel but I have no idea how to map Issue, Volume, and Series. Do you have a suggestion?

Volume = seriees/number
Issue = series/partnumber
Series = series/title

Volume = seriees/number
Issue = series/partnumber
Series = series/title

@opoudjis as I understand Ronald means Volume, Issue, and Series to be separated documents. I'm asking what data can we map from the Volume, Issue, and Series pages to the BibliographicItem model?

@opoudjis as I understand Ronald means Volume, Issue, and Series to be separated documents. I'm asking what data can we map from the Volume, Issue, and Series pages to the BibliographicItem model?

@andrew2net reports he has encountered rate-limiting via Captcha after several fetches. This is not appropriate for users who compile documents. I don't know whether it is surmountable using User-Agent (please try).
Will also seek advice from BIPM.

@andrew2net reports he has encountered rate-limiting via Captcha after several fetches. This is not appropriate for users who compile documents. I don't know whether it is surmountable using User-Agent (please try).
Will also seek advice from BIPM.

@ronaldtse I've tried to use random User-Agent but it seems the opscience.iop.org allows only 6 requests per minute. After 2 minutes it starts redirecting to captcha.

@ronaldtse I've tried to use random User-Agent but it seems the opscience.iop.org allows only 6 requests per minute. After 2 minutes it starts redirecting to captcha.

Got it. Let’s wait for BIPM’s response.

Got it. Let’s wait for BIPM’s response.

The BIPM team has inquired with IOPP (the publisher) and they recommended the following:

Our first recommendation is that they use the CrossRef API. It contains all the article metadata (including the references) and If they just need metadata about our articles then that API should cover everything they need.
It’s a very well documented API. The starting point to the documentation is https://www.crossref.org/education/retrieve-metadata/.

Can you help implement the connection to CrossRef? Thanks.

The BIPM team has inquired with IOPP (the publisher) and they recommended the following:

Our first recommendation is that they use the CrossRef API. It contains all the article metadata (including the references) and If they just need metadata about our articles then that API should cover everything they need.
It’s a very well documented API. The starting point to the documentation is https://www.crossref.org/education/retrieve-metadata/.

Can you help implement the connection to CrossRef? Thanks.

@ronaldtse yes I can. They ask for an email in HTTP requests. They need an email for contact us in case our script cause problems. Requests without email won't be redirected to more relaible servers. Do you have an email for this purpose?

@ronaldtse yes I can. They ask for an email in HTTP requests. They need an email for contact us in case our script cause problems. Requests without email won't be redirected to more relaible servers. Do you have an email for this purpose?

Let me ask them. It would be strange to use our email address when users (not us) are doing the requests.

Let me ask them. It would be strange to use our email address when users (not us) are doing the requests.

@andrew2net it seems that the email address is optional?

Let's implement without the email first. Later on we can make a config option with Relaton CLI so users can set their own email address for CrossRef.

@andrew2net it seems that the email address is optional?

Let's implement without the email first. Later on we can make a config option with Relaton CLI so users can set their own email address for CrossRef.

@ronaldtse yes, it's optional but without an email, it will work slower. https://github.com/CrossRef/rest-api-doc#good-manners--more-reliable-service

@ronaldtse yes, it's optional but without an email, it will work slower. https://github.com/CrossRef/rest-api-doc#good-manners--more-reliable-service

@ronaldtse here is API status page https://status.crossref.org/#system-metrics you can see that "Polite API" average response time is about 1s while "Public API" averge response time is about 7s.

@ronaldtse here is API status page https://status.crossref.org/#system-metrics you can see that "Polite API" average response time is about 1s while "Public API" averge response time is about 7s.

7s!??!?!?!? Why don't we just use a random email address based on the IP address.
https://www.ipify.org :
require "net/http"
ip = Net::HTTP.get(URI("https://api.ipify.org"))
puts "My public IP Address is: " + ip

Then sha256 it and truncate to 16 for the name. We can use relaton.org for the domain to indicate it is a Relaton request.
i.e<EMAIL_ADDRESS>

7s!??!?!?!? Why don't we just use a random email address based on the IP address.
https://www.ipify.org :
require "net/http"
ip = Net::HTTP.get(URI("https://api.ipify.org"))
puts "My public IP Address is: " + ip

Then sha256 it and truncate to 16 for the name. We can use relaton.org for the domain to indicate it is a Relaton request.
i.e<EMAIL_ADDRESS>

Anyway, the API works too slow. Only "OpenURL" and paid "Plus OAI-PMH" services have an acceptable response time. I'll investigate OpenURL.
And I haven't been able to find a way to search volumes, issues, and articles. Seems they have only a journal and articles in the DB.
In case we won't be successful with the Crossref we can make a relaton-data-bipm-iop repository on GitHub and slowly fetch documents from iopscience.iop.org. What do you think?

Anyway, the API works too slow. Only "OpenURL" and paid "Plus OAI-PMH" services have an acceptable response time. I'll investigate OpenURL.
And I haven't been able to find a way to search volumes, issues, and articles. Seems they have only a journal and articles in the DB.
In case we won't be successful with the Crossref we can make a relaton-data-bipm-iop repository on GitHub and slowly fetch documents from iopscience.iop.org. What do you think?

I've sent this to BIPM, let's see what their response is.

We’re now experimenting the CrossRef API, but it’s not ideal:

The CrossRef API only accepts a “fuzzy” search with limited filtering options.

There is no mechanism to obtain exactly the Metrologia article unless the author provides the full title and authorship information. It is nearly impossible to locate a particular article with confidence.

It’s very slow. For normal requests, it takes up to 7 seconds (or more with filters). Even if we use the “polite API”, where an email is provided, it takes nearly 2 seconds per request. They have a “plus API” that is on average 0.5 seconds, but it requires payment from the user.

Here’s a real example from the Candela definition MEP:
https://www.bipm.org/utils/en/pdf/si-mep/SI-App2-candela.pdf

NOTE: this reference actually has the wrong title — the correct title is "Predictable Quantum Efficient Detector II: Characterization and confirmed responsivity”, this has an effect on the resulting search. This is why auto-fetch is important — to mitigate authoring errors.
The metadata attributes available here are: author, title, year, issue and page numbers. The intention with auto-fetching is to allow the author to enter minimal identifiable input (i.e. enough information to find this unique reference).
e.g.
journal name: Metrologia
issue number: 50
page number start: 395
However, the CrossRef API does not provide enough parameters to locate this information. In particular, CrossRef does not support search/filtering by volumes, issues, or page numbers.
In order to use the CrossRef API, the author will be forced to provide the full title and some authorship information:
journal name: Metrologia
author name: at least one author
full title: Predictable Quantum Efficient Detector II: Characterization results
Here are two attempts to find out if it works.
Attempt 1 with author given title
The best effort in finding this article in the CrossRef API is the following command:
curl "https://api.crossref.org/works?query.bibliographic=Predictable Quantum Efficient Detector II%3A Characterization results&query.author=Müller&query.container-title=Metrologia&filter=issn:0026-1394,prefix:10.1088”
This means, “find items that match the following criteria":

given the bibliographic information "Predictable Quantum Efficient Detector II: Characterization results” in the bibliographic information (CrossRef does not support searching by title)
given the author “Müller”
inside the container “Metrologia”, which has the ISSN of 0026-1394
the publisher IOP has a prefix of 10.1088

And it returns 20 results, where the desired article is the 3rd. This query took 7 seconds.
=> Not possible to find article
Attempt 2 with corrected title
Since the first attempt failed I did a search online and found the correct title, which is "Predictable quantum efficient detector: II. Characterization and confirmed responsivity”.
Now we refine the command to:
curl "https://api.crossref.org/works?query.bibliographic=Predictable Quantum Efficient Detector II%3A Characterization and confirmed responsivity&query.author=Müller&query.container-title=Metrologia&filter=issn:0026-1394,prefix:10.1088"
Now it returns 7 results, where the desired article is the 1st. This query took 10 seconds.
=> Works when author and title information are fully accurate.
Conclusion
The CrossRef API is unable to facilitate location of a unique article with certainty because it only supports fuzzy search, and does not support searching by volume, issue or page numbers.
It could only locate an article if and only if the article title and authorship information given is fully accurate, and it would return conflicting results when the title contains words that are also used in another article’s title. For example, these two citations will return ambiguous results, even though the volume, issue and years are vastly different:
M G Cox, The evaluation of key comparison data, Metrologia, 39, 6, 589-595, 2002.
M G Cox, The evaluation of key comparison data: determining the largest consistent subset, Metrologia, 44, 3, 2007.
(both from the Kilogram definition MEP)

I've sent this to BIPM, let's see what their response is.

We’re now experimenting the CrossRef API, but it’s not ideal:

The CrossRef API only accepts a “fuzzy” search with limited filtering options.

There is no mechanism to obtain exactly the Metrologia article unless the author provides the full title and authorship information. It is nearly impossible to locate a particular article with confidence.

It’s very slow. For normal requests, it takes up to 7 seconds (or more with filters). Even if we use the “polite API”, where an email is provided, it takes nearly 2 seconds per request. They have a “plus API” that is on average 0.5 seconds, but it requires payment from the user.

Here’s a real example from the Candela definition MEP:
https://www.bipm.org/utils/en/pdf/si-mep/SI-App2-candela.pdf

NOTE: this reference actually has the wrong title — the correct title is "Predictable Quantum Efficient Detector II: Characterization and confirmed responsivity”, this has an effect on the resulting search. This is why auto-fetch is important — to mitigate authoring errors.
The metadata attributes available here are: author, title, year, issue and page numbers. The intention with auto-fetching is to allow the author to enter minimal identifiable input (i.e. enough information to find this unique reference).
e.g.
journal name: Metrologia
issue number: 50
page number start: 395
However, the CrossRef API does not provide enough parameters to locate this information. In particular, CrossRef does not support search/filtering by volumes, issues, or page numbers.
In order to use the CrossRef API, the author will be forced to provide the full title and some authorship information:
journal name: Metrologia
author name: at least one author
full title: Predictable Quantum Efficient Detector II: Characterization results
Here are two attempts to find out if it works.
Attempt 1 with author given title
The best effort in finding this article in the CrossRef API is the following command:
curl "https://api.crossref.org/works?query.bibliographic=Predictable Quantum Efficient Detector II%3A Characterization results&query.author=Müller&query.container-title=Metrologia&filter=issn:0026-1394,prefix:10.1088”
This means, “find items that match the following criteria":

given the bibliographic information "Predictable Quantum Efficient Detector II: Characterization results” in the bibliographic information (CrossRef does not support searching by title)
given the author “Müller”
inside the container “Metrologia”, which has the ISSN of 0026-1394
the publisher IOP has a prefix of 10.1088

And it returns 20 results, where the desired article is the 3rd. This query took 7 seconds.
=> Not possible to find article
Attempt 2 with corrected title
Since the first attempt failed I did a search online and found the correct title, which is "Predictable quantum efficient detector: II. Characterization and confirmed responsivity”.
Now we refine the command to:
curl "https://api.crossref.org/works?query.bibliographic=Predictable Quantum Efficient Detector II%3A Characterization and confirmed responsivity&query.author=Müller&query.container-title=Metrologia&filter=issn:0026-1394,prefix:10.1088"
Now it returns 7 results, where the desired article is the 1st. This query took 10 seconds.
=> Works when author and title information are fully accurate.
Conclusion
The CrossRef API is unable to facilitate location of a unique article with certainty because it only supports fuzzy search, and does not support searching by volume, issue or page numbers.
It could only locate an article if and only if the article title and authorship information given is fully accurate, and it would return conflicting results when the title contains words that are also used in another article’s title. For example, these two citations will return ambiguous results, even though the volume, issue and years are vastly different:
M G Cox, The evaluation of key comparison data, Metrologia, 39, 6, 589-595, 2002.
M G Cox, The evaluation of key comparison data: determining the largest consistent subset, Metrologia, 44, 3, 2007.
(both from the Kilogram definition MEP)

In any case, I do think that we should support CrossRef separately in say relaton-crossref. What do you think?

In any case, I do think that we should support CrossRef separately in say relaton-crossref. What do you think?

@ronaldtse yes I used the serrano gem.
Which documents do you suppose to fetch from CrossRef?
I think we can use CrossRef but it works too slow sometimes.

@ronaldtse sine we have relaton-doi gem, which fetches documents from crossref.ogr, can we close this issue?

@andrew2net we now have the full data set of Metrologia from BIPM. I will create a new issue and will close this one.

Closing in favour of #28.


Applying to become part of the Ethereum Classic TweetTogether approval team

Please let us know if there is anything specific needed in order to join this team.
Thank you.

Yes, we'll need to consider what requirements are.
Currently we have about 10 people with permissions to approve, which is probably enough, but they aren't all active, and there's benefit in having people in different timezones to ensure there's 24/hr coverage.
We should probably also have a dedicated management team rather than the web-developmet team, as they are different responsibilities.
Pinging @realcodywburns - no action required now, but something to have on your radar once we have figured this out.

We can set this on the agenda for the coming Community Call.

When I would like to transfer it to another repo it only gives the website as an option, can we have it sent to the Community Call repo?

Any news @w1g0?

As mentioned before, it will have to be discussed on the next community call, we don't decide.

Hi @Soteria-Smart-Contracts , we're open to recruiting new maintainers so please make a post in #71
Thank you.


Sometimes it really is better to rollback than push forward.
We need to be more careful with internal API changes especially as pods get more decoupled.
Depending on a function in another pod without a header file should be banned, even for testing.
Using C extern in an implementation file should be banned.


Release 2.1.3

Descriptive summary
DMR Version 2.1.3
Release Manager: @VivianChu
Product Owner: @gamontoya
Operations: @jhriv
This release includes the work on SecureToken for course reserve list.
Related work
#293

@jhriv - Could you deploy DMR new release to prod? Thanks

Deployed to production

deployed to production


pkg/clusterconfig: use infra.Status.Platform if PlatformStatus is nil

As witnessed in https://prow.svc.ci.openshift.org/view/gcs/origin-ci-test/logs/release-openshift-origin-installer-e2e-aws-upgrade-rollback-4.1-to-4.2/16 - when moving from 4.1 to 4.2 we need to take care of the missing infra.Status.PlatformStatus (introduced only in 4.2) or we get a panic (https://storage.googleapis.com/origin-ci-test/logs/release-openshift-origin-installer-e2e-aws-upgrade-rollback-4.1-to-4.2/16/artifacts/e2e-aws-upgrade/pods/openshift-image-registry_cluster-image-registry-operator-7dfbcc46df-f4z68_cluster-image-registry-operator.log)
Signed-off-by: Antonio Murdaca<EMAIL_ADDRESS>

/lgtm
@coreydaley @dmage fyi this was causing a failure in the 4.1->4.2 upgrade jobs.

/hold

/lgtm cancel

I'm actually going to close this one cause of https://github.com/openshift/cluster-image-registry-operator/pull/312


Add Portuguese version of index.

I think it's time we take two seconds and think of where we are going with the translation issue here, I'd like to hear people's opinion on it.
The end goal is to obviously have a centralized system for translation using something like transifex. Bitcoin.org have been doing an awesome job at it over the years and I think they are the end goal.
So, we have to consider not all translators can make alternate index.html page. I know a template has been created for them.
We have two options from here.

Integrate index.lang.html page as a temporary translation measure and create a new branch to implement a centralized translations mean

or

Go ahead right away with the centralized measure and forgo the time spent on individual page translations.

Comments?

I would vote to add a build system that generates the pages. The nginx logic looks fine to me. Ideally we have yaml files that are for each translation, then run a script that will generate the appropriate html files This will be far easier for translators to manage, and doesn't require any complex changes.

So, just so that I am clear on things, the issue is that translators currently have to go into the HTML code and edit the text inside it? This is made slightly easier by having a template for translators to fill out?
Obviously, we want to make it as easy as possible for translators to add their work to the site. I think it is worth keeping in mind though that this version of the site will not have many changes made to it (other than translations). It was just designed to be a simple homepage for the BCF to have a web presence. So a simple solution might be best for now, and we can consider a longer-term solution for the next website.
I am willing to defer to anyone else on this though.

So, just so that I am clear on things, the issue is that translators currently have to go into the HTML code and edit the text inside it? This is made slightly easier by having a template for translators to fill out?
Obviously, we want to make it as easy as possible for translators to add their work to the site. I think it is worth keeping in mind though that this version of the site will not have many changes made to it (other than translations). It was just designed to be a simple homepage for the BCF to have a web presence. So a simple solution might be best for now, and we can consider a longer-term solution for the next website.
I am willing to defer to anyone else on this though.

@singularity87 Exactly. The idea is to make an html template that gets filled out with the different translations that exist in yaml files. Then the translators don't need to edit the html directly. I am not tied to any particular approach, but I have found in the past this is less error prone than html edits.

I was also operating with the assumption that this static, single-page site would have reduced number of changes until the final website is set up. That's why I was willing to isolate other translators from the technical knowledge needed to submit/update a translation like this one.
Still, having a simple system like the one proposed by @zquestz  seems a good and quick step. It would reduce the risk of having me be a bottleneck, for example. I've used something quick and dirty for my translation so I'll investigate and make a new PR when I get the chance.
The effort for a centralized system for translation should be done in parallel and be focused on providing a solution for the new version of the site, in my opinion.
Also, note that this PR is based on #5 so the only change that is actually being proposed here it the inclusion of index.pt.html.


Foundation: FileHandle.swift: memory leak in _readDataOfLength

dynamicBuffer will never be freed if total > 0. Fix this by giving the underlying Data a "free" destructor. This is covered by existing tests.

The line in question was added in https://github.com/apple/swift-corelibs-foundation/commit/188a4e17036f9b7c8f1012a175a0f85f648cd31c so tagging @phausler.

@swift-ci please test and merge

@swift-ci please test and merge

@swift-ci please test and merge

@ianpartridge @alblue  Hmm, seems like there were some server errors: Server returned HTTP response code: 405, message: 'Method Not Allowed' for URL: https://api.github.com/repos/apple/swift-corelibs-foundation/pulls/1155/merge

@swift-ci please test and merge

@swift-ci please test and merge

@swift-ci please test and merge

@swift-ci please test and merge


Isolate build files when building with scons

what do you mean by this? Putting all the .o files in their own directory or something?

Yeah, I need to define a build directory. It'll just take messing around with the scons settings.


How can people find Notional's SDK v0.46 branch

There should be a way for people to find the branch, get in contact with the maintainers and understand their future plans and commitment.
Some ideas:

We can have a sdk46_readme.md in the project root
or a GH issue open that Notional maintains and link to their resources
or an article by Notional on https://medium.com/cosmwasm

Other ideas are very welcome!
Maintaining a branch on this repo is not a good option. It may set expectations on quality, ownership and support by the core team, which is not given.
For some context, see

https://github.com/CosmWasm/wasmd/issues/927
https://github.com/CosmWasm/wasmd/issues/941

How about a pinned issue called "Community-maintained forks/branches"? Or a more specific title to lead anyone looking for a 46 solution? It could also be linked directly in the Readme to be easier to find.

There is a questions on discord now with a SDK ticket linked. It would be good to help people with more information. If we can link to some external resource that would be great. Some example questions that come to my mind:

(Why does this fork exists? - Motivation)
Where can I get some specific or latest versions?
How can I get support or help?
What are the future plans and commitment? (features, upgrades, security fixes)
Who owns the fork (is this Notional or other community members, too)?

@faddat can you own this task, please?

@faddat a gentle reminder to own this task

Thanks for the updates. Very much appreciated!


chore: [FX-3909] add Jira deployments

FX-3909
Description
We need to add Jira deployments to Davinci GH Actions.
How to test

See at temporary GH Workflow test-jira-deployments

PR commands

List of available commands:

@toptal-anvil ping reviewers - Ping FX team for review

@toptal-anvil ping reviewers