Implement "major" postgres catalog views

Summary
A few additional postgres tables were added in https://github.com/GlareDB/glaredb/pull/534. We'll want to continue to flesh out these tables. Our goal here isn't to implement all postgres tables, nor is to have completely correct semantics. So we'll want to add the "major" postgres tables, even if most of the columns returned back are null.
What's considered "major" isn't clear, but I think implementing most of what duckdb implements would be a good start: https://github.com/duckdb/duckdb/blob/master/src/catalog/default/default_views.cpp#L30-L49
Specifications

Add the "major" views

Rationale

Postgres catalog compatibility.
External postgres tooling (some tools might be querying catalog under the hood and not work without the right compat)
Impact

Tasks

we've been doing this with #2436


How I can change active song in playlist?

Hello
How I can change active song in playlist?
I can sort playlist array again and again, but I think what right way create api for this functional

@romanlex, thanks for asking! The short answer is that in version 1 you cannot do this - it doesn't really make sense to specify the current song declaratively when this information should be able to change for other natural reasons (user interaction, previous track ending).
For what you need, one hack you can try currently is to specify a playlist with only one track at a time. You can change the prop to include your new track when desired, and use the audio element ref to call .play() afterward to make sure playback continues. There's more discussion in #65.
Note that in version 2 (coming soon, and in progress on the next branch) you'll be able to specify custom control components that can receive callback props to update audio state from any part of the UI. This is probably what you want, I think.
One case I haven't really considered is where you want your audio to be remotely controllable by another device (e.g. how Spotify works with multiple devices). I'm open to suggestions on how to do this. It's possible with the new API (create a custom control component that subscribes to a WebSocket and calls callback props on data update). However this might be considered awkward to some folks.

big thx for the answer, i'm waiting version 2.0 for this)

Cool! I'll leave the issue open until v2 lands.
On Feb 13, 2018 12:05 PM, "Roman O"<EMAIL_ADDRESS>wrote:

big thx for the answer, i'm waiting version 2.0 for this)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/benwiley4000/react-responsive-audio-player/issues/143#issuecomment-365333766,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AM7h7fWcWIF85Lltznw1X2VqKRAsVeGZks5tUcDxgaJpZM4SDszM
.

@romanlex
Hey again - as I mentioned this feature is already accessible via the next branch. As for the other related feature I mentioned, which would be remote control of the current track in the playlist, there's not yet a first-class API for that, although development of that feature is now being tracked in #203, which probably won't land in v2.0 as it's somewhat complex.
HOWEVER, if you know the url of the track you want to switch to, in v2.0 you'll be able to use the audioElementRef to set element.src to whatever you want. We'll actually intercept the request to update the src, make sure it exists in the playlist, then update the UI to match. :slightly_smiling_face:
That said, I'll close out this issue for now. Let me know if you have other questions and sorry for the extended delay.

I'm hoping to have a v2.0 alpha out in the next several days.

Any eta on the release of v2.0?
I'm trying to use the next branch in my development but can't seem to get it to work. Added "react-responsive-audio-player": "benwiley4000/react-responsive-audio-player#next", to my package.json under dependencies and am now getting the error:
Module not found: Can't resolve 'react-responsive-audio-player'
Wanting to update the playlist based on what users click on in my app. It loads correctly but I'm trying to programmatically autoplay the src rather than having them have to click the play button again. So I tried the method you mentioned of audioElementRef and play(), but that didn't update the UI or play correctly, so not I'm trying to use element.src and update to the next branch. Here's my code:
componentDidUpdate(prevProps, prevState) {
  if (prevProps.audiolog) {
    if (prevProps.audiolog.mediaUrl !== this.props.audiolog.mediaUrl) {
      this.audioElement.src = this.props.audiolog.mediaUrl;
    }
  }
}

and
<AudioPlayer
  playlist={playlist}
  autoplay={true}
  controls={['spacer', 'playpause', 'spacer', 'progress']}
  audioElementRef={elem => this.audioElement = elem }
/>

Any suggestions would be much appreciated. Really great package btw, thanks for your hard work!

Hey @joelrojo the new version is out in alpha and uses multiple packages. You can install them with:
npm install<EMAIL_ADDRESS><EMAIL_ADDRESS>
(@cassette/core is a peer dependency for @cassette/player). I haven't actually tested the fresh install workflow yet so it's possible something is broken. Or maybe it works!
The API has changed a bit and I'm still trying to get it documented. I'm hoping today or tomorrow you should be able to follow the documentation to use it. In the meantime you can check the example app to follow along.
For your usage you should be able to do:
import { MediaPlayer } from '@cassette/player';

// ...

<MediaPlayer
  playlist={playlist}
  autoplay={true}
  controls={['spacer', 'playpause', 'spacer', 'progress']}
  mediaElementRef={elem => this.audioElement = elem }
/>

The "more correct" way would involve creating a PlayerContextProvider (from the @cassette/core package) and calling the passed-down function to change the track when you need to. But I think the above should work for you and solve your immediate needs.
As for your question: I don't think the UI will update correctly in version 1 so you're probably going to want to upgrade to version 2, like you said. Sorry things are a bit behind.

BTW if you have custom CSS styles they won't continue working in the new version. All the styles and html structure were completely changed.

And here's the live demo page for the new player. https://benwiley4000.github.io/react-responsive-audio-player/example.html

Thanks for this, very helpful! Only thing is the fresh install doesn't seem to work. Tried it and now am getting a module not found error: Module not found: Can't resolve '@cassette/player'
Do you have any resources for implementing it with PlayerContextProvider instead? Not a huge rush so I can just wait for your release of documentation if that's easier. Thanks again!

@joelrojo here's an incomplete but in-progress API documentation: https://benwiley4000.github.io/react-responsive-audio-player/styleguide/
No examples, props that are shared between components are only defined on one of them, etc.
As for the install issue... not sure why the install didn't work. I can try to test it later today when I'm off work. Can you show me the structure of your node_modules/@cassette/player directory after the install?

Make sure you are using the named import instead of default import since version 2 doesn't have default exports.

awesome, I'll look into the documentation. I tried named import instead of default to no avail. Here is the directory structure:

Hey, I can just do this one quickly.

awesome, thanks! Lmk when it's good to go and I'll test it out.

It's ready now - you can upgrade your dependencies to 2.0.0-alpha.3.

@benwiley4000 it works! thank you. Just had to add a direct link to the css to make sure the styles applied. Final code:
import<EMAIL_ADDRESS>
  componentDidUpdate(prevProps, prevState) {
    if (prevProps.audiolog) {
      if (prevProps.audiolog.mediaUrl !== this.props.audiolog.mediaUrl) {
        this.audioElement.src = this.props.audiolog.mediaUrl;
        this.audioElement.play();
      }
    }
  }

Awesome! Glad it worked. :)

P.S. is calling the play() method necessary? Just curious.. I thought it wasn't anymore.

When I didn't call play() it would update the src but pause playback, requiring the user to hit  the play button again.
I'm loading the playlist with a button outside of this component, which might be the issue and why I have to hack it this way.
I'm assuming I'll be able to fix this doing it the "right" way with the PlayerContext in the 2.0 release. But for now it works well!

Does your updated playlist have any media sources in common with the previous one?

No, I'm basically just creating a playlist with one track and replacing that track through props everytime a user clicks on a custom audiolog component:
const playlist =[{ url: this.props.audiolog.mediaUrl, title: this.props.audiolog.title }]

@benwiley4000 thanks for the tips, all super helpful! This player is a crucial component of what I'm building and I really appreciate you putting it together.

@joelrojo I'm glad to hear that. If you're interested I can ping you when more docs are ready.

@benwiley4000 Yea that'd be great, thanks!


Add new recipe for vegan brownies to Quarto

Fixes #39

[ ] @MariaJakubowski could you also please reference the issue that this PR is fixing in the description above? thanks!

@allcontributors please add @MariaJakubowski for bug, content, code

Looks great, thanks for the additional changes @MariaJakubowski. Ready to merge!


BN does not render int128_t data in linear view

Binary Ninja Version: 3.4.4090-dev
Platform: Windows 11 Version 22H2
It can be reproduced by defining a int128_t variable in anywhere in data section.

As far as I'm aware, it should just be rendering.
Also, the reason this hasn't been fixed yet is because the code uses int64_ts to pass the data around internally and...as you might imagine, 128 bits don't fit inside of that, so this is not, in fact, the 5-minute change I expected it to be when I looked at it last week. 🙃

This was true for any data type that doesn't have a valid data renderer (including any integer type greater than 8 bytes or not a power of 2 in size). Fixed in 3.6.4749.


Optimize subquery transformation for SIZE() select clauses

We could use the inverse mapping for creating the COUNT() subqueries. This way we could save a join.

I would like to recap what the intention of this issue was since it's very old now.
Right now, we transform SIZE functions into subqueries that do COUNT.
According to the JPQL BNF we could also transform it into the following equivalent query
SELECT (SELECT COUNT(y) FROM a.collection y) FROM A a

which would be even easier.

Fixed


Drop bindata requirement

Pull Request Test Coverage Report for Build 13c352add-PR-843

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 45.53%

Totals

Change from base Build 75498b925:
0.0%

Covered Lines:
5577

Relevant Lines:
12249

💛  - Coveralls


React transition: update daily-data url

Describe the bug
Current prod url for the logged-in data index is /daily-data but the react url now is /daily.
Impact
Please describe the impact this bug is causing to your program or organization.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior

[ ] Update url to match production: /daily-data

Screenshots
If applicable, add screenshots to help explain your problem.
Logs
If applicable, please attach logs to help describe your problem.
Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

This has been completed


Haskell

I want to learn functional programming to check where it'll fit my needs and how can I improve my skills in programming in general.
Course Introduction to Functional Programming on edX:

https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0

Are you looking for someone to take a look at the Haskell book and put stuff in it?

Hi @gregJohnRob !
Well, not exactly, though you can feel free to do it. In fact I'm still willing to get started with Haskell. Unfortunately I didn't read much about it yet, because there're a lot of stuff in my study list with higher priorities. Do you have experience with Haskell?
This repository is just my learning journal, where I use to open issues so I can easily save links to study later. You can feel free to contribute with anything from your knowledge or even learn to share here, but please note that this repository isn't about any project to be released, but just a journal, ok?
Anyway, if you're willing to publish anything about Haskell, perhaps I might help you with editing or even help finding a blog to post it. Or if you want to exchange knowledge, it'd be great too.
Thanks anyway for offering help!


Support for Android Studio Artic Fox

Cannot install plugin in Android Studio Artic Fox

It should support Artic fox. Do you not see the plugin in the marketplace? Or while installing are you facing any specific issues? I just tested in Android studio Bumblebee 2021.1.1 and it works as expected.

I am not using android anymore and I do not remember why exactly it was not working, I think it said that it is not compatible with the current version of the IDE. If it is working now for you then you can close it I guess.


feat: new playground implement basics of pnpm workspace

Explain your changes
implements pnpm workspace and adds basic playground
Checklist

[ ] I have read the “Pull requests” section in the contributing guidelines.
[ ] I agree to the terms within the code of conduct.

🛟 If you need help, consider asking for advice over in the Kinde community.

Summary by CodeRabbit

New Features

Integrated Kinde authentication for improved security and user management.
Added a Dashboard component for authenticated users with welcome message and next steps.
Introduced a new home page with a hero section, including a title, tagline, and documentation link.
Implemented global CSS for consistent design and responsive layout across the application.

Chores

Updated .gitignore to exclude specific directories for cleaner version control.

Documentation

Added type definitions and configuration files for Next.js to support development.

@DanielRivers could you resolve conflicts pls
/


fix: add default mounted dir

Describe what this PR does / why we need it
Does this pull request fix one issue?

Describe how you did it
Describe how to verify it
Special notes for reviews

close this PR due to user could set its own mounted dir. infra driver not control this.


Issue in CSS of PCF control dropdown

We have been using “Multiselect_Records_PCF” control in our CRM Application. We have facing a css issue in the control after implementation.
Issue: dropdown background is coming in excess on the screen
Scenario:
User clicked on the search icon in PCF control.
Dropdown css not showing properly.
I have also attached the screenshot for reference. It will be very helpful if you can spare some time to look into it.

Hi Team,
@victorsolaya. Waiting for the response.

Hi @shivamagarwal10
A new version has been released https://github.com/victorsolaya/Multiselect_Records_PCF/releases/tag/v<IP_ADDRESS>
This fixes the layout problem

Thank you

Thank you very much for new release, After importing new release issue has been perfectly resolved. Thankyou very much for your support.


Cannot upload on negative tiles

Hey,
I can't upload anything on a tile with negative coordiates or get informations about it:
./bin/cli --apikey=abc rpc gettile -118 -84
Return Null
Result on the node:
[debug] Handling RPC call : gettile.
[debug] []
[error] gettile "x", "y"

./bin/cli --apikey=abc rpc settile -118 -84 test64
Return:
Reading tile file undefined
Error: File undefined not found
    at CLI.rpc (/home/hprivakos/bronzeage-node/bin/cli:485:13)
    at rpc.next (<anonymous>)
    at step (/home/hprivakos/bronzeage-node/lib/utils/co.js:31:22)
    at /home/hprivakos/bronzeage-node/lib/utils/co.js:64:5
    at exec (/home/hprivakos/bronzeage-node/lib/utils/co.js:21:10)
    at CLI.rpc (/home/hprivakos/bronzeage-node/lib/utils/co.js:92:12)
    at CLI.handleNode (/home/hprivakos/bronzeage-node/bin/cli:657:25)
    at handleNode.next (<anonymous>)
    at step (/home/hprivakos/bronzeage-node/lib/utils/co.js:31:22)
    at /home/hprivakos/bronzeage-node/lib/utils/co.js:64:5

I have no problem while using the same command but with positive coordinates

Resolved by #25


Re add map functionality

We need to re-code the map integration system, so that all of the objects can be spawned depending on map etc...

Finished via c8ade498e054d2a32c9fcd1da7fe2ebccd1da548

This re-implmented #126


Support opening multiple databases with the same stem

e.g. I should be able to do this:
datasette App/data.db Other_App/data.db

This currently errors because you can't have two databases taking the /data URL path.
Instead, how about in this particular case assigning the second database /data-1?

Experimental exploratory patch:
diff --git a/datasette/app.py b/datasette/app.py
index 2ef7da4..ca51866 100644
--- a/datasette/app.py
+++ b/datasette/app.py
@@ -164,8 +164,10 @@ class Datasette:
                 is_memory = True
             is_mutable = path not in self.immutables
             db = Database(self, path, is_mutable=is_mutable, is_memory=is_memory)
+            i = 1
             if db.name in self.databases:
-                raise Exception("Multiple files with same stem: {}".format(db.name))
+                db.stem = db.name + "-" + str(i)
+                i += 1
             self.databases[db.name] = db
         self.cache_headers = cache_headers
         self.cors = cors
diff --git a/datasette/database.py b/datasette/database.py
index e491577..75c8681 100644
--- a/datasette/database.py
+++ b/datasette/database.py
@@ -14,6 +14,8 @@ from .inspect import inspect_hash

 class Database:
+    stem = None
+
     def __init__(self, ds, path=None, is_mutable=False, is_memory=False):
         self.ds = ds
         self.path = path
@@ -73,6 +75,8 @@ class Database:
     def name(self):
         if self.is_memory:
             return ":memory:"
+        elif self.stem:
+            return self.stem
         else:
             return Path(self.path).stem

Related problem caused by the new _schemas database - if a user attempts to open their own _schemas.db file it will fail. I'd like to open and mount that as /_schemas_ instead.

I'm fixing this in #1155.

If you open multiple files with the same filename, e.g. like this:
datasette fixtures.db templates/fixtures.db plugins/fixtures.db

You'll now get this:


Add repository.directory field to package.json

This adds a directory field to the repository objects in package.json. This is a new field for monorepos specced in this npm RFC: https://github.com/npm/rfcs/blob/d39184cdedc000aa8e60b4d63878b834aa5f0ff0/accepted/0000-monorepo-subdirectory-declaration.md
It enables cross-repository go-to-definition on Sourcegraph, as Sourcegraph can resolve packages to a specific directory in the angular monorepo.
Clients that don't know this field simply ignore it (as with any other arbitrary field in package.json).

@felixfbecker thanks. Wasn't aware of this.


Checkpoint Defense

What does this PR do?
Checkpoint Defense

Changes Unknown when pulling 2bb1ab31e18bae50f9354911505983e93b680d08 on develop into ** on master**.

Changes Unknown when pulling 8ae8283fa7372cde8769bd0b140191cc8db80cb1 on develop into ** on master**.

Changes Unknown when pulling 1c5a5e5348f90be4f0f1c1dd9fd2efdca89b10ea on develop into ** on master**.


Add environment variable to Helm chart for Keptn Bridge and set the value when doing a keptn install

The Keptn Bridge added the environment variable: KEPTN_INSTALLATION_TYPE: https://github.com/keptn/keptn/pull/2606/files#diff-f344a35654d53c1345c4d1f1734511437661440c90654afc144d955d38a900c5R49 to control the supported use-cases.
The supported values are:

QUALITY_GATES
CONTINUOUS_OPERATIONS
CONTINUOUS_DELIVERY

Task

This environment variable has to be added to the Helm Chart with the Bridge deployment, available here:
https://github.com/keptn/keptn/blob/master/installer/manifests/keptn/charts/control-plane/templates/core.yaml#L165
Add the environment variable to the list: https://keptn.sh/docs/0.7.x/operate/advanced_install_options/
Depending on the install option chosen for keptn install the environment variable needs to be set.

keptn install --> CONTINUOUS_OPERATIONS
keptn install --use-case=continuous-delivery --> CONTINUOUS_DELIVERY

Idea: Instead of assuming that the CONTINUOUS_OPERATIONS includes QUALITY_GATES, and CONTINUOUS_DELIVERY includes CONTINUOUS_OPERATIONS as well as QUALITY_GATES - should we just store a list as value for KEPTN_INSTALLATION_TYPE?
keptn install --> QUALITY_GATES,CONTINUOUS_OPERATIONS
keptn install --use-case=continuous-delivery --> QUALITY_GATES,CONTINUOUS_OPERATIONS,CONTINUOUS_DELIVERY

Idea: Instead of assuming that the CONTINUOUS_OPERATIONS includes QUALITY_GATES, and CONTINUOUS_DELIVERY includes CONTINUOUS_OPERATIONS as well as QUALITY_GATES - should we just store a list as value for KEPTN_INSTALLATION_TYPE?
keptn install --> QUALITY_GATES,CONTINUOUS_OPERATIONS
keptn install --use-case=continuous-delivery --> QUALITY_GATES,CONTINUOUS_OPERATIONS,CONTINUOUS_DELIVERY

I like the idea and agree on providing a list of supported use-cases in the current keptn installation.


Created integration test for secondary store user login

Description
This PR creates a new integration test to check the authorization of 2 separate users, each created in the primary and secondary user stores.

Locally-Run Test Reports
Overall Summary

is-test-adaptive-authentication


增加group的配置支持

可否解释一下group的使用场景?
官方文档说明如下:

A swagger group is a concept introduced by this library which is simply a unique identifier for a Swagger Resource Listing within your application. The reason this concept was introduced was to support applications which require more than one Resource Listing. Why would you need more than one Resource Listing? - A single Spring Web MVC application serves more than one API e.g. publicly facing and internally facing. - A single Spring Web MVC application serves multiple versions of the same API. e.g. v1 and v2
In most cases an application will not need more than one Resource Listing and the concept of swagger groups can be ignored.

其中举了两个例子,

一个应用服务于多个API,比如对外接口和对内接口
一个应用服务于API 的多个版本,比如接口版本v1,v2...

是否可以理解成假设用base-path来区分API的两个版本group
v1 对应 /v1/**
v2 对应 /v2/**

swagger.docket.v1.base-path=/v1/**
swagger.docket.v2.base-path=/v2/**

可以这么玩~

多谢 @dyc87112 那group一般会用于什么场景?


24.06 - some pixels or cut off text and "moved" object in options dialog

I just updated my MediaInfo installation (portable) to 24.06 and encountered some issues. But I don't know if these were already present in previous versions. I could check if you want me to.
Steps to reproduce
unpack the portable archive and first start, the nyou will see the issue I captured with the screenshot:
https://drive.google.com/file/d/1iR0_bAIL8KPLDwADK94USt4ubb6b8Q7H/view?usp=sharing
Please let me know if you need me to do anything else for you

24.05

24.06

The only change is added new setting as far as I know. The top "cut off text" is a high-DPI glitch that sometimes appear. Previously, something similar was noticed on the main window as well during testing.

@JeromeMartinez I suspect the glitch is due to these page tabs/selectors not hidden enough so the currently active one is slightly visible on very high DPI scaling sometimes.

Still open due to

@Klaus1189 correct me if I miss something.

Still open due to
@Klaus1189 correct me if I miss something.

same for me in 200% and I set my monitor for testing to 100% and I can confirm @JeromeMartinez

Good news, I came across the solution to this while checking the other issue. Turns out the issue is at the tree view and not the sheet.
Is this good enough now?

100%
200%

I like the dark ones, somehow the light versions look different from the dark ones, I mean a bit off.
And the light 200% has a OK button which is cut off the rounded window. Strange Win11
The more I look I think the dark screenshots have another radius of the rounded corners.
Best is a small testbuild if you don't mind.

Best is a small testbuild if you don't mind.

Testbuild need @JeromeMartinez I cannot upload my unsigned self-built version here without permission.

And the light 200% has a OK button which is cut off the rounded window.

Many buttons placed too close to the edges in my opinion. I added more margins to all elements in the about window but didn't change this.

@cjee21 in your screenshots the dark them has alignment but the light theme has 1 bit diff, weird.

I added more margins to all elements in the about window but didn't change this.

I could be fine with that, I created that 20 years ago and didn't care so much about such details but if someones improves it I take it :).

I could be fine with that, I created that 20 years ago and didn't care so much about such details but if someones improves it I take it :).

Done.

dev snapshot (before the margins).

dev snapshot (before the margins).

looks good to me, not perfect, but I would leave it like that. Just one last cosmetic change:
Place the labels and the drop down lists on one height:
https://drive.google.com/file/d/1yxzdHjFnnvwQVh-XnYjlKO2U00LwhXJZ/view?usp=sharing

updated dev snapshot.

Perhaps the two More buttons same height position and height size like the left of it.

This is some DPI scaling issue. It is exact same height/position on 100%. Same as the button next to filename selector on main window.

Good enough for the moment, I merge and if someone is motivated for checking this 200% DPI issue I would be happy to get the patch else it will stay as is.

Looks good to me.

updated dev snapshot.
Looks good to me on 200%


Main thread is not receiving the message from thread.postMessage

I can see the the method below from ThreadSElfModule.java being called but the message does not reach the onmessage of main application:
@ReactMethod
public void postMessage(String data) {
if (parentContext == null) { return; }
    parentContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit("Thread" + String.valueOf(threadId), data);
}

Not sure where to go from here!!

I figured out what was the issue in my code.

what was the issue in your code, we are having the same problem?

I am running into the same problem. @banalola or @olifolkerd were you able to figure this out?

I'm having the same issue, any suggestions? @banalola @olifolkerd @felixSchl


Lookup - Needs to allow an attribute to disable search

We need a way for the user to be able to disable the first list item if the user does not want to allow the user to use Saleforce's search.

Ember has been completed; jQuery in the works

jQuery completed.


Add Lodata.md

Lodata is a fully-featured OData 4.01 producer for the Laravel web application framework.

Hi @marabooy - Is there anything else to be provided for this submission, or is it just waiting until people have free time to review?

@27pchrisl thanks for the notification, I should be able to publish this soon once reviewed.

@marabooy does the website get regenerated automatically ?

@27pchrisl the changes are now live.


Guid as a route parameter not working

Following is my function signatute.
public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "test/{id:guid?}")] HttpRequestData req,
            Guid id,
            FunctionContext executionContext)

Steps

Now when I run the function it build and run file. Now lets assume that my function end point is http://localhost:7071/api/test/d38b8c35-d2bd-42ad-966e-933f9e8d36df .
Now this url throw exception with message

Microsoft.Azure.Functions.Worker.Diagnostics.Exceptions.FunctionInputConverterException: Error converting 1 input parameters for Function 'Function1': Cannot convert input parameter 'id' to type 'System.Guid' from type 'System.String'.

Now if I change Guid to string then it is working fine..

I have checked the worker code and it seems that there is no converter for Guid.
Note: One can suggest that bind string and then use Guid.Parse but why it is not there.

Duplicate of #521
@jp1482 thank you for opening this. We have an issue tracking this (and currently assigned to a spring) here #521
We'll close this and continue to follow up in the other issue.


Get certificate for Plesk domain

Is it possible to use this extension to get a certificate for the Plesk main domain?
Also being able to install these certificates for Mail, FTP and Webmail... would be very useful.

What do you mean the "main" domain in Plesk? I like all my domains :)
If you want to secure Plesk on 8443 port with the certificate, you can download it (Domain > SSL Certificates > click icon) and upload to the server repository (Tools&Settings > SSL Certificates > upload and make it default).

Yes, sorry, I mean Plesk port 8443 - I've dedicated a single (sub-)domain for Plesk with "Custom Plesk Hostname" extension so I have one "main" Plesk domain.
Downloading and uploading would work fine, I agree, but this step would have to be repeated at least every 90 days. It would be nice to be able to set one of the domain certificates as default Plesk certificate.
Unfortunately plesk does not provide a GUI option to set a certificate for mail services.
When using the stock letsencrypt-auto client the currently active certificate has a symlink at /etc/letsencrypt/live/domain.tld/... - It would be nice to have this for the plesk certificates too - this would make it possible to use an always up to date letsencrypt certificate for postfix, dovecot...
Manually updating certs everywhere might be acceptable for 1/2 year certificates - but every ~80 days is a bit too much.

The active certificates could be found here: /usr/local/psa/var/modules/letsencrypt/etc/live/domain.tld
I will think about automated renewal of Plesk certificate.

@jbbr @xgin I have nearly the same setup and it would be great if this could be automated.

This would be very handy indeed! Would love to see this happen :-)

+1 :+1: need this feature.

+1

+1

The extension version 1.2 has been released.
To secure Plesk with example.com certificate the address https://example.com:8443 should be opened.
In CLI use option --letsencrypt-plesk:plesk-secure-panel

Could you add some information on how to secure the panel?

I believe this is done by running:
sudo -u psaadm bash /usr/local/psa/admin/plib/modules/letsencrypt/scripts/le-run --letsencrypt-plesk:plesk-secure-panel
Then select the domain that is being used for the Plesk control panel (Presuming that you are using default port) -  Or at least appears to work for me!

I hope this screenshot will make it clearer:

Note: CLI operation does not store parameters for renew itself. Only operations in UI will be repeated in a month.

@xgin Awesome, thanks!

Does this also work when running plesk on a subdomain like plesk.domain.tld ?
I have this situation and don't have plesk.domain.tld set up as a subdomain in plesk itself and therefore can't do this with the plesk web gui...

@tofi86 it is exactly #44 and #19

@xgin thanks, that helps... looking forward to those implementations...

Will these behaviour be changed?

It is not clear for me why did you come to the decision about new domains.
In fact there is no difference between "old" and "new" domains.
As you may see on my screenshot, the certificate had already been issued and it was renewed again.
There are only 2 conditions for Plesk certificate: admin user (and its aliases) is allowed and the domain should match currently opened Plesk address.

I'm not really getting how this works.
Currently my plesk installation uses port 8880 and runs on servername.domain.tld, but is not registered inside my DNS and not as a subdomain but just a CNAME record and voila.
I have a working, really expensive, ssl cert on domain.tld so I do not want to change this.
How would I proceed in securing this so plesk can run on https://servername.domain.tld:8443 using letsencryppt?
Kind regards,
Cargao

I'm confused, why I don't have option "Use this certificate to secure connections to plesk" like in picture?

@Caroga the domains name should be registered in Plesk, elsewise you should install and renew it by yourself: an example is here https://gist.github.com/xgin/fbfa4577ad46955f472c

@TeHashX take a screenshot with all the elements highlighted above (essentially with browser address bar)

Solved :+1:
I look better and the only difference was the www in the address bar, I leaved https://domain.com and option shows up. Should be a warning somewhere to remove www from address.
Thanks

@TeHashX I see, will fix the case.

@xgin Hi, I have the domain name registered in Plesk, it's already in use. But the situation is as follows:

www.domain.tld <= uses very expensive SSL cert which I don't want to change.
plesk.domain.tld <= is the plesk CNAME record in DNS which Plesk uses, NOT a subdomain within Plesk, only this record.

I wish to create a SSL cert for plesk.domain.tld, but I cannot select this inside the Let's Encrypt plugin.
I wish to understand how to achieve the desired situation: should I make a subdomain or is there another way of achieving this (for example with your code snippet)?
Kind regards,
Caroga

@Caroga create a subdomain - it is the simplest solution

Okay, will do so.
I will create the subdomain and use apache/nginx as a forward proxy. Think this might be the better setup.

I guess you need no proxy. Just try it :)

Okay I got it to generate a ssl cert for plesk.domain.tld now. I also got the option to use this cert for securring plesk. So I ques this is good to go.
Im now searching where to improve my cipher suites for plesk itself, as this is kinda old.
Thank you very much for all your help!

Nevermind, already fixed. Thanks again!

Hi @xgin,
may it's already answered. How about the automated update of the cert for mail, ftp ...?
My panel is working fine, but mail is still manual...
Thank you in advance!

You can use my script for automated updates of the cert for mailservers on debian systems!

@Bambi42 take a look https://github.com/plesk/letsencrypt-plesk/wiki/Secure-Mail-Server

@xgin thumps up
THX - workx

@xgin
What I do not understand: why are the mail server security settings not automatically applied, when running the plesk sbin pci_compliance_resolver?
Regards....

@trialotto
pci_compliance_resolver applies some presets that were recommended by our security team.
AFAIK mail server should use the same ciphers suite when it is supported.
Anyway it is not related to the Let's Encrypt integration. I suggest to report your problem in comments to the documentation http://docs.plesk.com/en-US/12.5/advanced-administration-guide-linux/pci-dss-compliance/tune-plesk-to-meet-pci-dss-on-linux.65871/

NOT WORKING
`Error: Let's Encrypt SSL certificate installation failed: Failed letsencrypt execution: Failed authorization procedure. www.ZZZZZ.kraftysprouts.com (http-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: DNS problem: NXDOMAIN looking up A for www.zzzzzzz.kraftysprouts.com
IMPORTANT NOTES:

If you lose your account credentials, you can recover through
e-mails sent to hello @ kraftysprouts.com.
The following errors were reported by the server:

Domain: www.ZZZZZZ.kraftysprouts.com
Type: connection
Detail: DNS problem: NXDOMAIN looking up A for
www.server1.kraftysprouts.com
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A record(s) for that domain
contain(s) the right IP address. Additionally, please check that
your computer has a publicly routable IP address and that no
firewalls are preventing the server from communicating with the
client. If you're using the webroot plugin, you should also verify
that you are serving files from the webroot path you provided.

Your account credentials have been saved in your Let's Encrypt
configuration directory at /opt/psa/var/modules/letsencrypt/etc.
You should make a secure backup of this folder now. This
configuration directory will also contain certificates and private
keys obtained by Let's Encrypt so making regular backups of this
folder is ideal.`

Thanks for this @xgin! Especially this comment.
That worked fine for the admin interface on port 8443 having a plesk. subdomain. But this did not set the certificate for the plesk installer interface on port 8447. I found the ssl cert for the latter to be /opt/psa/etc/httpsd.pem, symlinked that to /opt/psa/admin/conf/httpsd.pem, rebooted and it was 'fixed'. Maybe add that to your script too?
cp /opt/psa/etc/httpsd.pem{,.sav}
ln -s ../admin/conf/httpsd.pem /opt/psa/etc/httpsd.pem

The option to protect the panel does not appear for me:

What am I doing wrong?
I using:
Plesk 17.0.17 Update #18
Let's Encrypt	1.9	3

@ArashiKorosu In onyx we suggest another way to secure Plesk: https://docs.plesk.com/en-US/onyx/administrator-guide/plesk-administration/securing-plesk/securing-plesk-and-mail-server.76576/
Exactly the same question has been asked recently. We might have to add some hint here.

Using Plesk Onyx Version 17.5.3 Update #9 on https://domain.tld:8443 but the option in the screenshot from xgin is not present. Only the option to include www. and secure webmail, too.
Do I need anything else, so the option appears ?

@xgin
There are many current issues that are interrelated and/or can be interrelated with other issues or even the bugs in other extensions/components of Plesk.
Please note that the current issue in this thread can be related to migration issues.
It would be good to consider that, in almost all cases of migration, the Plesk Let´s Encrypt extension can or will result in many errors.
The most common error (in case of migration) is the fact that certificates (of a domain or the server) are NOT migrated (read: Plesk settings are not migrated fully).
This will hinder the proper functioning of the Plesk Let´s Encrypt extension.
I certainly hope that one can pay some attention to that too.
In addition, there are two absolutely required functions for the Plesk Let´s Encrypt extension:

the possibility to revoke a Let´s Encrypt certificate (on a domain or the server), (and)

allow for HA/Fail-over domain certification: two identical domain names, present on two servers (for reasons of HA and/or Fail-over) should be able to have the same Let´s Encrypt certificate assigned.

I am aware that point 2 is rather difficult, but point 1 is a feature that can be developed shortly.
The "revoke function" would certainly reduce a number of issues, in the sense that potential issues can be resolved by simply revoking a certificate and re-assigning the certificate.
Hope the above feedback will help a bit.
Regards.....

@heinrich-k have you seen the latest comment related to the Onyx version?
@trialotto I don't think mixing different problems in the another (closed by the way) issue is something perspective.
Regarding the absent ability to revoke a certificate there is the issue #105 but there is no significant activity and votes that does not make this feature higher priority then others. Also I could not find any suggestion on https://plesk.uservoice.com/ but this is very important tracker of consumer demands.
AFAIK there is no open issues in migration, feel free to describe the problem (in separate issue or forum thread) and it would be great if you have steps to reproduce.

@xgin: I had not seen it. But it isn't a tutorial to use the Let's encrypt certificate either. I want to move away from self signed certificates.

@xgin
I just wanted to point out that there are many "cause > consequence" combinations of LE related issues.
This often causes discussions about solutions for specific LE related issues to be scrambled with noise.
For instance, consider the "revoke issue" (and #105).
The status quo is

Plesk Panel does not allow it (as many people would expect)
letsencrypt binary allows it (and many other things)
CLI interface (plesk bin extension) is relatively unknown (and some commands do not work)

and the whole problem is that new issues often arise when trying to solve another one.
Simply because Plesk Panel, letsencrypt binary and CLI interface are not aligned.
In my humble opinion, it would be a good starting point to
a) create crystal clear (online) documentation (as you suggested yourself previously),
b) create a description of all possible CLI interface commands,
this in order to keep discussions about alleged (!) issues with the LE extension pure.
Regards......

@heinrich-k
You can always create a domain with the identical name of your server´s FQDN.
This will result in the following:
a) when assigning a letsencrypt certificate to the domain in question, the Let´s Encrypt extension will be automatically asking whether you want to secure Plesk Panel (with the LE certificate)
Note: simply follow the steps
1 - create a domain or subdomain with name [server FQDN]
2 - go to "Domains > [server FQDN] (select) > Let´s Encrypt (click)"
3 - select option "Secure Plesk Panel" (if possible; if not possible, then step 3 is not required: the Plesk panel will be secured with the LE certificate, but in a different way)
and that is it.
Note the steps 1 and 2 (and potentially 3) are a "dirty work-around" for securing Plesk Panel, it is not a solution, but it is a "required work-around": the interaction between the Let´s Encrypt extension and the Security Advisor extension can cause some problems, requiring this "work-around".
b) the created (sub- or) domain with name [server FQDN] will allow you to create common mailboxes like hostmaster@[server FQDN], with the particular advantages that

webmail will be secured with LE certificates
mail send by the system or privileged users will come from a "trusted" domain (to some extent)
security can be enhanced to some extent
and so on

and even a mailbox like root@[server FQDN] can be used, as long as you use a mail forward (highly recommended!!).
In general, note that letsencrypt certification does not secure all SSL/TLS connections!
And this is also an important topic for (online) documentation with respect to the Let´s Encrypt extension.

@xgin
Please (also) see my comment to @heinrich-k.
I suggest that we further use the Plesk forum to communicate, if desired by you.
Regards!

@trialotto
I tried to do what you described in a), but the option to secure PLESK did not show up.

@heinrich-k
I know, that is different amongst a number of Plesk versions and even amongst LE extension versions.
The step 3 is optional, it is not required.
Essentially, by creating and securing the domain or subdomain with name [server FQDN], one can access the Plesk Panel by using that specific (sub-)domain name and still have the green lock in the browser.
However, this still allows you to access the Plesk Panel with another URL that has a DNS record pointing to the IP of the server in question .......... and this URL is not secured (only with the default certificate).
One way to get LE certificate on the (sub-)domain with name [server FQDN] working for all URLs is simply by using a (Nginx based) redirect OR changing the Plesk (Nginx) config (read: adjust the lines pointing to the default certificate and let them point to the directory and file location of the LE certificates that are active on the  (sub-)domain with name [server FQDN]).
Again, it is a work-around, not a solution.
Another way to get your system "clean" is to remove and re-install both the Security Advisor extension and the Let´s Encrypt extension: these two extensions can be the cause of Let´s Encrypt related issues.
Again, both the before mentioned extensions can interfere with each other and cause severe issues.
The best way to get your system "clean" is to follow the steps 1 to 6, as mentioned here: https://talk.plesk.com/threads/solutions-for-recent-lets-encrypt-issues.342567/
In most cases, a good "clean" will allow you to get your server-side LE certificate up and running.
Hope this helps!
Regards......


Add .vscode folder to gitignore

Should it really be gitignored, though? The settings there may or may not be relevant to everyone...

    "editor.insertSpaces": false

for instance, may very well belong in the repo.
launch.json too?

Launch configuration I guess, but I imagine there are many settings that should not be in source control

Although I guess the difference between user settings and workspace settings comes into play there, I'm not sure how that's handled

tbh, editor.tabSize is like the only one I normally wouldn't source control.
And we did do it in .editorconfig anyway just to get GitHub to stop displaying our tabs as 8 spaces.

tabs/spaces is one of the few things that I can see being useful in source control, since they basically affect the code itself, but every other layout setting? I don't know

I mean there's nothing stopping someone from having, say, a different font size for PS because for some reason
Also if you have settings in there, does that mean they've sitting there as unstaged changes? Since so far no one actually committed them

Since this is controversial, maybe interested devs should use their global .gitignore files?

Yeah, right now they're sitting as unstaged changes. Uncommitted files aren't committed with git commit -a so it doesn't actually interfere with my workflow at all.

Unfortunately, the status quo is not really desirable – we should either commit a canonical vscode settings file or .gitignore it in-repo, both of which would prevent the global .gitignore from doing anything.

Well, ultimately it's your decision which way to go. Constantly having a dirty working tree really irks me though.

We also might want to specify official launch configurations to make it easier to debug.

I definitely see value in checking in .vscode, but can you tell me what settings you have there that you wouldn't want checked in?

The thing is that I currently don't, just an empty settings file because I have no settings specific to PS. I just think it's possible albeit maybe unlikely for such a situation to arise in the future.
Which settings apart from insertSpaces would be worth forcing on anyone checking out the project?

Adding just the settings file to gitignore might be a usable compromise

Sure. You want to do that?

Yeah, seems like a good solution to me.

This does not appear to be what we agreed on?

Oh, I misread what you said. What's wrong with adding insertSpaces as well?

I wouldn't mind having insertSpaces in source control, but every other setting I can think of, I probably wouldn't want being forced on me. And it's either none of the settings or all of the settings, isn't it?

And yeah, sorry, forgot I deleted the launch config at some point and it was recreated as the default.

Every other setting, you'd probably want in your local settings, not in the repo settings. I'd like just insertSpaces in source control, yes.

Well, okay then. Added the whole thing to source control.
(I assume the red highlighting by github is because JSON doesn't have comments?)


Updated the Collections section of Privacy whitepaper

Rendered article sections for review:

https://review.learn.microsoft.com/en-us/microsoft-edge/privacy-whitepaper/?branch=pr-en-us-2778#collections
https://review.learn.microsoft.com/en-us/microsoft-edge/privacy-whitepaper/?branch=pr-en-us-2778#entity-extraction

Collections is updating to new Collections (Bing saves) for MSA users.  This PR makes the following changes:
1, Removed Pinterest topic, since this feature is disabled on Edge client.
2, Added new Collections privacy statement.
AB#45949268

With latest revisions, PR LGTM.


Wrong Hello World code in documentation in v3.0.7

I'm trying Native Base for the first time, and by following the set up with Expo in v3.0.7 the Hello World code snippet produce an error.
Link: https://docs.nativebase.io/install-expo#run-the-hello-world-example
Error:
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object. You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
Code snippet in App.js
import React from 'react';
import { NativeBaseProvider, Box } from 'native-base';

function App() {
  return (
    <NativeBaseProvider>
      <Box>Hello world</Box>
    </NativeBaseProvider>
  );
}

By using the code snippet from Setup NativeBase Provider (https://docs.nativebase.io/setup-provider) the App works in the correct way.
Correct code:
import React from 'react';
import { NativeBaseProvider, Text, Box } from 'native-base';

export default function App() {
  return (
    <NativeBaseProvider>
      <Box flex={1} bg="#fff" alignItems="center" justifyContent="center">
        <Text>Open up App.js to start working on your app!</Text>
      </Box>
    </NativeBaseProvider>
  );
}

Platform

NativeBase version 3.0.7

Ok we haven't exported the App in the first example that must be causing this issue, thanks for reporting this @GregoryWullimann , we will try to update the Docs as soon as possible.


SNOW-1348621 Fix bug and add support for DataFrame key in getitem

Please answer these questions before submitting your pull requests. Thanks!

What GitHub issue is this PR addressing? Make sure that there is an accompanying issue to your PR.
Fixes SNOW-1348621

Fill out the following pre-review checklist:

[x] I am adding a new automated test(s) to verify correctness of my new code
[ ] I am adding new logging messages
[ ] I am adding a new telemetry message
[ ] I am adding new credentials
[ ] I am adding a new dependency

Please describe how your code solves the related issue.
(boolean) DataFrame keys in __getitem__ were not correctly supported. I use where() to evaluate the result for df[DataFrame key].

Looks good overall. Just a couple of nits.


[upstream] Release Kogito 0.13.0

Signed-off-by: Ricardo Zanini<EMAIL_ADDRESS>Kogito Operator 0.13.0 release on Upstream catalog.
Thanks submitting your Operator. Please check below list before you create your Pull Request.

Flat operator directory structure is obsolete from 23-rd of October 2019, only nested directory structure will be accepted.

New Submissions

[ ] Does your operator have nested directory structure?
[ ] Have you selected the Project Community Operator Submissions in your PR on the right-hand menu bar?
[ ] Are you familiar with our contribution guidelines?
[ ] Have you packaged and deployed your Operator for Operator Framework?

[ ] Have you tested your Operator in all supported installation modes?
[ ] Is your submission signed?

Updates to existing Operators

[x] Is your new CSV pointing to the previous version with the replaces property?
[x] Is your new CSV referenced in the appropriate channel defined in the package.yaml ?
[x] Have you tested an update to your Operator when deployed via OLM?
[x] Is your submission signed?

Your submission should not

[x] Modify more than one operator
[x] Modify an Operator you don't own
[x] Rename an operator - please remove and add with a different name instead
[x] Submit operators to both upstream-community-operators and community-operators at once
[x] Modify any files outside the above mentioned folders
[x] Contain more than one commit. Please squash your commits.

Operator Description must contain (in order)

[x] Description about the managed Application and where to find more information
[x] Features and capabilities of your Operator and how to use it
[x] Any manual steps about potential pre-requisites for using your Operator

Operator Metadata should contain

[x] Human readable name and 1-liner description about your Operator
[x] Valid category name1
[x] One of the pre-defined capability levels2
[x] Links to the maintainer, source code and documentation
[x] Example templates for all Custom Resource Definitions intended to be used
[x] A quadratic logo

Remember that you can preview your CSV here.
--
1 If you feel your Operator does not fit any of the pre-defined categories, file an issue against this repo and explain your need
2 For more information see here

The failure in the CI is not related to the PR itself:
    time="2020-07-31T13:47:24Z" level=fatal msg="Bundle content validation failed: Bundle validation errors: cannot convert int64 to float64,cannot convert int64 to float64,cannot convert int64 to float64,cannot convert int64 to float64,cannot convert int64 to float64"

I believe it's a problem with the operator-courier, @J0zi ?

Hi @ricardozanini, we are heading towards bundle support. So everything is converted to bundle format on the fly. After that, operator is validated by opm bundle validate. I'm contacting opm team to figure out if it is a validation or operator issue.

@J0zi could you point me towards the new bundle format migration docs, so I can update the manifests in the next version?

@J0zi could you shed a light in this error?
Error from server (NotFound): installplans.operators.coreos.com "null" not found

Good news @ricardozanini, old pipeline is green. Looked like temp Travis issue:) Merging:)


Choose size of sections?

I'm a complete n00b when it comes to constraints. How is it possible to choose the size of the sections when they're closed?

In the example project, the constraints are all set by code, but the below concept applies if you use interface builder.
For the example project, the header sections size is determined by the views intrinsic content size (i.e how much space the content inside the headers need to display optimally).
If we take ALSingleLineHeaderView as an example, we have the vertical constraint:
let vertical = NSLayoutConstraint.constraintsWithVisualFormat("V:|[topSeparator(1)]-(15)-[titleLabel]-(15)-[bottomSeparator(1)]|", options: [], metrics: nil, views: views)

The topSeparator and bottomSeparator have a height of 1, and the titleLabel has an intrinsic content size of the space required by the text inside it.
If you need to specify a fixed height for the header, ignoring the intrinsic content size, you can simply add another constraint to the view, for example:
let heightConstraint = NSLayoutConstraint(item: self, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 250.0)

This is quite a simple example, but if you had a more complicated header view (eg 2 labels), I'd recommend reading up on the content hugging / compression priority properties. This will give you the most control over how your subviews would resize.
Finally, it's worth checking the ALExpandingHeaderView class in the example - it shows how you have a different height for the header when open and closed.

Thanks a lot!

Thanks a lot! :+1:


Repeater and shape merge/subtract are not working

Hi there.
I found that a particular test I created didn't work fully, although it still displayed and animated, which was something. The trashcan lid handle had a subtract, but it didn't work, and the central bars on the trashcan had a x3 repeater, but only the original bar on the left displayed.
Repeater is a luxury (though it would be nice), but if the subtract could be used, that would be a very important step forward. Or does it already work, and I am doing something wrong?
Included is the original AE file, as well as the exported .json file.
Is there any way to verify that an exported .json will not conflict with the current state of the art with Lottie? Its very hit and miss, and its hard to learn, because there is no indicator about why a certain animation completely fails to display.
Thank you for the hard work, and best regards.
trashcan.zip

@PaulHoets I think it's not a specific problem with Lottie.
I have played your JSON with Bodymovin HTML player and got the same problem as you.
Maybe you are using some feature not supported in Bodymovin.
Can you refer this issue to the Bodymovin team since the problem happens in html player too?

Perhaps. I'll look more in that direction. Thank you very much!


fourierTr.dvDouble1DFFT main thread takes to long time to stop if the size of input is 2**n + 1

Testing fourierTr.dvDouble1DFFT for real Fourier Transform, the main thread takes too long time to stop even the result is computed if the size of the input is 2**n + 1

we outsource the actual transform to JTransform, and I don't really know much about ffts. Is there a way to use those to not show that behavior?

object BreezeFFT extends App{
val length = 2049
val signals = DenseVector( (0 until length).map(_ => Math.random()).toArray )
fourierTr.dvDouble1DFFT.apply(signals)
println("Completed")
}
Above code will show that behavior. Jtransform uses future to do muti-thread computing, so I think some thread may be blocked during the computing.


Enhancement: add "shrinkOnLoad: false" option to prevent use of libjpeg/libwebp shrink-on-load

I am trying to find out why I have different resize result directly from vips cmd (vips-8.5.6-Thu Jun  8 16:24:42 BST 2017) and sharp (0.8.1).
Source file (having centered artwork.. so its easy to determine the shifts in small resized images):

Resize with sharp:
sharp('source.jpeg')
.resize(25, 35, {
    centreSampling: true
})
.toFile('sharp.png')

Resize with vips:
 vips resize --centre source.jpeg vips.png 0.014285714285714

Result with vips is nicely centered, but with sharp is shifted to left top and also somehow stretched. I also tried to add .ignoreAspectRatio() option, but did not make difference.
Is there any other option I have missed to get the same result with vips? Any hint appreciated.

Hello, vips resize ... doesn't use JPEG shrink-on-load, which would be my first guess as to what could be causing this. Do you still see this problem if you add the gamma operation into your pipeline?

@lovell Hi, thanks for quick feedback. You are right, when there is gamma operation in pipeline to suppress the shrink-on-load, it looks correctly.

@lovell I guess that there is not much that can be done about it other than just having option to skip that shrink-on-load optimization?

That's correct, perhaps as a new resize option - let's file under possible future enhancement.

With further testing. I end up shifted result from sharp again, even when using gamma function. Only difference is the resolution of the source image. Tried both with and without ignoreAspectRatio. Result from vips cmd still looks precisely centered.
Source file:

Resize with sharp:
sharp('source_868_616')
// .ignoreAspectRatio()
.resize(25, 35, {
    centreSampling: true
})
.toFile('sharp.png')

vips:
vips resize --centre source_868_616.jpeg vips_868_616.png 0.040584415584416

@lovell Can you think of anything else except the load-on-shrink (disabled by gamma operation) that could make difference between using the vips resize and sharp.resize?

Did you see #781? The vips_resize operation is a combination of vips_shrink and vips_reduce. Sharp uses these two operations directly, but with a slightly higher preference for shrink than the logic in vips_resize. This can cause a tiny bit of aliasing at certain ratios but is much faster (although I should probably revisit the performance as vips_reduce has seen recent improvements). This would explain the difference seen here.

@lovell I see, can you point me where I could adjust the ratio to have same result as vips_resize, so I can test if thats what make the difference. As it seems not only different antialiasing but there is overall image shift to the left top.

pipeline.cc contains the logic - you're looking for anything that can modify shrink_on_load, xshrink and yshrink - set them all to 1.

@lovell Great, thanks for hint. I have done some initial experiments.. and I achieved different results when changing xshrink and yshrink. It could not be 1 (reducev: reduce factor too large), but tried somewhat smaller values than are calculated. Result was less shifted, but still shifted.
I also tried these two source images from above with vipsthumbnail cli and got always perfectly centered thumbnail. And if I understand correctly vipsthumbnail is also using the jpeg shrink-on-load trick, but its somehow not causing the shift.
And last experiment was just to hack in the pipeline.cc to replace current resizing just with image.thumbnail. And measure time in javascript for resize operation. In both cases I was getting around 50ms using the source image 1750x2461 and target resolution 25x35. But with image.thumbnail() the result was nicely centered.
Disclaimer: it was really just initial test and I am pretty new to the implementation details so I don't want to make any conclusive claims.
But based on this test it seems reasonable to investigate if maybe using the image.thumbnail would make sense for sharp? What do you think?

To lower the chance that vipsthumbnail results in centered image 'just' by luck (as combination of source resolution and processing thresholds) I generated 25 source images with various resolutions ranging from 400-1500 widths and in next step I used these source images to generate 25x35 thumbnails and all resulting thumbnails were nicely centered. Which suggests that this shift can be avoided.
Do you have some suggestions what to test to find out if possibly image.thumbnail could be good fit for sharp?

@lovell Is there something I can help with to move this issue forward?

Ahoj @jardakotesovec, I still plan to revisit the shrink vs reduce ratio, sorry for any delay. I'll take you up on your offer of help soon :)

@jardakotesovec Commit 7e9bbde on the improve-shrink-vs-reduce-ratio branch seems to improve things based on some quick testing, and at minimal performance cost. Are you able to take a look?

@lovell oki, great.. will do some testing in 30 minutes..

@lovell My test still indicates its moving for certain source resolutions. I generated various source resolution and applied sharp from master and branch on it to resize it all to 25x35 as well as vipsthumbnail. You can see that vipsthumbnail results are not moving when you flick through the results:
https://www.dropbox.com/sh/pwm8ner26i1lsyn/AACE8Hq-zCzMQMgxeblW1DNpa?dl=0

Thanks for testing. The next step would be to experiment with slightly lower values in the xresidual > 0.9 || yresidual > 0.9 condition, most likely between 0.5 and 0.9, to see where the sweet spot lies. The lower the number the more a floating-point reduce will be favoured over an integral shrink.

@lovell And reason for not using directly image.thumbnail from vips is performance? As I mentioned in one of my previous posts when I tried resize via original implementation vs image.thumbnail for image 1750x2461 and target resolution 25x35 I was getting 50ms in both cases. But big part in that performance could have done that shrink-on-load optimization. So maybe if I would do that with png I would get some difference.
So maybe I could do some additional tests to see if maybe the image.thumbnail fast enough?

@jardakotesovec The main reason for not using vips_thumbnail directly is that sharp provides operations such as rotation, extraction and (for compositing) premultiplication in the same pipeline as resizing. Trying to conditionally use vips_thumbnail would result in more complex code that is less efficient, potentially incurring more than one premultiply-unpremultiply round trip.

@lovell And any reason not using logic from vips_resize  (which decide how exactly to use shrink and reduce), since never had issue there. I can try to understand whats difference between your implementation and vips_resize..
Just checking before I spend time on that if its maybe something you already know that you don't want to do (because of the performance)?

Ahoj Jarda, sorry I haven't been able to spend much time on this, it's still something I'd like to look at before the next major release. I believe the first thing to do is allow the shrink-on-load feature to be optional, which should prevent most of the artefacts you were originally seeing.
If you have the time to experiment with replacing sharp's use of vips_shrink/vips_reduce with vips_resize then please do go ahead, thank you!

Ahoj Lovell,
spent some time today to use directly vips_resize. With simple replacement for original implementation I have 3 failing tests.. will look into it more tomorrow.
      if (xfactor != 1.0 || yfactor != 1.0) {
        VipsKernel kernel = static_cast<VipsKernel>(
          vips_enum_from_nick(nullptr, VIPS_TYPE_KERNEL, baton->kernel.data()));
        if (
          kernel != VIPS_KERNEL_NEAREST && kernel != VIPS_KERNEL_CUBIC && kernel != VIPS_KERNEL_LANCZOS2 &&
          kernel != VIPS_KERNEL_LANCZOS3
        ) {
          throw vips::VError("Unknown kernel");
        }

        image = image.resize(1.0 / xfactor, VImage::option()
          ->set("vscale", 1.0 / yfactor)
          ->set("kernel", kernel)
          ->set("centre", baton->centreSampling));
      }

  1) Embed PNG with alpha channel:
     Error: Expected maximum similarity distance: 5. Actual: 12.
      at test/fixtures/index.js:157:27
      at test/fixtures/index.js:33:9

  2) Partial image extraction Extract then rotate:
     Error: Expected maximum similarity distance: 5. Actual: 8.
      at test/fixtures/index.js:157:27
      at test/fixtures/index.js:33:9

  3) Gamma correction alpha transparency:
     Error: Expected maximum similarity distance: 20. Actual: 23.
      at test/fixtures/index.js:157:27
      at test/fixtures/index.js:33:9

I looked more into 2) and not sure whats the issue as visually they seem identical, will double check tomorrow. Maybe its also something with alpha channel as others.
Btw as I recall I did not have issue with shrinkOnLoad when testing these centering issues with vipsthumbnails.. so maybe option for disable that might not be necessary.
Only performance test was one resize (run several times) from big resolution and consistently saw difference original sharp: around 55ms and vips_resize around 70ms. You have some benchmark suite?

Hi
I was experimenting with this issue.
I changed the condition with xresidual and yresidual values to this
 if (xshrink > 1 && yshrink > 1 && (xresidual >= 0.5 || yresidual >= 0.5)) {
Though, I get the results I expect, what is the side effect of reducing the value to this low a factor?
I am trying to avoid Moire effect in images on resizing. You can pick up a striped shirt like this
https://assets.myntassets.com/v1/assets/images/1861658/2017/5/26/11495781007283-ether-Men-Grey--White-Slim-Fit-Striped-Casual-Shirt-6401495781007085-1_mini.jpg
Normally you would end up with something like this

(Note the curved stripes around the pocket)
With the modified if statement, I end up with this

vipsthumbnail from the command line gives the correct result without the moire effect.


Richardson - Blocker to DR - cannot publish 18 studies which have 'no mapping assigned'

All but 18 studies are now in publish state from PMID '35213538'.
These 18 studies have some approved associations, but some remain unapproved with the following error:
'Cannot approve all associations as no Mapping assigned'

List of affected studies:
https://app.zenhub.com/files/2995118/d9c31a90-5690-4bb0-9266-57679b8985ee/download

Is this reolved?

@ljwh2 yes


Simple render() call fails 'Unable to render the page. Try increasing timeout'

Just installed requests_html and tried this example. The first time it downloaded chromium, and after that the following gives this error:
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from requests_html import HTMLSession
>>> session = HTMLSession()
>>> r = session.get('http://python-requests.org/')
>>> r.html.render()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\gmargari\AppData\Local\Programs\Python\Python36\lib\site-packages\requests_html.py", line 590, in render
    raise MaxRetries("Unable to render the page. Try increasing timeout")
requests_html.MaxRetries: Unable to render the page. Try increasing timeout

The same error. render() function was working fine before but now it throws a error:
>           raise MaxRetries("Unable to render the page. Try increasing timeout")
E           requests_html.MaxRetries: Unable to render the page. Try increasing timeout
/usr/local/lib/python3.6/site-packages/requests_html.py:590: MaxRetries

@gmargari @xiaohanc
1、check js code：
maybe error：
`
doc = """

"""
html = HTML(html=doc)
html.render()`
maybe success：
`
doc = """

"""
html = HTML(html=doc)
html.render()
`
2、check pyppeteer version
i find pyppeteer new version will error，try:
pip uninstall pyppeteer pip install pyppeteer==0.0.19

Hi,
This may happen because your internet connection is slow, it basically tries to load the page 8 time waiting for it 8 seconds, if it takes more than 8 seconds to load the page it will fail.
You can try increasing the timeout as the Exception suggests, for this just pass timeout param to render method. Like this:
 from requests_html import HTMLSession
session = HTMLSession()
r = session.get('http://python-requests.org/')
r.html.render(timeout=16)


Finalize Localization of all strings

finish localizing all strings in the editor

All hardcoded strings that rendered onto the UI should be within the resources file.


Add back to top functionality

Description
As the total height of website is long so back to top button is much needed for easy navigation.
So assign this issue to be under Hacktoberfest.
Acceptance Criteria

[ ] Ensure new code is unit tested, and check code coverage is at least 90%.
[ ] Create related issue in taipy-doc for documentation and Release Notes.
[ ] Check if a new demo could be provided based on this, or if legacy demos could be benefit from it.
[ ] Ensure any change is well documented.

Code of Conduct

[X] I have checked the existing issues.
[X] I am willing to work on this issue (optional)

This repo is not about the Taipy website but thank you for your feedback.


[WIP] prototype for python api re-org

preview: http://ec2-54-187-32-207.us-west-2.compute.amazonaws.com:999/api/python
TODO:

need better descriptions for the note in sparse.md..
add tutorial links in sparse.md
add pages for contrib, random, etc
reorg symbol pages, too

@reminisce @piiswrong

break ndarray.md into two parts: NDArray Class and basic operators. Then add random, linalg etc

@rahul003 @bhavinthaker @reminisce @cjolivier01 @anirudh2290

Done. Also ping @reminisce

Great that this is done now.


Fix Ginkgo Fail offsets in test helpers

Most helpers are using an offset of 2 when logging errors:
https://github.com/triggermesh/triggermesh/blob/4d4925b238aa089e8c5e9753d3d6e97285bd00f4/test/e2e/framework/gcloud/storage/storage.go#L40
With this value, the line number associated with error messages is one level too high in the stack:
• Failure in Spec Setup (BeforeEach) [0.396 seconds]

      Error: something terrible happened

      /go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/runner.go:113

As a comparison, with an offset of 1 (the correct value in most cases), the logged line refers to the expected location in the test code:
• Failure in Spec Setup (BeforeEach) [0.396 seconds]

      Error: something terrible happened

      /triggermesh/test/e2e/sources/foo/main.go:89

Explanation
If the call stack looks like
Describe(...)
  -> func(...)
    -> BeforeEach(...)
      -> func(...)
        -> Helper(...)
          -> FailfWithOffset(2, ...)

We call ginkgo.Fail() with an offset of 3 (selected offset + 1).
If I understand the offset value correctly, this takes us to the context of BeforeEach instead of the func executed inside the BeforeEach.
Here are the line numbers I got with different offsets while calling FailfWithOffset inside a helper:

Offset
Line

-1
/go/src/github.com/triggermesh/triggermesh/test/e2e/framework/log.go:45

0
/triggermesh/test/e2e/framework/somehelper/somehelper.go:56

1
/triggermesh/test/e2e/sources/foo/main.go:88 (✅)

2
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/runner.go:113

3
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/runner.go:64

4
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/leafnodes/setup_nodes.go:15

5
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/spec/spec.go:193

6
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/spec/spec.go:138

7
/go/pkg/mod/github.com/onsi/ginkgo@v1.16.5/internal/specrunner/spec_runner.go:200


Don't call show if spinner is null

The show method should not be called if the spinner is null

Thanks!, small typo :(


Logger behaviour

Hello,
I'm not sure if I'm finding the right information in the Elastic APM Agent documentation.
Does it collect/upload all the logs generated by the application (using Log.i, Log.d etc...)?
If yes what is the strategy followed by the agent to save them, sending them.. ?
Thank you very much,

Hope we will see this feature soon as well as support for Android Compose system, that would be so nice :star:


add ability to intercept Presence objects received by ChatRoomJabberImpl and add presence extensions

I don't like adding additional interfaces and listeners just for this. We already have ChatRoomMemberPresenceListener and ChatRoomMemberPresenceChangeEvent. Perhaps we can save and expose the last received Presence in ChatRoomMemberJabberImpl and use the existing listeners and interfaces?

I will need this for my changes in jigasi :)


Is HiveMQ MQTT android client an alternative ?

I saw mention in original readme about current MQTT client dependency. Is the HiveMQ MQTT client an option ? It seems better maintained.
https://hivemq.github.io/hivemq-mqtt-client/docs/installation/android/ & https://github.com/hivemq/hivemq-mqtt-client

The issue with Paho is the Android client has been updated but it’s now incompatible with the Paho library.  The Android client for Paho had a background task that was incompatible due to permission changes in Android 9+.
I believe we could fork Paho and make it compatible with the updated MQTT Android client.  This should give us a few years reprieve.
We also already support the same commands for HTTP so not all is lost if MQTT is not working on a particular device.
I don’t know about the Hive library, but @TheTimeWalker has already reported on that in this issue.

Thanks for making the issue!
While I was looking at the codebase and the known issue, I've been looking around what alternative could be there which could be more maintained. I know that we could fork and work on it manually instead, but it feels like it's quite some work. It makes in my opinion more sense to concentrate our energy to a maintained library.
The HiveMQ client looked like a good choice as it seems to be newer, is being maintained with regular updates (last update being December 2021), supports at minimum Android 4.4 and ticks some nice things like OpenHAB being a user of the library. The documentation also seems simple enough, though I haven't looked too deep into how "drop-in" it is yet.

Sounds good to me, I say go for it.

If possible I'd like to see 4.4 support kept but it should not be a shop stopper. I have a HTC One X with old Cyanogen Mod which uses Android 4.4.x and LineageOS doesn't seem to support this. So I'm a little stuck. But it should not prevent this project going forward if dropping 4.4 is the only way. At least HiveMQ seems to continue to support it.

Is HiveMQ generic?  Will it support Home Assistant MQTT or does it require a server side component?

As far as I understood, the HiveMQ MQTT client is generic and doesn't have to connect to a HiveMQ server. It can connect to any MQTT 3.11 and 5.0 broker. For Home Assistant you need to use a Broker anyway, so it should work with brokers like Mosquitto (the one I personally use).

I agree with @TheTimeWalker , I have the same understanding. Any broker or client that complies with the standard should be interchangeable. I also use Mosquitto as my backbone broker. I have Home Assistant, Tasmota  and ProjectAlice clients, all integrating using the same broker. I would expect if I decided to use HiveMQ instead of Mosquitto, that things would continue to just work. I would also expect, that HiveMQ client, would be happy to connect to Mosquitto or other brokers complying with the spec/standard

Excellent!

A further update: I have now done some prelim experiments with wallpanel and pointing it's dashoboard URL at my home assistant dashboard (a special minimal one with two buttons), and alas, it stays on "initialising" even though the same url in chrome on same device works. But that's getting off topic and unrelated, but I just wanted to mention it as android 4.4 might have other gotchas for me and I might need something else for basic panel widgets

Android SDK does not use the full Chrome browser implementation in its WebView component.  Your version of WebView cannot render HA lovelace.   Try using a simple url for your tests like google.com.
The solution for you is to not access the lovelace front end but use something simpler like Tileboard to access HA. Tileboard renders well for older versions of WebView.
Alternatively you could try to install a different version of WebView by side loading or from Google Play store, but this only has a small amount of success on older SDKs.

WebView compatibility should probably be its own separate issue.

Just to give an update to this, I got quite some time yesterday and today and was able to work on this issue. I have made a new branch which replaces Paho with HiveMQ MQTT client.
It was a tiny bit of work replacing some functions to work with the structure of the new library (and honestly the docs are a bit lacking) but connection with MQTT 5.0 to Mosquitto on my end seems to work. There's still work to do but at least it is good to know that the alternative works out.

Is the new client intended to fix the MQTT connection issue I'm seeing with Wall Panel? Or should I be creating a new issue? Essentially I can't get Wall Panel to talk to my MQTT server on Home Assistant.

Just as a small update: I have done general clean up and testing to see if MQTT works.
Right now, the library creates a MQTT v5 client as opposed to MQTT 3.1.1 with the older Paho client. This allows to connect to any broker that supports MQTT v5. For example, Mosquitto added support for MQTT v5 with 1.6.8. I do plan on adding an option to switch the version between v3.1.1 or v5 for anybody that has an older broker set up that doesn't support v5. This means it will just take a bit more time to reimplement an older client.
As usual, for anybody that can build it locally and wants to try it out, the mentioned branch from before has the latest changes.

@TheTimeWalker thanks for the update!
Could you maybe release a beta version of the new MQTT client?
I can sideload an pre-build app, but I don't know how to build it.
I use a wall-mounted Samsung Galaxy tab A7 with the latest android version and I have frequent crashes of the Wallpanel app/the whole tablet caused by the wallpanel app (it will reboot the tablet).
I have it configured to restart the wallpanel app automatically so it kind of works, but it is not very nice.

Sure, that's the plan. I'm first dogfooding myself before publishing as a new version :)

It is finally done! The app is now using HiveMQTT and supports both MQTT v3.1.1 and MQTT v5 brokers
I'd be happy if this can be tested, especially on Android 9+ installations: https://github.com/TheTimeWalker/wallpanel-android/releases/tag/v<IP_ADDRESS>
Thank you all for your patience!

Installed the v0.10.0-beta0 release on my Android 9 tablet.  So good so far... but it looks like the MQTT3Service and MQTT5Service both have hardcoded broker URL and ports?  Had to tweak those values locally to get everything to connect up.

Sorry for the slip up. You absolutely don't have to change the URL and ports locally on your installation to make it work 😄
I have released a new version 0.10.0-beta1 that fixes this: https://github.com/TheTimeWalker/wallpanel-android/releases/tag/v<IP_ADDRESS>

@TheTimeWalker I just installed v<IP_ADDRESS> on my samsung galaxy tab A7 running Android 11, with the latest updates of januari 2022 installed.
I did some initial testing and everything seems to be working (just as in the previous versions).
Unfortunately it did crash and rebooted the tablet just now.
I will continue to monitor the tablet in the coming days.
Note that I have motion and face detection enabled on the tablet and a automation in HomeAssistant that turns the screen on when motion or face is detected.
I also have the default screen sleep of the tablet still enabled, so I might test if disabeling that will improve the situation in a few days.
Note that the crashes mostly happen when the tablet has its screen turned off (but of course the majority of time the screen is turned off, so this may not be related).

I've been getting some very regular crashes on an Android 9 tablet with this build, seems more frequent than before, but I haven't been able to get a stacktrace yet.

If its worth anything, I've had MQTT off (and camera + motion detection on) for 7 days, not a single crash.

@TheTimeWalker could you explain how I can get a stacktrace after the tablet reboots?
Then I can post it here and maybe we can figure out why these crashes are occuring...

I have tried to replicate the issue with the app crashing, at least with an Android 10 virtual device, but it seems to work out pretty fine. My Android 8 tablet is also very stable, so either there is an unknown issue with the MQTT library or something else seems to crash this.
@starkillerOG Unfortunately, as far as I know if the whole device reboots there isn't really a way to extract the stacktrace as logcat resets to zero. If there are other ways, I'd be glad if somebody could jump in. One thing that could help is that the app is using Crashlytics which I can see if there are crashes happening. If you haven't blocked crashlyticsreports-pa.googleapis.comvia a network DNS blocker or at least temporarily unblock it, crashes should come in, and I could maybe see what the stacktrace before the reboot happens.

@TheTimeWalker I did not actifly block the crash reports, so I guess they schould be coming in.
crashes are rather unpredictable, sometimes I don't have crashes for 2 days and sometimes it crashes 8 times within 1 hour.
Have not found a specific situation when the crash happens...

Hmm, that is very strange. Unfortunately, I haven't received any crash logs yet. One thing, the tablet never in itself reboots, only when WallPanel is running, right?

@TheTimeWalker I just heard it crash now (14:27 29-04-2022) so hopfully you got a crash report. can you check?

Hi all, I would just like to chip in quickly...
I have recently forked @TheTimeWalker's repo to see if I can compile a version of the app to work with my Nexus 9 running SlimRoms Android 7.1.2 (Nougat) as the most recent version of the app I got from the PlayStore was consistently crashing after a period of time (Version 0.9.5 Build 9).
However, I have found an issue where the App Gradle is set to minSDK 19 (Android 4.4 KitKat) and com.hivemq.client.mqtt requires minSDK 24 (Android 7.0 Lollipop)
This is throwing an IDE error:
Call requires API level 24 (current min is 19): `java.util.Optional#get`

This issue appears in both:
com.thanksmister.iot.wallpanel.network.MQTT5Service
com.thanksmister.iot.wallpanel.network.MQTT3Service
it.publishes(MqttGlobalPublishFilter.ALL) { publish ->
                        listener?.subscriptionMessage(
                            it.config.clientIdentifier.get().toString(), // the Optional is not compatible
                            publish.topic.toString(),
                            Charsets.UTF_8.decode(publish.payload.get()).toString() // the Optional is not compatible
                        )
                    }

Obviously adding the @TargetApi(Build.VERSION_CODES.N) annotation silences the lint, but the problem will still be there.
A potential solution to this would be to fork the HiveMQTT, and replace java.util.Optional with Arrow's Option

I have also had mixed results with the current repo version, I forked at 5c1f17b and upon setting the MQTT URL, User, Pass, Base Topic, ClientId and then backing out of the settings screens I would get a fatal crash where restarting the app appears to forget all of the persisted settings, or  the app runs and simply nothing appears to be sent to the HA MQTT Broker and using MQTT Explorer I see wallpanel/nexus32/connection = offline.
Typically, I have not been able to capture logs for either of these scenarios.

HiveMQ MQTT specifically mentions that it's compatible with KitKat. It's using RetroFix as the gradle plugin to make it compatible for older devices: https://hivemq.github.io/hivemq-mqtt-client/docs/installation/android/#android-api-levels-below-24
Since the IDE can't know that it's getting backported at compilation time, the linter has to be specifically set to ignore that error. Are you having issues compiling or running on a KitKat device?

I am installing to Nougat and thankfully it is compiling fine.
Good to hear that this is simply a linter issue.


Build context as part of GenericRun

What type of PR is this:
/kind cleanup
What does this PR do / why we need it:
Which issue(s) this PR fixes:
Fixes #6186 , #5517
PR acceptance criteria:

[ ] Unit test

[ ] Integration test

[ ] Documentation

How to test changes / Special notes to the reviewer:

/override ci/prow/v4.11-integration-e2e
because the tests are passing on IBM Cloud.


Hash: Switch from Word32 to Nat32

slightly breaking, if someone else hooks into the representation of
Hash.
This makes motoko-base essentially free of WordN uses:
~/dfinity/motoko-base/src $ git grep Word|grep -v ^Word
Char.mo:  public let toWord32 : (c : Char) -> Word32 = Prim.charToWord32;
Char.mo:  public let fromWord32 : (w : Word32) -> Char = Prim.word32ToChar;

Requires https://github.com/dfinity/motoko/pull/2326

Needs the type of Prim.hashBlob to change

Time to do this


Make Combiner Tracer Debug Only

This is the spammiest tracer, and I have never used it to debug someone's issue.
cc @markdroth, @dgquintas, @yang-g, please push back if you have found this tracer to be helpful in debugging client issues

****************************************************************

libgrpc.so

     VM SIZE                                           FILE SIZE
 ++++++++++++++ GROWING                             ++++++++++++++

 -------------- SHRINKING                           --------------
  -0.1%    -600 [None]                              -5.84Ki  -0.1%
      -0.1%    -600 [Unmapped]                          -5.84Ki  -0.1%
     -95.8%     -23 grpc_combiner_trace                       0  [ = ]
 -29.8%    -784 src/core/lib/iomgr/combiner.cc         -784 -29.8%
     -34.7%    -358 grpc_combiner_continue_exec_ctx        -358 -34.7%
     -31.5%    -103 combiner_finally_exec                  -103 -31.5%
     -58.8%     -70 grpc_combiner_unref                     -70 -58.8%
     -21.3%     -64 combiner_exec                           -64 -21.3%
     -44.0%     -59 really_destroy                          -59 -44.0%
      [DEL]     -48 _GLOBAL__sub_I_combiner.cc              -48  [DEL]
     -26.3%     -47 grpc_combiner_create                    -47 -26.3%
     -21.7%     -30 queue_offload                           -30 -21.7%
      -4.3%      -5 [Unmapped]                               -5  -4.3%

  -0.1% -1.35Ki TOTAL                               -6.60Ki  -0.1%

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] Performance differences noted:
Benchmark                    cpu_time    real_time
---------------------------  ----------  -----------
BM_HpackEncoderInitDestroy   +9%         +9%
BM_MetadataRefUnrefExternal  -5%         -5%
BM_MetadataRefUnrefStatic    -21%        -21%

[microbenchmarks] No significant performance differences

I am merging this. Someone yell at me tomorrow if they liked this tracer

yeah we haven't had to use this tracer in a long time afaik


html/resource_http_test fails in Dartium/DRT

html/resource_http_test tests that Resource works with http URIs in a client context. It looks like it fails on Dartium and DRT because the _setupHooks that initialize VMLibraryHooks.resourceReadAsBytes are not called in the Dartium/DRT context.
I've attached the test output below. What do you think, Ivan?
http://build.chromium.org/p/client.dart/builders/dartium-win-full-be/builds/4077
Expectation: resource readAsString .

Test failed: Caught UnimplementedError: readAsString
dart:core-patch/resource_patch.dart 53                                     _Resource.readAsString
http://<IP_ADDRESS>:52689/root_dart/tests/html/resource_http_test.dart 24:26  main.<fn>.<fn>.<async>
dart:async/future.dart 144                                                 Future.Future.microtask.<fn>
dart:async/zone.dart 899                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/zone.dart 903                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/schedule_microtask.dart 43                                      _microtaskLoop
dart:async/schedule_microtask.dart 52                                      _microtaskLoopEntry
dart:html 42565                                                            _ScheduleImmediateHelper._handleMutation
2	ERROR
Expectation: resource readAsBytes .

Test failed: Caught UnimplementedError: readAsBytes
dart:core-patch/resource_patch.dart 45                                     _Resource.readAsBytes
http://<IP_ADDRESS>:52689/root_dart/tests/html/resource_http_test.dart 29:26  main.<fn>.<fn>.<async>
dart:async/future.dart 144                                                 Future.Future.microtask.<fn>
dart:async/zone.dart 899                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/zone.dart 903                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/schedule_microtask.dart 43                                      _microtaskLoop
dart:async/schedule_microtask.dart 52                                      _microtaskLoopEntry
dart:html 42565                                                            _ScheduleImmediateHelper._handleMutation
3	ERROR
Expectation: resource openRead .

Test failed: Caught UnimplementedError: openRead
dart:core-patch/resource_patch.dart 18                                     _Resource.openRead
http://<IP_ADDRESS>:52689/root_dart/tests/html/resource_http_test.dart 35:29  main.<fn>.<fn>.<async>
dart:async/future.dart 144                                                 Future.Future.microtask.<fn>
dart:async/zone.dart 899                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/zone.dart 903                                                   _rootRun
dart:async/zone.dart 802                                                   _CustomZone.run
dart:async/zone.dart 708                                                   _CustomZone.runGuarded
dart:async/zone.dart 733                                                   _CustomZone.bindCallback.<fn>
dart:async/schedule_microtask.dart 43                                      _microtaskLoop
dart:async/schedule_microtask.dart 52                                      _microtaskLoopEntry
dart:html 42565                                                            _ScheduleImmediateHelper._handleMutation

If Dartium/DRT want to support resource loading, then it is the embedder's job to implement and initialize the resourceReadAsBytes hook. Similarly to the different hooks for print, microtask execution, timers and similar.

cc @terrylucas @a-siva
Are there plans to implement this? It's not a good experience if Resource works with dart2js but not Dartium

Since Resource is going to be implemented in a separate package, this bug is obsolete.


OpenAI/Universe environment deprecated

Hey,
The OpenAI universe repository is archived and is deprecated for python 3. Instead, they suggest Retro. Can we provide support for this library as well?

In principle, sure. Are you free to look into and contribute the interface? Otherwise might take some time, just getting started with support again.


remove including recipe 'rtn_rbenv::user'

This line causes error when this plugin use as Vagrant plugin.
It is required?
reference

http://mactkg.hateblo.jp/entry/2015/02/19/012809 (my blog)

https://gist.github.com/gongo/231046cab84389a85a71 (reply for the above entry)

fmmm.... :sweat_drops:
I was thinking it is default settings.
# role.rb
include_recipe 'rtn_rbenv' # alias include_recipe 'rtn_rbenv:user'

but, it is bud method.
Thanks :smile:

I wrote article about this issue. thx mactkg :sparkles:

itamae-plugin-recipeをつくるとき、lib/itamae/plugin/recipe直下に置くと困る - Qiita http://qiita.com/ru_shalm/items/623b68258f190e70342c

:sparkles:


@bentley/imodeljs-native 3.5.2

closing in favor of https://github.com/iTwin/itwinjs-core/pull/4528


feat: update recently read books widget to use image CDN

This PR updates the recently read widgets to use images cached behind my image CDN. It also requests them in a modern web format, webp.
Screenshots
A screenshot of the widget still rendering images.

A screenshot showing the images being returned as webp.

A screenshot of the Netlify deploy preview link.


modified pie to get basic structures for empty pie

Can you take a look Ben?

Pie now supports empty data (as well as update, addition and deletion of data). Closing this now


add note on known CNI issue w/portmap plugin

Add a note regarding known CNI issue with portmap plugin
validation

built locally, reviewed pages rendered correctly

Deploy preview for calico ready!
Built with commit bc55e22fcdc4aa728cec10ea3658d9ef05b73e6c
https://deploy-preview-2428--calico.netlify.com


Directives applied according the condition

Steps to reproduce and a minimal demo of the problem
https://jsfiddle.net/c8fh7k8p/1/
Current behavior
It inserts/uses directive no matter the condition is true or false.
Expected/desired behavior
It should respect the condition.

It's not possible to apply directives conditionally. You'll have to put the condition inside the directive (e.g. based on an attribute value)


Support poorly formatted Material definitions

LANL apparently doesn't know how to write a syntax specification. From LA-UR-17-29981 Section <IP_ADDRESS> a material specification shall take the form:

Mm zaid1 fraction1 zaid2 fraction2 ... [KEYWORD=value(s) ...]

Which makes sense.
Until you notice

Input Parameter
Description

Keyword *
Value

And finally notice the asterisk:

* M card keywords may appear anywhere among the zaid-fraction pairs, but must not separate a pair.

Yep The syntax specification from before is a lie. The key-value pairs can appear anywhere they like!
Why did the developers do this? I don't know.
Is this a context-free grammar? Probably not.
However, it is officially (in the worst documented ways possible) supported, so it needs to be supported in MOntePy.

I am leaning towards possibly just raising UnsupportedFeature and just moving on.

So I managed to fix this in #507 with 1f14326. Should we prioritize to ship this before 1.0.0 with a few cherry-picks?

No, it's less common than the other priorities.