Numbered list wrong numeration after increase + decrease indent

Is there an existing issue for this?

[X] I have searched the existing issues

Flutter Quill version
master
Steps to reproduce

Increase the numbered list indent 3 times, until the numbering style is the same again.
For the last list item decrease its indent 3 times.

Expected results
The last item numeration start from 1.
Actual results
The last item numeration start from 2.
Code sample
Code sample
[Paste your code here]

Screenshots or Video

Screenshots / Video demonstration

Logs
Logs
[Paste your logs here]

Part of the confusion might be that indents are limited to 5 levels (no idea why).
Ordered lists seem to have only 3 levels so it repeats the sequence.
When you indent 3 times you get back to '1.' However, this is not the same as the un-indented '1.'
So, the next outdented list item will be '2.'. That is correct (but not what you want!)
It appears that the first list item is implicitly set to 1 even if it is shown as an indented value.
For example: start a list and indent to give the first item 'a: text'. Enter another list item, outdent it and it will be '2. next'.
I am not familiar with the code, but I guess that there is an overlap between indentation of text and indentation of list items.
Am I correct that you want to create a normal list, but have it indented?
I see several approaches:

Resolve the confusion between indentation and list-depth
Have 5 levels of list indentation:  1,  a,  i, and then what?
I am sure there will be some other way....

I was thinking that it might be more logical if indentation of the first item could be handled as an indentation of the whole list.
The first item would then always be '1.' and you would not be able to 'outdent' the second item. (Avoids the issue in your screen shot)
Indentation of subsequent items would then follow the expected pattern 'a', 'i' ...
Allowing the user to pick a different starting label would be tricky. But word processors allow starting a list at '4' (for example). I often have to do this when continuing a list after an interruption.
Of course, it is easy for me to suggest this, as I have no idea if this can be done...

Also, delta to HTML converter treats such cases as if "text" is not indented too

This could be because the way Delta handles its lists is different from HTML which makes the conversion really complicated and has to be generalized.

Of course, it is easy for me to suggest this, as I have no idea if this can be done...

Literally me

I guess we need to add more variables that reference the list indentation level to fix this more easily. I did this in flutter_quill_to_pdf and it solved exactly the same problem as this one since it only updates the list number depending on the indentation it has and resets it the same way.

Looks good - go for it.
My only question is: What if someone in the future changes the maximum allowed indentation level?
Could you use numberIndentList[x] where the size of the array is a constant for max indentation also referenced in limiting indentation level.
That may also simplify the code a bit.

@AtlasAutocode  i fix it. I just need to add this condition to clear correctly the indents:
      if (prevNodeOl && attrs[Attribute.list.key] != Attribute.ol || attrs.isEmpty) {
        clearIndents = true;
      }

This simple condition clear correctly the indent and fix the numeration of the list.

There is a programming concept called 'Extreme Programming' which notes that: 'bugs are always found in code that was written'.
Therefore: 'Write the least amount of code that solves the problem'
2 lines is good!

But how does it solve the issue

It doesn't fix it directly. I mean that while creating that Feature, I happened to find how to fix the error. It was just necessary to add an additional check in _buildChildren of raw_editor_state so that it would be reset if necessary

Using customLeadingBlockBuilder you can use config.getIndexNumberByIndent; to get the correct index for ordered lists (you can assume that config is the param passed by  customLeadingBlockBuilder  that contains this method).

Do you mean that you have

Yeah, that's the result that i getting. But, if you have the lastest version of the package, and this persist, please show a video or steps to reproduce it.

I'll take a look.


Using period to find the duration between datetimes gives a wrong answer

When I try to work with duration between Datetimes using datetime.as_period, the value is always wrong. I found that the number of days is wrong, in particular.
These test cases fail:
import gleeunit
import gleeunit/should
import tempo/date
import tempo/datetime
import tempo/period

pub fn main() {
  gleeunit.main()
}

pub fn tempo_datetime_period_test() {
  let test_datetime = datetime.literal("2024-12-11T08:55:32.424420250Z")
  datetime.as_period(test_datetime, test_datetime)
  |> period.as_seconds
  |> should.equal(0)
}

pub fn tempo_date_period_test() {
  let test_date = date.literal("2024-12-11")
  date.as_period(test_date, test_date) |> period.as_days |> should.equal(0)
}

Thank you for the report!
When calculating the difference between days, it was not accounting for the fact that Jan of the next year is ahead of Dec of the current year, yet has a lower int representation. This issue only presented itself when comparing dates in December of the same year.
It should be fixed in release 5.1.1
I think I am going to deprecate month.next and month.prior and add a month_year.prior and month_year.next, so that users can only adjust months in the context of a year to hopefully avoid this mistake I made.
Cheers!


CompatHelper PRs don't trigger Github CI action

This is a fantastic tool, thank you for creating and maintaining it. Recently, I switched to CI via Github actions, and, unfortunately, CompatHelper's PRs don't trigger the CI action. This is the code in the ci.yml
on:
  push:
    branches:
      - master
    tags: '*'
  pull_request:

that I found somewhere in the ecosystem and simply copied it. Do I need to add anything? Is it related to the fact that CompatHelper is not a "collaborator" of the package, and the same problem is likely to occur with any "external PR"? Any guidance would be much appreciated.

This is a known issue. GitHub Actions are not permitted to trigger other GitHub Actions.
The solution is to use a personal access token (PAT).
We need to document this better.
See also https://github.com/bcbi/CompatHelper.jl/issues/188

This is fixed now.
CompatHelper now supports SSH deploy keys. The solution is to use an SSH deploy key. See the CompatHelper README for full details.


authMiddleware not seting up /api/login  endpoint

At first it was working alright util I install a bunch of node deps which cause conflict. I'm not sure which one and why but since then i have been getting 404 not at /api/login.

Same middleware.ts worked at first.
If you can help

I enable debug, and it seems the cookies was not sent
o user is signed in  GET / 200 in 4252ms  ✓ Compiled in 814ms (741 modules) middleware run for login paths ⓘ next-firebase-auth-edge: Handle request          path: /signin ⓘ next-firebase-auth-edge: Missing authentication cookies ⓘ next-firebase-auth-edge: Token is missing or has incorrect formatting. This is expected and usually means that user has not yet logged in          reason: MISSING_CREDENTIALS  ○ Compiling /signin/[[...signin]] ...  ✓ Compiled /signin/[[...signin]] in 1072ms (2144 modules) middleware run for login paths ⓘ next-firebase-auth-edge: Handle request          path: /signin ⓘ next-firebase-auth-edge: Missing authentication cookies ⓘ next-firebase-auth-edge: Token is missing or has incorrect formatting. This is expected and usually means that user has not yet logged in          reason: MISSING_CREDENTIALS

There problem was from my middleware.ts, but can I can't seem to find what wrong
import { NextRequest, NextResponse } from "next/server";
import { authMiddleware, redirectToHome, redirectToLogin } from "next-firebase-auth-edge";
import { clientConfig, serverConfig } from "@/config/config";

const PUBLIC_PATHS = ['/signin', '/signup', "/reset-password"];
const PROTECTED_PATHS = ['/profile', '/settings', '/dashboard'];

export async function middleware(request: NextRequest) {
    if (PROTECTED_PATHS.some(path => request.nextUrl.pathname.startsWith(path))) {
        return authMiddleware(request, {
            loginPath: "/api/login",
            logoutPath: "/api/logout",
            apiKey: clientConfig.apiKey,
            cookieName: serverConfig.cookieName,
            cookieSignatureKeys: serverConfig.cookieSignatureKeys,
            cookieSerializeOptions: serverConfig.cookieSerializeOptions,
            serviceAccount: serverConfig.serviceAccount,
            handleValidToken: async ({ token, decodedToken, customToken }, headers) => {
                return NextResponse.next({
                    request: {
                        headers
                    }
                });
            },
            handleInvalidToken: async (reason) => {
                console.info('Missing or malformed credentials', { reason });

                return redirectToLogin(request, {
                    path: '/signin',
                    publicPaths: PUBLIC_PATHS
                });
            },
            handleError: async (error) => {
                console.error('Unhandled authentication error', { error });

                return redirectToLogin(request, {
                    path: '/signin',
                    publicPaths: PUBLIC_PATHS
                });
            }
        });
    }

    if (PUBLIC_PATHS.some(path => request.nextUrl.pathname.startsWith(path))) {
        return authMiddleware(request, {
            loginPath: "/api/login",
            logoutPath: "/api/logout",
            apiKey: clientConfig.apiKey,
            cookieName: serverConfig.cookieName,
            cookieSignatureKeys: serverConfig.cookieSignatureKeys,
            cookieSerializeOptions: serverConfig.cookieSerializeOptions,
            serviceAccount: serverConfig.serviceAccount,
            handleValidToken: async ({ token, decodedToken, customToken }, headers) => {
                return redirectToHome(request);
            },
            handleInvalidToken: async (reason) => {
                return NextResponse.next();
            },
            handleError: async (error) => {
                return NextResponse.next();
            }
        });
    }

    return NextResponse.next();
}

export const config = {
    matcher: [
        "/profile",
        "/settings",
        "/dashboard",
        "/profile/:path*",
        "/settings/:path*",
        "/dashboard/:path*",
        "/",
        "/signin",
        "/signup",

    ],
};

I need help

Hey @oforigyimah!
/api/login is handled by the Middleware, but your config.matcher does not expose this route. You're getting 404, because Next.js skips middleware for /api/login route.
You should update your config to this:
export const config = {
    matcher: [
        "/profile",
        "/settings",
        "/dashboard",
        "/profile/:path*",
        "/settings/:path*",
        "/dashboard/:path*",
        "/",
        "/signin",
        "/signup",
        "/api/login",
        "/api/logout"
    ],
};

Okay, thank you.
So, do I have to provide a specific string in the config.matcher for it to work?

Yes, you should add those two strings to matcher:
 "/api/login",
 "/api/logout"

thanks


Describe what $HOST is in the documentation

Maybe it should be exported in some way like for $NAMSPACE and $USER_ID

@lulf can we close this after you addition of $OPENSHIFT_MASTER instead of $HOST ?

Yes, I think its more obvious what it is now.


Fix copyright overrides file

What does this PR do?
Remove duplicates from .copyright-overrides.yml, and fix some incorrect copyrights.
Motivation
Have correct copyrights.
Yaml maps cannot contain duplicate keys.
Describe how to test/QA your changes
Possible Drawbacks / Trade-offs
Additional Notes

/merge


Strange icons behavior on Android 11

Hi, I am facing with a strange behavior with two icons on Android 11 (tested also with Android 14 the same icons and no problems occurred). I am using these couple of icons:  add_notes and export_notes copied directly from the website as .kt file and the results are the following

(Sorry for the low quality, but I hope they are easy to read to understand the errors)

Thanks for the report. How are you using the icons? Could you share a snippet?

Yes sure!

add_notes:

FloatingActionButton(
    onClick = { onClick }
) {
    Icon(
        imageVector = AddNotes,
        contentDescription = null
    )
}

export_notes:

IconButton(
    onClick = {  onClick }
) {
    Icon(
        imageVector = ExportNotes,
        contentDescription = null
    )
}

Hi, any updates about this issue?

Same issue with the empty_dashboard icon

No updates. Currently all my resources are focus on an other project. As soon as that is sorted (probably this week) I will be able to have a look.

Thank you!


WMS ID: 1840

Add here your WMS ID
1840
General requirements

Information in the workshop is adequate and updated
Code is correct and working
Links are correct
Make sure you enter the help email link in your manifest.json
Please make sure WMS URLs are updated as needed after your PR is approved

Checklist - Refer to the QA document for the complete list
Please confirm that the following is completed before submitting your PR

[ ] All filenames are lower case (including folders, images, files, etc.)
[ ] Filenames are descriptive
[ ] Your workshop folder structure should be similar to the one used in the sample workshop (https://github.com/oracle-livelabs/common/tree/main/sample-livelabs-templates/sample-workshop)
[ ] Are you using multiple versions (desktop/, sandbox/, tenancy/)? Make sure that each of them contains a manifest.json and an index.html
[ ] Image references in markdown contain an alternate text

I reviewed the Livelabs to comply with the Quarterly QA cycle  2023

Anna
I created a new pull requests and started from scratch to not have the files with tenancy name in the history
https://github.com/oracle-livelabs/database/pull/192
best regards,
Philippe
From: Philippe Fierens @.>
Date: Thursday, 16 March 2023 at 17:28
To: oracle-livelabs/database @.>, oracle-livelabs/database @.>
Cc: State change @.>
Subject: Re: [External] : Re: [oracle-livelabs/database] WMS ID: 1840 (PR #189)
Ok thank you for the feedback will have a look
Sent from Outlook for iOShttps://aka.ms/o0ukef

From: Anna Haikl @.>
Sent: Thursday, March 16, 2023 4:22:49 PM
To: oracle-livelabs/database @.>
Cc: Philippe Fierens @.>; State change @.>
Subject: [External] : Re: [oracle-livelabs/database] WMS ID: 1840 (PR #189)
@ahaikl requested changes on this pull request.
Noticed that in the 01-resmgr-compartment image that the tenancy name is visible. This should be blurred or covered since it is sensitive info. Please double check other images as well.
—
Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https:/github.com/oracle-livelabs/database/pull/189*pullrequestreview-1344073000__;Iw!!ACWV5N9M2RV99hQ!NQDzVLMJVEztOgNCIGCK3F8SLHEHW2Jcj_QrmTf006vbMh3dErbRTN7mCKGatkqLHeiEKY0tOBaQ5thLuK4fRL87Kk_cRg$, or unsubscribehttps://urldefense.com/v3/__https:/github.com/notifications/unsubscribe-auth/A6PNTOD42XLG5RQWZW2JAX3W4MV4TANCNFSM6AAAAAAV45BUOA__;!!ACWV5N9M2RV99hQ!NQDzVLMJVEztOgNCIGCK3F8SLHEHW2Jcj_QrmTf006vbMh3dErbRTN7mCKGatkqLHeiEKY0tOBaQ5thLuK4fRL9VsGQlLg$.
You are receiving this because you modified the open/close state.Message ID: @.***>


Configure Tile Server for each Project

Is your feature request related to a problem? Please describe.
Currently we are using martin as a tile server. Because we will have now multiple projects we need different endpoints for each project.
Describe the solution you'd like

The tile layer (physical_stores)(https://tiles.ehrenamtskarte.app/rpc/physical_stores.json) should be copied. The new copy should have the name bayern.ehrenamtskarte.app-physical_stores.
A new tile layer nuernberg.sozialpass-physical_stores needs to be created

For each layer we need to define an SQL query which queries the stores based on their project ID. This maybe required to change the definition of several pgsql functions.
Describe alternatives you've considered
Maybe we want to switch to the t-rex tile server with this task (#458). Please check which tile server offers easier configuration
Additional context
None

done in #576


introduce convert_to_secret() to bananadev llm

Description: Per #12165, this PR add to BananaLLM the function convert_to_secret_str() during environment variable validation.
Issue: #12165
Tag maintainer: @eyurtsev
Twitter handle: @treewatcha75751

@hwchase17 please re-review. Thanks!


Mysterious comment generated for fn bar(self: X<'a, 'b>, y: Y) {}

I am having trouble to describe this in words - so it might be a duplicate issue I could not find.
 impl X {
     fn foo(x: X<'a, 'b>, y: Y) {}
-    fn bar(self: X<'a, 'b>, y: Y) {}
+    fn bar(self: X<'a, 'b>,
+           // 'b>,
+           y: Y) {
+    }
 }

Note that only methods like bar are affected, not static function foo. The issue disappears, if I omit one parameter or lifetime from bar.
Of course this is a reduced example which would never compile - but I experienced this in working code and tried to boil it down to the most simple form.

I admit that it is probably bad style to provide the self type as it is redundant with the line impl .... I just removed the redundant type annotation.
Alternative behaviour for rustfmt could be to just remove this redundant type hint - but I am not sure.

Cool! We're trying to find the start of the second argument by searching for the first comma, but that evidently does not work here. We should probably take the last comma before the second argument.


Check host exists in rolling-update's deploy step

@rohansingh @gimaker Any reason we weren't doing this before?

what problem does this address?

seems like this could only happen in certain racy edge cases, and then the behaviour would be that the job fails to reach the running state?

Why did we do it in getUndeployOperations()?

I have no clue to be honest.

@rohan?
On Wed, Jul 29, 2015 at 1:23 PM, Staffan Gimåker<EMAIL_ADDRESS>wrote:

I have no clue to be honest.
—
Reply to this email directly or view it on GitHub
https://github.com/spotify/helios/pull/594#issuecomment-126025826.

--
David Xia
Software Engineer
<EMAIL_ADDRESS>

Hey! As much as I would love a job at Spotify, I’m actually not the @rohan you’re looking for. GitHub gave me this username about a year ago, and I’m still cleaning up the merge conflicts :)
Rohan
On Wed, Jul 29, 2015 at 10:26 AM, David Xia<EMAIL_ADDRESS>wrote:

@rohan?
On Wed, Jul 29, 2015 at 1:23 PM, Staffan Gimåker<EMAIL_ADDRESS>wrote:

I have no clue to be honest.
—
Reply to this email directly or view it on GitHub
https://github.com/spotify/helios/pull/594#issuecomment-126025826.

--
David Xia
Software Engineer
<EMAIL_ADDRESS>Reply to this email directly or view it on GitHub:
https://github.com/spotify/helios/pull/594#issuecomment-126026097

@rohan Haha, sorry. @rohansingh ^

:+1:


Unable to successfully play rosbag containing topics of type realsense_msgs/Notification

Hello.
We are developing a robot with D435i.
I have been concerned for some time that the rosbag recorded using realsense-viewer may not play back properly.
Therefore, this Pull Request proposes a fix to resolve the issue and successfully play rosbag.
I would like to discuss whether this fix is appropriate, as it may affect other parts of the system that are not related to ros.
Environment I used

Details

Camera
D435i（Connected via USB2.0）

OS
Ubuntu 18.04 LTS

ROS
Melodic

CPU
Intel® Core™ i7-8665U CPU @ 1.90GHz × 8

Commands used（When recording rosbag）
realsense-viewer

Commands used（Playing back recorded rosbags causes errors）
roscore
rosbag play space_existence_topic_notification.bag

Error log
ikebe@ikebe:~$ rosbag play space_existence_topic_notification.bag
[ INFO] [1659491276.715054503]: Opening space_existence_topic_notification.bag

[FATAL] [1659491276.779427919]: Character [ ] at element [38] is not valid in Graph Resource Name [/device_0/sensor_1/notification/Frames Timeout].  Valid characters are a-z, A-Z, 0-9, / and _.

Detailed explanation of this issue
ros does not consider names containing spaces.
Reference)

http://wiki.ros.org/ja/Names
 ros/ros_comm/clients/roscpp/src/libros/names.cpp

Therefore, if you create a topic that contains spaces, it will fail when loaded.
However, topics of type realsense_msgs/Notification
All of them contain whitespace in the suffix.
I can solve this by using rosbag filter to remove the topic, but
However, we believe that it is difficult to parse realsense_msgs/Notification type topics without modification.
Therefore, we have proposed a modification to create topics without spaces.
Reproduction method
How to create a rosbag containing topics of type realsense_msgs/Notification

Environment building
Build and install librealsense2 SDK

git clone https://github.com/IntelRealSense/librealsense
./scripts/setup_udev_rules.sh
cd librealsense
mkdir build && cd build
cmake .. -DBUILD_EXAMPLES=true
make -j8
sudo make install
sudo ldconfig

Launching realsense-viewer

realsense-viewer

Rosbag records（To have a topic of type realsense_msgs/Notification created, intentionally connect the PC to the D435i via USB 2.0.）

https://user-images.githubusercontent.com/40545422/182510951-dadb54d1-f4be-4d0b-884b-dfa3f28380f9.mp4
Experiment
Error

If you run the source in the master branch

https://user-images.githubusercontent.com/40545422/182512186-95c34c5d-f175-4fb0-bb36-e5e2ef4461af.mp4
If modified

If the source in the master branch reflects this modification
In the modified source, rosbag can contain topics of type realsense_msgs/Notification that do not contain spaces.

https://user-images.githubusercontent.com/40545422/182512131-ee19bb12-7668-483d-9690-53a1098378bb.mp4

@uhobeike  thanks for the PR,
As I know the SDK use a customized version of the ROSBAG protocol.
I suggest to try playing the file using the RS ROS API.
Anyway, the development team is currently focused on ROS2 development and we will happily try to help if you see an issue on the ROS2 wrapper.


Handle EPERM errors when renaming files on windows

This came from the discussion in npm/npm#12333. When running npm install in our CI system very often we'll see EPERM errors at the point when npm tries to populate tarballs into its cache. When we check the cache directory the tarball does exist and is valid.
This PR updates fs-write-stream-atomic to not throw EPERM errors on rename if the platform is windows and the target file exists.

+1 - thanks for this, @codeimpossible!

Hey @iarna, I'd love to get your thoughts on this PR, thanks in advance!

I'm pretty uncomfortable with this because it means that the rename failed which means that the file we were trying to atomically write? DIDN'T GET WRITTEN. I would think that would be cause for an error, no? Certainly the way we use this in npm, if we get called back with a success we need a GUARANTEE that the file we wrote is the one actually on disk.
Maybe as fallback unlink the destination and try again? That way when this calls back the version of the file it wrote is the one actually on disk.
Alternatively if you have reason to believe that these files have the same contents we could try verifying that?

This is turning out to be a complicated issue, it seems to be on the FS leven in Windows, the report of the failing of the write seems incorrect most of the time, but we can't be sure that it is.
Unlinking the file seems very cumbersome to me, the fact that we can't pinpoint the cause of the issue will give us no guarantee on the amount of tries it will take before the rename will succeed. And as we know the error is most of the time incorrect so it will cause overhead most of the time.
I like the idea of verifying the contents of the file, maybe do a MD5 check on both files? That way we know for certain that the files are identical.

I'm pretty uncomfortable with this because it means that the rename failed which means that the file we were trying to atomically write? DIDN'T GET WRITTEN. I would think that would be cause for an error, no? Certainly the way we use this in npm, if we get called back with a success we need a GUARANTEE that the file we wrote is the one actually on disk.

Hey @iarna, during my testing 100% of the time we received a EPERM failure during rename in npm on windows the target tarball existed and had the same sha as the downloaded tarball - i'm not sure why we received these EPERM failures but they are very consistent for us.

Maybe as fallback unlink the destination and try again? That way when this calls back the version of the file it wrote is the one actually on disk.
Alternatively if you have reason to believe that these files have the same contents we could try verifying that?

You're right, giving a thumbs up without verifying here is not good. I think @wvankuipers suggestion of performing a sha comparison of the files is the way to go since it wouldn't fail due to another false EPERM error and would guarantee that the files are identical.

closing this since #14 is more up-to-date


feat: add a command or parameter to allow merging of haplotype and genotype VCFs

Or, at the very least, we could say something about the proper bcftools concat command in the docs
Internally, the way we would implement this:

[ ] Add a merge() method on the Genotypes class that merges a set of genotypes with another set of genotypes.

@wgonzalezrivera, can you paste the bcftools command that you used here?

bcftools concat -a snps.vcf.gz haplotypes.vcf.gz -Oz -o new_file.vcf.gz

I just wanted to add a quick note that I've created a script to do this much more quickly with PGEN files!
https://github.com/CAST-genomics/haptools-paper/blob/main/workflow/scripts/merge.py
The script uses the haptools API

added in #210 which was merged into main in #209


support consumption plan as default

This is pr is to make the AZD template support both ASA consumption plan and standard plan, and the default option will be the consumption plan.
To test it, you can run:
mkdir ASA-Samples-Event-Driven-Application
cd ASA-Samples-Event-Driven-Application
azd auth login
azd config set alpha.springapp on
azd init --template https://github.com/yiliuTo/ASA-Samples-Event-Driven-Application/ -b consumption-default
azd up

The template by default uses consumption plan, and if users want to use standard, they can set azd env set PLAN standard then run azd up. If users have already provisioned the resources with the consumption plan and want to try the Standard plan, they need to run azd down first to delete the resources, and then run azd env set PLAN standard and azd up again to provision and deploy.

We will not merge this pr until the corresponding MS doc gets merged. cc @moarychan and @Netyyyy


can't import astetik without internet connection

When doing import astetik the issue is with countries.csv. Will have to look for a better way to do this.

Ran into this today. Would it be possible to add a countries.csv.gz into astetik\extras simply as a data file that's included with the code? A gzipped CSV is about 5K as opposed to 21k unzipped.  Pandas does fine with gzipped csvs. If it's bundled it works around this problem for users like me who would like to use Talos behind an authenticated proxy or on an intranet server.

Looks like this is already fixed:
/Users/mikko/Documents/GitHub/astetik/astetik/utils/country_code.py
It is in fact loading it from extras. If it for some reason throws an error (I tried on my local machine and it didn't, only then it tries to download from online). I've move the respective imports inside the function, so they should not load unless the plot itself is loaded? If there is still issue, could add another exception which simply does nothing (if online also fails).

The file is there in git, but I don't think it makes it into the source package in PyPi.org.
I downloaded the latest package from PyPI.org: https://pypi.org/project/astetik/#files and the countries.csv is not included in extras.

I'm not an expert in Python packaging, but perhaps there's some changes that need to be added to setup.py to include non .py files? https://python-packaging.readthedocs.io/en/latest/non-code-files.html

Nevermind... I'm clearly not an expert in packaging..
The setup.py has package_data={'astetik.extras': [*]} which should fix this issue. I'm just curious why the PyPi.org package doesn't have the data.
Per https://docs.python.org/3/distutils/setupscript.html#distutils-installing-package-data

I am still affected by this issue. I get
KeyError: 'astetik\plots\..\extras\countries
both when installing from pip and when runing setup.py
The weird thing is that the files seems to be there in the .egg file, so I do no know what is going on
I'm on windows 10 if it matters

This should now go away finally :)

Excelent

It is so. Now it's possible to import astetik without getting the internet connection error. You just have to make sure to have astetik=v.1.9.8.


Add build step for Swift package

Resolves #137.
This adds a build step to the Makefile in libs/sdk-bindings which will create a fully configured Swift package in libs/sdk-bindings/bindings-swift.
This package can then be added to any Xcode project by simply dropping the folder bindigns-swift folder into the project. It can also be used by other Swift packages as a local dependency. The approach is inspired by the way bdk ships its Swift bindings.
Another cool thing that bdk does is automatically push a fully configured Swift package to a separate repository using GitHub Actions. It would be cool if we could do that to. That way the Breez SDK could be used without anyone needing to build it manually. Instead, people could just add the repo URL to their project and Xcode/SPM would do the rest.
I'd say we do this step by step, though. This PR only adds the build step to create a local Swift package. Imo, setting up and configuring the hosted package in a separate repo can be a follow up PR if we agree that it makes sense.

👉 I removed the old swift-ios and swift-darwin build steps. Let me know if I should add them back.

@cnixbtc This is great and I will go over it in more details later.
We should add the removed build steps as they are used in the sdk-react-native build.
Also it would be great if you can push to a branch in breez repo so the CI will run.

Closing in favor of #172.


⚠ Bofrost.lu has degraded performance

In 70e16ac, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1777 ms

Resolved: Bofrost.lu performance has improved in ec4d18d after 6 minutes.


Documentation: Private Packages page is down

https://sandpack.codesandbox.io/docs/guides/private-packages
^ Just a heads up, this page is throwing a Page not Found as of this afternoon.

Thanks for letting us know!


Replays do not always work correctly

When an Innovation game is replayed, it doesn't always work correctly.

https://boardgamearena.com/bug?id=8858: Cards leaving the score pile don't seem to actually move.
https://boardgamearena.com/bug?id=18582: Fission doesn't actually move cards when they are supposed to be returned.
https://boardgamearena.com/bug?id=25058: Cards don't get re-ordered using Publications.

In general, the above theme is that during replay, cards don't always move locations like they are supposed to.

I easily replicated the Fission bug. I found the following error in the console:

The problem might be related to the fact that after the first move in the replay, it's no longer possible to open the "(click to look at the cards)" score card popup with this error:
Javascript error:
During callback: onclick / clic_display_score_window
Cannot read properties of null (reading 'style')
TypeError: Cannot read properties of null (reading 'style')
at c (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/dojoroot/dojo/dojo.js:1:52633)
at Object.i.set (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/dojoroot/dojo/dojo.js:1:53331)
at Object.e.style (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/dojoroot/dojo/dojo.js:1:70511)
at Object.show (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/modules/layer/ly_studio.js:1:458964)
at Object.show (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/modules/layer/ly_studio.js:1:322102)
at Object.clic_display_score_window (https://studio.boardgamearena.com:8084/data/themereleases/current/games/innovation/999999-9999/innovation.js?1640696725346:2910:40)
at Object. (https://studio.boardgamearena.com/archive/replay/211223-1100/?table=331397&player=2356652&comments=2356652;:2110:50)
at HTMLParagraphElement. (https://studio.boardgamearena.com:8084/data/themereleases/211223-1100/js/dojoroot/dojo/dojo.js:1:23201)
Script:
Url: https://studio.boardgamearena.com/archive/replay/211223-1100/?table=331397&player=2356652&comments=2356652;#
BGA version<PHONE_NUMBER>
U=2356652
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36

I found a fix! I'll leave this issue open until we actually deploy the fix to production (which may be at the same time as we release the expansion).

This was deployed a few weeks ago.


Not getting full call tree in Spring webflux (netty server) application

Pinpoint Version: 2.2.2
Java Version: 1.8
Spring Boot version: 2.3.4.RELEASE
We are using Spring Webflux with netty server.
Call tree is incomplete.  Only security context and filter class's methods are being logged in tree. Once the request reaches the controller method after that nothing is being logged in call tree.
as per the doc: https://github.com/pinpoint-apm/pinpoint/blob/master/plugins/spring-webflux/README.md
I have uncommented following lines in /pinpoint-agent/profiles/release/pinpoint.config  file:
profiler.spring.beans.2.scope=post-processor profiler.spring.beans.2.base-packages= profiler.spring.beans.2.name.pattern= profiler.spring.beans.2.class.pattern= profiler.spring.beans.2.annotation=org.springframework.stereotype.Controller,org.springframework.stereotype.Service,org.springframework.stereotype.Repository

@emeroad Please help. I am stuck here.

Ran into the same problem
As long as the request is modified in the filter, the next level link cannot be obtained

@lijian69017436 Did you find any solution for it? If yes, please share your config file here.

@emeroad Any fix for this yet?

Can you provide a demo project?
We need more detailed information.

@emeroad Please check. Not able to see a complete trace of a transaction. For example, method calls in
SecurityContextRepository.java, MdcFilter.java, ResourceListener.java files are not visible.
In the actual project, call to SecurityContextRepository and MdcFilter.java are visible but calls to methods in various service classes are not visible. This is very absurd behavior. Not able to figure out.
Command to execute Jar:
nohup java -jar -javaagent:/home/pinpoint-agent/pinpoint-bootstrap-2.2.2.jar  -Dpinpoint.applicationName=demo -Dpinpoint.agentId=demo-app1 demo-0.0.1-SNAPSHOT.jar &> nohup.out &
Sharing the source code. JAR can be found inside target folder.
demo.zip

@emeroad Did you get a chance to look into it?


Kotlinize dynamic-links, firebaseoptions, storage and tasks

I saw #5 and #12 and the resulting Kotlin Activities (looks great btw). So I was wondering if I could do the same for the dynamic-links, firebaseoptions, storage and tasks code snippets.
Just let me know and I'll start working on a PR

@rosariopfernandes thanks for the offer!  I'd love to get Kotlin contributions for those samples, and I'd happily review the PRs.
Before you start though, some notes:

Please keep the PRs small so that they're easy to review, so maybe just one module at a time.
We are currently working through some issues with generating Kotlin reference docs.  We want to get ref docs published before we add the Kotlin snippets to the documentation guides.  So while developers will be able to look at this repo and learn from your code, it could be a while before you see it in the main documentation. It's because of our technical issues, not because we don't appreciate your effort!

Thank you  @samtstern ! Understood, I'll send small PRs with one module at a time.

@rosariopfernandes thank you so much for the quick and high-quality work!

It was my pleasure. Always glad to contribute to the Firebase Community! :)
Good Luck for the team working on the KDocs issue! Can't wait to see the Kotlin ref docs on the site.


Fixes typo

macOC -> macOS
Well, the change is next to nothing but still...

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@umitakkaya  Nice fix, thanks!


encountered: i/o timeout、502 Proxy Error

1 failed to do request: Post "https://www.google.com/": read tcp <IP_ADDRESS>:37197-><IP_ADDRESS>:22225: i/o timeout                   2 502 Proxy Error: server_error Failed to establish connection with peer                                                                                3 context deadline exceeded (Client.Timeout exceeded while awaiting headers)

same


wasmtime: 0.40.0 -> 0.40.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/bytecodealliance/wasmtime/releases.
meta.description for wasmtime is: "Standalone JIT-style runtime for WebAssembly, using Cranelift"
meta.homepage for wasmtime is: "https://github.com/bytecodealliance/wasmtime"
meta.changelog for wasmtime is: ""
Updates performed

Rust version update

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.40.1 with grep in /nix/store/agy5pkh49nk2law0h0hdsqm1z0n39yx6-wasmtime-0.40.1
found 0.40.1 in filename of file in /nix/store/agy5pkh49nk2law0h0hdsqm1z0n39yx6-wasmtime-0.40.1

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
wasmtime

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/agy5pkh49nk2law0h0hdsqm1z0n39yx6-wasmtime-0.40.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A wasmtime https://github.com/r-ryantm/nixpkgs/archive/848c87cf983b4a926c6d28b556c803e0a2668a8a.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/agy5pkh49nk2law0h0hdsqm1z0n39yx6-wasmtime-0.40.1
ls -la /nix/store/agy5pkh49nk2law0h0hdsqm1z0n39yx6-wasmtime-0.40.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

wasmtime

Maintainer pings
cc @ereslibre @matthewbauer for testing.


RedissonMap.isEmpty is inefficient

RedissionMap.isEmpty adopts the default AbstractMap.isEmpty, which checks size()==0. RedissionMap.size() iterates all keys (even with pattern), which is inefficient with large HASH.
Suggest to override RedissonMap.isEmpty() which checks iterator().hasNext() instead.
Not sure whether this optimization applies to other RMap implementation.
Redisson version: 3.13.6

Without an enhancement, developer needs to use the following workaround:
        String pattern = "mykey-*";
        int batchHint = 1;
        Set<String> keySet = monitorQueue.keySet(pattern, batchHint);

        //The Redisson implementation for "isEmpty" is very in-effective, which iterates all keys.
        //boolean isEmpty = keySet.isEmpty();

        boolean isEmpty = !keySet.iterator().hasNext();

Please look closely RedissonMap.size() method doesn't iterate all entries. It uses HLEN command.

Sorry that the description is incorrect.
According to the example, it's RedissonMap.keySet(pattern, batchSizeHint).isEmpty()

Reopen as https://github.com/redisson/redisson/issues/3298


--config option on commandline

Having a --config option on the command line will make it possible to have different environments.

It will also be necessary to specify the location of the tmp directory—something which I assumed was already implemented, but I was mistaken.

IMHO a minimal implementation of this comprises these things:

A global variable that indicates the environment.
A way to switch the output directory for each environment.
A way to switch the tmp directory for each environment

It's actually already possible to do all three with the current nanoc (we use it successfully):

We simply use something like ENV['NANOC_ENVIRONMENT'], and change the rules in the Rules files with that, but it's probably nicer if something like  ::Nanoc.env existed
The Rules files accepts relative paths, so it's possible to write an output file to 'output/../output_production/...' based on the environment variable. A --config option to use a different yaml file would be nice, but alternatively, we could do it like Rails and run nanoc.yaml file through Erb, so you can change the directories based on the environment variable
It's a one line monkey patch to the Nanoc::Store class to change the name of tmp dir depending on the environment variable, but it would of course be nicer to have a config option for it too

We wrap the relevant nanoc compile command in custom nanoc commands and rake tasks to set the right ENV variable beforehand. It works well actually, but it would be great if we can do it without monkey patching.

So a --config option is one way to do it, but an --env option that gets picked up in the nanoc.yaml like rails does it may be even nicer, because there are a bunch of other things you may want to change based on the environment than just the directories. A few examples from our use case:

The production version uses the CDN for images, the locally compiled output uses local images
The production version has analytics snippets, the local version does not
The local version has  output from the spell check filter in it, the production version does not
Pages that are still being worked on are hidden in the production environment

Agree with @Fjan on --env/-e option for specifying an environment name. Those options seem to be commonly used in many Ruby apps including compass which is used with Nanoc by many people. But then there needs to be a way to load the environment specific configuration. It would probably be best to always load nanoc.yaml and if -e/--env is specified or the NANOC_ENV environment variable is defined, then load the specified environment specific name from a file such as nanoc-production.yaml if "production" was specified either way.
The minimalist approach is just to run nanoc.yaml through Erb which would give users lots of flexibility while being extremely simple to implement. What might complement that nicely would be a soft dependency on the dotenv gem (https://github.com/bkeepers/dotenv) which supports importing configuration through an .env file and then pushing it into ENV[].

Instead of thinking in terms of solution, ie. --env option. I would rather see Nanoc let options pass through. Then in the preprocess block we could act upon those options.

What I currently is to have section like this in yaml file:

environments:
    development:
       config1: value1
       ....
       confign: valuen
    test:
       ...
    production:
       ...

and at the top of Rules file I call function set_environment:

def set_environment
    envs = @config[:environments] || {}

    active = ENV.fetch "NANOC_ENVIRONMENT", 'development'
    puts "\n\n|====== ENV: #{active} ======\n\n"
    envs[active.to_sym].each do |k,v|
        @config[k] = v
    end
end

If Nanoc environments existed I would like them to support the following:

a single nanoc.yaml configuration file like:
default: &default
    // usual nanoc.yaml content
    text_extensions: ...
    base_url: ...
    ...
development:
    <<: *default
    base_url: ...
production:
    <<: *default
    base_url: ...
yet_another_env:
   <<: *default
    base_url: ...

a support for accessing current active environment in rules.rb, helper and filters in order to:

change routing depending on environment
filter in/out items. e.g. display all items in development and hide some in production (draft post)

a support for a per-environment tmp cache and output. Namely what is currently in tmp and output should be moved to tmp/{{ENV}} and output/{{ENV}}

@ddfreyne are you working on it? Do you need help/support?

With #859 being done, I feel that this issue can now be closed.


chore(CircleCI): merge lint and docs

Which problem is this PR solving?

Updates #481

Merge Lint and Docs jobs to improve (faster) CircleCI build.

Codecov Report

Merging #495 into master will decrease coverage by 2.66%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #495      +/-   ##
==========================================
- Coverage      95%   92.34%   -2.67%
==========================================
  Files         137      128       -9
  Lines        6470     6085     -385
  Branches      566      542      -24
==========================================
- Hits         6147     5619     -528
- Misses        323      466     +143

Impacted Files
Coverage Δ

.../opentelemetry-core/test/metrics/NoopMeter.test.ts
43.24% <0%> (-53.82%)
:arrow_down:

...pentelemetry-core/test/internal/validators.test.ts
50% <0%> (-50%)
:arrow_down:

...elemetry-core/test/trace/spancontext-utils.test.ts
55.55% <0%> (-44.45%)
:arrow_down:

...lemetry-core/test/trace/ProbabilitySampler.test.ts
56.52% <0%> (-43.48%)
:arrow_down:

...s/opentelemetry-core/test/trace/NoopTracer.test.ts
60% <0%> (-40%)
:arrow_down:

...s/opentelemetry-core/test/context/B3Format.test.ts
63.39% <0%> (-36.61%)
:arrow_down:

...ges/opentelemetry-core/test/trace/NoopSpan.test.ts
63.63% <0%> (-36.37%)
:arrow_down:

...s/opentelemetry-core/test/trace/tracestate.test.ts
65.06% <0%> (-34.94%)
:arrow_down:

...ntelemetry-core/test/trace/NoRecordingSpan.test.ts
71.42% <0%> (-28.58%)
:arrow_down:

...ackages/opentelemetry-core/src/platform/node/id.ts
71.42% <0%> (-28.58%)
:arrow_down:

... and 37 more

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 f62fe28...394baf3. Read the comment docs.


Unresolved issues from performance profiling

We do not know why CLANG generates subtract-from-pointer loads instead of add-to-pointer loads.  It says it's faster when it generates the code inside meow_bench, but when we extract the ASM and run it ourselves under perf, vtune, or meow_bench itself, it is slower than add-to-pointer!  This needs to be resolved, and what exactly CLANG is doing with meow_bench to get these results needs to be investigated.

We do not know why MSVC generates slower code on the loop than the hand-written ASM version, but it does appear to do so.  I need to verify this by using the hand-written ASM that exactly replicates the MEOW_SHUFFLE part of the hash, which I had not done yet.  But in general, we would like to be able to use perf counters to see what about MSVC's register allocation is causing the snafu.

We do not know why perf stat seems to be reporting lower numbers than we would expect.  This may be due to excessive startup code or something else bad happening.  We should try to stabilize the numbers so we can get 2.8 IPC, which is what we seem to observe on Windows, although there could be reasons why that would not be the case...

- Casey

Not sure where to add (or post a new issue?), but Meow seems to be slower than many other hashes at small (<200 bytes) data sizes. It blows past everything else on larger data, but for smaller data XXH3, City, Farm, Mum hashes all are faster several times. I only tested on Clang/Mac though, on Core i9 laptop.
DataSize | Meow-64 | XXH3-64 | xxHash64 | City64 | Mum | Farm64 | SpookyV2-64 | xxHash32
-- | -- | -- | -- | -- | -- | -- | -- | --
2 | 117 | 781 | 480 | 612 | 473 | 589 | 294 | 664
4 | 281 | 1644 | 961 | 1302 | 1024 | 1201 | 606 | 1488
7 | 536 | 2878 | 1333 | 2278 | 1498 | 2063 | 994 | 1764
11 | 842 | 3906 | 1953 | 3242 | 2261 | 2864 | 1576 | 2490
17 | 1321 | 4918 | 3162 | 4660 | 3495 | 4150 | 1535 | 2251
26 | 2021 | 7523 | 3761 | 7004 | 4723 | 6250 | 2269 | 2801
39 | 2915 | 7431 | 3125 | 7254 | 5345 | 6414 | 3311 | 3311
58 | 4274 | 11051 | 4157 | 10918 | 6813 | 9539 | 3331 | 4274
86 | 6398 | 12920 | 5013 | 7147 | 7998 | 10179 | 3463 | 4698
128 | 10202 | 15871 | 8332 | 10868 | 9899 | 8402 | 4385 | 5101
191 | 12434 | 12130 | 8087 | 12434 | 10254 | 9848 | 4605 | 5435
285 | 15621 | 13491 | 10234 | 12366 | 11130 | 9574 | 7011 | 5744
426 | 20226 | 16112 | 13022 | 13580 | 11593 | 11184 | 8339 | 5868
637 | 21171 | 17769 | 13446 | 14215 | 12134 | 12284 | 10153 | 5994
953 | 28356 | 19849 | 14812 | 14595 | 11676 | 13232 | 11676 | 6014
1427 | 31256 | 19379 | 15380 | 14681 | 12111 | 14042 | 12919 | 6055
2138 | 36323 | 20015 | 16077 | 15088 | 12573 | 14859 | 14213 | 6129
3204 | 39233 | 20017 | 16624 | 15089 | 12738 | 15325 | 14861 | 6130
4803 | 39392 | 20953 | 16691 | 16144 | 12789 | 15387 | 15631 | 6155

Just a quick note: while the small size performance may increase, it may
not end up being competitive below 256 bytes in general.  This is because
Meow is now designed to be a Level 3 hash (eg., actually secure for an
unknown seed and hardened against seed recovery).  The extra protection
does come at a cost for small inputs, because without it, an attacker can
determine the seed from structured inputs.  Sufficient scrambling is
effectively free for large inputs, because the extra overhead is constant,
but for small inputs it could be substantial.
As you are probably already aware, the other hashes you're looking at here
are already broken (except perhaps City and Farm?).  Meow is trying to be
actually not be broken.
@nohatcoder may have some comments to add here as well.
Anyway, I will be posting the ASM implementation soon which gets higher
performance for L1 cache hashes than compiled versions (CLANG in particular
really farts on our code, even though looking at the ASM it generates it's
not immediately clear why... performance subtleties of the Skylake
architecture I guess)  The ASM version may also help with the small hash
performance, but I just wanted to warn that we're not going for fastest
anymore, we're going for fastest-while-secure for Level 3, so being slower
below 256 bytes may be unavoidable.

Casey

On Thu, Jun 6, 2019, 09:02 Aras Pranckevičius<EMAIL_ADDRESS>wrote:

Not sure where to add (or post a new issue?), but Meow seems to be slower
than many other hashes at small (<200 bytes) data sizes. It blows past
everything else on larger data, but for smaller data XXH3, City, Farm, Mum
hashes all are faster several times. I only tested on Clang/Mac though, on
Core i9 laptop.
DataSize | Meow-64 | XXH3-64 | xxHash64 |
City64 | Mum | Farm64 | SpookyV2-64 |
xxHash32
-- | -- | -- | -- | -- | -- | -- | -- | --
2 | 117 | 781 | 480 | 612 | 473 | 589 | 294 | 664
4 | 281 | 1644 | 961 | 1302 | 1024 | 1201 | 606 | 1488
7 | 536 | 2878 | 1333 | 2278 | 1498 | 2063 | 994 | 1764
11 | 842 | 3906 | 1953 | 3242 | 2261 | 2864 | 1576 | 2490
17 | 1321 | 4918 | 3162 | 4660 | 3495 | 4150 | 1535 | 2251
26 | 2021 | 7523 | 3761 | 7004 | 4723 | 6250 | 2269 | 2801
39 | 2915 | 7431 | 3125 | 7254 | 5345 | 6414 | 3311 | 3311
58 | 4274 | 11051 | 4157 | 10918 | 6813 | 9539 | 3331 | 4274
86 | 6398 | 12920 | 5013 | 7147 | 7998 | 10179 | 3463 | 4698
128 | 10202 | 15871 | 8332 | 10868 | 9899 | 8402 | 4385 | 5101
191 | 12434 | 12130 | 8087 | 12434 | 10254 | 9848 | 4605 | 5435
285 | 15621 | 13491 | 10234 | 12366 | 11130 | 9574 | 7011 | 5744
426 | 20226 | 16112 | 13022 | 13580 | 11593 | 11184 | 8339 | 5868
637 | 21171 | 17769 | 13446 | 14215 | 12134 | 12284 | 10153 | 5994
953 | 28356 | 19849 | 14812 | 14595 | 11676 | 13232 | 11676 | 6014
1427 | 31256 | 19379 | 15380 | 14681 | 12111 | 14042 | 12919 | 6055
2138 | 36323 | 20015 | 16077 | 15088 | 12573 | 14859 | 14213 | 6129
3204 | 39233 | 20017 | 16624 | 15089 | 12738 | 15325 | 14861 | 6130
4803 | 39392 | 20953 | 16691 | 16144 | 12789 | 15387 | 15631 | 6155
[image: Screen Shot 2019-06-06 at 7 02 01 PM]
https://user-images.githubusercontent.com/348087/59047970-9bf80600-888d-11e9-8484-6bbe14e4d249.png
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cmuratori/meow_hash/issues/59?email_source=notifications&email_token=ACN4F3GFHKVLRQOMPPKNC7DPZEYJVA5CNFSM4HPWAZ2KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXDKZBA#issuecomment-499559556,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACN4F3DKGAKWTT2XZQUBAY3PZEYJVANCNFSM4HPWAZ2A
.

City and Farm are piles of random code gathered together by someone who had no idea what they were doing.
Spooky seems decent, I can't rule it out as a possible level 2.
I guess we could do some lower level variants of Meow.

Are you perhaps thinking of Spooky V1?  Aras's profile shows Spooky V2,
which I thought was busted (see
https://github.com/hmakholm/smhasher/blob/master/src/LongNeighborTest.md).
Am I wrong about that?

Casey

On Thu, Jun 6, 2019, 12:19 Jacob Christian Munch-Andersen <
<EMAIL_ADDRESS>wrote:

City and Farm are piles of random code gathered together by someone who
had no idea what they were doing.
Spooky seems decent, I can't rule it out as a possible level 2.
I guess we could do some lower level variants of Meow.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/cmuratori/meow_hash/issues/59?email_source=notifications&email_token=ACN4F3FXZI4U4DAMQ7P4HF3PZFPK3A5CNFSM4HPWAZ2KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXD4KXI#issuecomment-499631453,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ACN4F3HJBU7H6FTX5CAHEBTPZFPK3ANCNFSM4HPWAZ2A
.

Okay, so code looked decent everywhere I looked. I guess I just didn't look in the right place.
Spooky website has this gem:

V2 corrects two oversights in V1:
In the short hash, there was a d = length that should have been d += length, which means some entropy got dropped on the floor. It passed the tests anyhow, but fixing this probably means more distinct info from the message makes it into the result.
The long hash always ended in mix()+end(), but only end() was needed. Removing the extra call to mix() makes all long hashes faster by a small constant amount.

Guess what was actually very much needed.

Just a quick note: while the small size performance may increase, it may
not end up being competitive below 256 bytes in general.  This is because
Meow is now designed to be a Level 3 hash

Fair enough. This bit on the website might need an update:

It has also now been tuned to be the fastest hash on small inputs, too. Despite the fact that it is a full 128-bit hash, it still outperforms “fast” 64-bit hashes across all input sizes. So whether you have data buffers of a few bytes or a few gigabytes, Meow is the fastest hash available.

As you are probably already aware, the other hashes you're looking at here
are already broken

Not actually aware! How are they "broken"?

The whole website is being replaced, but it's a spare-time project so things are slow-going :)  We will be posting performance numbers, security analysis, etc., when everything is finished.  We basically decided the world doesn't need another "fast but garbage" hash, so we've made it a requirement that it not be trivially broken.
As for the other hashes, unfortunately no one has collated all the breakage (which is something I hope to have on the Meow website), but if you go spelunking, you can find people locating trivial collisions.  For example, here's a thread showing how terrible xxHash3 is.
- Casey

Pretty much every non-cryptographic hash that takes a seed is broken in that the seed doesn't do anything of value. Forge a collision, change the seed, and it is very often still a collision, even if you didn't do anything in particular to make a seed-resistant collision. Obligatory reading: http://emboss.github.io/blog/2012/12/14/breaking-murmur-hash-flooding-dos-reloaded/
Apart from that there is usually some ways that very simple changes cause collisions, some skew in the internal state that makes certain collisions more likely, or some other problem that flies just below SMHasher.
I believe that a lot of them are basically designed using SMHasher, by making changes until the function passes. That is why adding a new test fails so many functions.
There is a freaking lot of code in City and Farm (even if you don't count the test code in Farm), so enumerating all the weaknesses is a pretty big job, but in particular I found the WeakHashLen32WithSeeds flawed, the w and z inputs are fed exclusively through this function, so if you collide this by changing only those two values, the whole thing collides. Turns out this often collides if w+z is kept constant and z+rot(z , 44) is also constant.

@aras-p I took a quick look at the small-hash performance today and I'm having trouble reproducing your results.  At least in our benchmarks, at very small sizes (24 bytes, etc.) we are about 50% the speed of the fastest "hash" in the benchmark (which for very small sizes is usually CLHash).
Is your benchmarking code published anywhere, by chance?
I plan on publishing better benchmarking in the future (meow_bench is only so-so), which can hopefully give more definitive results with careful timings... although it is kind of difficult since most modern systems make it impossible to actually do good profiling automatically (you cannot get performance counters from user space, it is hard/impossible to turn off turbo boost automatically, etc.).
- Casey

I took a quick look at the small-hash performance today and I'm having trouble reproducing your results

Mine is at https://github.com/aras-p/HashFunctionsTest -- but yeah it's not a rigorous test by any means, I was just playing around. And yes I'm not careful there etc., etc., (OTOH I'm not careful in the same way for all the hash algos, so...)
I was misled by an earlier version of the hash description that was like "fastest 128bit hash for any data size", and did not realize that in 0.5 it changed to also be "more robust hash", but possibly lost some perf at smaller data. That sounds fair enough, just ignore me :)

@aras-p We still try to at least one of the fastest, though, so I do want as much perf analysis as possible.  I think we still have plenty to squeeze out at the small sizes, so the hope anyway is that Meow will still generally be a go-to hash for any buffer size, it just won't be the absolute fastest for tiny sizes because hey, some of these hashes are so bad that there's no way to be faster than them, because they don't really hash :/
- Casey

Mine is at https://github.com/aras-p/HashFunctionsTest -- but yeah it's not a rigorous test by any means, I was just playing around. And yes I'm not careful there etc., etc., (OTOH I'm not careful in the same way for all the hash algos, so...)

Just looking at this really quick - are you sure you're actually testing properly generated code here?  I don't program on Mac, but just opening up the "XCode" whatever thingee, it doesn't look like you're enabling the right compiler switches, but maybe that's because I don't know what's going on in XCode.
Generally speaking, for modern perf testing (i7/i9 etc.) you need to make sure you're using the compiler switches for the hash in question.  xxHash3, for example, really needs -mpclmul (like really), and Meow certainly prefers -mavx2.  If you're just trying to test what happens on legacy builds, that's cool, but if you're trying to get high-end perf results, you have to make sure you're generating modern x64...
I don't know that this will have much of an effect on small buffer sizes either way, but just thought I'd mention it as a general issue.
- Casey

I'm building with -maes, but not -mavx2, since my particular use case I had in mind was that "I'm fine with requiring AES, but not fine with requiring AVX2 just yet", sorry for not mentioning that. However, and that's where it gets embarrassing, I did not notice that Xcode defaults to -Os. Switching to -O2 makes it a bit better, and also I've removed various non-128 bit hashes from comparison since that's not fair to begin with.
Meow is still not the "very fastest" at small data sizes, but as you said this is probably expected right now. Sorry for westing everyone's time!

and zoomed in on small sizes:

That looks more like what I would have expected :)
In general, I would caution also that it's probably not particularly useful to profile the general-call version of the functions on key sizes this small.  If you actually care about the performance of sub-128 byte keys, you really want a macro that welds into your actual code.  The function call overhead and checking alone on any hash will eat most of your time, and you can do much better by not doing it.
We could certainly provide a MEOW_HASH() macro for this purpose, and maybe we should... but I would definitely say that in actual use, you really don't want to be calling a function for hashes that small if you do a lot of them, pretty much period.
- Casey

Why would we need AVX2? The unaligned VPADD and VPXOR were introduced in AVX. I can't think of anything else we would need.

I don't think it actually needs -mavx2, it just needs -mavx.  But I have not actually done any testing on -mavx codegen, so I couldn't say for sure.
Although really it's mostly academic, because we still have the unfortunate situation of CLANG generating much slower code for some reason, so, there is that :/
- Casey


Bugfix/the people alignment

Fixed minor visual bug in The People section on the Team page.
Issue

thx for the fix ! merging


Hello heroku

Proof of concept branch that isn't meant to be merged. Probably won't have this stuff live here, anyway.
"Whitenoise" allows serving static files directly using Django.

Uh oh - static files not in .gitignore


I like you to modify this model, but the installation failed.

[07:50:03] Running build in Washington, D.C., USA (East) – iad1
[07:50:03] Cloning github.com/domainbf/emots.dev (Branch: main, Commit: b1a9466)
[07:50:04] Previous build cache not available
[07:50:04] Cloning completed: 1.132s
[07:50:05] Running "vercel build"
[07:50:06] Vercel CLI 33.6.1
[07:50:09] Detected pnpm-lock.yaml version 6 generated by pnpm 8
[07:50:09] Installing dependencies...
[07:50:11] Lockfile is up to date, resolution step is skipped
[07:50:11] Progress: resolved 1, reused 0, downloaded 0, added 0
[07:50:11] Packages: +510
[07:50:11] ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[07:50:12] Progress: resolved 510, reused 0, downloaded 0, added 0
[07:50:13] Progress: resolved 510, reused 0, downloaded 6, added 0
[07:50:14] Progress: resolved 510, reused 0, downloaded 15, added 0
[07:50:17] Progress: resolved 510, reused 0, downloaded 16, added 0
[07:50:18] Progress: resolved 510, reused 0, downloaded 29, added 15
[07:50:19] Progress: resolved 510, reused 0, downloaded 30, added 15
[07:50:20] Progress: resolved 510, reused 0, downloaded 31, added 15
[07:50:21] Progress: resolved 510, reused 0, downloaded 66, added 52
[07:50:22] Progress: resolved 510, reused 0, downloaded 84, added 74
[07:50:23] Progress: resolved 510, reused 0, downloaded 85, added 74
[07:50:24] Progress: resolved 510, reused 0, downloaded 85, added 75
[07:50:25] Progress: resolved 510, reused 0, downloaded 100, added 84
[07:50:26] Progress: resolved 510, reused 0, downloaded 100, added 85
[07:50:27] Progress: resolved 510, reused 0, downloaded 101, added 85
[07:50:28] Progress: resolved 510, reused 0, downloaded 213, added 205
[07:50:29] Progress: resolved 510, reused 0, downloaded 296, added 282
[07:50:30] Progress: resolved 510, reused 0, downloaded 444, added 433
[07:50:31] Progress: resolved 510, reused 0, downloaded 509, added 509
[07:50:32] Progress: resolved 510, reused 0, downloaded 510, added 510, done
[07:50:32]
[07:50:32] dependencies:
[07:50:32] + @hookform/resolvers 3.0.1
[07:50:32] + @next/third-parties 14.1.3
[07:50:32] + @notionhq/client 2.2.3
[07:50:32] + @radix-ui/react-dialog 1.0.3
[07:50:32] + @radix-ui/react-navigation-menu 1.1.2
[07:50:32] + @radix-ui/react-tooltip 1.0.5
[07:50:32] + @tabler/icons-react 2.30.0
[07:50:32] + @types/node 18.15.11
[07:50:32] + @types/react 18.0.33
[07:50:32] + @types/react-dom 18.0.11
[07:50:32] + @vercel/analytics 0.1.11
[07:50:32] + @vercel/og 0.5.0
[07:50:32] + next 14.1.3
[07:50:32] + nodemailer 6.9.1
[07:50:32] + notion-to-md 2.5.5
[07:50:32] + react 18.2.0
[07:50:32] + react-dom 18.2.0
[07:50:32] + react-hook-form 7.43.9
[07:50:32] + react-hot-toast 2.4.0
[07:50:32] + react-markdown 8.0.6
[07:50:32] + remark-gfm 3.0.1
[07:50:32] + swr 2.1.2
[07:50:32] + tailwindcss-animate 1.0.5
[07:50:32] + typescript 5.0.3
[07:50:32] + zod 3.21.4
[07:50:32]
[07:50:32] devDependencies:
[07:50:32] + @catppuccin/tailwindcss 0.1.1
[07:50:32] + @total-typescript/ts-reset 0.4.2
[07:50:32] + @types/nodemailer 6.4.7
[07:50:32] + @typescript-eslint/eslint-plugin 5.57.1
[07:50:32] + @typescript-eslint/parser 5.57.1
[07:50:32] + autoprefixer 10.4.14
[07:50:32] + eslint 8.37.0
[07:50:32] + eslint-config-next 13.3.0
[07:50:32] + eslint-config-prettier 8.8.0
[07:50:32] + eslint-plugin-import-helpers 1.3.1
[07:50:32] + eslint-plugin-next 0.0.0
[07:50:32] + eslint-plugin-prefer-arrow 1.2.3
[07:50:32] + eslint-plugin-prettier 4.2.1
[07:50:32] + eslint-plugin-react 7.32.2
[07:50:32] + postcss 8.4.21
[07:50:32] + prettier 2.8.7
[07:50:32] + prettier-plugin-tailwindcss 0.2.7
[07:50:32] + tailwindcss 3.3.1
[07:50:32]
[07:50:32] Done in 22.8s
[07:50:32] Detected Next.js version: 14.1.3
[07:50:32] Running "pnpm run build"
[07:50:33]
[07:50:33] ><EMAIL_ADDRESS>build /vercel/path0
[07:50:33] > next build
[07:50:33]
[07:50:34]  ⚠ Invalid next.config.js options detected:
[07:50:34]  ⚠     Unrecognized key(s) in object: 'appDir' at "experimental"
[07:50:34]  ⚠ See more info here: https://nextjs.org/docs/messages/invalid-next-config
[07:50:34] Attention: Next.js now collects completely anonymous telemetry regarding usage.
[07:50:34] This information is used to shape Next.js' roadmap and prioritize features.
[07:50:34] You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
[07:50:34] https://nextjs.org/telemetry
[07:50:34]
[07:50:34]    ▲ Next.js 14.1.3
[07:50:34]    - Experiments (use at your own risk):
[07:50:34]      · typedRoutes
[07:50:34]
[07:50:34]    Creating an optimized production build ...
[07:50:52] Browserslist: caniuse-lite is outdated. Please run:
[07:50:52]   npx update-browserslist-db@latest
[07:50:52]   Why you should do it regularly: https://github.com/browserslist/update-db#readme
[07:50:52]
[07:50:52] warn - As of Tailwind CSS v2.2, lightBlue has been renamed to sky.
[07:50:52] warn - Update your configuration file to silence this warning.
[07:50:52]
[07:50:52] warn - As of Tailwind CSS v3.0, warmGray has been renamed to stone.
[07:50:52] warn - Update your configuration file to silence this warning.
[07:50:52]
[07:50:52] warn - As of Tailwind CSS v3.0, trueGray has been renamed to neutral.
[07:50:52] warn - Update your configuration file to silence this warning.
[07:50:52]
[07:50:52] warn - As of Tailwind CSS v3.0, coolGray has been renamed to gray.
[07:50:52] warn - Update your configuration file to silence this warning.
[07:50:52]
[07:50:52] warn - As of Tailwind CSS v3.0, blueGray has been renamed to slate.
[07:50:52] warn - Update your configuration file to silence this warning.
[07:50:58]  ✓ Compiled successfully
[07:50:58]    Linting and checking validity of types ...
[07:51:06] Failed to compile.
[07:51:06]
[07:51:06] ./src/app/api/og/route.tsx:16:10
[07:51:06] Type error: 'new' expression, whose target I like you to modify this model, but the installation failed.

it might be because of next.js new version, and i still didnt have time to adapt the logic. however, as a bypass, you could basically remove the og api route file described in the error ./src/app/api/og/route.tsx

Okay, got it. Thank you.


Security issue

Hi team,
I found a security issue and emailed marcosnils (at) gmail.com a few days ago. I just want to make sure you got the email (from louis (at) pentesterlab.com).

hey Louis, thx for reporting, I'll address that in a sec.
Marcos.

Thanks for the quick turnaround. Are you able to raise it as a security issue to ensure people using the project or forking it are aware of the issue.


SNES Multitap controller 4 doesn't work on NBA Jam since v1.8.2

BlueRetro firmware version
v1.8.2
BlueRetro firmware specification
HW1
BlueRetro firmware variant
Universal
BlueRetro hardware type
External adapter with detachable cord
Manufacturer
I did
System used
Nintendo SFC SNES
Bluetooth controller brand & name
2xPS3 and 2xN30
What is problem? (only list ONE problem per report)
When multitap is enabled (slot 2), NBA Jam allows you to play up to four players. With v1.8.1, it works great, but since v1.8.2, the first three controllers work, but attempting to use the fourth controller causes the game to detect an invalid device. It shows a screen that says:
PROBLEM

A DEVICE NOT SUPPORTED BY
THIS PROGAM HAS BEEN
CONNECTED.

PLEASE USE THE STANDARD
CONTROLLERS ONLY.

More details about NBA Jam: when multitap is enabled, the title screen only shows two options: "Start Game" and "Options" (if you see more options, multitap is not detected). Selecting "Options", and moving to the bottom where you can configure controller buttons, pressing start on the 2nd and 3rd controllers activates their configuration, but pressing start on the fourth controller does not. However if you mash buttons on controller 4, the game detects an invalid controller and displays the message above.
I suspect that this change may have broken multitap in NBA Jam: https://github.com/darthcloud/BlueRetro/commit/0eb8e2551221a5a4362c313f087047bae9b1d45a
What did you expect to happen?
All four controllers work in multitap mode in NBA Jam.
Attach files like logs or Bluetooth traces here
No response

@DigiDwrf is it something you could look at?

I'm going to check this out ASAP. I remember testing all NBA games and they worked fine.

I've just tested NBA Jam and also the tournament edition, and both games worked fine.

I think this may have to be related with configuration inside Blueretro.io. @amaiorano be sure not to swap with mouse inside the device config, and Multitap in Slot 2 is the only one supported.

No issues inside the options menu either.

@DigiDwrf how are your cable made? Custom, my SMD pcb or AOI DIP pcb?
Could a slight timing issue related to level shifter difference on AIO board?

I'm using a DIY dev kit for the esp32 module, and 74AHCT125N DIP14 ICs for the connector.

It could be more of a configuration issue. @amaiorano let us know.

I think this may have to be related with configuration inside Blueretro.io. @amaiorano be sure not to swap with mouse inside the device config, and Multitap in Slot 2 is the only one supported.

Yeah, I did not enable any mouse swap, and I enabled Multitap in Slot 2 (Global config, as Game ID didn't work).
I wonder if the fact that I'm using 2x N30 controllers makes any difference? These obviously don't have enough buttons to support SNES, but it's what I have on hand at the moment (I plan to get 8Bitdo DIY SNES PCBs). The other two controllers are PS3, which have been working just fine. What I've been doing is pairing the N30 controllers first as controllers 1 and 2 respectively, and then the PS3 controllers as 3 and 4 (and the LED display on the PS3 controllers shows that they are indeed 3 and 4).
Are there any timing values that can be tweaked in the source code that I should try changing? I'm able to build the binary and upload it. I'm also able to get the serial output from the esp32 module if that's helpful for debugging. Let me know.

@amaiorano The reason I think the problem might not be in this part of code is that I've not updated to 1.8.3, I'm using a custom firmware, a tree branch of 1.7.3, with this particular changes you mention. I'm going to update to 1.8.3 and see if I have the same problem you are having. If that's the case, some other games could be broken too, and it's something I will also look into.

Interesting. In my case, I made a custom build of 1.8.3 where I reverted your patch, and it works perfectly in NBA Jam. I will try making a custom build of 1.7.3 + your patch (same as you), and see if that works.

If this message appears when you pair or press buttons (and not at boot, or by itself when you reach a part, so multitap code is working fine), then I suspect is a problem not related to timing, but to mapping (inside firmware). When I pair my SN30 controller, I have to use "START + A, macOS" mode to make it work, other modes are not well mapped or supported (@darthcloud we need your help here), and they exhibit strange behaviour (snes controller data is made of two bytes, the last 4 bits are signature, anything that is written from bit 13 to bit 16 can mess up with multitap games, and make them think you're connecting a mouse, or a superscope, if mapping is faulty, then we know where to look). Try this with your N30 and let me know if the problem is fixed.

That's very interesting about use the macOS mode. I will try that. In my case, they are all mapped in Windows mode using START + UP (see https://download.8bitdo.com/Manual/Mod-Kit/Mod-Kit-for-NES-Original&Classic-controller.pdf). @darthcloud added support for the N30 as part of 1.8.2 assuming the Windows mode, I believe.
In my case, all four controllers are paired even before I launch the game from the clone Super Everdrive menu. NBA Jam recognizes a multitap (showing only 2 options), and whether I start a new game or go into options, pressing start on the player 4 controller, which is a PS3 controller, doesn't do anything. But then if I start pressing other buttons (I didn't carefully check which ones), suddenly the game shows that error screen. So it's possible that it's related to mapping, as you suggest. I can try the macOS mode for my two N30 controllers. I also have 2 other PS3 controllers that I could test with, so that would make 4x PS3 controllers, and this could also help understand the bug.
So here's what I'll do:

Try 1.7.3 + your patch (NES30's paired in Windows mode)
On 1.8.3: try NES30's paired in MacOS mode
On 1.8.3: try 4x PS3 controllers on 1.8.3

OK good, let me know what did you find, I'm going to test 1.8.3 in my device.

The patch works fine in 1.8.3, just tested it and no issues. I don't use N30 or PS3, so I can't test it with those controllers, I'm using SN30, SF30 pro and 2 PS4 pads. This has to be related to snes data mapping for those controllers then, or maybe a hardware issue. Tested my SN30 controler with START+X and worked fine too. I'll keep making tests and let you know if I find any problem. 4p and 5p uses the same timing, could you try another game? (e.g. pieces or any other nba game)

Wired side and Wireless are completely independent beside a single async shared buffer.
You should always see maximum player at the console side regardless of # of bluetooth controller connected (or type for that matter).
If his setup work in 1.8.3 minus your change, I don't see how it can be related to BT side stuff.

Multitap loads fine, the problem occurs when buttons are pressed, so this particular controllers might be sending wrong bit data to the wired_adapter struct data inside main/adapter.c I guess. I've tested the last 1.8.3 firmware and found no issues at all, so I don't really think that the problem is related to this part of the code, but somehow, it triggers this problem with these controllers.
The code is huge, so knowing exactly where and why this happens is hard. Which part holds information about wireless controllers data sending to the shared buffer? I need to know where I can look into and track the bug (Im guessing main/adapter.c or main/adapter.h, but I'm not sure).
@amaiorano have you tried both ps3 and N30 controllers as 4p? or this just happens with one particular controller type?

Okay, I finally got myself all setup and tested everything. Here are my results:
Setup
First, I used another BlueRetro ESP32 adapter I made - one where I could disconnect the Vcc line so that I could plug it to my laptop. This let me do a few things:

Easier to flash
Was able to run idf.py monitor to see if there was anything logged when the bug occurred (spoiler: nope, nothing)
Ensured the bug wasn't due to sharing the 5V rail of the SNES -- I wondered about this since I am also using a clone Everdrive, which I understand also uses more power.
Would allow me to rule out whether it was the new BlueRetro adapter I made with the PCB (spoiler: it does).

Test Results

On 1.8.3, N30s paired in Windows mode
N30s 1 and 2, PS3 3 and 4 -> fails
PS3 1 and 2, N30s 4 and 4 -> fails

On 1.8.3: try NES30's paired in MacOS mode
N30s 1 and 2, PS3 3 and 4 -> fails

On 1.8.3: try pairing PS3 controllers as P1 and P2, then N30s as P3 and P4
-> fails

On 1.8.3: try 4x PS3 controllers on 1.8.3
-> fails (4th PS3 controller "start" didn't work, pressing two buttons leads to error screen)

On 1.8.3: try 4x N30 controllers on 1.8.3
-> works!

Try 1.7.3 no patch, 4 PS3 controllers
-> works (as expected)

Try 1.7.3 + patch, 4 PS3 controllers
-> fails

Try NBA Jam Tournament Edition, 4 PS3 controllers, v1.7.3 + patch
-> works!

Try NBA Jam Tournament Edition, 4 PS3 controllers, v1.8.3 (includes patch)
-> works!

Conclusions

Based on the above tests, it looks like the problem may have to do with the PS3 controllers. When I tried 4x N30 controllers, it worked fine. So the bug only occurs when there are PS3 controllers, regardless of whether they are P1/2 or P3/4. This may occur for other types of controllers, but I don't have any other ones to test.

The bug occurs in NBA Jam, but not in NBA Jam Tournament Edition. This makes me wonder if the code in NBA Jam for invalid controller detection was too sensitive, and they fixed that for Tournament Edition?

The bug does not occur (in NBA Jam with PS3 controllers) in 1.8.3 without the patch. It does occur in 1.7.3 with the patch. So there's something about this patch that breaks PS3 controller support in multitap mode in NBA Jam.

I'm not really sure where to go from here. I think only time will tell if this is really only PS3-controller + NBA Jam specific or not.
Unrelated: MacOS mode
Just a side note from me: using MacOS mode (A + START) on my N30 controllers makes my controllers significantly less responsive than Windows mode (UP + START). I tested all 4 N30 controllers in MacOS mode using the Controller Test Suite on my NES, and the response time was very poor, even player 1 and 2 (3 and 4 are always more laggy). I put them back to Windows mode, and the response time is better (P1 and P2 are super fast). Also, @darthcloud's support for the N30s in 1.8.2 are for Windows mode -- in MacOS mode, I am forced to remap the buttons for B to work (and A is mapped to B).

@amaiorano thanks for the extra tests it's really weird the BT device types affect the wired side.
I will try to look at it after I'm done with release 1.8.4

I have a pair or ps3 controllers. I'm going to test them and let you know my results.
The first thing that comes to my mind is that SNES support in general, is a bit slow to process for the esp32, so we're going to encounter timing related issues all the time. There's this game called Virtual Bart, and whether you use the previous unpatched code for multitap, or the new one, with multiplayer on, or off, inside blueretro.io, bart will jump (B button) randomly sometimes. This can be subttle or more frequent, depending on wich type of controller you use. I think this game in particular is bad coded. The first button in the bit row is "B" and the game might be sending LATCH or other signal when is not required (since it's not a multiplayer game, I've not analyzed this, but can't think in another cause) and this messes up with the "B" button state (so data is sent too late). Standard controllers ignore this because they're fast enough for the SNES, but the esp32 is more complex. I've experimented this from previous unpatched versions too.
As far as I can tell, the patch for that multiplayer void function is a bit faster that the previous code, and all the intermittent detections are now gone for every game. Some few games just won't never work because the GPIO is not fast enough, and the only way to make them work, or work propperly is by using an FPGA or second device that acts a single port, both, or multitap that handles all the SNES protocol, collects and sends asynchronorus data into the esp32, so no information would be lost.
I use a SD2SNES cartridge, so it could be a power issue too, like @amaiorano mentioned, but can't be sure about this.
@amaiorano Have you tried any other multitap games, with and without the patch and see the difference? Top gear 3000 was unplayable, and now it works, but it has the same "B" button self-pressing issue in the game's menu at random times (this doesn't happen to often also). All NBA roms work as expected in my case, so I will make this ps3 controller tests. I remember this NBA game to disconnect 4th controller randomly before the patch, I might be wrong at this, but most NBA games sufrered from this problem (with both 4p and 5p, they are read almost at the same time after 2p and 3p).
Important note: this patch has a on/off switch, like the real hardware. This function occurs when LATCH goes high: If you press L+R+DOWN+B on the second controller for a brief time, multitap will be virtually "unplugged", and pressing B on 3p will attach it again. This is VERY usefull when you don't want to change configuration inside blueretro.io, works for games that demand multitap to be unplugged before using them (like Yoshi's Island and other first party games), and games that use the third port in multitap as the second port in snes (e.g. Battletoads in Battlemaniacs once you enter in game, 2p won't do anything and 4p will work instead, this one has a buggy code too that sends unnecessary SELECT data, I could say this might happen on real hardware as well). We could try dissabling this part of code to speed it up and make tests again, but if we encounter the same problem, I wouldn't dissable this switch.
@amaiorano Is it possible to record the bug in video so I can see better what is happening and how is triggered?


Support console env var DO_NOT_TRACK

Describe the feature
If the console environment variable DO_NOT_TRACK is set (to any value), do not send anonymous usage stats.  The current configuration equivalent is in ~/.dbt/profiles.yml
config:
  send_anonymous_usage_stats: False

The website promoting and documenting the standard is: https://consoledonottrack.com/
Describe alternatives you've considered
The current yaml config: send_anonymous_usage_stats serves the same purpose, but is specific to DBT, where DO_NOT_TRACK is intended to be universal.
Who will this benefit?
Users who would like to avoid sending usage statistics by default would no longer need to:

discover dbt sends usage statistics
read documentation to find how to opt-out

Are you interested in contributing this feature?
Yes, I would be more than willing to implement the feature if the issue is accepted.

@sethwoodworth Thanks for opening the issue! This sounds like a great standard to follow. I'd be interested in supporting this via two env vars:

DO_NOT_TRACK=0|1 (standard)
SEND_ANONYMOUS_USAGE_STATS=True|False (dbt-specific)

Ultimately, I'd like for every runtime config to have an associated flag, profile config, and env var, as outlined in #2990.
In any case, I'd welcome a contribution for this.


fix build error in pod taints tolerations example

What type of PR is this?
/kind bug

What this PR does / why we need it:
try to run the pod taints tolerations example but not able to build the image.
Getting following error:
#7 88.17 ./main.go:38:18: invalid operation: cannot take address of controller.AdmissionTaintKey (untyped string constant "kueue.x-k8s.io/kueue-admission")

Which issue(s) this PR fixes:

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

NONE

/ok-to-test

/retest

/lgtm
/approve


[release-2.6] Update Go to 1.20

Jira: https://issues.redhat.com/browse/ACM-1770

/lgtm

/unhold


ReadMe Grammer/Mechanics

It reads wrong, "those" is used when refering to something far away. The drivers unsafe interactions are of its own not a "side effect" (far away)

This wording is clearer: https://github.com/launchbadge/sqlx/commit/9b0a09387c399aacccd4a00c0cccaf861b825a07


Fix path to make

Much like we do for bash in Makefile, should we also set the path to the version of GNU Make available through yum?
Example for bash:
https://github.com/IBM/ibmi-bob/blob/e9124605e79d2019f11f9f706f80d2c838ebbcba/mk/Makefile#L1
Add specific path here?
https://github.com/IBM/ibmi-bob/blob/44a83fa6b225112f3c9bd916523b053894dfc44f/makei/build.py#L69
Change:
make to /QOpenSys/pkgs/bin/make

Tongkun, please make this a priority, it should be pretty simple.

Just run into this making the Merlin Ci/CD fail


Please migrate to Python3

With Python 3 being the future of Python while Python 2 is still in active use, it is good to have your project available for both major releases of Python.
If pyocd is to be packaged, it will only be packaged as Python3.

The current release depends on setuptools-scm-git-archive which is only available as a package for Python3.
https://tracker.debian.org/pkg/setuptools-scm-git-archive

setup.py for 0.12 declares support for python3 but the README states only Python2.7 - what is the current state of Python3 support in pyocd?

As of v0.11, PyOCD fully supports Python 3.6+ (though it should actually work ok on 3.4+), as well as still maintaining compatibility with Python 2.7. I mostly develop and test with 3.7 these days, and Travis CI runs both 2.7 and 3.6. However, our internal CI system still uses 2.7 (planning to address this soon).
Thanks for the pointer on setuptools-scm-git-archive only being available for Python 3, I had missed that! And I'll update the readme.

I can't build a Debian package for pyocd for Python2 and new packages aren't being added for Python2 support anymore, so there won't be a Python2 package for setuptools-scm-git-archive. Is there a reason to stick with Python2?

Ok. I'll see about making setuptools-scm-git-archive optional.
Yes, supporting Python 2 is important because a lot of users still have only that version installed. There are a wide range of users of pyOCD, and it's best if it just works with as many systems as reasonable.
If/when we move to binary executables as the primary release artifact for most users, it may be less important to support Python 2. But that will be a while from now.

I can package pyocd to use Python3 for the installed scripts but provide Python2.7 module support. I'll reference this issue to cover why the Python2 code is still needed.
Thanks.

Packaging anything for Python2 still needs the support for setuptools-scm-git-archive, at least currently. - so I'll skip including the Python2 module - leave that support for upstream.
If the README can be updated to show Python3 support, this issue can be closed.

Closing this issue based on the changes in #427. If you don't think the changes are sufficient, please re-open this issue.


Please add the default formatter when clause contexts to enable more custom keybindings

Is it possible to add a non-boolean attribute to get the current default formatter in when clause contexts?
In my project, there is usually a need to execute executeAutofix on a specific linter (such as Stylelint).
It would be very useful to bind the common commands with a key combination.
However, if using the same keybinding for all linters, without this attribute value judgment, different linters' keybindings will conflict with each other.

I am not really sure what you are looking for? From your screen capture it seems that you bind Cmd+S to various formatting/lint commands. How do you save then? Are aware of code-actions and format on save? Eg. this is what I use (settings.json)
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
},

This enables formatting and eslint-fixing when ever I save (via Cmd+S)

I prefer to format(lint) my code manually, rather than setting codeOnSave property to lint and fix automatically on save, because sometimes auto formatting on save would make old codebases messy.
In my use, almost all of the auto-fix commands of linting extensions (including executeAutofix of eslint and stylelint) and the native formatting are bound to the Alt + S key combination,
and saving is on Cmd + S, which is not conflicting under macOS.
However, the behavior of the lint extensions seems in conflict with (including but not limited to) the native built-in formatter.
If the when clause contexts provides more properties about the default formatter, the code formatter will be perfectly applied.

Hey @jrieken, this issue might need further attention.
@BobbyJonas, you can help us out by closing this issue if the problem no longer exists, or adding more information.

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!


Catch S3 triggers

is there any way I can get s3 event in any route?

teste

We'll be releasing v4 in January. You can check out the branch now. With that you can write a custom event source mapper or even submit a PR to add it to the library for everyone.

Check out this example in v4 https://github.com/vendia/serverless-express/blob/mainline/examples/custom-mapper-dynamodb/src/lambda.js

Check out this example in v4 https://github.com/vendia/serverless-express/blob/mainline/examples/custom-mapper-dynamodb/src/lambda.js


Model loading

Before: the model was loaded again and again for the predictions of the headings' levels
Now: it is loaded only once

It's good! Time processing is significantly reduced.


"beet move -p" lists non-moves for all tracks in library?

If I run beet move -p, the head of the output looks like this
Moving 2442 items.
/home/dowcet/my/music/all/+One/Bare Necessities/01 Sticker.mp3
  -> /home/dowcet/my/music/all/+One/Bare Necessities/01 Sticker.mp3
/home/dowcet/my/music/all/+One/Bare Necessities/02 Nibble.mp3
  -> /home/dowcet/my/music/all/+One/Bare Necessities/02 Nibble.mp3

As far as I can tell, these are non-changes, while some actual changes are buried in a long list of these not-very-helpful lines. What I would expect instead is that only actual file moves should be listed.
Am I missing something? Can I do something differently to get what I want (i.e. a list of actual file moves that would occur without -p)?

Please see #1583.


Cursor memory usage improvements

Reduce the size of cursors to improve memory usage and potentially reduce GC

This needs a rebase, but otherwise looks good.


Attempt to complete package_handler.postPackages()

Started with the intention to complete postPackages() related to #43, but ended up mostly doing cleanup.
I didn't understand exactly what we should do at the final stage. We return 201 status + the json package, but shouldn't we also insert the package data inside the DB?
Besides in git.js I see a structure
if (pack.versions) {
  ...
} else if (pack.versions) {
  ...
}

Which I don't get it. And res.headers["link"] could be written as res.headers.link?
Let me know. :)

Okay, now I get it.
pack.versions and then pack.version

This is a fantastic PR! And I see its still a draft, so I'm assuming there is still work to be done.
But to answer your questions:

'Shouldnt we also insert the package data inside the DB?' - Yes we will still need to insert the package data, then return the package data, ideally directly from the DB, not from our already held package data, to let it be easy for a user to see if it was uploaded incorrectly or malformed.
Glad you were able to see the logic being pack.version and pack.versions, it is confusing and I tried to put in comments to make it obvious, but glad you made it more obvious in the logic itself, not just comments.
But yeah res.headers.link should work just as well, for some reason just accessed it as a hash table rather than chainable object.

But otherwise this is looking great, look forward to seeing this major part of the API integrated

@confused-Techie you can review.
This is a first attempt to make a new module for inserting a new packages inside the DB. I left a couple of todo since it needs a refinement.
I suppose a new module has to be implemented to add a new version of the same package, right?
Regarding the return of the package object, I think it's easier for us to just return the package from git.createPackage. Otherwise we have to call other database module to select and construct the new package, but it will contain stuff likes uuid, primary keys, external keys, something which I'm not sure we want to expose outside the server.
We could also delete them from the package object, but I don't know if it's worth it. I'd say, we have the full object without the database primary keys, just return it.

I'll start reviewing in just a second, but to address your questions:

We do still have to build support for a new package version, that logic would be included in postPackagesVersion, which is also where the rename of a package functionality needs to be implemented, mentioned on issue #46
As for returning the package, you're right that it would be easier to return the new package we have written, but I still feel like there's value in returning what was actually put into the database, especially until we know everything works with stability. But to do so, after a package has been entered into the Database, we should just be able to use the same logic in getPackagesDetails to use database.getPackageByName() and then prune any unneeded information, like the uuid, and database specific info using utils.constructPackageObjectFull, which will construct a package in a way that's expected, being provided the raw database values.

Wow, I didn't know JSONB needed the plain object. I'll fix those issue. :)

@confused-Techie I rewrote the module with transaction. Please check it.

@Digitalone1 this review looks fantastic, I'll go ahead and merge and hopefully this weekend can work on the other return aspects.
Otherwise love the contribution, thanks!

we should just be able to use the same logic in getPackagesDetails to use database.getPackageByName() and then prune any unneeded information, like the uuid, and database specific info using utils.constructPackageObjectFull, which will construct a package in a way that's expected, being provided the raw database values.

@confused-Techie I don't know if you're already working on it, but I think that receiving an object from the database and then having to prune it, it's just a redundant/excessive task.
If we have to expose what is in the database without primary keys, select only the needed data rather then pruning afterwards.
For that task we can specify a bool flag as argument for an already existing module (getPackageByName I suppose):
async function getPackageByName(name, user = false ) {
  try {
    sql_storage ??= setupSQL();

    const p_key = user ? "p.pointer," : "";
    const v_key = user ? "v.id, v.package," : "";

    const command = await sql_storage`
      SELECT
      	${p_key} p.name, p.created, p.updated, p.creation_method,
        p.downloads, p.stargazers_count, p.original_stargazers, p.data,
      	JSON_AGG(${v_key} v.status, v.semver, v.license, v.engine, v.meta)
      FROM packages p
      	JOIN versions v ON p.pointer = v.package
      	JOIN names n ON n.pointer = p.pointer
      WHERE n.name = ${name}
      GROUP BY p.pointer, v.package;
    `;

    return command.count !== 0
      ? { ok: true, content: command[0] }
      : {
          ok: false,
          content: `package ${name} not found.`,
          short: "Not Found",
        };
  } catch (err) {
    return { ok: false, content: err, short: "Server Error" };
  }
}

What do you think?

@Digitalone1 doing something like that isn't a bad idea at all. Although at this point we are doing less pruning, and more restructuring the data. Now this still would reduce the times it takes to restructure the data, so we could look at using this and implementing it.
Thanks for the suggestion


memcached binary client imposes restrictions on key

I noticed that the Memcached binary protocol client provided by this library performs checks on the keys and disallows certain byte values, perhaps to maintain compatibility with the ASCII protocol: https://github.com/dropbox/godropbox/blob/52ad444d35023d078d496d305d75511e772f0295/memcache/raw_binary_client.go#L19
Could this behavior be made configurable? The documentation for the Memcached binary protocol (https://github.com/memcached/memcached/wiki/BinaryProtocolRevamped) doesn't seem to impose these restrictions, and empirically it does seem possible to set and retrieve keys that this client considers invalid (such as keys with spaces).

Leave a


Fix bad i18n string; create template for translating

Ideally, the strings for English would be only in this English file and there would be shorter names in the actual code-base. Right now it is a little ridiculous that a key for a string is an entire sentence.


Make payment scrolling smoother with smaller increment

I find the payment window scrolling a bit jerky.
It might look better with a smaller scroll increment so that it is smoother (albeit slower).

Experimenting you only got a smooth scrool with a very small increment (4 pixels or so) which is too slow to be useful.
Settting the scroll increment to be the row height works quite well and you can still navigate long lists so I have set it to that.
Awaiting review and closing.

Works well. Closing.