How to check missing parameters before create_interchange?

Description
Thanks for a great tool, very helpful for MD simulations in OpenMM!
In my application, I often use atoms that have no parameters registerd in OpenFF (like openff-2.0.0.offxml).
If I try to create an interchange in this situation, an error is thrown.
For example, when I use an iodine molecule as follows,
from openff.toolkit import ForceField, Molecule
smiles = "II"
mol = Molecule.from_smiles(smiles)
force_field = ForceField("openff-2.0.0.offxml")
topology = ligand.to_topology()
system = force_field.create_openmm_system(
    topology,
    charge_from_molecules=[mol],
    )

I got an error like this.
UnassignedBondError: BondHandler was not able to find parameters for the following valence terms:

- Topology indices (0, 1): names and elements ( I), ( I),

This error itself is normal, but I would like to know in advance if the parameter for the molecule are available before assigning parameters, and if not, which parameters are missing.
I tried to check the parameters that are actually assigned as follows,
ff_applied_parameters = force_field.label_molecules(topology)
for mol_idx, mol_forces in enumerate(ff_applied_parameters):
    print(f"Forces for molecule {mol_idx}")
    for force_tag, force_dict in mol_forces.items():
        print(f"\n{force_tag}:")
        for atom_indices, parameter in force_dict.items():
            atomstr = ""
            for idx in atom_indices:
                atomstr += "%3s" % idx
            print(
                f"atoms: {atomstr}  parameter_id: {parameter.id}  smirks {parameter.smirks}"
            )

but if there is a parameter that cannot be assigned, that parameter seems to be set to empty.
In fact, for the iodine-iodine bond, the topology exists, but the parameter does not exist.
Is there any way to check in advance which parameters are missing for the topology?
Forces for molecule 0

Constraints:

Bonds:

Angles:

ProperTorsions:

ImproperTorsions:

vdW:
atoms:   0  parameter_id: n26  smirks [#53:1]
atoms:   1  parameter_id: n26  smirks [#53:1]

Electrostatics:

LibraryCharges:

ToolkitAM1BCC:

You've pretty much found the API points that I would recommend[^1]; under the hood, ForceField.label_molecules pretty much does the same stuff as creating an Interchange object (namely filling out the the collection classes). This can be simple or tricky depending on the level of granularity you're after

Rough pass: just see if the element(s) are in the force field at all
Slightly more detailed pass: wrap your second code block into a function and error out in some particular cases`

This doesn't work for all parameter handlers; for example, throwing an error if len(matches['Bonds']) < topology.n_bonds is probably good, but the same logic for improper torsions would not work.
The logic within Interchange is around here

Depending on the application, it might be easiest to just go Grace Hopper style and ask for forgiveness instead of permission

try:
    force_field.create_interchange(...)
# there are a few different exceptions that can be thrown here - this base class captures if bond/angle/torsion parameters are missing
except (UnassignedValenceParameterException, ...):
    # deal with it here - log, re-raise exception, etc.

In the case of molecular iodine, it seems like the thrown error is pretty much getting what you're asking for. Are there other cases that are tricker to deal with?
[^1]: I planned to point you to this example, but it looks like you've already come across it

Thank you for your response.
In my case, the ERROR catch looks good!


Settings click event

BasicSettingsClickEvent don't work how do you do click event on a settings? @or-dvir

hi there.
i havent touched this code in a long time... but it should work.
did you do exactly like the sample app? can you share your code?

Not exactly exactly but I did my own  implementation on my app, basically  onBasicSettingsClicked is apparently never used according the android IDE.It not a override function so I don't know how your code launch the click event on  mySettingsList
`import android.annotation.TargetApi;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import com.hotmail.or_dvir.easysettings.events.BasicSettingsClickEvent;
import com.hotmail.or_dvir.easysettings.pojos.BasicSettingsObject;
import com.hotmail.or_dvir.easysettings.pojos.CheckBoxSettingsObject;
import com.hotmail.or_dvir.easysettings.pojos.EasySettings;
import com.hotmail.or_dvir.easysettings.pojos.SettingsObject;
import org.greenrobot.eventbus.Subscribe;
import java.util.ArrayList;
import app.astracoins.crypto.R;
public class SettingsActivity extends AppCompatActivity {
private ArrayList settingsList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
//this is the settings activity
    super.onCreate(savedInstanceState);
    setContentView(R.layout.acitivity_settings);
    LinearLayout container = findViewById(R.id.settingsContainer);

    ArrayList<SettingsObject> mySettingsList = EasySettings.createSettingsArray(
            new BasicSettingsObject.Builder("settingloader", "Settings Loader")
                    .setSummary("LOAD SETTINGS FROM QR")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey2","Company settings")
                    .setSummary("COMPANY INFO SHOWED IN RECIEPT")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Owner PIN")
                    .setSummary("CHANGE OWNER PIN")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Merchant list")
                    .setSummary("ADD, EDIT OR REMOVE MERCHANTS")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Fees")
                    .setSummary("EDIT FEES AND LIMITS")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Used crypto")
                    .setSummary("SELECT CURRENCIES WHICH ARE USED")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Used fiat")
                    .setSummary("SELECT CURRENCIES WHICH ARE USED")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Language")
                    .setSummary("SELECT LANGUAGE")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Printer test")
                    .setSummary("PRINT THE SAMPLE RECIEPTS")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Reset all")
                    .setSummary("CLEAR SETTINGS AND RESTART APP")
                    .build(),
            new BasicSettingsObject.Builder("basicSettingsKey1", "Close")
                    .setSummary("CLOSE APPLICATION")
                    .build());

    //settingsList = (ArrayList<SettingsObject>) getIntent().getSerializableExtra(MainActivity.EXTRA_SETTINGS_LIST);

    EasySettings.inflateSettingsLayout(this, container, mySettingsList);

}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void stopLockState() {
    stopLockTask();
}

@Subscribe
public void onBasicSettingsClicked(BasicSettingsClickEvent event)
{

    if(event.getClickedSettingsObj().getKey().equals("settingloader")) {
        stopLockState();

}
}`

onBasicSettingsClicked is apparently never used according the android IDE.It not a override function so I don't know how your code launch the click event on mySettingsList

it is not called directly, but is used by EventBus.
anyways ill try having a look but this is pretty old code for me and unfortunately i dont have much time these days.
ill see what i can do...

Ok close the issue with evenBus it working thank you

glad to hear


This window is no longer responsive (on paste of 300 lines)

VSCode Version: 0.10.11
OS Version: Microsoft Windows [Version 10.0.10586]

This is more of a crash report than a bug report. Perhaps it should be a feature request for optional automated crash reporting...?
I have a Node JS project open, running smoothly for a week or so, loving the editor.
7 'working files', all small.
Pasted 350-odd lines of console output into a new, blank document, and the workspace window went blank (background colour) and all (pasted) text vanished.
The whole program became unresponsive.
A dialog opened: 'This window has become unresponsive.'  Close or wait? Wait.
The dialog re-opened: 'This window has become unresponsive.'  Close.
Please find a copy of the pasted text (saved via Sublime....!)
dump2+.txt

I am not able to reproduce. Can you try with our latest insider build?

@leegee I also cannot reproduce.

I would love it if we're able to reproduce the crash, if you have any futher steps or details I would very much appreciate it!

I am sorry, I can no longer reproduce.
I have not changed anything in my set-up/the editor.
I guess it was an accumulation of things: having used the editor for about 10 hours a day for a couple of weeks or so, I rarely see a problem, but yesterday I found it frequently unresponsive, and had to pskill it several times.
Will open another ticket if it happens again and I can offer more info on how to reproduce it.

@leegee also we fixed some memory leaks that are available in the insider build https://code.visualstudio.com/download?insiders=true

Excellent! I'm getting it now, thanks!
On 31 March 2016 at 09:46, Erich Gamma<EMAIL_ADDRESS>wrote:

@leegee https://github.com/leegee also we fixed some memory leaks that
are available in the insider build
https://code.visualstudio.com/download?insiders=true
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/Microsoft/vscode/issues/4788#issuecomment-203823307


failed Release 10.3.0

Add

TextField: Add all fields to default Storybook story (96965f5)
TextField: Description as helper text (5d017c3

This PR is needed to re-trigger a release as the token was not properly updated for the github action to complete successfully.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


✨ Categories - Remember view mode

Cc: @Aibono1225 @JackDevAU
https://youtu.be/yJ-VsYfwbVw
Pain
When I navigate Category -> Rule -> Category, the Category page doesn't remember the view mode i had selected. (titles, blurb or everything
### Tasks
- [x] Remember users view mode

Thanks!

Hi @bradystroud
This will be fixed when/if we upgrade to a framework like Next.js. Not sure if we should work on this for the moment

Seems super low priority

Done - Now the selected mode can be maintained during the session


spotify token expires after an hour

need to get a refresh token and use that periodically

see https://stackoverflow.com/questions/30372835/how-can-i-increase-the-expiry-time-of-spotify-token for more


Release 2.2.0

It's necessary to remove the pin-depend on Index and use the latest released version. I'll wait for the CI to say something encouraging before opening a corresponding PR in opam-repository.


SQL Injection

Hi there!
What about SQL Injection? Is there any way to protect the Conditions?
String value = "invalidEmail OR 1=1";
User firstUser = new Select().from(User.class).where(Condition.column(User$Table.EMAIL).eq(value)).querySingle();

@matteinn not currently. its up to you to validate that the email passed is a valid email via regex. I guess I could add support for something like ColumnValueValidator to prevent against such injections.

major changes will come in 3.0 that will be for the better.

3.0 strongly types the conditional Property object.s this is in develop now.


Validate and add Docker 20.10.24, 23.0.3, 23.0.4, 23.0.5 & 23.0.6

There has been new releases from docker:
https://docs.docker.com/engine/release-notes/20.10/#201024
https://docs.docker.com/engine/release-notes/23.0/#2303
https://docs.docker.com/engine/release-notes/23.0/#2304
https://docs.docker.com/engine/release-notes/23.0/#2305
https://docs.docker.com/engine/release-notes/23.0/#2306
The following versions will be added:
20.10.24
23.0.3
23.0.4
23.0.5
23.0.6

Same approach as https://github.com/rancher/rancher/issues/39345 to be followed for implementation and testing.

While the docker versions were not released tested the following URLs

[x]  curl -L https://releases.rancher.com/install-docker-dev/20.10.24.sh
[x]  curl -L https://releases.rancher.com/install-docker-dev/23.0.3.sh
[x]  curl -L https://releases.rancher.com/install-docker-dev/23.0.4.sh
[x]  curl -L https://releases.rancher.com/install-docker-dev/23.0.5.sh
[x]  curl -L https://releases.rancher.com/install-docker-dev/23.0.6.sh

Confirmed the default URL points to the latest: 23.0.6.sh

[x] curl -L https://releases.rancher.com/install-docker-dev/23.0.sh

All the URLs are pointing to correct docker version.

Tested the docker versions as mentioned above on following OSes.

RHEL 8.7
centos 8.4

Docker install script are working as expected,  hence moving the issue to Release Task.
Once the docker versions are released the issue can be closed.

Hi all
Could also add the new release docker 24.0
https://docs.docker.com/engine/release-notes/24.0/#2401

Docker versions are released,

[x]  curl -L https://releases.rancher.com/install-docker/20.10.24.sh
[x]  curl -L https://releases.rancher.com/install-docker/23.0.3.sh
[x]  curl -L https://releases.rancher.com/install-docker/23.0.4.sh
[x]  curl -L https://releases.rancher.com/install-docker/23.0.5.sh
[x]  curl -L https://releases.rancher.com/install-docker/23.0.6.sh

Confirmed the default URL for 20.10.sh points to the latest: 20.10.24.sh

[x] curl -L https://releases.rancher.com/install-docker/20.10.sh

Confirmed the default URL for 23.0.sh points to the latest: 23.0.6.sh

[x] curl -L https://releases.rancher.com/install-docker/23.0.sh

All the URLs are pointing to correct docker version.


ENAMETOOLONG Error

Hey,
I'm currently trying to create a new IPLD format resolver. It works fine, however a strange thing happen ... Sometime, when the object i'm trying to push is "too" long i got the following when a I call the put method:
Error: ENAMETOOLONG: name too long, open<EMAIL_ADDRESS>
That's really weird because the length of the block file seems linked to the 'length' of the object - and seems to exceed the limit of the filesystem.
It happens on macOS with a resolver whose serialization method is just a Buffer.from(JSON.stringify(dagNode))
Any idea ?

@osarrouy It would be super helpful if you could provide a test/small script reproducing this error. This way someone can more easily have a look.
Just a note, IPLD nodes have a limit of 2MB, though I'm not sure where that is actually enforced.

@vmx I'm gonna try to make a gist to reproduce the steps.

@vmx In fact it raises the same error each time your try to put a buffer which is more than than 145 long - i.e. its OK a 145 but throws a 146 - with the keccak-256 hashAlgorithm. Do you think it may come from a bug in the keccak-256 CID implementation ?

@osarrouy I don't have any instant idea. Please also note that the next 2.5 weeks I won't have much time to look into it (hence I tried to get the other PR out before that). So feel free to dig deeper yourself :)

@vmx Ok. I'm gonna try to figure it out. I let you know if i find something.

Hey @vmx,
It seems the problem came from the multihashes library I use in my resolver to compute the multihash of the CID and which produced oooooooverly long hashes - like 2000 bytes long for keccak-256 -_-
Everything works fine using the multihashing-asynclibrary.
So the problem is not js-ipld related but multihashes related.

As the last comment mentions it's not js-ipld related, hence closing this issue. Feel free to re-open if you disagree.


Addition of Footer Section with a better ui and will also have a contact us section

Is your feature request related to a problem? Please describe.
The absence of a footer section on the website is causing a lack of important information and functionality. Users are unable to access key details and contact options, leading to a less user-friendly experience.
Describe the solution you'd like
I would like to add a footer section to the website. The footer should have a visually appealing design and provide essential information and contact options for users. It should include sections such as "About Us," "Contact Us," "Terms and Conditions," "Privacy Policy," and any other relevant links or sections. The "Contact Us" section should include contact details like email, phone number, address, and possibly a form for users to submit inquiries or messages.
Describe alternatives you've considered
An alternative solution would be to include the footer information within the main content area of the website. However, this approach may clutter the page and distract users from the main content. Having a dedicated footer section keeps the design clean and organized.
Additional context
It would be helpful to provide any specific requirements or preferences for the footer's design, such as color schemes, typography, or branding guidelines. Additionally, if there are any existing sections or information that should be included in the footer, please provide details or examples.

Important Announcement: Closure of GitHub Repository Issues, Website Redesign, and Discord Channel Invitation
We apologize for the inconvenience caused, but we must inform you that all current issues in our repository will be closed. This decision aims to improve our development process and enhance organization.
Excitingly, we are announcing a complete redesign of our website, focused on improving user experience and incorporating new features aligned with our goals.
Please note that approximately half of the existing issues are redundant and will be closed accordingly.
We also invite you to join our Discord channel for project collaboration and communication. Visit GSSoC server and assign yourself Web Resource Hub project role using the self-roles feature.
Join here
Your feedback and support are invaluable to us. We look forward to hearing your thoughts on the upcoming changes.
Thank you for your understanding and continued support.
Sincerely,
Project Admin


Expose curve2D data on the inspector

I think it could be nice to have Curve2D data exposed on the inspector to fine tune points (position, in and out) values from there, that could allow to visually animate curves too.

Or have a notion of "selected point", so you could edit its properties (here, position) by typing numbers in a small text box overlaid on the main view? Have the data in the inspector would be tedious to edit if your curve is very long.

@Zylann that is a must for Path, but general Curve resource can't use the visual scene editor panels(I think), I mean like ConcavePolygonShape which gives access to the segments array.

Yes, it would be a useful feature.  I would like to be able to keyframe the curves of Path2D nodes in AnimationPlayers.

Keyframing this is a different issue, because that would actually mean keyframing array items.

@Zylann I see, I wonder if will be possible to at least keyframe special arrays like Vector2Array, but is a different issue/request, indeed.

Keyframing arrays may be possible now (tested with Polygon2D), but we still have no access to Curve2D data from the inspector.

Still relevant in latest master 3ad9e47 I think. There's no way to set point's position in the inspector.

Keyframing arrays looks nice but I think it's a bit too overkill compared to the alternative of skinned 2D meshes.

@Zylann probably, but it can be done currently (but manually), the point is to expose curve data to be able to edit and not having to save the curve resource and edit with a text editor it its horrible formatting.

I've just looked into this and it seems a bit tricky currently. I exposed the curve point data to the inspector, but it's stored as a dictionary, which isn't the nicest thing to edit via the inspector, and also you can only keyframe the dictionary itself, not the contents (even doing this, the values wouldn't interpolate between frames when I tested it). I think the curve data would need to be stored as an array, although it would have to be an array for point positions and also an array for both curve in and curve out data. Obviously this is less than ideal, so a better solution would be needed. In addition to all this, I believe updating the curve in real-time can be a little slow at the moment as it attempts to bake the data (not sure if it does this every time it changes, but it wouldn't surprise me)

@sketchyfun more than to animate the curve, the need to see the data is to edit it, editing the resource is too complex because has a terrible formatting and that is why we have an Inspector anyway...

Yeah I agree that being able to edit the data via the inspector would be nice as well

The data is a sequence of in-out-vertex-in-out-vertex.... I think we just need to get rid of the dictionary representation of the data and use a simple PoolVector2Array for that as exposed data property... This means breaking compatibility, but it's 4.0 time!

Are there any updates on this? Is something in the works?

@panorb As far as I know, nobody is currently working on this.
Either way, I'll close this issue as it has been superseded by https://github.com/godotengine/godot-proposals/issues/48. (Feature proposals are now tracked in the Godot proposals repository.)


Using pubsub with Wifi and GPRS connections

I am using both Wifi (WifiManager.h) and GPRS (TinyGSM) connections in my project.
How can I instance both using pubsubclient?

+1


Test slurm feature

The slurm feature can be partially tested by simply mocking two components:

Mock the sbatch function by executing jobs locally in a non-blocking way. Ignore all inputs to sbatch except the target script and its args.
Mock squeue to keep track of the processes launched by sbatch.

Alternatively, we might investigate how to simply install slurm locally. Example:
     - name: Install and test slurm
       run: |
         sudo apt update -y
         sudo apt install slurm-wlm -y
         mv slurm.conf /etc/slurm/slurm.conf
         sudo service slurmd start
         sudo service slurmctld start
         sbatch python print_something.py --wait --output=my_output.txt
         cat my_output.txt

Just make sure slurm.conf is properly configured
Note: You can test this without pushing changes to github by running nektos/act (e.g. gh extension exec act)

@jeremyfowers for visibility

Done!


KOGITO-7626 Setup Maven wrapper and build-chain docs

https://github.com/kiegroup/kogito-pipelines/pull/565
https://github.com/kiegroup/kogito-runtimes/pull/2349

HI @radtriste - thanks for that PR.
I just have two question:

I was expecting somewhere the removal of "3.8.6" hardcoded check inside kogito-dependencies-bom: am I missing it ? Is it still needed ?
if it is needed to keep that enforce rule, would this mean that also on lacla machine we will have to use the mvnw (just asking) ?
Thanks!


Xamarin project error

From @PierBover on April 10, 2016 7:52

VSCode Version:0.10.11
OS Version: 10.11.3

Steps to Reproduce:

Create a blank cross platform Xamarin project
Open the project folder in VSCode

I get this error in VSCode
[ERROR:OmniSharp.MSBuild.MSBuildProjectSystem] Error initializing task MakeDir: Could not load file or assembly 'Xamarin.iOS.Tasks.Core' or one of its dependencies
[WARNING:OmniSharp.MSBuild.MSBuildProjectSystem] Failed to process project file '/Users/pier/Projects/TestHTTP/iOS/TestHTTP.iOS.csproj'.
[ERROR] Error: Failed to start OmniSharp

The project builds fine in Xamarin btw.
Copied from original issue: Microsoft/vscode#5127

moving to omnisharp-vscode for investigation.

Hi @egamma, can you reproduce the issue?

Hi @PierBover the issue was not closed because I cannot reproduce it, it was closed because it was moved to the owners of the OmniSharp extension for vscode, it will be in good hands over there.

Yes, I know. :)
I'm just asking if you can reproduce or not.

I get the same error with VSCode 1.0.0 when attempting to load a Xamarin.iOS project:
[ERROR:OmniSharp.MSBuild.MSBuildProjectSystem] Error initializing task MakeDir: Could not load file or assembly 'Xamarin.iOS.Tasks.Core' or one of its dependencies

Hi, if you're still experiencing this issue, could you try the latest release of the C# extension, v1.3.0? This version adds better support for Mono projects in general, so it'd be great to know if it helps the problem you've been experiencing.

Just pinging here to see if @PierBover and @mikebluestein were able to reproduce with the latest C# extension as requested.


SIG should reconnect to the dispatcher

If the dispatcher restarts, the SIG is currently not capable of reconnecting. Also, losing connectivity with the dispatcher generates a huge amount of logs that can quickly fill up storage.
The SIG should be able to reconnect to the dispatcher.

In the interim, the sig should exit if the dispatcher socket closes, because the disk filling symptom is a major problem.

Reconnecting to the dispatcher is awkward for high-throughput data-plane sockets like the SIG.
SIG protocol implementations that care about high availability in the event of dispatcher crashes should look into opening a socket on the underlay directly.


New Govee Kettle (released 3 days ago--need support)

What issue do you have? Please be as thorough and explicit as possible.
Unsupported Smart Kettle that was released 3 days ago
Details of your setup.

Do you use (1) Homebridge UI-X (2) Homebridge CLI or (3) HOOBS?
Homebridge

Which version of Homebridge/HOOBS do you have?
 Please also mention your version of Node.js/NPM if known.
Windows 10 Pro

Which version of this plugin (homebridge-govee) do you have? Has the issue started since upgrading from a previous version?
7.9.3

Which Govee devices do you have that are causing issues? Please include product models if applicable.
Smart Kettle H7171

Please paste any relevant logs below.
{"device":"2C:42:D4:AD:FC:BA:4A:70","deviceName":"Smart Kettle","model":"H7171","httpInfo":{"groupId":0,"device":"2C:42:D4:AD:FC:BA:4A:70","sku":"H7171","spec":"","versionHard":"1.02.00","versionSoft":"1.00.07","deviceName":"Smart Kettle","deviceExt":{"deviceSettings":"{"address":"D4:AD:FC:BA:4A:71","bleName":"ihoment_H7171_4A71","topic":"GD/b55e58142f979dc3d98897778bc1e3bd","wifiMac":"D4:AD:FC:BA:4A:70","pactType":1,"pactCode":1,"wifiSoftVersion":"1.00.07","wifiHardVersion":"1.02.00","ic":0,"secretCode":"C/RcIj9xV3o=","boilWaterExceptionNotiOnOff":1,"mcuSoftVersion":"1.00.40","mcuHardVersion":"1.00.05","boilWaterCompletedNotiOnOff":1,"completionNotiOnOff":1,"sku":"H7171","device":"2C:42:D4:AD:FC:BA:4A:70","deviceName":"Smart Kettle","versionHard":"1.02.00","versionSoft":"1.00.07","playState":false}","lastDeviceData":"{"online":false}","extResources":"{"skuUrl":"https://d1f2504ijhdyjw.cloudfront.net/sku-img/5a06b85a05ee571c128a884447ac8e86-add_list_type_device_7171.png\",\"headOnImg\":\"\",\"headOffImg\":\"\",\"ext\":\"\",\"ic\":0}"},"pactType":1,"pactCode":1,"goodsType":135}}

Hi @josephdc18 please try the beta version of the plugin.
Could you show a screenshot of how this kettle appears in the govee app?
I have based the current functions and code on the previous model of the kettle so not sure if it will work first time or not!
Thanks

Thanks for the screenshots!
Assuming you are on the beta (could be worth updating again to latest beta), can you post here the start up logs for the plugin? feel free to remove any device ids etc

@bwp91 I noticed in the Changelog under 8.0.0 (2023-03-21) it states support has been added for this device but under Supported Devices, it is not listed. Do you know the current status?

@bwp91 I noticed in the Changelog under 8.0.0 (2023-03-21) it states support has been added for this device but under Supported Devices, it is not listed. Do you know the current status?

It should work, it will definitely appear in homebridge as an accessory, but it hasn’t been confirmed if the commands the plugin sends are properly working.
If they aren’t working, it’s no issue to get them working, i just need someone with the device to help!


"deployment_branch" and "branch" environment variable not the same

When deploying, I use the deployment branch as the information to select a publishing profile.
Apparantly the environment variable changed from branch to deployment_branch for issue #337 with commit cdb997e03d89a1dfc80bf0fc44cd1dd2e34d3929.
I've checked the difference at portal.azure.com => web app => tools => Console

Also the configuration at manage.windowsazure.com shows my correct deployment branch. And in D:\home\site\deployments\settings.xml on the file system I also see the correct deployment branch stored.
I expected "deployment_branch" to be my "develop" branch and be equal to "branch".
In my repo, I only pushed the "develop" branch to the Local Git repo at my Azure website.

Also I think!


Wayland support

Hey tsoding, community,
it would be super cool to have the option to run musializer natively under wayland...
What do you think?

It works fine via XWayland. Just make sure your DISPLAY environmental variable is set correctly. I had got the following error "GLFW: Error: 65550 Description: X11: Failed to open display wayland-0" and I fixed it by env DISPLAY=:0 ./musializer.

Hey tsoding, community,
it would be super cool to have the option to run musializer natively under wayland... What do you think?

It is possible to build it on wayland now by modifying the raylib build, as it is supported, however it is not the default


Questions about hyperparameters for EACL2021 paper

Hi. I have a question about the experimental setup on your EACL2021 paper, On the Calibration and Uncertainty of Neural Learning to Rank Models.
How did the number of forward pass for MCdropout (T) and the number of model for Ensemble (M) are set?
Thank you!

Hi, we did not do any hyperparameter tuning for those and used 5 to be able to run experiments in a reasonable time. I believe previous work uses 5 as well (https://papers.nips.cc/paper/2017/file/9ef2ed4b7fd2c810847ffa5fa85bce38-Paper.pdf).


big max script file is really slow to navigate

I have a max script file with more than 20K lines of codes
I cannot use this plugin with that code as vscode is slowed down and almost impossible to navigate
Disabling the plugin everything works well
is there a way to customize/improve performances? maybe adding memory for big file size etc?

Yes, I know; limitations of writing the parser in JS. Not much that can be done, either:

Disabling the parser for long files (losing the outliner and code navigation) or maybe a simpler method to get code symbols, without structure.
Modularize your code in shorter scripts,
Write a compiled parser in ANTLR4

You're welcome to collaborate if you can do some improvements to the code.

About antlr4 , something to get you started
https://gitlab.com/MrPingouin/mxs-linter

@HAG87 If only I had the time ^^' ... Sadly no. not yet anyway. Since mentionned it I only took 5min to look for it to see if there was anything and thought it might help you.
Awesome work on the current extension btw  :) thanks  a lot.


Ensure that there are no manual number sequences before trying to install the workloads.

@alkalomo I assume this is only for scale units? What problem does it solve? If there are any manual number sequences on a scale unit before workload installation, what happens (error messages etc.)?

Manual number sequences can cause some problems between Scale Units and the Hub if they are manual. We need to discuss further with Gaurav and Andy on what to do here.

Closing as wontfix for now. This is not very critical and I believe changes are being made in the platform to handle the scenario better.


Unexpected behavior of MaxConcurrency and MaxBufferedItemCount

Background
We run a REST API that accepts arbitrary queries (similar to OData) that we translate into Cosmos DB queries. Each response has a maximum page size, after which we provide a link to the next page of results. The Cosmos DB container could have a large number of physical partitions (one customer has 2068). All queries need to be cross-partition.
Some queries will be very selective (resulting in 1 or 2 documents), whereas some are not selective at all (millions of results or more). We don't necessarily know whether the query in a request is going to be selective or not. Our goal is to provide good query latency while minimizing RU consumption, notably we want to avoid wasting RUs for results that we don't end up returning to the client.
What we are trying to achieve
Ideally, we would like for the selective queries to be issued across all partitions concurrently (MaxConcurrency=-1). The non-selective queries should run against a single partition (MaxConcurrency=null) since each physical partition is expected to have plenty of results. But we don't which queries are which, so we'd like to gradually fan-out the until we get enough results. In general, we will not be enumerating a query until the end, because we are only returning one page or results at a time.
I was experimenting with trying increase the the fan-out exponentially. Something like (pseudocode):
int partitionsToQuery = 1;
string continuationToken = null;
List results = new();
do
{
   var it = container.GetItemQueryIterator(query, new { MaxItemCount = desiredPageSize, MaxConcurrency = partitionsToQuery, MaxBufferedItemCount = 0  });
   var response = await it.ReadNextAsync();
   results.AddRange(response);
   partitionsToQuery *= 10; // no point in doing this beyond the # physical partitions, we'd just call it.ReadNextAsync() instead
   continuationToken = response.ContinuationToken;
}
while (results.Count < desiredPageSize && continuationToken !=null);

return (results, continuationToken);

But this approach will not have the desired effect because of what MaxItemCount, MaxConcurrency, and MaxBufferedItemCount really mean.
Analysis of MaxItemCount, MaxConcurrency, and MaxBufferedItemCount
To better understand what is going on, I wrote the following little program:
using System;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Azure.Cosmos;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;

Console.WriteLine($"Using Cosmos DB SDK {typeof(CosmosClient).Assembly.GetCustomAttributes<AssemblyFileVersionAttribute>().Single().Version}");

IConfigurationRoot configuration = new ConfigurationBuilder()
    .AddJsonFile("appSettings.json")
    .Build();

string endpoint = configuration["EndPointUrl"];
string authKey = configuration["AuthorizationKey"];
string databaseId = configuration["DatabaseId"];
string containerId = configuration["ContainerId"];

var client = new CosmosClient(endpoint, authKey, new CosmosClientOptions() { CustomHandlers = { new MyHandler() }, ConnectionMode = ConnectionMode.Direct });
var container = client.GetContainer(databaseId, containerId);

await IssueQuery(
    "select * from c",
    new() { MaxItemCount = 100 });

await IssueQuery(
    "select * from c where c.resourceId = 'b89b512b-1ce1-4da9-9952-c76889ad24c5'",
    new() { MaxItemCount = 100 });

await IssueQuery(
    "select * from c where c.resourceId = 'b89b512b-1ce1-4da9-9952-c76889ad24c5'",
    new() { MaxItemCount = 100, MaxConcurrency = -1 });

await IssueQuery(
    "select * from c",
    new() { MaxItemCount = 100, MaxConcurrency = 1 });

await IssueQuery(
    "select * from c",
    new() { MaxItemCount = 100, MaxConcurrency = 1, MaxBufferedItemCount = 0 });

async Task IssueQuery(string query, QueryRequestOptions queryRequestOptions)
{
    Console.WriteLine("*****");
    Console.WriteLine($"Beginning `{query}` with options `{JsonConvert.SerializeObject(queryRequestOptions, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore })}`");

    var itemQueryIterator = container.GetItemQueryIterator<object>(query, null, queryRequestOptions);

    // keep iterating until we get MaxItemCount or there are no more results.
    for (int count = 0; itemQueryIterator.HasMoreResults && count < queryRequestOptions.MaxItemCount;)
    {
        var feedResponse = await itemQueryIterator.ReadNextAsync();
        count += feedResponse.Count;

        Console.WriteLine($"\tFeedResponse count: {feedResponse.Count}, has CT: {!string.IsNullOrEmpty(feedResponse.ContinuationToken)}, request charge: {feedResponse.RequestCharge}");
    }

    Console.WriteLine("Done.");
    Console.WriteLine();
}

public class MyHandler : RequestHandler
{
    public override async Task<ResponseMessage> SendAsync(RequestMessage request, CancellationToken cancellationToken)
    {
        var responseMessage = await base.SendAsync(request, cancellationToken);

        Console.WriteLine($"\t\tRequestHandler message sent. Physical partition = { responseMessage.Headers["x-ms-documentdb-partitionkeyrangeid"]}, charge = {responseMessage.Headers.RequestCharge}, document count = {responseMessage.Headers["x-ms-item-count"]}");

        return responseMessage;
    }
}

I'm trying out a non-selective query and a selective one over a container with 10 physical partitions, experimenting with different values for MaxConcurrency and MaxBufferedItemCount. To see the actual requests that go to the DB, there's a request handler that outputs information about the response.
Let's go through the output, query by query.
Beginning `select * from c` with options `{"MaxItemCount":100}`
                RequestHandler message sent. Physical partition = 10, charge = 9.51, document count = 100
        FeedResponse count: 100, has CT: True, request charge: 9.51
Done.

When we don't specify anything for MaxConcurrency, we end up with one call to one physical partition, which returns 100 documents to fill our page. Great.
Now let's try a selective query:
Beginning `select * from c where c.resourceId = 'b89b512b-1ce1-4da9-9952-c76889ad24c5'` with options `{"MaxItemCount":100}`
                RequestHandler message sent. Physical partition = 10, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 11, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 14, charge = 2.92, document count = 1
        FeedResponse count: 1, has CT: True, request charge: 2.92
                RequestHandler message sent. Physical partition = 15, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 7, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 4, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 12, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 13, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 8, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: True, request charge: 2.79
                RequestHandler message sent. Physical partition = 9, charge = 2.79, document count = 0
        FeedResponse count: 0, has CT: False, request charge: 2.79
Done.

We had enumerate the whole way though the FeedIterator because there was only one document that matched this query. Doing this sequentially for a large number of partitions is not great, so let's try to set MaxConcurrency to -1:
Beginning `select * from c where c.resourceId = 'b89b512b-1ce1-4da9-9952-c76889ad24c5'` with options `{"MaxItemCount":100,"MaxConcurrency":-1}`
                RequestHandler message sent. Physical partition = 11, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 7, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 4, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 8, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 9, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 10, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 13, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 12, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 15, charge = 2.79, document count = 0
                RequestHandler message sent. Physical partition = 14, charge = 2.92, document count = 1
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 1, has CT: True, request charge: 2.92
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: True, request charge: 2.79
        FeedResponse count: 0, has CT: False, request charge: 2.79
Done.

Same number of FeedResponses, but subsequent calls to ReadNextAsync() return the buffered results. Cool.
Let's go back to the non-selective query, but this time, let's set MaxConcurrency to 1, which I would have guessed would do the same thing as leaving it null:
Beginning `select * from c` with options `{"MaxItemCount":100,"MaxConcurrency":1}`
                RequestHandler message sent. Physical partition = 10, charge = 9.51, document count = 100
                RequestHandler message sent. Physical partition = 11, charge = 9.53, document count = 100
                RequestHandler message sent. Physical partition = 14, charge = 9.07, document count = 100
                RequestHandler message sent. Physical partition = 15, charge = 9.61, document count = 100
                RequestHandler message sent. Physical partition = 7, charge = 9.21, document count = 100
                RequestHandler message sent. Physical partition = 4, charge = 9.62, document count = 100
                RequestHandler message sent. Physical partition = 12, charge = 9.67, document count = 100
                RequestHandler message sent. Physical partition = 13, charge = 9.4, document count = 100
                RequestHandler message sent. Physical partition = 8, charge = 9.73, document count = 100
                RequestHandler message sent. Physical partition = 9, charge = 9.88, document count = 100
        FeedResponse count: 100, has CT: True, request charge: 9.51
Done.

It does something very different. It sequentially queries each physical partition for 100 items. The first FeedResponse has the 100 items I need so the rest is discarded. I now have spent 10x the RUs than were necessary. For our customer with 2068 physical partitions, I suppose it would be 2068x. It seems like setting MaxConcurrency to a non-null value indicates that the SDK is going to prefetch results (and wait for all physical partitions to respond before returning a FeedResponse).
So let's try setting MaxBufferedItemCount to 0:
Beginning `select * from c` with options `{"MaxBufferedItemCount":0,"MaxItemCount":100,"MaxConcurrency":1}`
                RequestHandler message sent. Physical partition = 10, charge = 9.51, document count = 100
                RequestHandler message sent. Physical partition = 11, charge = 9.53, document count = 100
                RequestHandler message sent. Physical partition = 14, charge = 9.07, document count = 100
                RequestHandler message sent. Physical partition = 15, charge = 9.61, document count = 100
                RequestHandler message sent. Physical partition = 7, charge = 9.21, document count = 100
                RequestHandler message sent. Physical partition = 4, charge = 9.62, document count = 100
                RequestHandler message sent. Physical partition = 12, charge = 9.67, document count = 100
                RequestHandler message sent. Physical partition = 13, charge = 9.4, document count = 100
                RequestHandler message sent. Physical partition = 8, charge = 9.73, document count = 100
                RequestHandler message sent. Physical partition = 9, charge = 9.88, document count = 100
        FeedResponse count: 100, has CT: True, request charge: 9.51
Done.

No change. In browsing the source for this repo, I couldn't see where the value was actually being used.
What we would like
We would like better control over how queries performed against physical partitions. Querying partitions in parallel should not imply eagerly prefetching beyond MaxItemCount.
Really what we are trying to achieve, as mentioned above, is balancing good latency for selective queries across a large number of partitions without wasting RUs for non-selective queries, without knowing how many results a query will actually return ahead of time.
If there were a way to say "I need 100 results", query 10 partitions in parallel, and then give me a continuation token, that would be great.
If there were a way to say "I need 100 results", start querying 1, then 10, then 100 partitions in parallel (or 1, 2, 4, etc. ), and then give me a continuation token, that would be really great.
Environment summary
SDK Version: 3.17.0
OS Version: Windows

Based on the query continuation token, the SDK can tell if the FeedResponse is empty vs expensive query/throttling. This is not easily human readable though and would be tough to take a dependency on in your code.
The workaround you've described (cache the number of results for different queries to decide the MaxConcurrency) seems like it could work but, like you mentioned, would result in high latency the first time you see some queries. For this case, you could start at something like 10 (instead of 1), to improve latency.
To better understand the requirements, could you answer these questions?

Why don't you know the partition key? With 2,048+ physical partitions, this is an extremely large workload. Whatever solution we can come up does not solve the core problem of a query needing to fan-out to every partition. You've mentioned that this is not a rare operation, so this is definitely something we want to try to avoid.
What is the query that you'll be running? The above example used "SELECT * FROM c" but I'd imagine it's something different right?
You mentioned 25 seconds of latency is too high. What is acceptable latency?

@timsander1 there are some queries where the partitionkey is not known. Our data is using https://docs.microsoft.com/en-us/azure/cosmos-db/partitioning-overview#using-item-id-as-the-partition-key as the partitioning strategy, this means direct reads are always fast (when the ID is known). Each item can store history, so this scheme also allows the history to be inserted within a transaction. It also allows data to scale out to many TB with no replication.
There are some rare queries that are very selective (only a handful of results), i.e. searching for a user-provided "identifier" or "tag" value. There isn't a great lookup of this and it is only evident at large scale where all perf matters. Search parameters are also flexible, so you could use "identifier + tag" or only one (or in combination with others i.e. firstname). We do "prefix" the partitionkey and could guess the first half, but I don't think this is useful.
We'll create a new issue, but related to this, it seems like the SDK doesn't return when max parallelism goes over the range of ~500-700 partitions.


query: Deduplication latency

thanos version
v0.9.0
prometheus version
version 2.14.0
Object Storage Provider:
no use of object store，use local disk
What happened:
After useing query.replica-label for HA, lately I found queries consume much more time than before
deduplication makes query slow
same query，not query range
deduplication cost 23s, however no deduplication  only cost 293ms.
this is a huge cost for HA
here is my Screenshot

the query is  sum(rate(appnews_importable_bf_request_num{job="import_interface",product="Inews"} [1m] offset 24h))
appnews_importable_bf_request_num{job="import_interface",product="Inews"} offset 24h has about 1200 samples

I wonder Does it make sense？
or Is there any wrong with my usage？
What you expected to happen:
not too much worse proformace than before
hope you could reply this issue ASAP
this issus makes me crazy.
Thank you.

Thanks for this report.
So normally the overhead is unnoticeable, so there might be some bug there for your case here. It would be nice to dive deeper. What I find really suspicious is that appnews_importable_bf_request_num{job="import_interface",product="Inews"} offset 24h takes 322ms WITH Deduplication, but sum(rate(appnews_importable_bf_request_num{job="import_interface",product="Inews"} [1m] offset 24h) is suddenly 24s? That's kind of unlikely.
Let's dive deeper:

You say 1200 samples. But this is for instant query without range selector [1m]. Can we do instant query on console for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h? If you have 1200 series I expect it to be something like 4x1200 samples.
Can you check latency for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h with and without deduplictation?

Also, Try without offset, but I think the issue that we are selecting all 24h+1m was fixed in v0.9.0 already.

Thanks for this report.
So normally the overhead is unnoticeable, so there might be some bug there for your case here. It would be nice to dive deeper. What I find really suspicious is that appnews_importable_bf_request_num{job="import_interface",product="Inews"} offset 24h takes 322ms WITH Deduplication, but sum(rate(appnews_importable_bf_request_num{job="import_interface",product="Inews"} [1m] offset 24h) is suddenly 24s? That's kind of unlikely.
Let's dive deeper:

You say 1200 samples. But this is for instant query without range selector [1m]. Can we do instant query on console for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h? If you have 1200 series I expect it to be something like 4x1200 samples.
Can you check latency for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h with and without deduplictation?

Thank you for your quick reply.

with range selector [1m]. one serie could have 4 or 5 samples.
So when I do instant query on console for  appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h with deduplication, I got this

2.this is the latency comparsion for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m] offset 24h

3.this is the latency comparsion for appnews_importable_bf_request_num{job="import_interface",product="Inews"}[1m]

Thank you!

Does it may have some connection with query traffic?
I have set  --query.timeout 20m --query.max-concurrent 200 for query
but I've not found any config of concurrent for sidecar

I mean try to not use the sidecar for anything else for period of tests (:

Do we have a tool or something to do pre-deduplication? If not, would be implemented it in compactor?

Yes. Please see: https://github.com/thanos-io/thanos/issues/1014 (:
On Fri, 20 Mar 2020 at 02:47, Xiang Dai<EMAIL_ADDRESS>wrote:

Do we have a tool or something to do pre-deduplication? If not, would be
implemented it in compactor?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/thanos-io/thanos/issues/2222#issuecomment-601502971,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABVA3O4TVOJ3OXZCDZD5N6LRILKLHANCNFSM4LC7SF5A
.

This seems still an issue. Deduplication adds significant latencies, particularly visible when queries have big number of series.


Optimized decoder for WebAssembly

Feel free to simply close out this issue if you are not interested but we just implemented QOI image format for VNC to deliver lossless remote desktops using Rust WASM clientside here:
https://github.com/kasmtech/noVNC/tree/master/core/decoders/qoi
Some docs here:
https://www.kasmweb.com/docs/latest/how_to/lossless.html
I have been wondering if SIMD optimizations were even possible on the server side for some time now, I tried out the stable branch with ssse3 and did see +- 10% in encoding speed vs rapid qoi depending on what image you feed to it. Looks like offloading the hashing has some promise especially once the AVX stuff is implemented.
Though I am  specifically reaching out if you think the decoding could be sped up in a web browser? The compiled blob linked earlier in noVNC is a modified version of this implementation:
https://github.com/lukeflima/qoi-viewer
This is all functional, but under high load scenarios you need a pretty beefy client to maintain FPS at a gigabit. Even a small improvement on the web assembly side would have a large impact on overall smoothness of desktop delivery. Anything we do for desktop delivery is open source including these changes if possible.
Essentially I am wondering if you would be interested in some side work to put together a highly optimized open source WASM qoi decoder that takes a Uint8Array as input and spits back "ImageData" as a uint8clamped array and size information. We do 24 bit qoi without the alpha channel.

Hi @thelamer !
WASM is a planned target for optimizations, but I haven't looked in to it much yet. I was working on some further optimizations and restructuring on the ssse3 and x86-64 part in general, but I may have lost my work (currently trying to find it on a potentially borked disk image as we speak, oh boy). My road map was basically to work my way up the features sets of x86 before moving on to ARM, and then potentially WASM.
I don't know all that much about the latter two platforms, but I went in to x86 stuff without knowing anything either, so I can just learn the same way. What I am aware of, however, is that Rust only targets wasm32 at the moment (correct me if I'm wrong). Some of the optimizations (including the single-pixel hash function inspired by rapid-qoi) depend on being within a 64-bit integer, so those would have to be stripped. I also don't know the extent of the range of SIMD options there are in WASM. I assume that they have to be more general to make them platform-independent. There may not be some of the instructions I would need to optimize easily, but I can definitely try. The potential is potentially there, I think (lol).
If you want, I can try WASM after I finish x86 (after I'm done the base stuff and ssse3, the rest of the instructions won't take very long).

@AstroFloof sorry for the delay missed this ping. Yes SIMD instructions in WebAssembly is very limited.
I am not very low level, my programming experience has mostly revolved around my work at Linuxserver.io building out web apps in my spare time. When it comes to making something new generally that is plugging off the shelf components into each other as was done with existing wasm qoi decode logic and the noVNC project.
So in this case my focus is on any optimizations even if small that could be made to the decoding reference implementation I used which directly translates to lower CPU clientside and higher FPS. Thought I would reach out to anyone trying to improve the QOI v1 spec for decoding/encoding which is a very small list. Right now performance is pretty good on higher end modern CPUs:
https://user-images.githubusercontent.com/1852688/211933613-602be012-fedf-44a2-b4b4-77a032e312d0.mp4
An easy way to see this first hand would be to run docker run --rm -it --shm-size=512m -p 6901:6901 -e VNC_PW=password kasmweb/ubuntu-focal-desktop:1.12.0
https://localhost:6901
user: kasm_user
pass: password
Then swap to lossless under settings > stream quality. (use Chomium based browser for best results)
From a development standpoint it would just involve building and swapping out the wasm blob and function names in:
https://github.com/kasmtech/noVNC/blob/master/core/decoders/qoi/decoder.js#L256-L277 and seeing if it can eek out anymore FPS. (inside the docker image at /usr/share/kasmvnc/www/core/decoders/qoi/)
If you setup a Github Sponsorship on your account I would be happy to toss you some money just for looking into it. I'm interested if it is even possible.

Hey @thelamer! I'm a friend of Floof that introduced him to QOI and followed his hardqoi developments since
At one point I wondered if a QOI GPU endec was possible but abandoned the idea after learning about the relative high latency for GPU API initialisation. This however wouldn't be a problem if the API context is reused when used for something like remote desktop streams. There are (many) other challenges with QOI on GPU but it seems like something worth looking into
I'll admit I got nerd-sniped and may try to revive the idea, though I am confused why you'd use an image format like QOI instead of a video format which grants higher compression
Could you explain why you made that choice? I'm available on Discord (Feyko#7953) if you want a more interactive chat

Welp, quick update on this. Did some more investigating and I think QOI on GPU really is a dead-end :P

@AstroFloof so I have been pumping decode code through different AI language models and some of them seem to think the hashing is not needed and it can be more efficiently performed with an array. This is all greek to me but does this make any sense to you?
use std::io::Read;

fn decode_qoi(reader: impl Read) -> Result<Vec<u8>, std::io::Error> {
    let mut buf = vec![0; 16];
    reader.read_exact(&mut buf)?;

    let magic = u32::from_be_bytes(buf[0..4].to_vec());
    let width = u32::from_be_bytes(buf[4..8].to_vec());
    let height = u32::from_be_bytes(buf[8..12].to_vec());
    let channels = buf[12] as u8;
    let colorspace = buf[13] as u8;

    if magic != 0x716f6966 {
        return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "Invalid QOI magic"));
    }

    if width == 0 || height == 0 || channels < 3 || channels > 4 || colorspace > 1 {
        return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "Invalid QOI header"));
    }

    let mut pixels = vec![0; width * height * channels];

    let mut run = 0;
    let mut prev_color = [0; 4];
    for i in 0..width * height {
        if run > 0 {
            run -= 1;
            continue;
        }

        let op = reader.read_u8()?;
        match op {
            0xfe => {
                prev_color[0] = reader.read_u8()?;
                prev_color[1] = reader.read_u8()?;
                prev_color[2] = reader.read_u8()?;
            }
            0xff => {
                prev_color[0] = reader.read_u8()?;
                prev_color[1] = reader.read_u8()?;
                prev_color[2] = reader.read_u8()?;
                prev_color[3] = reader.read_u8()?;
            }
            0x00..=0x3f => {
                let index = op as usize;
                for j in 0..channels {
                    pixels[i * channels + j] = prev_color[j] + index;
                }
            }
            0x40..=0x7f => {
                let index = (op & 0x3f) as usize;
                for j in 0..channels {
                    pixels[i * channels + j] = prev_color[j] + ((op >> 4) & 0x03) - 2;
                }
            }
            0x80..=0xbf => {
                let value = (op & 0x3f) - 32;
                for j in 0..channels {
                    pixels[i * channels + j] = value;
                }
            }
            0xc0..=0xff => {
                let runs = op & 0x3f;
                run = runs;
            }
            _ => {
                return Err(std::io::Error::new(std::io::ErrorKind::InvalidData, "Invalid QOI op"));
            }
        }
    }

    Ok(pixels)
}

This doesn't make any sort of sense. LLMs just predict the next token and have no idea what they're doing.

This doesn't make any sort of sense. LLMs just predict the next token and have no idea what they're doing.

Thanks for taking a look, I figured as much I could not get this to run.


Recommendation: Open licence for people to use

Hey Vic!
I love what you've done here, it makes xmonad really accessible to people who are beginning or looking for a great config.
Would you mind putting this work under an MIT license to clarify how we can use it and side step all the legal stuff?
Here's a TLDR for MIT:
https://tldrlegal.com/license/mit-license
Cheers
Matthew.

Just closing this as it's a bit stale

At the time you made this I think I had a busted github email filter. Sorry about that!
That said, here you go: https://github.com/vicfryzel/xmonad-config/blob/master/LICENSE

Winner winner chicken dinner 🎉
re: email filter, no worries. It’s really nice that you took the time to follow up. Thank you 🙏


Preload the projects into the memory before starting the server

Proposed changes: Preload the projects into the memory before starting the server as per user requirement through command line argument. By default, no projects will be loaded. If specified an argument --pre_load as all, all the projects will be preloaded with the latest model. Otherwise, the user can specify a list of projects and those alone will be preloaded.
Status (please check what you already did):

[ ] made PR ready for code review
[ ] added some tests for the functionality
[ ] updated the documentation
[ ] updated the changelog

@tmbo thanks for the suggestions. I will make the changes.

@tmbo all the suggested changes have been done. Regarding doc. The Server Parameters in the doc are generated using program-output. Should I add an additional section dedicated to preload alone in the doc?

You are right, the description in the help text for the parameter you created is very good. So let's keep it like that for now and if it comes up in the community we can still add a paragraph dedicated to it.
Thanks a lot for all the effort you put into getting this merged :rocket:

@RitwikGopi I'm unable to use this as I described in #1193 . Could you help me out with finding the problem? Can you also give an example usage?

Also having the issue. My models are stored on S3. I get this error when using --pre_load all
botocore.exceptions.ClientError: An error occurred (404) when calling the HeadObject operation: Not Found


Lazarus form examples?

My problem is limited documentation and not understanding the example applications given.
I would like a simple example application that possibly shows how to generate bitcoin addresses.  I also do not understand fully how to include the neccesary files in my project, which is more of an ignorance issue of mine and understanding of lazarus i suppose.
If we could get some clear examples in a simple form application that would be great.  Maybe how to generate bitcoin addresses and also maybe an example of encrypting a memo's text with various crypto algorithms and methods to decrypt.

First of all, generating a bitcoin address is not a simple example.
You need to understand the process of generating a bitcoin address and break it down into its different modules.
That been said, there are loads of examples in the unit tests and samples folder on how to encrypt and decrypt data, try to read through it and it would pay off.

I spent the day today going through the code and samples you have in these libraries.  I understand there is a process.  So far I have been able to put together a little user interface that generates a keypair... i found some examples and enough info in your libraries that i was able to convert the byte array into a hex string... and the next thing i wanted to try and accomplish is making the "compressed" version of a public key.  I think I need to just base58 my public key.  I found some functions but I have no clue if i am using them properly.  I hope you took no offense at my post... i have been reading through.  Still struggling to put stuff together.  Is there any direct examples of encoding the public key into a base 58 address?  If so can you direct me a little bit.
Thanks.

Can you share the sample you have come up with?
As a project I mean.

Actually give me a couple days.  I would love to share what I have come up with so far.  But I have been trying to learn some Pascal basics in the process, so what I have at the moment is a complete embarrassment.  As I am trying to put together a simple clean application here I am running into compile errors that are not related to your library.  So bare with me.  I would love to send my little project to an actual professional to get feedback...  I will try and have something put together tonight actually!  Thanks Xor-el!

ok, I have to go to bed.  But this is as far as i got so far.  I think you can possibly see what I am trying to accomplish.  I am basically trying to replicate this web site at the moment.  If I didn't need to work in the morning I would have at least been able to complete the base64 on the private key and a few other things.  However, I need to conmplete all functions for my project.  And while I copy and pasted most of the code I found in your samples I still feel like I cannot find an example on creating a proper WIF address or base 58 address, etc.  Any input is appreciated.  The code is probably quite messy compared to what you are used to working with but i am open to hearing any feedback you can give me on what I have put together so far.  Thanks.
http://coreyhaddad.com/bitcoin/bitaddress.org.htm

doesnt appear to have uploaded my attachment. I will try again.
allIgotSofar.zip

@TonyStone31 Take a look at https://github.com/UrbanCohortDev/PascalCoin-RPC-Client  and in particular the PascalCoin.KeyUtils unit to see some examples of this library.

@TonyStone31 , what you are requesting for is not within the scope of this library by default (this is a Cryptographic Library not a Bitcoin Library), I mean the generation of a Proper Bitcoin WIF address and and Base 58 Address.
Do not get me wrong, this library is capable of doing that and more, however, it is not just some example I will just whip up in some minutes.
I will need to be compensated for that. If this is something you would like to do, please do feel free to reach out to me via mail.
Thanks.

I just sent you an email.  I am willing to compensate you for some of your time!

Resolved.


Fix copyright year in NOTICE.txt.

Fix copyright year, 2014 to current year (2015).
Have a nice coding.

Thank you @NohSeho


Introduce non-blocking db interactions from Ballerina worker threads' POV

Purpose
Fixes #8593
Approach

Describe how you are implementing the solutions along with the design details.

Samples

Provide high-level details about the samples related to this feature.

Remarks

List any other known issues, releated PRs, TODO items or any other notes related to the PR.

Check List

[ ] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #15689 into master will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master   #15689   +/-   ##
=========================================
  Coverage      6.68%    6.68%
  Complexity     1722     1722
=========================================
  Files          1378     1378
  Lines         70433    70433
  Branches       9055     9055
=========================================
  Hits           4709     4709
  Misses        65248    65248
  Partials        476      476

Continue to review full report at Codecov.

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

Closing until design changes are further discussed.


No longer shipping typescript defs in 1.1.2

When importing:
import { lessLoader } from "esbuild-plugin-less";

Seems like we're no longer shipping the typescript defs any more.
TS7016: Could not find a declaration file for module 'esbuild-plugin-less'. '<path>/node_modules/esbuild-plugin-less/build/cjs.js' implicitly has an 'any' type.   Try `npm i --save-dev @types/esbuild-plugin-less` if it exists or add a new declaration (.d.ts) file containing `declare module 'esbuild-plugin-less';`

Versions

esbuild: 0.13.1
esbuild-plugin-less: 1.1.1
Platform:

Workaround is to just:
// @ts-ignore

so it's not a huge problem


Camera translate broken when picking 3d tiles point cloud with transparency

Reported https://community.cesium.com/t/3dtileset-picking-issue-when-style-applied/11871
Sandcastle example
When the point cloud is opaque, you can click and drag to translate the camera relative to the point cloud.  This makes it way easier to navigate when you're trying to look at details of a tileset. However, when transparent style is applied, the camera moves as if you were picking the globe instead of the tileset.

viewer.scene.pickTranslucentDepth = true should do the trick: Sandcastle

viewer.scene.pickTranslucentDepth = true should do the trick: Sandcastle


UseWebpackDevMiddleware crash on startup in visual studio 2017

.NET Command Line Tools (1.0.0-preview2-1-003177)
Product Information:
Version:            1.0.0-preview2-1-003177
Commit SHA-1 hash:  a2df9c2576
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.12
OS Platform: Darwin
RID:         osx.10.12-x64
Visual Studio for Mac Preview
Version Preview 2 (7.0 build 560)
Installation UUID: b1a73b24-8428-4477-b761-475e9bd8e906
Runtime:
Mono 4.8.0 (mono-4.8.0-branch/f5fbc32) (64-bit)
GTK+ 2.24.23 (Raleigh theme)
Package version: 408000344

NuGet
Version: <IP_ADDRESS>8
Xamarin.Profiler
Not Installed
Apple Developer Tools
Xcode 8.2.1 (11766.1)
Build 8C1002
Xamarin.iOS
Version: <IP_ADDRESS> (Visual Studio Enterprise)
Hash: 62816dd
Branch: master
Build date: 2016-11-15 06:24:02-0500
Xamarin.Android
Version: <IP_ADDRESS> (Visual Studio Enterprise)
Android SDK: /Users/pyotrvasilev/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
4.0.3 (API level 15)
4.4   (API level 19)
6.0   (API level 23)
SDK Tools Version: 25.1.2
SDK Platform Tools Version: 24.0.0
SDK Build Tools Version: 23.0.2
Java SDK: /usr
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
Xamarin.Mac
Version: <IP_ADDRESS>0 (Visual Studio Enterprise)
Build Information
Release ID: 700000560
Git revision: 21714a71933f78242fea5b184a64f78bd5b11560
Build date: 2016-12-05 11:02:52-05
Xamarin addins: 6ef9b840f7003f55bc17782a901086305e96d290
Build lane: monodevelop-vNext-preview
Operating System
Mac OS X 10.12.2
Darwin MacBook-Pro-Pyotr.local 16.3.0 Darwin Kernel Version 16.3.0
Thu Nov 17 20:23:58 PST 2016
root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
KnockoutSpa
ASPNETCORE_ENVIRONMENT=Development
app.UseWebpackDevMiddleware
System.AggregateException: "One or more errors occurred. (No such file or directory)" ---> System.Exception {System.ComponentModel.Win32Exception}: "No such file or directory"
at at System.Diagnostics.Process.ResolvePath(String filename)\n   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)\n   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)\n   at Microsoft.AspNetCore.NodeServices.HostingModels.OutOfProcessNodeInstance.LaunchNodeProcess(ProcessStartInfo startInfo)\n   at Microsoft.AspNetCore.NodeServices.HostingModels.OutOfProcessNodeInstance..ctor(String entryPointScript, String projectPath, String[] watchFileExtensions, String commandLineArguments, ILogger nodeOutputLogger, IDictionary2 environmentVars, Int32 invocationTimeoutMilliseconds, Boolean launchWithDebugging, Int32 debuggingPort)\n   at Microsoft.AspNetCore.NodeServices.HostingModels.HttpNodeInstance..ctor(NodeServicesOptions options, Int32 port)\n   at Microsoft.AspNetCore.NodeServices.HostingModels.NodeServicesOptionsExtensions.<>c__DisplayClass0_0.<UseHttpHosting>b__0()\n   at Microsoft.AspNetCore.NodeServices.NodeServicesImpl.CreateNewNodeInstance()\n   at Microsoft.AspNetCore.NodeServices.NodeServicesImpl.GetOrCreateCurrentNodeInstance()\n   at Microsoft.AspNetCore.NodeServices.NodeServicesImpl.<InvokeExportWithPossibleRetryAsync>d__101.MoveNext()
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)\n   at Microsoft.AspNetCore.Builder.WebpackDevMiddleware.UseWebpackDevMiddleware(IApplicationBuilder appBuilder, WebpackDevMiddlewareOptions options)\n   at Tcards.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in /Users/pyotrvasilev/Projects/Tcards/src/Tcards/Startup.cs:109

I'm guessing you launched VS for Mac using macOS's dock or spotlight. Unfortunately, if you do that, the IDE runs in a context where your .bash_rc/.profile/etc scripts have not been run, so typically your PATH env variable doesn't specify the location of node.
Two ways you can resolve this in the short term:

Instead of launching VS for Mac using dock/spotlight, launch it from terminal instead, e.g., execute /Applications/Visual\ Studio.app/Contents/MacOS/VisualStudio. Now it will run with the correct env vars and will be able to locate Node at runtime.
Or, symlink from something like /usr/local/bin/node to whatever Node executable you want, so that it can be run regardless of env vars. Now you can launch VS for Mac using dock/spotlight and it will work OK.

I know both of these solutions are a bit awkward. I'm not sure what, if anything, we can do to improve this, since macOS users typically don't have Node on their global path. If anyone has suggestions for a better solution, please let us know!

This is still an issue, running it from my command line isn't a fix. Made an issue/problem on Microsoft's Developer portal (more or less quoted you @SteveSandersonMS)
https://developercommunity.visualstudio.com/content/problem/110198/vs2017-for-mac-usewebpackdevmiddleware-crash-on-ap.html


Add security dropdown

This PR introduces a security dropdown to the setup page.
Here are images of what the dropdown looks like:

It defaults to permissive and sends the data in the format:
{security: 'permissive'}

We probably want to add security to the array in constants/ConfigFormFields.js. This way if the backend sends the UI this configuration key, we'll use whatever the backend provided. https://github.com/dcos/dcos-installer-ui/blob/master/src/js/constants/ConfigFormFields.js

This is done: https://github.com/dcos/dcos-installer-ui/pull/33#issuecomment-243902410

Looks great! :ship:

ping @rcorral


Navigation: Land on level below top by default

Currently, when I enters a Math block, my focus is on the parent level by default. I habitually arrow left and right until I understand that I will need to go a level deeper. I would argue that a user's principal goal in going into a Math block is to explore it granularly which can only be achieved starting at the level below the parent level. Therefore, that should be the default level the user lands on when they Enter into  Math content.
Note: I can see the case to default to the bottommost level too - so all the way down and deep into the Math - but I won't advocate for it myself.

Please give this version of MathCAT (download and use Manage Addons) a try. Let me know if you like the behavior.

I have only explored one of my Math files with this version, but I think I am really liking this change for the reasons I outlined previously - thank you so much! One issue that I am running into, and this may well be unrelated to the build you shared, is that for a newly encountered Math block, I need to press Enter twice to get into the Math block (the first Enter seems to enter and immediately exit the block). NVDA+Alt+m works as expected. Please let me know if I should file a new ticket for that one.

I'm not seeing that problem with "Enter" in web pages. Please point to an example page that exhibits that problem for you.
For a Word doc with MS Word math, "Enter" won't go into edit mode because MS Word uses that to create a new line. Instead, you have to use NVDA+Alt+m.

Attaching a test file that consistently reproduces the issue in Firefox version 115.0.2. Just navigate to any Math block, press Enter, and arrow left.
Note: Please change the extension back to .html. GitHub doesn't seem to take a .html attachment directly.
Twice Enter Math CAT Bug Test Case.txt


Get autotune configs

The autotune feature is great but takes time in the first several rounds.
How to get the dictionary of autotune results after running a few cycles? In that way, I can hardcode the config choice in the release version.

you can set env var: TRITON_PRINT_AUTOTUNING=1 or you can also do print(kernl.best_config) after running auto tuning

If I've known the best configs after autotune, is there any way to save the dict of configurations so that I can load that directly in the next time? Using triton.heuristics¶ can save the meta data, but how to specify num_stages num_warps etc.?

Hi @xenshinu, have you found a way?


Random change of orientation, default orientation and overheating/slow

Couple of things

When I use anything, simple, like:
a-box position='0 0 0.5' material='opacity: 0.5;'

or an image,
It appears one way and suddenly it may go upside down, and later revert again and then
go upside down again
how can I prevent this from happening? it`s a real problem, how can I make sure that the orientation of the box or image  or whatever stays correct always?
Also when  I use an image with a-image  it always appears upside down, how can I make  it appear right?

If I use a-box with position  0,0,0 and rotation  0,0,0 it doesnt appear facing me frontally, it appears rotated,  why? and how can I make it truly 0,0,0 in all axis?

finally, I have a Nexus 5X, not the best phone but quite good. Using AR.js will make the phone go crazy slow and super hot very fast, so that it becomes unusable after reloading the simplest code 2 or 3 times. I get it, AR requires power, is this supposed to improve in the future soon?
I´m using Android in Nexus 5X

best

This PR has been closed due to inactivity for over one year. Please open a new, updated issue if the problem or the question is still relevant.


Create and render product cards in home page

In this pull request I created UI for the product cards and displayed them in the home page by category. As of now the cards are using mock data. The mock data can be found in /public/img/dummy_img and /data/DUMMY_DATA.ts.

Thanks BB


Customers want guidance and docs for tree-shaking

Despite tree-shaking being a prevalent feature/reason to use the language:

Dead code elimination in dynamic languages is a much harder problem than in static languages. The idea of a "treeshaker" originated in LISP2 in the 1990s. The idea is that all possible execution flows of a program can be represented as a tree of function calls, so that functions that are never called can be eliminated.

The algorithm was applied to JavaScript in Google Closure Tools and then to Dart in the dart2js compiler also written by Google, presented by Bob Nystrom in 2012 and described by the book "Dart in Action" by author Chris Buckett in 2013:

... it's not documented:

https://github.com/dart-lang/site-www/search?q=tree-shaking&unscoped_q=tree-shaking
https://github.com/dart-lang/site-www/search?q=tree-shaking&unscoped_q=treeshaking
https://github.com/dart-lang/site-www/search?q=tree+shaking&unscoped_q=tree+shaking
https://github.com/dart-lang/site-webdev/search?q=tree-shaking&unscoped_q=tree-shaking
https://github.com/dart-lang/site-webdev/search?q=tree-shaking&unscoped_q=treeshaking
https://github.com/dart-lang/site-webdev/search?q=tree+shaking&unscoped_q=tree+shaking

In fact the only references I can find anywhere to this feature is on the Dart2JS page:

Don’t worry about the size of your app’s included libraries. The dart2js tool performs tree shaking to omit unused classes, functions, methods, and so on. Just import the libraries you need, and let dart2js get rid of what you don’t need.

This has led customers to wild assumptions around what is and what is not tree-shakeable, and without any clear guidance to patterns that allow or disallow tree-shaking. For example internally, many large applications chose to store configurable metadata in a hash-map:
final _config = <String, Stuff>{};

class Stuff {
  void doStuff() {}
}
class FooStuff extends Stuff {}
class BarStuff extends Stuff {}

void main() {
  _config['foo'] = new FooStuff();
  _config['bar'] = new BarStuff();

  // ... elsewhere in the app ...
 config['foo'].doStuff();
}

... _config['bar'] isn't tree-shaken, nor is class BarStuff. Users did not believe this until I showed them (this issue is not about what should be tree-shaken or why or why not). I believe that tree-shaking is also a selling point for Dart on Flutter, but there is no documentation for Dart AOT either.
I'd personally like to see:

A page describing what tree-shaking is
A page of examples of stuff being tree-shaken, with explanations why
A page of best practices, perhaps separate for the VM and Dart2JS if necessary

@hterkelsen at one point wrote this: https://hterkelsen.github.io/dart2js_playground/
It could be a nice start.

A starting point might be looking at what the Closure Compiler documents:

https://developers.google.com/closure/compiler/docs/compilation_levels
https://developers.google.com/closure/compiler/docs/api-tutorial3

CC @kwalrath

To be clear, I don't know if its possible for @kwalrath to write this without the implementation teams.

Possible option to get some insights about dart2js tree-shaking is to use Dump-Info Visualizer:

Run dart2js on some sources with --dump-info.
Drop its result into https://dart-lang.github.io/dump-info-visualizer/

That is not a realistic documentation medium for the majority of folks.

An external S/O related to tree-shaking for AoT (Flutter):
https://stackoverflow.com/questions/52822353/how-to-test-debug-tree-shaking-in-flutter
/cc @a-siva @mraleph

I made that S/O question (+ partial answer)
I think it would be important to be able to test tree shaking.
With flutter it is relatively easy to include Cupertino widgets on an Android app by inadvertance.

We are looking to build tools that would allow you to inspect what is included into the resulting snapshot. The bug to track is https://github.com/dart-lang/sdk/issues/34632
There is already a rudimentary tooling for that (--print-instructions-sizes-to), but nothing that is nicely packaged for consumption.
/cc @sjindel-google

@mraleph I think having tools is awesome, but this request is around docs. Most users will not want to write N-versions of their code, run analysis tools, and figure out when tree-shaking is applied or not. There needs to be some common sense rules/docs for most users.

@matanlurey it is very hard to write a good doc because results of the tree shaking highly depend on optimizations and describing those would be hard.

@mraleph: How hard? I understand that it's practically speaking not possible to write a specification for dead code elimination - but I think a simple FAQ would go a long way. For example, knowing that certain constant booleans will tree-shake, that complex data structures (like lists or maps) will not, etc.

I just think its silly to say "we provide awesome dead code elimination" and then offer no samples or guidance around when it applies.

Hello,
Why not begin with some basic examples.
Here is a little contribution with some experimental tests trying to understand tree-shaking.
Do you have other interesting tips/explanations to force tree-shaking ?

I was lead to this issue from my S/O question:
https://stackoverflow.com/questions/56306140/will-the-dart-codes-for-ios-be-removed-when-compiling-for-android
I'm still expecting an answer but seems it's not easy to answer just Yes or No.
My understanding from all the posts above would be it depends on the logic I write for different platforms.
Is there any solution to test the tree-shaking logic by now?
I think even the optimization is complicated, it's still logical and there must be some principles or directions to follow, like avoid to do something or manage to do something for tree-shaking codes.
But eventually, we have to make sure it's working as expected.

There's currently no way to have an if/else depend on the platform target and still be code tree-shaked.
The only solution for tree shaking to eliminate iOS code on Android is to use different main.dart (using flutter build -t lib/my_main.dart) combined with a factory+singleton pattern. But that's not something trivial.

There's currently no way to have an if/else depend on the platform target and still be code tree-shaked.
The only solution for tree shaking to eliminate iOS code on Android is to use different main.dart (using flutter build -t lib/my_main.dart) combined with a factory+singleton pattern. But that's not something trivial.

Thank you for your answer.
I think it's convincing and I'll think another way to work around it. Like using channels to make native libs for different platforms.
Do you have a way to test this case? I tried your method from your question using Observation but don't know how to check within the code level.

We just noticed that dart2js removes some getters that are used in our code and our Angular app gets MethodNotFound/not a function in runtime :( We have to run with -O0 now to make the app work. Any suggestions on how to understand the reason for dropping the live code? Thanks

I have a feeling v2.4.0 broke this for us.

@yoxel if your code is failing because dart2js is dropping some live methods then this would be a bug. please file a separate issue for it.

I am trying to squish a bug that exists in release mode but not it debug mode and was wondering if tree shaking might be part of the problem.  Is there a way to turn off tree shaking when using the 'Flutter build web' command?  I can supply the code sample if you wish.   See here:
https://github.com/flutter/flutter/issues/54026

Hi 2 years has passed - any updates? Thanks

@fzyzcjy are you asking from Web perspective (the issue has been labeled as mostly targeting Web) or Native perspective?
For native we know have package:vm_snapshot_analysis for analysing resulting binary size which gives you some insight into what got pulled into the resulting AOT snapshot. This information is also being exposed in Flutter Dev Tools.

@mraleph Wow I did not know that before! I will have a look at it! (I am asking the native)

@fzyzcjy fwiw I can't find any public documentation for the Code Size analysis views in Flutter Dev Tools (maybe because it is still being developed - or maybe I am looking in the wrong place. @kenzieschmoll might know where to look).

@mraleph I did a search and also did not find it. But the package looks promising!

Docs for the DevTools code size tool are here: https://flutter.dev/docs/development/tools/devtools/code-size

Hey @kenzieschmoll, thanks for sharing the docs.
Is it already available on Flutter 1.20.3? I'm trying to use it but I'm getting Could not find an option named "analyze-size".
I couldn't find anything about it on flutter build apk --help. Am I doing something wrong?

You need to be on 1.22.0-9.0.pre or greater, which should currently be on the dev branch

A related question: I write some native code (c++) and use dart:ffi to bind to Flutter. However, with only several functions it is 1.8MB size. Thus, I wonder some tools which is similar to vm_snapshot_analysis and can help me dig out which class/method/... takes space?
Thanks very much!

@fzyzcjy you can use https://github.com/google/bloaty for C++ code, alternatively there is also a tool in Dart SDK sources (https://github.com/dart-lang/sdk/blob/master/runtime/third_party/binary_size/src/run_binary_size_analysis.py) which you could try to use.

@mraleph Thanks very much! However, I have tried using bloaty, but it says most of the size is for TEXT region though I give it debug symbols... The issue: https://github.com/google/bloaty/issues/213

Beside of testing tree-shaking manually with devtools, is there an official doc to confirm how dart and flutter optimize code in general with tree shaking on android/iOS or not?
In this flutter doc, it doesn't say that tree shaking will be used for android/iOS.
Flutter will only do tree shaking when build for web: "The build is minified and tree shaking has been performed."
For non-web builds: "Compilation is optimized for fast startup, fast execution, and small package sizes."

Beside of testing tree-shaking manually with devtools, is there an official doc to confirm how dart and flutter optimize code in general with tree shaking on android/iOS or not?
In this flutter doc, it doesn't say that tree shaking will be used for android/iOS.
Flutter will only do tree shaking when build for web: "The build is minified and tree shaking has been performed."
For non-web builds: "Compilation is optimized for fast startup, fast execution, and small package sizes."

It's been 3 years, is there any update? thanks.

I've a related question on this https://github.com/dart-lang/sdk/issues/46282
Basically I'd like to know why the properties of a "country" are not tree shaken when used in a loop:
void main(List<String> arguments) {
  print(countries[0].name);
  // for (var country in countries) {
  //   print(country.name);
  // }
}

With the above commented, the properties of country are tree shaken but not when the for loop is uncommented.

In Flutter Web release mode, there is no doubt that dart2js supports tree-shaking in as it was mentioned here & here.
According to this post, I can 'safely' say that Flutter Engine supports tree-shaking in code & assets in Profile or Release mode.
It would be great if anyone from Flutter Team can verify this.

There is this (possibly outdated) tool which shows all of the code which made it into the compiled app: https://github.com/dart-lang/dump-info-visualizer


make version parameter optional in kitchen yml

Signed-off-by: kasif<EMAIL_ADDRESS>Description
This PR makes providing version attribute optional in the kitchen yml template
Issues Resolved

Check List

[x] All tests pass.
[x] All style checks pass.
[x] Functionality includes testing.
[ ] Functionality has been documented in the README if applicable

Should the readme be updated as well to reflect the now optional nature of the version attribute?

We need to make sure any docs update happen in https://github.com/test-kitchen/test-kitchen/blob/main/docs/content/docs/drivers/vra.md

Since this requires the new functionality in the 3.1.0 gem we need to make sure to dep on >= 3.1.0

@tas50 , updated the docs here https://github.com/test-kitchen/test-kitchen/pull/1857


License

Dear @qn7o ,
Congratulations for this awesome project.
I find it extremely useful and I want to re-use it in a Flask project I am working on.
Do you have any thoughts about the license?
In the current state (no license) no one can legally re-use it.
Here is an excerpt from GitHub:

You're under no obligation to choose a license. However, without a license, the default copyright laws apply, meaning that you retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work.

Hello @argysamo, thanks for the kind words and suggestion.
You're right, and I'll add a licence asap.
Please apologize my super-late answer.

Great news - thanks so much!
I will let you know, when I will re-use your software 😃

Great, please do ! :)


feat: Add TaskDecleration component

i wanted to add a task definition component in order to use with the Cron component. Being able to schedule tasks that regular lambdas don't work for.
This is the first part and I'm looking for some guidance on how to do this.

how abstracted do you want to go? in this i essentially copied the Service component and removed anything thats not relevant. I can remove the logic from Service that the TaskDefinition is doing i just didnt know if you wanted Cluster -> addService -> Service -> createTaskDefintion -> TaskDefintion. I did try. it was taking a while so i thought i can go back if thats how you wanted to do it if this PR is accepted

if you think this is a good idea i need to also change the Cron component which means it also has to be able to accept a task definition and run a task. do you want me to create a new component or rework the job arg?

https://www.pulumi.com/registry/packages/aws/api-docs/cloudwatch/eventtarget/#ecs-run-task-with-role-and-task-override-usage

I thought i'de be done by now. I'll create a new pr when i'm finished creating the cron


runtimetest: add root filesystem validation

Signed-off-by: Ma Shimiao<EMAIL_ADDRESS>

Hi @Mashimiao I just submitted a PR https://github.com/opencontainers/ocitools/pull/81 which does the same thing, but by using mount information.
I think it might be wrong to verify the readonly property of the root file system by using os.stat.
if you mount yourPartition -o /mnt/readonly-point and use os.stat, it might still have write permission. But when you touch a file in /tmp/readonly-point, it will tell:
touch: cannot touch 'a': Read-only file system

On Thu, May 26, 2016 at 03:43:54AM -0700, 梁辰晔 (Liang Chenye) wrote:

if you mount yourPartition -o /mnt/readonly-point and use os.stat,
it might still have write permission. But when you touch a file in
/tmp/readonly-point…

Ah, good point.  We should definitely be testing read-only by
attempting writes, because the per-file POSIX-mode permissions are
distinct from the per-mount filesystem options.

@liangchenye  @wking   re-implemented with pre-write

On Thu, May 26, 2016 at 09:47:37PM -0700, Ma Shimiao wrote:

@liangchenye  @wking   re-implemented with pre-write

I'll leave it to you and @liangchenye to decide whether this rerolled
version takes precedence over #81 ;).

@wking  Ah! I'll rollback my second commit in #81.

LGTM


Webpack issue

Hi,
I tried to use it to record live camera stream with a react app. I added a webpack config for the worker :
      {
        //test: /^webm-wor.*/,
        test: /webm-(.*)\.js(\.map)?$/,
        use: { loader: 'worker-loader' }
      }

But I get the following issue :
Child worker:
                             Asset      Size  Chunks                         Chunk Names
    ad9bb12747c6f5c41038.worker.js  60.2 KiB    main  [emitted] [immutable]  main
    Entrypoint main = ad9bb12747c6f5c41038.worker.js
    [./node_modules/path-browserify/index.js] 8.54 KiB {main} [built]
    [./node_modules/process/browser.js] 5.29 KiB {main} [built]
    [./node_modules/webm-wasm/dist/webm-worker.js] 39.8 KiB {main} [built]

    WARNING in ./node_modules/webm-wasm/dist/webm-worker.js
    Module not found: Error: Can't resolve 'worker_threads' in 'C:\Projets\Deepsense\deepsense-js-sdk\node_modules\webm-wasm\dist'
     @ ./node_modules/webm-wasm/dist/webm-worker.js

    ERROR in ./node_modules/webm-wasm/dist/webm-worker.js
    Module not found: Error: Can't resolve 'fs' in 'C:\Projets\Deepsense\deepsense-js-sdk\node_modules\webm-wasm\dist'
     @ ./node_modules/webm-wasm/dist/webm-worker.js 1:579-592

I also edited the 'glue code' manually in webm-wasm.js and set
var ENVIRONMENT_IS_WEB=true; var ENVIRONMENT_IS_WORKER=true;
But it changes nothing.
Do you have an idea about this issue and how to solve the dependency with 'fs' ?
Thanks !
Olivier

It seems like you might be using an old version of Node. Can you try updating it?

Thanks for your prompt reply. Just Great!
I've just updated to the latest version
v12.18.1
But it changes nothing. Same output. Same issue.   (note: my previous node version was not so old : it was v12.13.1)

I’m surprised that webpack want’s to shim fs — I don’t really need it. BUt no, I am not that familiar with webpack so don’t know how to fix this, sorry :(

I'm getting the worker_threads issue in node v14.17.0, @OlivierR1 did you ever fix this or did you move on?

In webpack 5, do:
  resolve: {
    fallback: {
      fs: false,
      worker_threads: false
    }
  }


Update German Translations

Hello @eusonlito
I saw you've added some new features, with new German translations. For that occasion I took some time to fix a few translation mistakes 😄.
I also found the official German translation for the laravel validation and used it (resources/lang/de/validation.php).
Some explanation:

For "create" in the context of an app it is unusual to use "Schaffen", most applications use the word "Erstellen".
Save is in the context of an app "Speichern". "Retten" means in German "to rescue".
For Icon we are used to use the English word, but "Symbol" as you have used at some places is also okay, thus I went with that. "Ikone" is a religious figure not an Icon 😉.
For Tag we are also used to use the English word, but "Label" as you have used at some places is also okay, thus I also went with that.

That's it for now :). If I find more while using the password manager, I'll create a new pull request or use that new translation service you are creating (when you add an guide how to use it) 😄.
Also feel free to message me, when you need someone to translate new features into German (via mail, or @).
Kind regards
Nintend0d0

Thanks a lot!


lib/image: added SkipTLS option for source and destination separately

Add separate options for source and destination skip tls verification.
Since SkipTLS verification was limited to source before, replaced SkipTLS option with SrcSkipTLS option wherever SkipTLS option is set.

Thanks!


new ssf.Window has a different default location with OpenFin

With electron a new window defaults to having the same location / bounds as the parent:
const window = new ssf.Window({ url: 'http://localhost:8080/popup.html', name: 'bob', autoShow: true });

With OpenFin it does not.

It's also quite different in the browser also!

If no x or y value is passed into the constructor, the window should display in the center of the screen. This seems to work for me in both Electron and OpenFin and browser, although browser is slightly off which I will fix. Wonder if this is a mac specific issue?