first run jank

try
flutter run lib/app/main.dart --profile --cache-sksl --purge-persistent-cache
but
No data was received. To ensure SkSL data can be generated use a physical device then:

Pass "--cache-sksl" as an argument to flutter run.
Interact with the application to force shaders to be compiled.

flutter doctor -v
[✓] Flutter (Channel beta, 1.24.0-10.2.pre, on Mac OS X 10.15.5 19F101 darwin-x64, locale zh-Hans-CN)
• Flutter version 1.24.0-10.2.pre at /Users/bian/opt/flutter
• Framework revision 022b333a08 (2 months ago), 2020-11-18 11:35:09 -0800
• Engine revision 07c1eed46b
• Dart version 2.12.0 (build 2.12.0-29.10.beta)
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Users/bian/Library/Android/sdk
• Platform android-30, build-tools 30.0.3
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.3, Build version 12C33
• CocoaPods version 1.10.0
[✓] Android Studio (version 4.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.1
[✓] Proxy Configuration
• HTTP_PROXY is set
• NO_PROXY is localhost,<IP_ADDRESS>
• NO_PROXY contains <IP_ADDRESS>
• NO_PROXY contains localhost

@bianning-nl
your flutter version is quite old, can you please run flutter upgrade -f

@bianning-nl
your flutter version is quite old, can you please run flutter upgrade -f

Hi @bianning-nl
Please follow https://github.com/flutter/flutter/issues/74873#issuecomment-768906369. If the issue persists, provide your flutter doctor -v and the device information where you are facing this issue, along with a reproducible code sample.
Thank you

Hi @bianning-nl
Please follow https://github.com/flutter/flutter/issues/74873#issuecomment-768906369. If the issue persists, provide your flutter doctor -v and the device information where you are facing this issue, along with a reproducible code sample.
Thank you

I encountered this issue, too.
flutter run --profile --cache-sksl
No data was receieved. To ensure SkSL data can be generated use a physical device then:
  1. Pass "--cache-sksl" as an argument to flutter run.
  2. Interact with the application to force shaders to be compiled.

By the way, the word 'receieved' has a typo.
flutter doctor -v
[✓] Flutter (Channel stable, 1.22.6, on macOS 11.1 20C69 darwin-x64, locale en-CN)
• Flutter version 1.22.6 at /Users/spikeliao/SDK/flutter
• Framework revision 9b2d32b605 (12 days ago), 2021-01-22 14:36:39 -0800
• Engine revision 2f0af37152
• Dart version 2.10.5
• Pub download mirror https://pub.flutter-io.cn
• Flutter download mirror https://storage.flutter-io.cn
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
• Android SDK at /Users/spikeliao/Library/Android/sdk
• Platform android-30, build-tools 30.0.2
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 12.4)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.4, Build version 12D4e
• CocoaPods version 1.9.3
[!] Android Studio (version 4.1)
• Android Studio at /Applications/Android Studio.app/Contents
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.52.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.18.1
[✓] Connected device (1 available)
• Spike 的 iPad (mobile) • 00008020-001A4C8036B8003A • ios • iOS 14.3
! Doctor found issues in 1 category.

No data was receieved. To ensure SkSL data can be generated use a physical device then:

Pass "--cache-sksl" as an argument to flutter run.
Interact with the application to force shaders to be compiled.

Hi @bianning-nl
Can you please follow the suggestion in the logs?

@bianning-nl What device were you testing with?

@Hixie I had the same exact problem today, I have Flutter version 1.22.3 and I used a real device to try capture the shaders (iPhone XS with iOS 14.4)

@evetechsolutions Can you file a new bug with the precise steps to reproduce (including any source code that's necessary if you need something beyond flutter create's default template), listing what devices and command lines you used? That would be super helpful. You can cc me on the new bug if you want and I can prioritize it accordingly.

@Hixie I've updated my Flutter version to 2.0 as I wanted to make sure the problem wasn't a too old Flutter version. As I thought, I was able to cache the SkSL without any problem after updating, so the problem was the version I was using


Acmesolver container has runAsNonRoot and image has non-numeric user (nobody)

I intalled the cert-manager to the Openshift 4.15, and try to issue the first certification, but the challenge's pod couldn't start.
I found the issue for this command:
oc get pods -n openshift-config cm-acme-http-solver-XXX -o yaml
...
containerStatuses:

image: registry.redhat.io/cert-manager/jetstack-cert-manager-acmesolver-rhel9@sha256:32cd645f60a8f59673639ee4b7828e8eb703eef2c4409ea95b93d41f24329d83
imageID: ""
lastState: {}
name: acmesolver
ready: false
restartCount: 0
started: false
state:
waiting:
message: 'container has runAsNonRoot and image has non-numeric user (nobody),
cannot verify user is non-root (pod: "cm-acme-http-solver-khrd7_openshift-config(4a3aa11e-f79c-4fcc-a2fc-b0bd47b65ec6)",
container: acmesolver)'
reason: CreateContainerConfigError

I see in the line 19 of the cert-manager/jetstack-cert-manager-acmesolver-rhel9 's Dockerfile, the user is nobody:
https://catalog.redhat.com/software/containers/cert-manager/jetstack-cert-manager-acmesolver-rhel9/643959393e1850c127e4f3e5?architecture=amd64&image=659c4826128b8fc1244158c0&container-tabs=dockerfile
/kind bug

Are you running this pod in the default namespace, by any chance?

It was in the openshift-config namespace. I got a strange answer from the Red Hat. The http method is not supported in this namespace, and I have to use a dns method.

This is being tracked at OCPBUGS-33282.

/close


UP036 (outdated-version-block) is off-by-one for the target version

If my target-version is py37, I expect the code block guarded by sys.version_info < (3, 7) to be dropped but it isn't.
It gets dropped for py38, though.
A minimal code snippet that reproduces the bug.
import sys

if sys.version_info < (3, 7):
    print('oh no')

The command you invoked (e.g., ruff /path/to/file.py --fix), ideally including the --isolated flag.
ruff check test.py

The current Ruff settings (any relevant sections from your pyproject.toml).
[tool.ruff]
target-version = "py37"
select = ["UP036"]

The current Ruff version (ruff --version)
ruff 0.0.287

Thanks!


x96 max plus no wifi show up

no wifi for s905x3 x96 max plus for kernel 5.15 and 5.19

Do you have a wireless option in your network

yes I have wireless option in network, but can not enable it.

You try to change the channel to see if it can be used normally

If it still cannot be used, it may be caused by the configuration change between the new production and the previous production. It is not recommended to use the built-in wifi.

can not change anything. I am not using the wifi as my main wifi. just for debugging purpose. If my modem has problem I can use wifi as WWAN temporarily like that.

Let me ask flippy,I use flippy's config file

you try https://github.com/ophub/amlogic-s9xxx-openwrt/releases/download/OpenWrt_Aml_lede_10.04.0530/openwrt_s905x3_k5.15.71_2022.10.04.img.gz

See if wifi can be used

I have use that, and the wifi is working

That should be that the wireless driver is not added,Do you know your wireless network card model

rtl8822cs

Can you use wifi firmware before is lede source code?

ok let me try again to reflash the openwrt_aml_lede to make sure

no, sorry again. my x96 max plus suddenly won't boot from sdcard anymore. can't test again until I fix this

You need to compile the official firmware, I use lede, lede does not have 8822 driver

0-03
───────────────────────────────────────────────────────────────────────
 Device Model: X96 MAX PLUS Q2, X96 Air Q1000
 Architecture: AArch64 : Cortex-A55 x 4
 Load Average: 0.04 0.19 0.11   Uptime: 5m 11s
 Ambient Temp: 61.8  °C         CPU Freq: 1800 Mhz
 Memory Usage: 5% of 3337M      Swap Usage: 0% of 0M
 Boot Storage: 39% of 254.7M    ROOTFS: 87% of 960.0M
───────────────────────────────────────────────────────────────────────
root@OpenWrt:~# lsusb
Bus 001 Device 008: ID 05c6:6000 Qualcomm, Incorporated Qualcomm CDMA Technologies MSM
Bus 002 Device 001: ID 1d6b:0003 Linux 5.15.71-flippy-77+o xhci-hcd xHCI Host Controller
Bus 004 Device 001: ID 1d6b:0003 Linux 5.15.71-flippy-77+o vhci_hcd USB/IP Virtual Host Controller
Bus 001 Device 001: ID 1d6b:0002 Linux 5.15.71-flippy-77+o xhci-hcd xHCI Host Controller
Bus 003 Device 001: ID 1d6b:0002 Linux 5.15.71-flippy-77+o vhci_hcd USB/IP Virtual Host Controller
root@OpenWrt:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='SNAPSHOT'
DISTRIB_TARGET='armvirt/64'
DISTRIB_ARCH='aarch64_cortex-a53'
DISTRIB_TAINTS='no-all'
DISTRIB_SOURCECODE='lede'
DISTRIB_REVISION='R2022.09.29'
DISTRIB_DESCRIPTION='OpenWrt '
root@OpenWrt:~#

this one has a working wifi. this is lede right?

You try the newly compiled firmware, I added some wireless drivers

You try the newly compiled firmware, I added some wireless drivers

still not working. it is not crucial, so since this is not supported by lede I will close it, thanks for your time.


rdf.list is not a function

So far I don't see a list operation exposed in rdflib.js

The purpose of this operation is to add an ordered list, collection, of nodes to a graph.
It may have been replaced by rdf.collection.

This issue, and the two other issues #316 and #317, kind of worries me. I mentioned this worry (second and third paragraph) on the forum before.
Is there a good reason to not expose the rdflib.js functions directly? Why is it needed to proxy/mirror all these functions from rdflib.js?

I guess my worry stems from Don't Repeat Yourself (DRY). These functions cause technical debt in the sense that they require close monitoring by every update of rdflib.js, which is now still at version zero so very prone to changes. (Function name changes, argument changes, new functions, functions removed, etc.)
Developers can also directly use the rdflib.js through the graphStore property. In object oriented programming I guess a solution could be to make the object extend the graph though, but JavaScript is not that easy in that regard.
In short: this requires manual work to keep the API aligned with its dependency.

Right, yes I agree, another way would be to have our RDF emulation to simply expose functions to parse, serialise and commit (which will do the internal serialisation to store grpahs in the network), and the leave the rest out so the user decides which lib to use to manipulate grpahs in memory before they are parsed by our RDF emulation.
In any case, there is some ongoing effort also from @nbaksalyar to see how to expose such an API from safe_client_libs so we can then make it available in all languages and not only JS, and there is also a proposal from @joshuef (https://forum.safedev.org/t/javascript-rdf-tooling-ideas/2239) for alternatives to all this, it's a big topic actually.


Node sass is not rebuilding the website on changes in the sass files

What happened: The changes in the sass file are not reflected until the frontend is restarted again
What you expected to happen: The changes in the sass file should be automatically reflected in the browser by node-sass
How to reproduce it (as minimally and precisely as possible): Take a fresh clone of the repo and run npm install and npm run start changes anything in the sass file
Anything else we need to know?: The solution is to use npm install node-sass separately although it is in the dev dependency. Update the README.md for Troubleshooting guide.

PR sent that fixes the above issue:
https://github.com/litmuschaos/charthub.litmuschaos.io/pull/141


chore: fix dev data

part of card https://app.zenhub.com/workspaces/team-moose-sprint-board-60d216175a2689000ec774d0/issues/gh/bcgov/cas-registration/28

Closing, not a proper fix


CAN-FD Support

I basically just copied over the old CAN implementation and tweaked it to use a 64-byte MTU and deal with the weird DLC values and padding.
Not ship-shape in it's current state just wanted to start work on it.
Probably needs to be re-worked a large amount.

Took a look at STM appnote 5348 to confirm my understanding of the differences between CAN 2.0 and FD, and it seems the only thing that matters to this implementation are semantics around DLC, which were accounted for in the third commit.
There is some room to merge CAN 2.0 and CAN FD, but to do that in a compile-time way requires more progress in const generics from my understanding, (or macros, but eh) so I want to leave that until there's better support in Rust for that sort of thing.
This also requires testing, I haven't tested it at all. @teamplayer3, you may want to do the testing, as you said it would be useful for your thesis :). Otherwise I'll get around to testing it when I get around to it.

It also affects some other PRs so even if it gets approved I'll wait until those get merged in so everything works cleanly.

For testing, it would be great to merge alex/no_std-session into the main branch and then rebase this branch on the new state. This would allow using the embedded example to test the CANFD implementation.


star is bound twice

See: https://github.com/isovector/cornelis/blob/master/agda-input.vim#L1906
I assume this isn't intended.

Unintended. That file is a mishmash of several iterations of trying to backfill missing things. I'd be open to a PR!
On February 20, 2024 4:28:53 a.m. PST, Noon van der Silk @.***> wrote:

See: https://github.com/isovector/cornelis/blob/master/agda-input.vim#L1906
I assume this isn't intended.
--
Reply to this email directly or view it on GitHub:
https://github.com/isovector/cornelis/issues/139
You are receiving this because you are subscribed to this thread.
Message ID: @.***>


export * as test from './test' Validation failed ES6

Do you have any extensions installed? Does this happen if you run code with --disable-extensions>

Did not install the expansion, webpack2 compiler run no problem
version number 1.9.0

Wait a second, shouldn't  you be using import instead of export here?

Confirmed that export * as x from 'x'; produce this exact set of errors. Closing since this is a valid error for a real code issue


HTTP Headers should be processed in case-insensitive manner

Description:
Generic HTTP Headers don't process properly with APIM, for example, if the backend sends a response with lowercase header names, API Manager process headers in a case-sensitive manner, so It adds additional headers to the response. like Content-Type
https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
Steps to reproduce:
use a backend service which sends all the response headers in lower case.
Affected Product Version:
2.0.0 , 2.6.0
Environment details (with versions):

OS:
Client:
Env (Docker/K8s):

Optional Fields
Related Issues:

Suggested Labels:

Suggested Assignees:

@tharindu1st @tmkasun isn't this fixed in later versions?

Hi, any news about this issue? I am seeing duplicate "Content-Type/content-type" headers in the responses when using an APIM instance running in a Container with an Istio Proxy.

Hi, any news about this issue? I am seeing duplicate "Content-Type/content-type" headers in the responses when using an APIM instance running in a Container with an Istio Proxy.

This can be reproduced when the backend was sending a lower case content-type header while having a content-aware mediator in the flow.
eg: "content-type: application/json[\r][\n]"
In oder to avoid the problem, We can use following in the API manager 3.2.0 environment.
[passthru_http]
"http.response.headers.preserve"="content-type"


Is there any update available for the library

Hi,
Can we expect a update for this library. Or can u help us to create a binding library with the latest source code.

Hi @fawazbabu, sorry for the delay. Haven't had the chance to work on this project lately, but since Google updated the library quite a bit in the meantime, I will update my binding too in the next few days. Stay tuned!

Hi @streinhard ,
Could please include me too in the process of creating the binding library. Would like to learn the process of converting the project to a library.

Hi @streinhard ,
According to the ApiDefinition, It seems the GMUGeometryContainer class missing "properties"  which in standard GeoJson files. Also GMUGeometry class only has "type" and doesn't contain "coordinates".
Is it possible to Update the GMUGeometryContainer related Feature data with Properties and GMUGeometry with coordinates in the new library update?
Following is an example json object which we use,
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
5.5718677412470944,
50.44299705427465
]
},
"properties": {
"Id": "999",
"Street": "StreetName",
}
}
Following are the current GMUGeometryContainer and GMUGeometry in ApiDefinition.
// @protocol GMUGeometryContainer
[Protocol, Model]
[BaseType(typeof(NSObject), Name = "GMUGeometryContainer")]
interface GeometryContainer
{
// @required @property (readonly, nonatomic) id _Nonnull geometry;
[Export("geometry")]
Geometry Geometry { get; }
    // @required @property (nonatomic) GMUStyle * _Nullable style;
    [NullAllowed, Export("style", ArgumentSemantic.Assign)]
    Style Style { get; set; }
}

// @protocol GMUGeometry <NSObject>
[Protocol, Model]
[BaseType(typeof(NSObject), Name = "GMUGeometry")]
interface Geometry
{
    // @required @property (readonly, nonatomic) NSString * _Nonnull type;
    [Abstract]
    [Export("type")]
    string Type { get; }
}

Seems like nothing is happening in this repo for a while. is this still maintained?

Seems like nothing is happening in this repo for a while. is this still maintained?


[Relay][Parser] Add type checking of all successful parses.

The Relay parser tests should type check all produced fragments of code, currently they just ensure they parse. This causes all kinds of issues as all type information must be identical between the two program fragments even though much of it can be inferred. I found some strange inconsistencies that are hard to diagnose without type checking. The current type checking error reporting requires there to be a main symbol which must be changed before we can successfully do that.

cc @joshpoll @electriclilies

This is now fixed for full modules, going to close.


Introduce a "clipToBounds" property/API

This should be a Boolean value that determines whether subviews are confined to the bounds of the view.

I think this is a duplicate of https://github.com/eclipsesource/tabris-js/issues/143

Closing as duplicate of #143.


How to set the drag edge ?

After consulting the https://github.com/daimajia/AndroidSwipeLayout/wiki/usage, I can not see any documentation about setting the drag edge side. How to do this ?
Thanks

add java code like this:
//leftTargetView for drag edge from left
swipeLayout.addDrag(SwipeLayout.DragEdge.Left, leftTargetView);
swipeLayout.addDrag(SwipeLayout.DragEdge.Right, rightTargetView);
swipeLayout.addDrag(SwipeLayout.DragEdge.Top, topView);
swipeLayout.addDrag(SwipeLayout.DragEdge.Bottom,bottonView);

Thanks for you response.
Sad there is not any documentation about the xml attrs.
The progrommaticaly way add a drag edge but do not remove the previous, so to set the drag edge, you need to add an edge and remove the others ?


If local data center nodes are down then it will get the data from other data center replica nodes?

I have recently started using Cassandra in our Production environment. We have a 24 node cross colo cluster with replication factor of 4. We have 12 nodes in PHX and 12 nodes in SLC colo Becasue of replication factor 2 copies will be there in each datacenter.
I am using Astyanax client to read the data in Cassandra database. Below is the code I am using with Astyanax client that will auto discover all the nodes for each datacenter. Currently it will auto discover the nodes for PHX colo.
private CassandraAstyanaxConnection() {

    context = new AstyanaxContext.Builder()
    .forCluster(ModelConstants.CLUSTER)
    .forKeyspace(ModelConstants.KEYSPACE)
    .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
        .setPort(9160)
        .setMaxConnsPerHost(40)
        .setSeeds("cdb03.vip.phx.host.com:9160,cdb04.vip.phx.host.com:9160")
        .setLocalDatacenter("phx")
    )
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
        .setCqlVersion("3.0.0")
        .setTargetCassandraVersion("1.2")
        .setConnectionPoolType(ConnectionPoolType.TOKEN_AWARE))
    .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
    .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();
    keyspace = context.getEntity();

    emp_cf = ColumnFamily.newColumnFamily(
        ModelConstants.COLUMN_FAMILY,
        StringSerializer.get(),
        StringSerializer.get());
}

Now I am trying to understand what will happen in these two scenarios-

We have a replication factor of 4 so that means 2 copies of same data will be there in each colo. Now with the current configuration of Astyanax that I am using currently (see above code) which will auto discover the nodes only for each datacenter right? Currently it is PHX. So suppose I am looking for rowKey 123 then it will go and get the data from two replicas in PHX colo, right?

What about this scenario- Then what will happen in that case, suppose two nodes in PHX that will contain the data for rowKey 123 are down? Then it will go and get the data from SLC colo replicas nodes? Am I correct?

@opuneet , if you know, can you please tell me if functionality addressing the issue described above has been added in the 4 years since this was discussed?
In my case I'm using C* as a backup data store, and we intentionally expect entire "data centers" to fail.
Sadly, DNS is also not an option.
I suspect that we'll need to use two astyanax configurations open simultaneously, and try/except on them.
Please advise.


AT+RFPOWER for Bluetooth only

AT+GMR
->AT version:<IP_ADDRESS>-dev(8986ee3 - Sep 30 2019 07:33:23)
->SDK version:v3.3-dirty
->compile time:Oct 8 2019 16:22:49
->Bin version:00.10(WROOM-32)
How to set the RF-Power of BLE device if WIFI is disabled? AT+RFPOWER command gives back error but it seems the ble rf power is set correctly.
AT+CWMODE=0
->OK
AT+BLEINIT=2
->OK
AT+BLEGATTSSRVCRE
->OK
AT+BLEGATTSSRVSTART
->OK
AT+BLEADVSTART
->OK
AT+RFPOWER=82,3,3,3
->Error
From BLE analyzer I can see the rf power is set correctly but still get error code back from console.
AT+RFPOWER?
->+RFPOWER:0,3,3,3
->OK

Yes, you are right, this feature should be supported.

Can you try the latest master branch? It seems we have fixed it.

No update for a long time, close it.

hello，ESP32C3 AT+RFPOWER指令设置BLE从机的发射功率设置失败，看起来和Neslon07提出的issue很像，使用的是esp-at v<IP_ADDRESS>版本的代码。


Fixed decimal import

Hey bro, the migrations using decimal needs to import ROUND_HALF_EVEN, otherwise, it'll crash

Coverage remained the same at 75.162% when pulling a9e1a1410c6b0f8fd3824b0efe63a66b2dbd075b on wolfhaltz:fixed-template into 0052ff8b84fc6e7fea11a8ebb45438b60425f784 on klen:develop.

@wolfhaltz Thank you


fix: fix url evaluation

Description
Fixes API_Edit_spec.js
Fixes #38135
Automation
/ok-to-test<EMAIL_ADDRESS>@tag.IDE"
:mag: Cypress test results

[!IMPORTANT]
🟣 🟣 🟣 Your tests are running.
Tests running at: https://github.com/appsmithorg/appsmith/actions/runs/12503843226
Commit: 7ff55522e4fe8ee3206c8d3812fcc330b8c7ce72
Workflow: PR Automation test suite
Tags: @tag.Datasource, @tag.IDE
Spec: ``
Thu, 26 Dec 2024 12:27:20 UTC

Communication
Should the DevRel and Marketing teams inform users about this change?

[ ] Yes
[ ] No

Summary by CodeRabbit

Bug Fixes

Adjusted the test case for URL field interaction by removing the Enter key action after clicking, streamlining the validation process.

/ci-test-limit-count run_count=1 update_snapshot=true specs_to_run=cypress/e2e/Regression/ServerSide/ApiTests/API_Edit_spec.js

/ci-test-limit-count run_count=1 update_snapshot=true specs_to_run=cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js

/ci-test-limit-count run_count=1 update_snapshot=false specs_to_run=cypress/e2e/Regression/ServerSide/ApiTests/API_Edit_spec.js runId=12503879298

/ci-test-limit-count run_count=1 update_snapshot=true specs_to_run=cypress/e2e/Regression/ClientSide/VisualTests/JSEditorIndent_spec.js


Rename default branch to main

Expected Behaviour
default branch for the repository should be main rather than master

Done 👍


logout breaks frontend on other tab

when clicking the "logout all users" button in the right top corner of the app, it correctly signs the user(s) out of the current tab. However, when I refresh on another tab which was logged in, the frontend breaks.

(I needed to clear cookies / session storage afterwards)

a toast message with the possibility to sign in again appears now


Launching with editor param caps fps to 30

Steps to reproduce:

Install BSML (<IP_ADDRESS>) and Camera2 (v0.6.95)
Launch with editor launch param

Expected behaviour:

FPS is not capped

Actual behaviour:

FPS is capped to 30

Notes:

Launching with fpfc and clicking on editor does not cap frame rate

Camera2 UserData.zip

Will be fixed in next release


Characters typed into terminal when switching to other windows/tabs

Windows Terminal version
1.18.3181.0
Windows build number
10.0.22631.0
Other Software
PowerShell 7.4.0 (from microsoft store)
Steps to reproduce
From the first open tab in Windows Terminal, Alt-tab or use the mouse to switch to another window, or another tab within Windows Terminal.
Expected Behavior
Nothing typed into the terminal
Actual Behavior
The first time I switch away, it writes a [ into the terminal.  If I switch back, it writes O[, and if I tab out again it writes I[, and continues to do that if I tab in and out repeatedly, so I end up with something like [O[I[O[I[O[I[O[I[O[I[O[I[O[I[O[I in my terminal.
It's entirely possible that I (or my toddler) accidentally mashed some key combination to put the terminal in some unexpected mode; this would be the most likely explanation since neither Windows Terminal nor PowerShell have been updated recently, however I'm at a loss as to what exactly could have done this.

I'm getting the same thing using PowerShell 7.4.0, others still seem file like build in powershell and cmd.
It seems to be repeating characters over and over again. I just entered abcdefg and this is was it did.
PS C:\Users\Nicho> aababcabcdabcdeabcdefabcdefg

@adam-azarchs Those look like focus change escape sequences. If an application has requested focus notification, the terminal sends \e[O when it loses focus, and \e[I when it gains focus. But even if the terminal had been left with that mode enabled, I wouldn't have expected you to see anything in the shell - I would have thought PowerShell would just swallow those notifications quietly. So there's possibly something else going wrong here.
@ALameLlama I'm not sure what your problem is, but I don't think it's likely to be the same cause.


Add WinGet release step

This pull request was created following this discussion.
The PR adds another step to the CI process that updates the WinGet release using WinGet Releaser action.
Requirements
WinGet Releaser has following requirements, which were better explained in its readme:

[x] At least one version of the package to be released in the Windows Package Manager Community Repository.
[ ] A classic Personel Access Token.
[ ] An up-to-date fork of winget-pkgs under the same account as this repository. WinGet Releaser can automatically update the fork if the Personel Access Token has workflow permission.
[x] The action will only work when the release is published (not a draft).

Will it be sufficient if Personel Access Token is only allowed to public_repo? as described in winget-create Readme.md

Will it be sufficient if Personel Access Token is only allowed to public_repo? as described in winget-create Readme.md

public_repo plus optionally workflow (required to update the fork).

Can we now test with only the public_repo privilege? Personal Access Token with these privileges is available under the STEWARD_WINGET_TOKEN secret.

Sure. But you will need to make sure your fork of winget-pkgs is up-to-date before creating a release.

Sure. But you will need to make sure your fork of winget-pkgs is up-to-date before creating a release.
Should I update the PR to use STEWARD_WINGET_TOKEN?

Why would we need it up to date? If we only update the single value file/value we shouldn't get any problematic conflicts

Three files. Personally I also think we shoudn't need most up-to-date version, as long as some previous versions of the files we need are in the main brach. The action will create new files using the existing ones as templates and then put them in ScalCLI/<version> directory. I was just parroting WinGet Releaser's readme, sorry.

In the WinGet Releaser, it states that only classic tokens are supported and refers to an issue in the cli repository where repo-second tokens aren't available to run GraphQL requests.
However, I have checked the linked issue and it seems that the issue was resolved in the cli repository. GitHub now supports the GraphQL API for repo-scoped tokens, as mentioned in this blog post: https://github.blog/changelog/2023-04-27-graphql-improvements-for-fine-grained-pats-and-github-apps/.
@tgodzik, I think we can generate a token that only has access to the fork of the winget-pkgs repository and test if it works.

Hi @mimoguz, sorry for the delayed response. We've updated the STEWARD_WINGET_TOKEN to include workflow permissions. Once the secret used in the CI is renamed to STEWARD_WINGET_TOKEN, we should be ready to merge.

@mimoguz, Thank you for your contribution! We'll verify its during the next Scala CLI release.


JSON - LARAVEL- IONIC

Please add ajax, laravel, ionic icons

Laravel and ionic already added.
Is there an official Ajax logo ?


Read ORCA Handbook and Policies

Read the Following Documents:

How_ORCA_Works.md
ORCA_Handbook.md
IT_and_Data_Security_Policies.md
Intellectual_Property_Policy.md
CODE_OF_CONDUCT.md
Add a comment to this issue with your initials and date completed, then close the issue

EE 5/20


Make input switches work

It seems boolean_number contains a float between 0.0 and 1.0, where >= .5 should be interpreted as "true" and otherwise false.
In the existing code int(boolean_number) was used to turn this into a 0 or 1, but for anything less than 1.0 this became 0, as for example int(0.9) == 0.

Good thought.


RELATED: SD-559 add filter context type

Currently destined for release R188.
This release is zero downtime release.
Code drop: 2019-08-09 00:00.

Story SD-559 gooddata-js - Enhance to adapt new PDF export endpoint
Status: New
Priority: Major
Assignee: Binh Nguyen

client-libs/gooddata-typings-pull-request-compliance-check check failed
require-evaluated-risk
Ticket should have regression risk evaluated before merging, see GoodConfluence

SD-559

Build failed (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/28/ : UNSTABLE in 11s
gooddata-typings-unit-tests-zuul-docker-el7 : SKIPPED

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/29/ : SUCCESS in 7s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/99/ : SUCCESS in 1m 13s

Story SD-559 gooddata-js - Enhance to adapt new PDF export endpoint
Status: Hacking
Priority: Major
Assignee: Binh Nguyen

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/30/ : SUCCESS in 9s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/100/ : SUCCESS in 55s

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/31/ : SUCCESS in 14s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/101/ : SUCCESS in 53s

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/32/ : SUCCESS in 9s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/102/ : SUCCESS in 1m 13s

LGTM

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/33/ : SUCCESS in 10s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/103/ : SUCCESS in 33s

Currently destined for release R189.
This release is zero downtime release.
Code drop: 2019-08-23 00:00.

Build failed (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/34/ : SUCCESS in 10s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/104/ : FAILURE in 44s

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/35/ : SUCCESS in 8s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/105/ : SUCCESS in 58s

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/36/ : SUCCESS in 9s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/107/ : SUCCESS in 20s

Build succeeded (check pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-check/37/ : SUCCESS in 7s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/108/ : SUCCESS in 32s

LGTM

client-libs/gooddata-typings-pull-request-compliance-gate check failed
require-approval

pull request must be approved

Build failed (gate pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-gate/13/ : UNSTABLE in 11s
gooddata-typings-unit-tests-zuul-docker-el7 : SKIPPED

Build succeeded (gate pipeline).

https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-pull-request-compliance-gate/14/ : SUCCESS in 8s
https://checklist.intgdc.com/job/client-libs/job/gooddata-typings-unit-tests-zuul-docker-el7/109/ : SUCCESS in 1m 18s


Visual Studio "Featured" extensions are all for VS 2019 - should filter to VS 2022 compatible extensions

Describe the bug
Extensions shown on the Marketplace website landing page in the Featured section are all VS 2019 extensions, most of which are not compatible with VS 2022.

Expected behavior
Featured extensions should be compatible with VS 2022.

Thanks @chgill-MSFT for the feedback. Now, the extensions shown on the Marketplace website landing page in the Featured section are all compatible with VS 2022.

Awesome. Thank you!!
/cc @leslierichardson95


Add missing versions to site config

Will add them when we are ready but thanks for checking!

@tomkerkhove Okay, cool. Makes sense.


Add a flag to enable/disable debug labels

Enabled (default)

Disabled

Nice! I think the "Inspect" button should also be hidden (idea is that it looks exactly as in release mode)


Editor: Script errors in IE when using certain toolbar buttons without focus in the editable field

This issue was imported from Closure Library's previous home at http://closure-library.googlecode.com
The link to the original issue is:
https://code.google.com/p/closure-library/issues/detail?id=202

This issue is being closed as a preparation step before archiving the repository.  See the README for more detail.


Add configurable http client factory (fixes #120)

new http client factory ready to install/override default http(s)
mv GitUploadPackServiceFactory to clients.common pkg
rename http.HTTPError to http.Err
rename http.HTTPAuthMethod to http.AuthMethod
general improvements:

update install link in readme to v4 (example are already pointing v4)
fix indentation in package doc (styling for godoc.org)
use http.Status constants instead of integers
close leaked response body
rm named returns which stutter in doc
fix one format string
rm unnecessary if checks
documentation fixes

Can you provide an example in examples folder or maybe at package level? or even better both?
Looks nice I like the way of having your or client, the initial goal was that, but we forgot in the road :D

@mcuadros added examples (they don't do anything fancy but shows how client is customizable).


[VT-43] Vit: custom shortcuts

Scott Kostyshak on 2013-07-08T03:56:15Z says:
With all of the extensions out there and with many combinations of Taskwarrior commands, Vit needs a way to let the user have some custom mappings.
I think that one key should designate that the next key pressed will be a shortcut. One possibility is the backslash, which Vim suggests for custom shortcuts ("" by default is "").
There is currently no place for Vit to specify options. Do we need a .vitrc?
We also need a macro to stand in for the task id.
For example, in .vitrc, the user could put:
vitmap "a" "taskextension % do something cool"

In Vit, when the user types a backslash and then 'a', the following command will be run (% is replaced by the task ID that is selected in Vit):
taskextension ID do something cool

David Patrick on 2013-07-09T02:31:52Z says:
While I certainly agree that Vit could use customizable key-mappings, the short-cut-key suggested above feels a bit like a half-measure with an extra mode and a new set of sub-commands to remember. I would lean more towards just straight user-modifiable key-bindings. Maybe we could take a page (and some code) from tasknc (the other ncurses-based interactive taskwarrior shell) as customizability is one of tasknc's main features.
https://github.com/mjheagle8/tasknc/tree/refactor

David Patrick on 2013-07-09T02:38:12Z says:
and do we totally need a .vitrc? OR can we extend yet again the already epic .taskrc?
thanks Scott!
;-)


Updating Dockerfiles and go.mod to golang 1.21

Hello!
The Developer Experience team has created this pull request to help you upgrade Go from version 1.17, 1.18, or 1.19 to 1.21. Go versions before 1.20 are end of life and are no longer receiving any security updates. At your earliest convenience please verify that this PR doesn't break your application and upgrade Go to 1.21. This is related to Orianna's post in Engineering in Slack.
We wrote a script to update all Dockerfiles and docker-compose files in the repo to use the go-1.21-build base image instead of older Go build images. We also searched the repo for all go.mod files and ran go mod edit -go=1.21 then go mod tidy in each directory where we found go.mod.

closing as the upgrade is being done within PR-https://github.com/expel-io/aws-resource-counter/pull/8 instead


Guide on Computer Science vs Computer Engineering

pat gardner can help out
we should get multiple opinions

what should incoming frehsmen try to do
etc

thank u pat gardner <3

Pat wrote this https://docs.google.com/document/d/1glgu9ysGv0w81dR9BM-90wnMoyE3QqIw7WnNeZDOyz8/edit , convert to MD make pr

closed by #200


Extend pkgid syntax with @ support

In addition to foo:1.2.3, we now support<EMAIL_ADDRESS>for pkgids.  We
are also making it the default way of rendering pkgid's for the user.
What does this PR try to resolve?
With cargo-add in #10472, we've decided to only use @ in it and to add
it as an alternative to : in the rest of cargo.  cargo-add
originally used @.  When preparing it for merge, I switched to : to
be consistent with pkgids. When discussing this, it was felt @ has
precedence in too many tools to switch to : but that we should instead
switch pkgid's to use @, in a backwards compatible way.  #10472 served
as the change proposal for this
See also https://internals.rust-lang.org/t/feedback-on-cargo-add-before-its-merged/16024/26?u=epage
How should we test and review this PR?
The focus of the testing is on the parsers unit tests and on the end-to-end output.  We are not explicitly testing end-to-end input in this PR, assuming the unit tests are sufficient.
Additional information
This only focuses on places we already accept pkgids.  Looking into supporting<EMAIL_ADDRESS>in cargo install and cargo yank is being left for a future PR.

r? @ehuss
(rust-highfive has picked a reviewer for you, use r? to override)

I seem to recall that pkg@vers was suitable when vers is a version requirement, but in package IDs they should be precisely specified.  Maybe I'm a little confused, but is this related to Package IDs or Package ID Specs?  Assuming the later, does it make sense to have @ behave as a requirement?

I seem to recall that pkg@vers was suitable when vers is a version requirement, but in package IDs they should be precisely specified. Maybe I'm a little confused, but is this related to Package IDs or Package ID Specs? Assuming the later, does it make sense to have @ behave as a requirement?

My intention is to refer to Package ID Specs (as a user, I think of them being one in the same because of things like cargo pkgid and I forget that internally we have them as different concepts or that the --help refers to them as "specs").
Right now we have

cargo build -p foo:version
cargo add foo@version-req
cargo yank foo --vers version
cargo install foo --version version-req where the version req has an implicit-but-required = operand.

My intention with the change proposal embedded in #10472 was for this to change to

cargo build -p foo@version
cargo add foo@version-req
cargo yank foo@version
cargo install foo@version-req where the version req has an implicit-but-required = operand.

Though these are all slightly different, I think they make sense in context and aren't any more confusing then say the different meanings of the --version flag for yank and install.
Most of the original discussion on changing this happened on Zulip and I'd recommend catching up on that thread to get some more background on this.
Some highlights:
@Eh2406  (referring to a downside to being consistent)

We will have switching costs somewhere:

@joshtriplett  (referring to soft-deprecating : in favor of @)

Yeah, I don't want anyone having to think about "what kind of version is this".

alexcrichton

in any case changing the pkgid syntax is pretty easy to do

alexcrichton

I actually really like the idea of cargo install<EMAIL_ADDRESS>instead of cargo install --version 1.2.3 foo

OK, seems reasonable to me. I don't have a strong preference one way or the other, but @ does seem to be a little more prevalent. It does incur a little churn. For example, any documentation out on the web using the old syntax may cause confusion for new users. However, I suspect content using the : syntax is probably pretty rare.
One concern I was thinking is if we want to change the "exact version" vs "version requirement" behavior in the future. For example, this PR makes it so that I can run cargo update -p<EMAIL_ADDRESS>which requires an exact matching version. But let's say in the future we want to allow a partial version req like cargo update -p<EMAIL_ADDRESS>I think that should be safe to do? I can't immediately think of any back-compat hazards.
@rust-lang/cargo I'm going to go ahead and propose this to merge.
@rfcbot fcp merge

One concern I was thinking is if we want to change the "exact version" vs "version requirement" behavior in the future. For example, this PR makes it so that I can run cargo update -p<EMAIL_ADDRESS>which requires an exact matching version. But let's say in the future we want to allow a partial version req like cargo update -p<EMAIL_ADDRESS>I think that should be safe to do? I can't immediately think of any back-compat hazards.

Yes, that'd be safe to do and would make it more like cargo install.
The main concern is if we'd want to allow a command that accepts pkgid specs today to accept<EMAIL_ADDRESS>

Would you like to update docs with this PR or a follow-up?

https://doc.rust-lang.org/cargo/reference/pkgid-spec.html
https://doc.rust-lang.org/cargo/commands/cargo-pkgid.html

Also, in terms of display, are we going to switch to<EMAIL_ADDRESS>universally in Cargo? Such as yankand future-compat.

Would you like to update docs with this PR or a follow-up?

https://doc.rust-lang.org/cargo/reference/pkgid-spec.html

https://doc.rust-lang.org/cargo/commands/cargo-pkgid.html

Thanks, forgot to do that somehow

Also, in terms of display, are we going to switch to<EMAIL_ADDRESS>universally in Cargo? Such as yankand future-compat.

Missed those, thanks.  Updating them.

@weihanglo I've updated all of the places I could find pkgid spec's being manually rendered and modified them to make them more obvious.

Thanks!
@bors r+

:pushpin: Commit 709f1be20807cadbb6eaae2c3afcd6de65814f08 has been approved by ehuss

:hourglass: Testing commit 709f1be20807cadbb6eaae2c3afcd6de65814f08 with merge 0f75da631b4284180232c5a50bdf37e714acd059...

:sunny: Test successful - checks-actions
Approved by: ehuss
Pushing 0f75da631b4284180232c5a50bdf37e714acd059 to master...


renderer: Perform Rerender in batches, gated by requestAnimationFrame

By performing Rerender in batches, the main thread is blocked for
significantly less time in busy apps, leading to better responsiveness.
Missing from this implementation is a time budget, which may be required
to maintain consistent frame-rate for expensive render operations.
Fixes #79

For tests to work, I need to build out jsObject and the associated mocks to support the required methods for the RAF polyfill, but before I head down that path, I wanted to check whether you'd prefer to bring a copy into this code-base, or add the external dependency.  We can discuss the actual meat of the change first either way.
Below are some profiles for a bit of hacked-together code that does some fairly trivial DOM manipulation with tight timing on a Rerender loop:

From left-to-right:

Current master
Batched render (this PR)
Deduplicated batched render

I have not included the deduplicated renderer (3) here (which omits intermediary renders for a Component that has multiple Rerender requests in a single batch), because I'm not entirely convinced we can do that 100% safely, since users may rely on side-effects from the intermediary states inside Component.Render.
As you can see though, just batching renders inside requestAnimationFrame without further modification can yield significant gains, versus fully rendering every component piecemeal as requests come in.
We may want to consider adding a time-budget (for a target frame-rate) to each batch render if we're worried about dropping frames for large batches.  I'm not sure I'm hugely concerned by this though, mostly because it would have to be a best guesstimate approach, since we can't know up-front how long any particular component render is likely to take (we could take average or max of previous component renders, but prediction accuracy would still be low).

Codecov Report

Merging #152 into master will increase coverage by <.01%.
The diff coverage is 48.21%.

@@            Coverage Diff             @@
##           master     #152      +/-   ##
==========================================
+ Coverage   42.46%   42.47%   +<.01%
==========================================
  Files           4        5       +1
  Lines         551      598      +47
==========================================
+ Hits          234      254      +20
- Misses        290      316      +26
- Partials       27       28       +1

Impacted Files
Coverage Δ

raf.go
17.85% <17.85%> (ø)

dom.go
42.67% <78.57%> (+1.52%)
:arrow_up:

Continue to review full report at Codecov.

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

Overall, I think this is a great idea. Aside from my inline comments, I would be happy to merge this as-is right now.
I think that we can (and probably should) do even more here, though, but we don't need to block merging this PR on this.

I'm not entirely convinced we can do that 100% safely, since users may rely on side-effects from the intermediary states inside Component.Render (though this is probably bad design). We might consider adding an option to enable this behaviour, with an explanation of the caveat though.

I'd like to talk about this more.

Exactly how would a user write code inside Component.Render that relies on intermediary state side effects? Could you give an example?
I do not like the idea of offering this as an option. It's a bit like offering the ability in the Go runtime to disable the garbage collector -- you can do it, but all bets are off about what code you import will do. i.e., this would make a weird split in the Vecty package ecosystem where some packages support this option and others do not, or simply don't mention their support for it.

My gut says that the performance gains may be worth having the feature on by default, and that a user writing code which depends on that intermediary state would be hard enough (and strange enough) that it may not be a problem. If we support it from day one by default, people will write code supporting it. If it becomes a big problem, we can always turn it off. The same is not true if we decide to turn it on in the future.

We may want to consider adding a time-budget (for a target frame-rate) to each batch render if we're worried about dropping frames for large batches. I'm not sure I'm hugely concerned by this though, mostly because it would have to be a best guesstimate approach, since we can't know up-front how long any particular component render is likely to take (we could take average or max of previous component renders, but prediction accuracy would still be low).

I think we can do a lot of really fancy things here. Some we should do, and others probably not (right now, at least).

React fibers allow the user to specify which updates are high/low/medium priority. We could offer a similar setup, but personally I think that this places too heavy a burden on the user and is not that great in practice. I may be proven wrong here in the future, but I'd say we do not need this for now.

For the time-budget, it's true that we do not know how long a component render is likely to take (specifically, because the browser intentionally does not tell scripts this information). I think that in practice how long something takes to render is not that important of a detail. We can still do quite a lot without that information.

For example, we can assume that all browsers will target a 60hz monitor (60 FPS).
We can use some estimate factor like a 50/50 split where we assume that if our DOM manipulations (measured via window.performance.timing) have taken 8ms then browser rendering will also take 8ms. This heuristic would serve us well I think.
We would then assume if component rendering (using window.performance.timing) has taken > 8ms, we should push all remaining updates into the next batch. This would ensure we generally have around 60 FPS, as a rule of thumb. Obviously, this will not hold true in all cases. The important bit is that we don't strictly need it to. There are two situations we need to handle:

The user has application updates that are well below 16ms/frame -> we don't have to do anything. This will be the case for most applications.
The user has pushed some very large application updates that will greatly exceed 16ms/frame -> and they would really prefer their app to be responsive during this time. This 50/50 heuristic would ensure that this is true generally.

Also I notice that currently we requestAnimationFrame when Rerender is called, but this means that the algorithm has a best & worst case as follows:

description
frame 1
frame 2
frame 3
frame 4

worst case
requestAnimationFrame
component updates
requestAnimationFrame
componentUpdates

best case
requestAnimationFrame & component updates
same as frame 1
same as frame 1
same as frame 1

It really depends on how the browser's requestAnimationFrame behaves relative to which frame we are operating in. A better solution might be to pre-emptively requestAnimationFrame every single frame unless there is a lack of user calls to Rerender

https://github.com/gopherjs/vecty/pull/152#issuecomment-334972765 may be good to do as part of this PR.
My other thoughts in https://github.com/gopherjs/vecty/pull/152#issuecomment-334972597 are better done in separate PRs.

Exactly how would a user write code inside Component.Render that relies on intermediary state side effects? Could you give an example?

type MyComponent struct {
  vecty.Core
  Trigger bool `vecty:"prop"`
}

func (c *MyComponent) Render() *vecty.HTML {
  if c.Trigger {
    http.PersistSomethingToBackend()
  }
  return elem.Div()
}

With the following values for renders:

MyComponent.Trigger = false
MyComponent.Trigger = true
MyComponent.Trigger = false
If 2 and 3 occur in a single batch, this results in the call to the backend not occurring.

My gut says that the performance gains may be worth having the feature on by default, and that a user writing code which depends on that intermediary state would be hard enough (and strange enough) that it may not be a problem. If we support it from day one by default, people will write code supporting it. If it becomes a big problem, we can always turn it off. The same is not true if we decide to turn it on in the future.

I think maybe once we formalise the dispatch pattern, people will may be less likely to do things like this, since there'll be an established pattern for propagating changes, and dispatching actions that interact with services, but honestly it's a little hard to tell for me right now what people are likely to do.

it's true that we do not know how long a component render is likely to take (specifically, because the browser intentionally does not tell scripts this information).

I should have used the term reconcile here.  I was really talking about time inside Vecty's render code, rather than paint/layout by the browser.

We would then assume if component rendering (using window.performance.timing) has taken > 8ms, we should push all remaining updates into the next batch.

This is probably not bad in a lot of cases, but it's not a very efficient use of our time-budget when we have a lot of rendering to do.

Also I notice that currently we requestAnimationFrame when Rerender is called... It really depends on how the browser's requestAnimationFrame behaves relative to which frame we are operating in.

Yeah, I was aware of the potential (fraction of) 1 frame delay between request and render, but didn't consider it particularly problematic.

A better solution might be to pre-emptively requestAnimationFrame every single frame unless there is a lack of user calls to Rerender.

I had considered adding a requestAnimationFrame at the end of batchRenderer.render(), so that the next frame would run immediately, but return on re-entry without requesting a frame if the batch is empty.  Is this the sort of thing you had in mind?  This gives a stable:

Frame 1
Frame 2
Frame 3

requestAnimationFrame
update & requestAnimationFrame
update & requestAnimationFrame

Provided there are updates each subsequent frame, starting from frame 1 next Rerender call, at the small cost of processing an additional frame when there's no update.

I should have used the term reconcile here. I was really talking about time inside Vecty's render code, rather than paint/layout by the browser.

Understood now.

We would then assume if component rendering (using window.performance.timing) has taken > 8ms, we should push all remaining updates into the next batch.

This is probably not bad in a lot of cases, but it's not a very efficient use of our time-budget when we have a lot of rendering to do.

Yes, that is a good point. Perhaps a better default (which we could make configurable down the line) would be a 100/0 split between DOM manipulation / reconcilliation time and browser paint/layout time. This would mean:

We assume we are operating within a single step of the browser's 60hz loop; i.e. our time budget is 1000/60 == 16.666ms. Any component rendering (reconcilliation) that takes longer than this is pushed into the next batch.
The next frame starts 16.666ms later anyway, so aside from the time it takes for the browser to invoke our requestAnimationFrame callback there is no delay and we're using 100% of the time the browser gives us, effectively.

This is almost like not having a time budget at all, except for one important thing:

Because we intermittently pause every 16ms, the browser can begin layout/paint of these updates without blocking on the rest. For browsers that must do this synchronously, they'll hit roughly 30 FPS (if we assume 16ms of reconciliation == 16ms of paint/layout time); and for browsers that can do this mostly async they'll hit roughly 60 FPS (if we assume the browser can concurrently layout/paint the DOM independent of the executing JavaScript).

This also makes the first implementation of this quite direct / easy: if a batch update takes > 16.66ms then push updates to the next batch.

I had considered adding a requestAnimationFrame at the end of batchRenderer.render(), so that the next frame would run immediately, but return on re-entry without requesting a frame if the batch is empty. Is this the sort of thing you had in mind? This gives a stable:

Yes, exactly. :)

The more I think about the deduplication renderer the more I think that the 'user code' problem mentioned here is not an issue.
For example, in the same way that a user could write code in Render that relies on Rerender consistently and consecutively calling Render, someone could've written code like:
type MyComponent struct {
  vecty.Core
  Trigger bool `vecty:"prop"`
}

// called in response to clicking a button.
func (c *MyComponent) onClick() {
  vecty.Rerender(c)
  if c.Trigger {
    http.PersistSomethingToBackend()
  }
}

func (c *MyComponent) Render() *vecty.HTML {
  if c.Trigger {
    c.Trigger = !c.Trigger
  }
  return elem.Div()
}

This code would break after this PR because it assumes that Rerender will call a component's Render method before it returns.
Instead of worrying too much about these use cases, instead what I propose is that we update the  vecty.Rerender documentation. This means just adding:
 // Rerender causes the body of the given component (i.e. the HTML returned by
 // the Component's Render method) to be re-rendered.
 //
 // If the component has not been rendered before, Rerender panics. If the
 // component was previously unmounted, Rerender is no-op.
+//
+// Rerender operates efficiently by batching renders together, and because of
+// this there is no guarantee that a call to Rerender will map 1:1 consecutively
+// with calls to the component's Render method. For example, two calls to
+// Rerender may result in only one call to the component's Render method,
+// and they may be in any arbitrary order.

I think this would make it clear enough to users that relying on Render for updating state would be a bad idea, and opens up the possibility for us to do some quite interesting things in terms of render performance improvements.

Perhaps a better default (which we could make configurable down the line) would be a 100/0 split between DOM manipulation / reconcilliation time and browser paint/layout time.

My thinking was to do something like record the average reconcile time for components during each batch, and if we have < 2*avg remaining, push the rest of the batch to the next frame.  This is likely to produce desirable results in a pretty high number of cases, and in the worst case (where the last component rendered exceeds the frame budget), behaves as you're suggesting.

The more I think about the deduplication renderer the more I think that the 'user code' problem mentioned here is not an issue.

Yeah, this is why I suggested that the cases where it would cause problems would probably be due to poor design on the user's part.  I envisaged a user might do something like:
type NestedActionComponent struct {
  vecty.Core
  Trigger bool `vecty:"prop"`
}

func (c NestedActionComponent) Render() *vecty.HTML {
  if c.Trigger {
    http.PersistSomethingToBackend()
  }
  return elem.Div()
}

type MyComponent struct {
  vecty.Core
  trigger bool
}

// called in response to clicking a button.
func (c *MyComponent) onClick(vecty.Event) {
  c.trigger = !c.trigger
  vecty.Rerender(c)
}

func (c *MyComponent) Render() *vecty.HTML {
  return elem.Div(
    vecty.Markup(event.Click(c.onClick)),
    &NestedActionComponent{Trigger: c.trigger},
  )
}

Which is a little less clear-cut than your example, since the logic to perform the action is separated from the event that triggers it.  I don't like this code, just noting that users may try something like it, but as I noted earlier, the dispatch/store pattern should make this sort of thing less likely.
I'm not necessarily opposed to adding dedup with your proposed comment, but we should be conscious that some users may still trip over this.

My thinking was to do something like record the average reconcile time for components during each batch, and if we have < 2*avg remaining, push the rest of the batch to the next frame. This is likely to produce desirable results in a pretty high number of cases, and in the worst case (where the last component rendered exceeds the frame budget entirely), behaves as your suggestion would.

Makes sense, that sounds like it would be a better implementation than what I proposed.

Yeah, this is why I suggested that the cases where it would cause problems would probably be due to poor design on the user's part. I envisaged a user might do something like:

Right. (also, just to be clear, I did understand that snippet of code the first time you posted it without the parent component).

I'm not necessarily opposed to adding dedup with your proposed comment, but we should be conscious that some users may still trip over this.

Agreed. I'd like to add the dedup as soon as one of us has time to write it. :) I think that documentation, a more clear dispatcher pattern (as you suggested), and perhaps a vecty linter tool in the future could all help in preventing users from tripping over this. I am not too worried.

I'd like to add the dedup as soon as one of us has time to write it. :)

As the profiling image above might suggest, I already wrote it :wink:.  It's pretty trivial, so I'll add it back for the next push.

Latest commit adds dedup and time budgets, should address all prior feedback I believe.

I left a few more comments inline that are important to address before merging this.

Apparently Github is not showing the latest commit in the comments section any more, but should be available in the other tabs now.  There's no rush, so feel free to take a look over this tomorrow if you'd prefer - I don't expect any major changes to this now, so I can slip any minor changes in after work tomorrow if they're required.

Looks perfect! Thanks @pdf !
I have one last very minor suggestion, which I'll create as a second PR and will cc you on :)


face_recognition

TypeError                                 Traceback (most recent call last)
 in ()
52     ret, frame = cap.read()
53     #frame = cv2.resize(frame, (0,0), fx=0.5, fy=0.5)
---> 54     recognition(frame)
55     videoWriter.write(frame)
56     if cv2.waitKey(1) & 0xFF == ord('q'):
 in recognition(img)
21
22 def recognition(img):
---> 23     dets = detector(img, 1)
24     for k, d in enumerate(dets):
25
TypeError: call(): incompatible function arguments. The following argument types are supported:
1. (self: dlib.cnn_face_detection_model_v1, imgs: list, upsample_num_times: int=0, batch_size: int=128) -> std::vector<std::vector<dlib::mmod_rect, std::allocatordlib::mmod_rect >, std::allocator<std::vector<dlib::mmod_rect, std::allocatordlib::mmod_rect > > >
2. (self: dlib.cnn_face_detection_model_v1, img: array, upsample_num_times: int=0) -> std::vector<dlib::mmod_rect, std::allocatordlib::mmod_rect >
Invoked with: <dlib.cnn_face_detection_model_v1 object at 0x7fe95135ba40>, None, 1
Did you forget to #include <pybind11/stl.h>? Or <pybind11/complex.h>,
<pybind11/functional.h>, <pybind11/chrono.h>, etc. Some automatic
conversions are optional and require extra headers to be included
when compiling your pybind11 module.
hey guys !! i need help with this error

Can you provide me with the code @sersobrenatural.
Thanks.

Can you provide me with the code @sersobrenatural.
Thanks.


Set URL without using restmodProvider.rebase

Now I need to support an app that require to call multiple API, base on user input.
Let say user login with branch a, then the api will call https://api-a.example.com.
If user login with branch b, then the api will call https://api-b.example.com.
Is there a way to change the url after initialize?

I accidentally created the same issue https://github.com/platanus/angular-restmod/issues/357 (I was searching for urlPrefix)... I have similar use case.
This would add a great flexibility for the API. I hope it will be possible.

Currently is not possible, it could be done though. Here is an idea:
First create a prefix manager service:
angular.module('my-module').factory('ApiPrefixManager', [function() {
  var prefix = null;
  return {
    setPrefix: function(_prefix) {
      prefix = _prefix;
    },
    getPrefix: function(_for) { // maybe you could use different prefixes for different models...
      return prefix;
    }
  };
}]);

Then make models use the service prefix. Make sure you are not setting the config.urlPrefix property!.
angular.module('my-module').factory('MutablePrefix', ['RMUtils', 'ApiPrefixManager', function(Utils, Manager) {
  return {
    'Model.$url': function() {
       var baseUrl = this.$super();
       return Utils.joinUrl(Manager.getPrefix(this), baseUrl);
     }
  }
}]);

Finally, to change every model prefix call ApiPrefixManager.setPrefix.

@iobaixas Works, thx a lot!

It works for me too. But, I think it could work only for small applications. It would be not elegant when you have a lot of models.
e.g. in HUGE apps, you can have 100+ models. And add the 'Model.url' section for each model could be not efficient and a lot of unnecessaries lines. @iobaixas

@joseglego Well, you really don't need to add Model.url everywhere. Just create a mixin and then use it (everywhere). From my project:
  ...
  .factory('MutablePrefix', function(RMUtils, ApiManager) {
    'ngInject';
    return {
      'Model.$url': function() {
        const baseUrl = this.$super();
        return RMUtils.joinUrl(ApiManager.getPrefix(), baseUrl);
      }
    };
  })
  ...

function MyModel(restmod) {
  'ngInject';
  return restmod.model('/x/y/z').mix('MutablePrefix', {
    ...
  });
}


Radial Gravity Support?

Does it support radial gravity? Or have you got an implementation to show for it? Thanks.

Like earth? I think it can be implemented with a joint, similar to mouse or prismatic joint.

Yer like this: http://www.emanueleferonato.com/2012/03/28/simulate-radial-gravity-also-know-as-planet-gravity-with-box2d-as-seen-on-angry-birds-space/
Does it support everything that box2d supports to achieve this?

Cool!  That was easier than my suggestion.  Yes, it supports everything. You just need to use functions instead of over loaded operators.  For example, instead vecA = vecB + vecC use vecA = Vec2.add(vecB, vecC).

I'm going to close this, please feel free to open it again if required.


Tiktok JSON decode error

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting that yt-dlp is broken on a supported site
[X] I've verified that I'm running yt-dlp version 2023.07.06 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
uk
Provide a description that is worded well enough to be understood
Looks like some arabic content is failed to decode
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['-vU', 'https://vm.tiktok.com/ZMjMK1xkj/']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[b532a3481] (pip)
[debug] Python 3.11.4 (CPython arm64 64bit) - macOS-11.7.1-arm64-arm-64bit (OpenSSL 3.1.1 30 May 2023)
[debug] exe versions: ffmpeg 6.0 (setts), ffprobe 6.0
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1855 extractors
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
Available version<EMAIL_ADDRESS>Current version<EMAIL_ADDRESS>yt-dlp is up to date<EMAIL_ADDRESS>[vm.tiktok] Extracting URL: https://vm.tiktok.com/ZMjMK1xkj/
[vm.tiktok] ZMjMK1xkj: Downloading webpage
[TikTok] Extracting URL: https://www.tiktok.com/@tohamiiat/video/7276516565166656773?_t=8fbD3P2UbsD&_r=1
[TikTok]<PHONE_NUMBER>166656773: Downloading video feed
WARNING: [TikTok]<PHONE_NUMBER>166656773: Unable to find video in feed; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U; trying with webpage
[TikTok]<PHONE_NUMBER>166656773: Downloading webpage
ERROR: [TikTok]<PHONE_NUMBER>166656773:<PHONE_NUMBER>166656773: Failed to parse JSON (caused by JSONDecodeError('Expecting \',\' delimiter in \':"\\u200eمسلسل "سفاح الجيز\': line 1 column 32427 (char 32426)')); please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 710, in extract
    ie_result = self._real_extract(url)
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/tiktok.py", line 673, in _real_extract
    sigi_data = self._get_sigi_state(webpage, video_id)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/tiktok.py", line 53, in _get_sigi_state
    return self._parse_json(get_element_by_id(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 1011, in _parse_json
    self.__print_error('Failed to parse JSON' if errnote is None else errnote, fatal, video_id, ve)
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 994, in __print_error
    raise ExtractorError(f'{video_id}: {errnote}', cause=err)

  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/utils/_utils.py", line 624, in decode
    return super().decode(s)
           ^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
               ^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError: Expecting ',' delimiter: line 1 column 32427 (char 32426)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line 1008, in _parse_json
    return json.loads(
           ^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 359, in loads
    return cls(**kw).decode(s)
           ^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/yt-dlp/2023.7.6/libexec/lib/python3.11/site-packages/yt_dlp/utils/_utils.py", line 632, in decode
    raise type(e)(f'{e.msg} in {s[e.pos-10:e.pos+10]!r}', s, e.pos)
json.decoder.JSONDecodeError: Expecting ',' delimiter in ':"\u200eمسلسل "سفاح الجيز': line 1 column 32427 (char 32426)

There is a " in one of the JSON values, and it was being unescaped by get_element_by_id/get_elements_text_and_html_by_attribute, causing the JSON parsing to fail.
I guess all of the utils.get_element... functions should not be used for extracting JSON
This fixes it:
diff --git a/yt_dlp/extractor/tiktok.py b/yt_dlp/extractor/tiktok.py
index f14c4f9d6..23c6bed48 100644
--- a/yt_dlp/extractor/tiktok.py
+++ b/yt_dlp/extractor/tiktok.py
@@ -50,8 +50,9 @@ def _create_url(user_id, video_id):
         return f'https://www.tiktok.com/@{user_id or "_"}/video/{video_id}'

     def _get_sigi_state(self, webpage, display_id):
-        return self._parse_json(get_element_by_id(
-            'SIGI_STATE|sigi-persisted-data', webpage, escape_value=False), display_id)
+        return self._search_json(
+            r'<script[^>]+\bid="(?:SIGI_STATE|sigi-persisted-data)"[^>]*>', webpage,
+            'sigi state', display_id, end_pattern=r'</script>')

     def _call_api_impl(self, ep, query, manifest_app_version, video_id, fatal=True,
                        note='Downloading API JSON', errnote='Unable to download API page'):

Hello, how can I modify Windows?

Maybe a kwarg unescape_content=True could be added to the get_element_by_xxx() functions?

After applying the diff, I still get this warning (video downloads fine thereafter):
WARNING: [TikTok]<PHONE_NUMBER>166656773: Unable to find video in feed; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U; trying with webpage
./yt-dlp -v --ignore-config https://vm.tiktok.com/ZMjMK1xkj/
[debug] Command-line config: ['-v', '--ignore-config', 'https://vm.tiktok.com/ZMjMK1xkj/']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>[66cc64ff6] (zip)
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-5.4.0-162-generic-x86_64-with-glibc2.29 (OpenSSL 1.1.1f  31 Mar 2020, glibc 2.31)
[debug] exe versions: ffmpeg N-111711-gd295b6b693-Nico-20230808 (fdk,setts), ffprobe N-111711-gd295b6b693-Nico-20230808, phantomjs 2.1.1, rtmpdump 2.4
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.1.0, certifi-2023.07.22, mutagen-1.47.0, secretstorage-3.3.3, sqlite3-2.6.0, websockets-11.0.3, xattr-0.9.6
[debug] Proxy map: {}
[debug] Loaded 1865 extractors
[vm.tiktok] Extracting URL: https://vm.tiktok.com/ZMjMK1xkj/
[vm.tiktok] ZMjMK1xkj: Downloading webpage
[TikTok] Extracting URL: https://www.tiktok.com/@tohamiiat/video/7276516565166656773?_t=8fbD3P2UbsD&_r=1
[TikTok]<PHONE_NUMBER>166656773: Downloading video feed
WARNING: [TikTok]<PHONE_NUMBER>166656773: Unable to find video in feed; please report this issue on  https://github.com/yt-dlp/yt-dlp/issues?q= , filling out the appropriate issue template. Confirm you are on the latest version using  yt-dlp -U; trying with webpage
[TikTok]<PHONE_NUMBER>166656773: Downloading webpage
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: bestvideo*+bestaudio/best
[info]<PHONE_NUMBER>166656773: Downloading 1 format(s): download
[debug] Invoking http downloader on "https://v16-webapp-prime.tiktok.com/video/tos/useast2a/tos-useast2a-ve-0068c004/oIQZA2ntRkhAXJBjBVz7b1faIVMfQALI1GYBEE/?a=1988&ch=0&cr=3&dr=0&lr=tiktok_m&cd=0%7C0%7C1%7C3&cv=1&br=1010&bt=505&bti=ODszNWYuMDE6&cs=0&ds=3&ft=_RwJrB4Vq8ZmoLB.9Q_vjOMGLAhLrus&mime_type=video_mp4&qs=0&rc=NWk5PDhpN2VoaWQ1PDRmZkBpanNvamU6ZnVvbTMzNzczM0BeLmEwM2JjNmIxLmFgLmFgYSNnai9ucjRfaXFgLS1kMTZzcw%3D%3D&btag=e00088000&expire=1694558585&l=20230912164245C5929D406C752B2FD6C9&ply_type=2&policy=2&signature=f44a1a785b387d5623befe0695c0d4ee&tk=tt_chain_token"
[download] Destination: سفاح الجيزه 🖤✨#foryoupage #fypシ #Tohamii #viral #اكسبلور #foryou #سفاح_الجيزة #fyp  [7276516565166656773].mp4
[download] 100% of    1.13MiB in 00:00:00 at 1.28MiB/s

Some videos are unavailable via the feed endpoint and require the webpage fallback. There is an open issue about this and it is unrelated

There is a " in one of the JSON values, and it was being unescaped by get_element_by_id/get_elements_text_and_html_by_attribute, causing the JSON parsing to fail.
I guess all of the utils.get_element... functions should not be used for extracting JSON
This fixes it:
diff --git a/yt_dlp/extractor/tiktok.py b/yt_dlp/extractor/tiktok.py
index f14c4f9d6..23c6bed48 100644
--- a/yt_dlp/extractor/tiktok.py
+++ b/yt_dlp/extractor/tiktok.py
@@ -50,8 +50,9 @@ def _create_url(user_id, video_id):
         return f'https://www.tiktok.com/@{user_id or "_"}/video/{video_id}'

     def _get_sigi_state(self, webpage, display_id):
-        return self._parse_json(get_element_by_id(
-            'SIGI_STATE|sigi-persisted-data', webpage, escape_value=False), display_id)
+        return self._search_json(
+            r'<script[^>]+\bid="(?:SIGI_STATE|sigi-persisted-data)"[^>]*>', webpage,
+            'sigi state', display_id, end_pattern=r'</script>')

     def _call_api_impl(self, ep, query, manifest_app_version, video_id, fatal=True,
                        note='Downloading API JSON', errnote='Unable to download API page'):

I inplace-edited with this patch in my project and everything works now. So, it looks like a well-working patch


[Bug]: HuggingFace models keep getting downloaded

Describe the bug
We're working on a remote code execution system that would let users run functions on our infrastructure. The following function generates audio from an input text by using the Speechbrain Tacotron2 + HifiGan example:
def tts(text: str):
    from speechbrain.pretrained import Tacotron2, HIFIGAN
    import torchaudio
    import io
    import os

    # Intialize TTS (tacotron2) and Vocoder (HiFIGAN)
    tacotron2 = Tacotron2.from_hparams(
        source="speechbrain/tts-tacotron2-ljspeech",
        savedir="/data/tmpdir_tts")
    hifi_gan = HIFIGAN.from_hparams(
        source="speechbrain/tts-hifigan-ljspeech",
        savedir="/data/tmpdir_vocoder")

    # Running the TTS
    mel_output, mel_length, alignment = tacotron2.encode_text(text)

    # Running Vocoder (spectrogram-to-waveform)
    waveforms = hifi_gan.decode_batch(mel_output)

    buffer = io.BytesIO()
    torchaudio.save(buffer, waveforms.squeeze(1), 22050, format="wav")
    return buffer

where /data is a persistent directory dedicated for caching. Each time this function is called, the model artifacts are downloaded, instead of using the cached files. This is wasteful and slows down function execution.
Expected behaviour
The model artifacts should be downloaded only once into a cache directory. Subsequent from_hparams calls should use cached model artifacts.
To Reproduce
No response
Versions
No response
Relevant log output
No response
Additional context
No response

Hi @anautsch, could you please have a look? Thanks! :-)

Hi @mederka,
Thanks for raising this issue.
Have you tried to put the exact path of the downloaded model ? e.g. :

PATH_TO_THE_LOCAL_MODEL = "/data/tmpdir_tts/

def tts(text: str):
    from speechbrain.pretrained import Tacotron2, HIFIGAN
    import torchaudio
    import io
    import os

    # Intialize TTS (tacotron2) and Vocoder (HiFIGAN)
    tacotron2 = Tacotron2.from_hparams(
        source=PATH_TO_THE_LOCAL_MODEL+"/tacotron2/",
        savedir="/data/tmpdir_tts")
    hifi_gan = HIFIGAN.from_hparams(
        source=PATH_TO_THE_LOCAL_MODEL+"/hifi_gan/",
        savedir="/data/tmpdir_vocoder")

    # Running the TTS
    mel_output, mel_length, alignment = tacotron2.encode_text(text)

    # Running Vocoder (spectrogram-to-waveform)
    waveforms = hifi_gan.decode_batch(mel_output)

    buffer = io.BytesIO()
    torchaudio.save(buffer, waveforms.squeeze(1), 22050, format="wav")
    return buffer

As pointed here : https://github.com/speechbrain/speechbrain/blob/develop/speechbrain/pretrained/fetching.py#L51 if the link is valid, then it will automatically create a symlink to the model and use it.
So, it may be interesting for you to check if the model is at the exact location of where you are pointing it.

Hi @Adel-Moumen, I get this error when I try to user local dir as a source:
OSError: [Errno 40] Too many levels of symbolic links: '/data/tmpdir_tts/hyperparams.yaml'

Hmmm weird. It does work on my end.
I did this:

# the relative or exact path of the model
PATH_TO_THE_LOCAL_MODEL = "."

def tts(text: str):
    from speechbrain.pretrained import Tacotron2, HIFIGAN
    import torchaudio
    import io
    import os

    # check if the model is already downloaded
    if not os.path.exists(PATH_TO_THE_LOCAL_MODEL+"/tts-tacotron2-ljspeech/"):
    # Intialize TTS (tacotron2) and Vocoder (HiFIGAN)
        tacotron2 = Tacotron2.from_hparams(
            source="speechbrain/tts-tacotron2-ljspeech",
            savedir=PATH_TO_THE_LOCAL_MODEL+"/tts-tacotron2-ljspeech/")

    if not os.path.exists(PATH_TO_THE_LOCAL_MODEL+"/tts-hifigan-ljspeech/"):
        hifi_gan = HIFIGAN.from_hparams(
            source="speechbrain/tts-hifigan-ljspeech",
            savedir=PATH_TO_THE_LOCAL_MODEL+"/tts-hifigan-ljspeech/")

    # Intialize TTS (tacotron2) and Vocoder (HiFIGAN)
    tacotron2 = Tacotron2.from_hparams(
        source=PATH_TO_THE_LOCAL_MODEL+"/tts-tacotron2-ljspeech/")
    hifi_gan = HIFIGAN.from_hparams(
        source=PATH_TO_THE_LOCAL_MODEL+"/tts-hifigan-ljspeech/")

    # Running the TTS
    mel_output, mel_length, alignment = tacotron2.encode_text(text)

    # Running Vocoder (spectrogram-to-waveform)
    waveforms = hifi_gan.decode_batch(mel_output)

    buffer = io.BytesIO()
    torchaudio.save(buffer, waveforms.squeeze(1), 22050, format="wav")
    return buffer

print(tts("hello world"))

Hi @medrka there are two ways of handling that error: delete or debug.
Does it need to be under /data or would a local dir data be ok, too?
(Do you have writing rights for /data ... it's a / level entry.)
i.e. please try
    tacotron2 = Tacotron2.from_hparams(
        source="speechbrain/tts-tacotron2-ljspeech",
        savedir="data/tmpdir_tts")
    hifi_gan = HIFIGAN.from_hparams(
        source="speechbrain/tts-hifigan-ljspeech",
        savedir="data/tmpdir_vocoder")

(it worked on my end - but local files)

Thank you, @Adel-Moumen and @anautsch! The updated code with path check worked! It would be nice if this check didn't have to be manual and the models wouldn't be redownloaded in from_hparams call.
@anautsch, I have to use /data because it's persisted across calls, where's the local environment gets destroyed.
Also, and this is not related to this issue, but if you have time, how do I get larger texts to process? Right now it seems like there's a limit on how big a text can be and when it's bigger than the limit I get non-legible short audio.

cc @Gastron regarding #1817
@mederka please write a bit more about "the local environment gets destroyed" - it seem related to the mentioned PR (but want to be sure I get your observation correctly).
@ycemsubakan do you have an idea for « how do I get larger texts to process? »

@anautsch, imagine running the tts function above inside a docker container that gets destroyed right after it's done executing the function. This docker container has a volume that is persistent and is mounted to /data.

@anautsch  @mederka
I think it's due to this line:
https://github.com/speechbrain/speechbrain/blob/4b485a32f183e53d7807cbdaff0acc1e93952204/speechbrain/lobes/models/Tacotron2.py#L1216
It's basically limiting tacotron to output a mel spectrogram with 1000 time steps.

Hello @mederka,
Can we help with anything else? Please let us know if there's anything we can assist with.
Thank you.

Closing here.
@mederka as mentioned, we are working on it in another PR. The approach would then be: download all you need & explicitly define it is a local fetch. (cc @Gastron fyi)


fix(react-query): make @suspensive/react-query v2 all naming convention correctly like @tanstack/react-query v5

fix #253
Overview

PR Checklist

[x] I did below actions if need

I read the Contributing Guide
I added documents and tests.

LGTM 😄

Long time no see @okinawaa! Let's go to @suspensive/react-query v2


BY 3.0 ported licenses

Description
Adds the BY 3.0 ported licenses to the site, by just saving the license part of the HTML from their existing HTML pages and embedding that in a page with the new look.  Adds a nicer test/dev page with links to all the deeds and licenses at /licenses/all/.
Checklist

[x] My pull request has a descriptive title (not a vague title like Update index.md).
[x] My pull request targets the default branch of the repository (main or master).
[x] My commit messages follow best practices.
[x] My code follows the established code style of the repository.
[x] I added tests for the changes I made (if applicable).
[x] I added or updated documentation (if applicable).
[x] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

We need to update the side menu.

Right now there's not a good way to do a side menu for the ported licenses. The ported licenses vary in which sections they include, and how they're identified in the HTML. They might not even all have link targets to link to.

For these licenses, can we format/style the legal code to be more inline with the legal code sections of the other licenses? Is this feasible?

I'll take a look.

We need to update the side menu.

Right now there's not a good way to do a side menu for the ported licenses. The ported licenses vary in which sections they include, and how they're identified in the HTML. They might not even all have link targets to link to.

I understand.

For these licenses, can we format/style the legal code to be more inline with the legal code sections of the other licenses? Is this feasible?

I'll take a look.

I can't think of a good way to do this. We're just embedding the license part of the HTML from the current HTML files unmodified, so they don't have vocabulary classes on them. I guess we could copy the style rules that end up being applied to parts of the other license pages, and try to put them in a style file with selectors based on the structure of the HTML, but I don't think we really want to head down that road.

For these licenses, can we format/style the legal code to be more inline with the legal code sections of the other licenses? Is this feasible?

I'll take a look.

I can't think of a good way to do this. We're just embedding the license part of the HTML from the current HTML files unmodified, so they don't have vocabulary classes on them. I guess we could copy the style rules that end up being applied to parts of the other license pages, and try to put them in a style file with selectors based on the structure of the HTML, but I don't think we really want to head down that road.

Got it. I don't think so either.


Add qBitTorrent version command

GET /version/qbittorrent HTTP/1.1
User-Agent: Fiddler
Host: <IP_ADDRESS>

Server Reply:
HTTP/1.1 200 OK
Content-Encoding:
Content-Length: 1
Content-Type: text/plain; charset=UTF-8

v3.2.0

Closed by 5eca282


how to found My Node?

there's nothing on the official doc on found node
https://docs.ethswarm.org/docs/installation/fund-your-node/

please keep it simple and stupid. swarm bzz is so difficult to deploy. please provide a usable deploy tutorial.
thank you !

curl -s http://localhost:1635/addresses | jq
bee_1
{
"overlay": null,
"underlay": [],
"ethereum": "0x9a943adeexxxxxxx",
"publicKey": "xxxxx",
"pssPublicKey": "xxx"
}
ethereum   is   node

Thanks for your query. For more comprehensive support, you would be best served in the #bee-support-mainnet discord channel. Please kindly ask your question there.