User comments

Fixes https://github.com/sudara/alonetone/issues/205

@sudara What do you have in mind to help with comment index issues?
I see that user_id isn't indexed, we can add that... Do you have something more specific in mind?

@innatewonderer Comments#index has been one of the slower actions, in part because the queries seem to be slow (also a lot of n+1s in the views, it seems) https://oss.skylight.io/app/applications/QMmsxBDrac9Q/recent/6h/endpoints/CommentsController%23index?responseType=html
The existing indexes are:
    t.index ["commentable_id"], name: "index_comments_on_commentable_id"
    t.index ["commenter_id"], name: "index_comments_on_commenter_id"
    t.index ["created_at"], name: "index_comments_on_created_at"
    t.index ["is_spam"], name: "index_comments_on_is_spam"

Right now two queries tend to fire, one is a count for will_paginate:

And the other is either a per-user or general query to grab the comments:

Both of these together take over 300ms typically, sometimes the per user one takes 200ms. They should probably take more like 20ms.
Comments are polymorphic in the database, they have a commentable_type — this is because historically, one could comment on updates (blog entries) and features as well as assets— neither of these exist anymore. We should think about removing the polymorphism.
For now, we could adjust the index to include the polymorphic type as described here: https://mauricio.github.io/2008/09/27/handling-database-indexes-for-rails-polymorphic-associations.html
I don't think this PR will do much detriment the score much, but because our indexes already suck (the existing indexes only helps the db reduce the table down to 57k rows currently) then I thought it would be a good time to evaluate.
Here's the explain on a typical comments query:
irb(main):010:0> User.first.comments.on_track.public_or_private(true).page(1).explain
=> EXPLAIN for: SELECT  `comments`.* FROM `comments` WHERE `comments`.`user_id` = 1 AND `comments`.`commentable_type` = 'Asset' AND `comments`.`is_spam` = FALSE ORDER BY comments.id DESC, id DESC LIMIT 30 OFFSET 0
+----+-------------+----------+------------+------+---------------------------+---------------------------+---------+-------+-------+----------+-------------+
| id | select_type | table    | partitions | type | possible_keys             | key                       | key_len | ref   | rows  | filtered | Extra       |
+----+-------------+----------+------------+------+---------------------------+---------------------------+---------+-------+-------+----------+-------------+
|  1 | SIMPLE      | comments | NULL       | ref  | index_comments_on_is_spam | index_comments_on_is_spam | 2       | const | 57392 |      1.0 | Using where |
+----+-------------+----------+------------+------+---------------------------+---------------------------+---------+-------+-------+----------+-------------+
1 row in set (0.00 sec)

Adding the extra condition in this PR just adds a bit of work at the end:
irb(main):011:0> User.first.comments.on_track.public_or_private(true).where("commenter_id != user_id").page(1).explain
=> EXPLAIN for: SELECT  `comments`.* FROM `comments` WHERE `comments`.`user_id` = 1 AND `comments`.`commentable_type` = 'Asset' AND `comments`.`is_spam` = FALSE AND (commenter_id != user_id) ORDER BY comments.id DESC, id DESC LIMIT 30 OFFSET 0
+----+-------------+----------+------------+------+----------------------------------------------------------+---------------------------+---------+-------+-------+----------+-------------+
| id | select_type | table    | partitions | type | possible_keys                                            | key                       | key_len | ref   | rows  | filtered | Extra       |
+----+-------------+----------+------------+------+----------------------------------------------------------+---------------------------+---------+-------+-------+----------+-------------+
|  1 | SIMPLE      | comments | NULL       | ref  | index_comments_on_commenter_id,index_comments_on_is_spam | index_comments_on_is_spam | 2       | const | 57392 |      0.5 | Using where |
+----+-------------+----------+------------+------+----------------------------------------------------------+---------------------------+---------+-------+-------+----------+-------------+
1 row in set (0.00 sec)

For now, I added an index for type/spam/private and all should be better, the indexes help the db whittle things down to 60 rows, and only then do other conditions get evaluated:
irb(main):002:0> User.first.comments.on_track.public_or_private(true).where("commenter_id != user_id").page(1).explain
  User Load (0.5ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
  Comment Load (19.9ms)  SELECT  `comments`.* FROM `comments` WHERE `comments`.`user_id` = 1 AND `comments`.`commentable_type` = 'Asset' AND `comments`.`is_spam` = FALSE AND (commenter_id != user_id) ORDER BY comments.id DESC, id DESC LIMIT 30 OFFSET 0
=> EXPLAIN for: SELECT  `comments`.* FROM `comments` WHERE `comments`.`user_id` = 1 AND `comments`.`commentable_type` = 'Asset' AND `comments`.`is_spam` = FALSE AND (commenter_id != user_id) ORDER BY comments.id DESC, id DESC LIMIT 30 OFFSET 0
+----+-------------+----------+------------+-------+-------------------------------------------------------------------------------------------+---------+---------+------+------+----------+-------------+
| id | select_type | table    | partitions | type  | possible_keys                                                                             | key     | key_len | ref  | rows | filtered | Extra       |
+----+-------------+----------+------------+-------+-------------------------------------------------------------------------------------------+---------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | comments | NULL       | index | index_comments_on_commenter_id,index_comments_on_commentable_type_and_is_spam_and_private | PRIMARY | 4       | NULL |   60 |      2.5 | Using where |
+----+-------------+----------+------------+-------+-------------------------------------------------------------------------------------------+---------+---------+------+------+----------+-------------+
1 row in set (0.00 sec)

Added new index and removed unused indexes:
https://github.com/sudara/alonetone/commit/42d440f048c96dfdaccdd2604b28862ab9554d90


obs-studio-plugins fail to build on aarch64 with CMake bug

Describe the bug
A clear and concise description of what the bug is.
Steps To Reproduce
Steps to reproduce the behavior:

On an aarch64 system: NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-shell -p obs-studio-plugins.wlrobs

Expected behavior
I expect the derivation to build successfully, though I understand a proper plugin install uses a wrapper module.
Screenshots
Each source file in the plugin fails with a similar error:
[1/7] Compiling C object libwlrobs.so.p/proto_xdg-output-unstable-v1-protocol.c.o
FAILED: libwlrobs.so.p/proto_xdg-output-unstable-v1-protocol.c.o
gcc -Ilibwlrobs.so.p -I. -I.. -I../inc -I/nix/store/0376lpmly2yz9gl1ii524zhj7qlc3plc-wayland-1.22.0-dev/include -I/nix/store/48yr6rpqg4h6a5xh53bijfn1542agfzy-obs-studio-29.0.2/include/obs -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -DENABLE_SCPY -D_GNU_SOURCE -DENABLE_DMABUF -fPIC -DHAVE_OBSCONFIG_H -DSIMDE_ENABLE_OPENMP '$<$<AND:$<COMPILE_LANGUAGE:C>,$<BOOL:C_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>' '$<$<AND:$<COMPILE_LANGUAGE:CXX>,$<BOOL:CXX_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>' -MD -MQ libwlrobs.so.p/proto_xdg-output-unstable-v1-protocol.c.o -MF libwlrobs.so.p/proto_xdg-output-unstable-v1-protocol.c.o.d -o libwlrobs.so.p/proto_xdg-output-unstable-v1-protocol.c.o -c ../proto/xdg-output-unstable-v1-protocol.c
gcc: warning: $<$<AND:$<COMPILE_LANGUAGE:C>,$<BOOL:C_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>: linker input file unused because linking not done
gcc: error: $<$<AND:$<COMPILE_LANGUAGE:C>,$<BOOL:C_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>: linker input file not found: No such file or directory
gcc: warning: $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<BOOL:CXX_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>: linker input file unused because linking not done
gcc: error: $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<BOOL:CXX_COMPILER_SUPPORTS_OPENMP_SIMD>>:-fopenmp-simd>: linker input file not found: No such file or directory

Additional context
I understand aarch64-linux is not a supported platform, even by upstream obs-studio.
I found this patch in Alpine which applies successfully against nixpkgs-23.11 and works for me via overlay.
Can someone more familiar with OBS confirm if this patch is valid and useful? If desired, I could work it into a PR to hopefully increase support for this architecture.
Notify maintainers
@jb55 @MP2E @V @miangraham

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
hufman@nixos:~/.config/home-manager$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-linux"`
 - host os: `Linux 5.10.66, NixOS, 23.05 (Stoat), 23.05.20231116.9fb1225`
 - multi-user?: `no`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.13.6`
 - channels(hufman): `"home-manager-23.05.tar.gz"`
 - channels(root): `"nixos-23.05, nixos-23.11-23.11"`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Priorities
Add a :+1: reaction to issues you find important.

Just tested, and it is still present when compiling plugins against OBS-Studio 30.0.2 (nixpkgs rev a64d9bf4)

Anyone find a method around this?


Write() errors with "no such file or directory" if key contains slashes

To reproduce, simply attempt to store a value with a key of a URL and a transform function similar to:
func cacheDirTransform(key string) []string {
	fields, err := ParseURL(key)
	if err != nil {
		return []string{"_other", key}
	}
	return []string{fields.CategorySlug, fields.ArticleID}
}

edit: This also happens with no key transform and a key of fmt.Sprintf("%s/%s", categorySlug, articleID)

This is documented in the README, albeit obliquely:

Note that your TransformFunc should ensure that one valid key doesn't transform to a subset of another valid key. That is, it shouldn't be possible to construct valid keys that resolve to directory names.

In other words, keys cannot contain os.PathSeparator.
PRs accepted to fix this somehow :)


Fix version parsing error with Ansible prereleases

Avoids failing to run run with prereleases by using a PEP440 compliant
version parser.

@decentral1se Yeah, master is broken, see https://github.com/ansible/molecule/pull/2326 which failed due to this.

(For reference, here is what it looked like in Travis before this change: https://travis-ci.com/ansible/molecule/builds/128917107)


Help with GTBurst GUI within Jupyter Notebook

Hi,
I am trying to fit five FERMI-LAT LCs, and am working within the threeML_test_2.7 environment. GTburst and ThreeML work correctly, however when fitting the bursts, the GUI corresponding to GTburst within the notebook does not seem to be working correctly, it shows up as a blank space, though I am able to move the cursor around within the GUI and close the GUI. I checked if this was a problem within GTburst itself, but that ran fine when running it independent of the jupyter notebook. The parameters and statistical measures of the fits all go through and are displayed correctly. Is there a problem with the particular environment I am working with (the 2.7 environment uses python2 so I thought that might be a problem).
Thank you

GTBurst and threeml are separate things. We have never tested opening the gtburst gui into the notebook. gtburst is a stand alone app.


Add more Engine Implementations

This issue tracks the list of engines that we plan to implement.

[ ] Load Balancing
[ ] Overload Control
[ ] Metrics (# of Requests/Success Rate/Failure Rate)
[ ] Traffic Shifting and Traffic Mirroring
[ ] Bandwidth Limit
[ ] Compression
[ ] Encryption

See also: https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/http_filters

cc @crazyboycjr @livingshade @Kristoff-starling

Is there any example about specifying multiple input/output queues? Say I have 3 endpoints: client A and server B, C and I want to randomly choose a server when sending RPC from client. (Assume servers are identical in functionality) I believe we need that sort of feature to implement LB or traffic mirroring or anything related with routing

There's unfortunately no such example. You need to build stuff around yourself. There's some tips, but we can definitely discuss more.

RpcAdapter can already support multiple connections. What it takes as input is just an EngineTxMessage, which you can specify a conn_id.
I would start from changing the userland API. There're two things I would consider to change (1) previously connect takes a concrete host:port and use DNS to resolve the address. Now I would add one or more APIs such as connect_multiple_addresses(&['a-list-of-addrs']) or connect_with_resolver('service-name', SomeResolver::new()) to let one client connect to multiple addresses at once. (2) We want the load balancing implemented in the backend service, so the userland library won't bother how to choose among multiple conn_ids, so we need a virtual conn_id. The mapping between a VirtualConnId to an actual ConnId can be maintained in a backend Engine (maybe call it Router or LoadBalancer?).
Having all that set up, a request will start from the user app (with vconn_id, call_id), goes to MrpcEngine, to LoadBalancer (maps vconn_id to conn_id), to RpcAdapter/TcpRpcAdapter.

In my understanding, Router matches an RPC service name (potentially with RPC function name or func_id) to a pool of connections (maybe can be called service cluster or simply 'Cluster'). LoadBalancer chooses a concrete connection to forward the request. It is ideal to have both so that mRPC can encode some custom routing rules. But in MessageMeta, there's only service_id and func_id which is auto generated, thus difficult to write rules for them. We can focus on LoadBalancer now and leave Router aside.


DRAFT: Config specification

codeshift.config.ts is intended to act as the source of truth for every codemod package. Configs serve a dual purpose of holding all relevant metadata and one or more codemods.
Config properties

maintainers: Github maintainer usernames to be pinged when an issue/pr is raised against a mod
description: Description of the package
target: Packages to target. This will be used by the github bot to trigger codemod runs in the future
transforms: Key-value pair of transforms organised by semver version. These are indented for package targeting
presets: Generic transforms that are related to the package

Example:
export default {
  maintainers: ['danieldelcore'],
  description: "Codemods for upgrading @atlaskit/avatar",
  target: ["@atlaskit/avatar", "@atlaskit/avatar-group"],
  transforms: {
    // Transforms for migrating to v1 of atlaskit avatar
    "1.0.0": require("./1.0.0/transform"),
    "2.0.0": require("./2.0.0/transform"),
  },
  presets: {
    // Generic codemods intended to support the use of @atlaskit/avatar
    "remove-chilren-props": require("./remove-chilren-props/transform"),
  },
};

There are two types of codemods:

transforms these are intended to move a package on NPM across versions. (v1->v2)
presets intended to support the package (remove deprecated api)

Problems

With the separation of versioned codemods, and presets is a bit odd. Ideally we can flatten this structure a bit more

Idea: Merge target and transforms my module name:
Single package, multiple codemods per version:
transforms: {
    '@atlaskit/avatar': {
      "1.0.0": require("./1.0.0/transform"),
      "2.0.0": require("./2.0.0/transform"),
    }
  },

Multiple package, multiple codemods per version.
Note: Assuming the transform is written to target avatar and avatar-group
Note: Assuming these packages are versioned together
transforms: {
    '@atlaskit/avatar, @atlaskit/avatar-group': {
      "1.0.0": require("./1.0.0/transform"),
      "2.0.0": require("./2.0.0/transform"),
    }
  },

Multiple packages, different codemods per version.
transforms: {
    '@atlaskit/avatar': {
      "1.0.0": require("./1.0.0/transform"),
      "2.0.0": require("./2.0.0/transform"),
    },
    '@atlaskit/avatar-group': {
      "5.0.0": require("./5.0.0/transform"),
    }
  },

Codemods with optional descriptions
transforms: {
    '@atlaskit/avatar': {
      "1.0.0":  {
         transform: require("./1.0.0/transform"),
         description: `Short descriptions for this transform, blah blah blah`
      }
    },
},

I've seen a few use-cases come up recently that i want to make note of:
Scenario 1: Multiple transforms pointing to the one file.
- 1.0.0/button-transform.ts
- 1.0.0/avatar-transform.ts

Extending configurations
In larger monorepo based projects, codemods are likely to be co-located on a per package basis. A set of codemods + config will sit with the package source. These codemods are likely not related to the "running" of the repo and are likely services exposed to consumers of those specific packages.
To make running, testing and even internal use of these codemods (for when a codmode is written to bump the package within the same repo), it would be nice for the CLI to be able to list all available codemods to be fuzzy searched and executed from the root without having to cd into the package.
How this could work is by specifying a root-level configuration / OR / utilise yarn/pnpm/npm workspaces property. IE
root-level configuration
// codeshift.config.js

{
  extends: [
    "build/*",
    "packages/*/*",
    "services/*",
  ]
}

utilise yarn/pnpm/npm workspaces property
"workspaces": [
    "build/*",
    "packages/*/*",
    "services/*",
  ],

Using these globs the CLI could look for codeshift.config files to list for selection.


[Feature Request] Falco should output the rules it has loaded into memory on every startup and every hot reload

Motivation

If #2479 gets implemented, I have an enhancement for Falco. To summarize the request in #2479: I'm requesting for falcoctl to download and apply the updated upstream rules and output the changes. My logging system will pick it up and it'll be sent into log analytics where I can do something with it. In line with that, I want falco to provide more information about the rules it ends up loading into memory each time the rules are loaded/reloaded.
Feature

The additional feature being requested here was touched on in https://kubernetes.slack.com/archives/CMWH3EH32/p1680859696392689?thread_ts=1680801818.987259&cid=CMWH3EH32. I want Falco to output the final set of rules loaded in memory from all config files on every startup and every hot reload. This is similar to what fluentd does and other tools can do (for example apache httpd can output parsed vhosts: httpd -t -D DUMP_VHOSTS, and parsed modules: httpd -t -D DUMP_MODULES)
This will help me to review what has changed upstream against what rules falco has loaded in memory after a hot reload more easily and quickly identify the changes I need to incorporate.
Alternatives

There's really no good way to identify if any changes made upstream are changes we want to incorporate into our rules.
Additional context

Since falco doesn't support merging different fields between the upstream rules and local rules as mentioned in #2477, we don't get any advantage to automatic rule updates if we have overridden the rule unless we manually review the updates and incorporate the changes into our customizations.

This seems quite an interesting feature, thank you for pointing this out! we are quite full for the upcoming release (Falco 0.35) but we can try to schedule it for (Falco 0.36)
/milestone 0.36.0

My logging system will pick it up

What Falco output channel should this ideally be piped into? std_out, std_err? Internal Falco rule? Something else?

stdout

Since we use fluentd, it scans stdout and stderr, for all pods on the node(s) where its own pod is running (runs as a DaemonSet), and we use the fluentd log analytics plugin to forward falco output to a log analytics workspace in Azure.

ACK we have existing internal alerting (will double check but I think its std_err -> I should update the description), e.g. see https://github.com/falcosecurity/falco/blob/e7534d945523192efcd7f72ae148b27744254e40/falco.yaml#L511 meaning it's straight forward to implement, we just need the capability first and alerting is a small commit on top. And it should be exposed in the falco.yaml in line with existing software functioning alerting.

/milestone 0.37.0
(sorry about that, afraid we won't be able to land this for Falco 0.36, but if other things clear up faster I will try Falco 0.36)

No worries! We're still on 0.34.1. I have an issue open internally to upgrade to 0.35.0 and test out the modern bpf probe, as we recently upgraded our test cluster to 1.26 and our other clusters to 1.25 (both on AKS, and 1.25 is where Azure switched the node OS to Ubuntu 22.04) :)
Looking forward to trying THAT out soon!

Nice, use 0.35.1 instead and please check out all the new falco.yaml configs for performance tuning ... lots of things happened in that space!

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

not stale

/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

/remove-lifecycle stale

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle stale

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle rotten

/remove-lifecycle rotten
On Sat, Nov 9, 2024, 4:12 PM poiana @.***> wrote:

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.
If this issue is safe to close now please do so with /close.
Provide feedback via https://github.com/falcosecurity/community.
/lifecycle rotten
—
Reply to this email directly, view it on GitHub
https://github.com/falcosecurity/falco/issues/2480#issuecomment-2466478684,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ATRTFZ4DVYFIG5HHOWOYE4TZ72CEPAVCNFSM6AAAAAAWXDURU2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINRWGQ3TQNRYGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


What is default timeout or retry Number

Hi,
what is  default timeout value to connecting to device and what is retry number if fails to connect in  one time ?
How can i change retry or timeout value ?
Thanks

Hello!
The default timeout timer is 15 second. It's a default timer for all async operations in netdev. You can modify it when you create an instance by using timeout parameter/
I haven't the retry timer, you should manage it manually. My library only create a exception TimeoutError, you can use it in your own code for trying to connect several times to your devices

thank you..


iOS and WebSockets: 0 bytes read/no close frame received/code 1006?

Hello! First of, I would like to thank all the contributors that worked on this library, your work is amazing, and it's really pleasing to work with, by how simple and well documented it is, you all are the best!
Now, to give some context to my issue: I was working on a personal project of mine, which consists of recording snippets of audio from the browser then sending them back via websockets to a server, to be saved. I had almost no issues so far, or at least none that could be resolved by sifting through the doc or the issues, but then came the testing: No issues on desktop browsers, or on android browsers.
And then there is iOS. Which closes my websocket, immediately, as soon as it is opened. To try and debug it, instead of staying on my bigger project, I moved to a simpler echo server/client, and reproduced the issue there.
Setting the logging level to DEBUG reveals a DEBUG ! failing connection with code 1006 message, followed immediately with Python tracebacks, of 0 bytes read on a total of 2 expected bytes  and no close frame received or sent, which can be mitigated with some catching of those respective errors like the documentation explains, but it doesn't fix the underlying issue.
I searched through the issues, opened and closed of the repo, but I didn't find anything mentioning iOS, and the few solutions I tried had no impact.
I have yet to found a solution to this issue, and it is why I am here, to ask for some help. I thank you in advance for your time.
The Python server is running on Arch Linux, port 8001,
The client is written in vanilla JS, no framework,
The iPhone I'm testing on has iOS 17.5.1 (latest as of date)
The issue was reproduced on both Safari and Chrome (Firefox simply does nothing after getting in the OPEN state)
Below are attached my Python logs, test Python server, and test JS client, if it can help.
WebSockets-Stacktrace.txt
import asyncio
import ssl
import websockets
import logging

WEBSOCKET_PORT = 8001

###
# On message, print it out
###
async def simpleResponse(websocket):
    #try:
    async for message in websocket:
            print(message)
            await websocket.send("Heartbeat")
    # Catching ConnectionClosedError doesn't resolve the issue
    # except websockets.exceptions.ConnectionClosedError as e:
    #     print("Caught ConnectionClosedError: ", e)
    #     pass

CERT = "web/cert.pem"
KEY = "web/key.pem"
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(CERT, KEY, password="xxx")  # Removed for privacy reasons, ofc
###
# Secure Websocket server
###
async def start_secure_websocket():
    header = {
        'Connection' : 'upgrade',
        'Access-Control-Allow-Origin' : '*'
        }
    logger.info(f"Serving WebSocket server")
    async with websockets.serve(simpleResponse, '', WEBSOCKET_PORT,
                                server_header=None,
                                extra_headers=header, ssl=ssl_context,
                                compression=None, ping_interval=None):
        print("Starting secure websocket")
        await asyncio.Future()

if __name__ == "__main__":
    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s:%(lineno)d %(levelname)s %(message)s')
    logger = logging.getLogger(__name__)
    logger.addHandler(logging.StreamHandler())
    asyncio.run(start_secure_websocket())

// Register button events
document.getElementById("websocketConnect").addEventListener( 'click', () => {
  connectToWebsocket(document.getElementById("websocketIp").value, document.getElementById("websocketPort").value);
})

document.getElementById("websocketDisconnect").addEventListener( 'click', () => {
  disconnectFromWebsocket();
})

let webSocket;
function connectToWebsocket(ipAddress, port) {
  // Websocket is opened on each button click
  // This is BAD and will not be in the final product
  webSocket = new WebSocket('wss://' + ipAddress + ':' + port);
  webSocket.binaryType = 'blob';

  webSocket.onopen = function(event) {
    document.getElementById("websocketDisconnect").removeAttribute("disabled");
    document.getElementById("websocketConnect").setAttribute("disabled", "");
    console.log("Websocket opened: ", Object.values(event));
    webSocket.send("We are open!");
  }

  webSocket.onmessage = function(event) {
      console.log("Received heartbeat: ", Object.values(event));
  }

  webSocket.onclose = function(event) {
      console.log('WebSocket closed:', Object.values(event));
  };

  webSocket.onerror = function(event) {
      console.error('WebSocket errored!:', event);
      console.error(JSON.stringify(event, null, 4));
  };
}

function disconnectFromWebsocket() {
  document.getElementById("websocketDisconnect").setAttribute("disabled", "");
  document.getElementById("websocketConnect").removeAttribute("disabled");
  // Close the websocket gracefully
  webSocket.close();
}

Your don't need to send a Connection: upgrade header — websockets does that.
    header = {
        'Connection' : 'upgrade',
        'Access-Control-Allow-Origin' : '*'
        }

Maybe iOS dislikes the duplicate header?

Ah indeed, I didn't notice that was the case, so I added it myself to try and see if it helped. So removing the duplicate header seems to have changed something, on the Python side, the server indicates a DEBUG = connection is CONNECTING, on the JS side though onerror is triggered followed by the onclose event, no message received, no message sent:

So some progress? At least python-websockets isn't exploding anymore, but now why is iOS closing the connection prematurely?

Update, and really I'm baffled by how to fix this, and if somebody has an explanation of why this is how things are done on iOS, please enlighten us all.
So, turns out, iOS HATES when your websockets are not opened in an asynchronous manner, so, the simple fix for websockets not opening is to define an async function, and await for the websocket to open, which on paper sounds logical, but I haven't found a single ounce of documentation about this.
I tested this on my previous simple echo example, works perfectly, tested on my bigger project, works too, so I suppose the case is closed. I don't know if you want to add more to this since it's not a python-websockets related issue at this point.

Apple doesn't really want to you keep long-lived TCP connection. They'd rather you use APNS.

I don't know enough about iOS development to document what you explained in the FAQ (and it's a bit out of scope of what I'm willing to document.) Hopefully other users hitting the same problem with websockets will find this issue and it will put them on the right track.


[T4A3][F10-B4]Jeremy Goh

@MightyCupcakes  Some comments added. Please close the PR after reading comments. Good job!


List subsorting and modular parsing

@bmmoore sent the following message to k-list (guys, let's have these discussions on github, so we can keep track of them and close as we clarify).

We've gotten a bit stuck trying to figure out how to combine automatic list subsorting with the new modular parsing.
Following established behavior, and also how isSort predicates would execute, we want
syntax Exp ::= Int
syntax Ints ::= List{Int,","}
syntax Exps ::= List{Exp,","}

to also make Ints a subsort of Exps.
The problem comes when we consider explicitly applied klabels. From the point of view of ASTs and semantics, we have exactly the same relationship in
syntax Exp ::= Int
syntax Ints ::= List{Int,","} [klabel(cons)]
syntax Exps ::= List{Exp,";"} [klabel(cons)]

but if we try to reflect the relationship by automatically generating the production
syntax Exps ::= Ints

we have to keep the parser from using it, or the concrete parser will expand to
allow input that mixes the different terminators, which ought to be illegal:
1+2;3+4;5,6,7

We want to be able to write any definition in kore, so it's not an answer just to say
that we should generate the subsort production at a later stage in the pipeline than
the parser draws from.
There's also no need to generate a clause of the isExps function which directly calls
isInts - walking down the spine of the list and calling isExp on the items already would
return true on a list of Ints without it.
I think a solution respecting all the design principles we have been aiming for may
finally require using an attribute to say a production isn't supposed to be used
for parsing at all. onlyLabel is a bit funny of a funny name on a subsort production
that doesn't actually have a label. Note that this is much better behaved than attributes
like notInRules - those lead to multiple different grammars from a module, while what
we want is to not add a production to the single grammar of the module (i.e, to write
a "syntax" production entirely for semantic effects like introducing a klabel).
A smaller issue is where to put a subsort declaration - now that we take into account modules, we can have situations like the lists being declared in unrelated modules, or even adding the subsort between the items later on. I think this demonstrates all the worst cases:
module ELTS
syntax Int ::= ...
syntax Exp ::= ...
syntax Foo
endmodule

module INTS
imports ELTS
syntax Ints ::= List{Int,","}
-- can't see Exps here
endmodule

module EXPS
imports ELTS
syntax Exps ::= List{Exp,","}
-- can't see Ints here
endmodule

module SUB1
imports INTS
imports EXPS
-- can see Ints and Exps, but
-- not enough productions that Int < Exp
syntax Foo ::= Int
endmodule

module SUB2
imports INTS
imports EXP
-- same situation as SUB1
syntax Exp ::= Foo
endmodule

module LEAF1
imports SUB1
-- in this module but none of it's ancestors, we can deduce Ints < Exps
syntax Exp ::= Foo
endmodule

module LEAF2
imports SUB2
-- a module independent from LEAF1, where it is also true that
-- in this module but none of it's ancestors, we can deduce Ints < Exps
syntax Foo ::= Int
endmodule

@bmmoore : interesting example.
Yes, an onlyLabel sort of attribute could solve the problem, but I believe that we agreed that such an attribute is not needed in KORE.  Indeed, instead of
module A
syntaxOfA
syntax Production [klabel(abc) onlyLabel]
rulesOfA
endmodule

module B
imports A
stuffB
endmodule

one can write
module A-PARSING
syntaxOfA
syntax Production [klabel(abc)]
endmodule

module A
imports A-PARSING
rulesOfA
endmodule

module B
imports A
stuffB
endmodule

and then make sure that we consistently use A-PARSING when parsing (programs or any concrete syntax; recall that one is only supposed to use the abc label in rulesOfA and stuffB).
However, I do suggest a better solution.  This will be explained in a separate message.

Instead of using an onlyLabel kind of attribute, either directly or indirectly via the module system, I think that we should use isSort rules in @bmmoore 's second case where we do not want to expose the production to the parser.  That is, for the grammar
syntax Exp ::= Int
syntax Ints ::= List{Int,","} [klabel(cons)]
syntax Exps ::= List{Exp,";"} [klabel(cons)]

instead of generating the problematic
syntax Exps ::= Ints

to instead generate the rule
rule isExps(K) => true requires isInts(K) => true"

I believe the parser is not using using the rules, but only the productions, right?

I would like to make a meta-point here regarding automatic susorting.  This is probably clear to everybody, but I want it to be super-clear, so here I am repeating the obvious.
The user should never worry at all about automatically added subsortings syntax Ints < Exps.  In other words, the user should not even be aware of it being added anywhere.  The kompile pipeline should be able to use it as an optimization, if it chooses so, but the user should not suffer in any way because of this decision; it should happen completely under the hood, and the user should only see good/better performance.
The rationale for the above is the fact that Ints < Exps is a lemma, or a theorem, that can be proved from the existing grammar (or better say from the corresponding membership axioms).  For example, the productions
syntax Exp ::= Int
syntax Ints ::= List{Int,","}
syntax Exps ::= List{Exp,","}

mechanically add the axioms:
rule isExp(K) => true requires isInt(K) => true
rule isInts(_,_(KI,KL)) => true requires isInt(KI) /\ isInts(KL)
rule isExps(_,_(KI,KL)) => true requires isExp(KI) /\ isExps(KL)

One can now prove by induction that the reachability rule:
rule isExps(K) => true requires isInts(K) => true

holds, which also justifies potentially adding the subsort production to the grammar under the hood.
Note that this has nothing to do with lists in particular.  For example, take any grammar G.  Now extend it into G+G', where G' is a copy of G where each nonterminal Sort of G is replaced by a non-terminal Sort' (assume all productions have precisely the same corresponding KLabels).  To make it more interesting, you can randomly remove some of the productions of G'.  Now the following reachability rules can be proved for all non-terminals Sort:
rule isSort(K) => true requires isSort'(K)`

Again, the framework may choose to infer/prove all such properties at kompile time for its internal use and optimizations, but the user should not be bothered with it.  For example, if the user writes
rule ContextWithSortHOLE[TermG'::Sort']

then they just expect it to work for them, because, "obviously", Sort' < Sort.  If the framework decides to not add the inferred properties above, then it has to prove it each time that TermG' has sort Sort', which is true but expensive to compute at runtime.

I don't see how the A-PARSING example is supposed to work - that production is still imported into A and then B. I think you need a more complicated transformation where A-PARSING is unrelated to module A and instead the common syntax is put in an A-COMMON module inherited into both, and A-COMMON just declares the label abc without giving it any productions. However, these approaches don't work for subsorts (unlike the suggestion to add a rule to the sort predicate), because they don't have a klabel we can use to defer the concrete syntax to another module. Also, for this particular case of an implicitly added relationship the user should be able to parse in any module and get only the expected grammar from their own production.
Regarding your point about derived subsort relationships, that's certainly the ideal, but at the same time we should expect the implementation to need some help figuring it out. Suppose we have
syntax Coord ::= ...
syntax IntPoint ::= point(Int,Int)
rule isCoord(point(X:Int,Y:Int)) => true requires notBool( X =/=Int 0 andBool Y =/=Int 0 andBool IsFourthPower(X*X*X*X+Y*Y*Y*Y)

then it's also a theorem that isPoint implies isCoord, but I wouldn't expect K to prove it!
Fortunately it isn't so difficult here. Maybe the best thing to do is for the computation of the subsort relationship is to recognize the relationship between lists, which I think is what we used to do anyway.

My point with A-PARSING was, in KORE, to separate the syntax (productions) from the semantics (rules), everywhere, that is, in every module.  Then generate parsers only from syntax modules.  All semantics modules use KORE, that is, no concrete syntax.  Now if we decide for a particular subsorting Ints < Exps to be added to syntax, then we add it to the syntactic module.


move logic for creating a bucket for CGM data inside check for uploads we're reading

What it says on the tin.
In response to a support issue. The issue here is that if there are overlapping (in time) uploads from the same model of device, we only take the very last upload. So in this case where there was CGM data in an early upload but not in the most recent, we ended up creating a bucket for CGM data that did not exist in the most recent upload, and we expected it to be non-empty.

LGTM.


cmd/link: "pc-relative relocation address too big" for program with huge static data

What version of Go are you using (go version)?

$ go version
go1.21

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE='on'
GOARCH='amd64'
GOBIN=''
GOCACHE='/Users/xxx/Library/Caches/go-build'
GOENV='/Users/xxx/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/xxx/gopackage/pkg/mod'
GONOPROXY='*.byted.org,*.everphoto.cn,git.smartisan.com'
GONOSUMDB='*.byted.org,*.everphoto.cn,git.smartisan.com'
GOOS='darwin'
GOPATH='/Users/xxx/gopackage'
GOPRIVATE='*.byted.org,*.everphoto.cn,git.smartisan.com'
GOPROXY='https://goproxy.byted.org|https://goproxy.cn|direct'
GOROOT='/Users/xxx/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/xxx/go/pkg/tool/darwin_amd64'
GOVCS=''
GOVERSION='go1.21.1'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/dev/null'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/b1/0fd1b6hs7lz0fm_mh346lybm0000gn/T/go-build3937965288=/tmp/go-build -gno-record-gcc-switches -fno-common'

What did you do?

package main

var x1 = [2000000000 - 10000000]byte{0: 1}

func main() {
	println(x1[0])
	x2 := [100000000]int{1}
	_ = x2
}

go build

What did you expect to see?
Compile successfully && console prints 0
What did you see instead?
Compile failed && console prints
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598603
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65985f0
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa659850f
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598510
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598418
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65983f9
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65983b0
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598390
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598387
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa6598373
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65982f4
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65982e4
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65982c9
internal/cpu.processOptions: pc-relative relocation address for internal/cpu.options is too big: 0xa65982c4
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c986a
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c984b
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c9833
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c9818
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c97f6
internal/cpu.doinit: pc-relative relocation address for internal/cpu.X86 is too big: 0xa67c97d0
internal/cpu.doinit: pc-relative relocation address for internal/cpu.options is too big: 0xa659815a
/Users/xxx/go/pkg/tool/darwin_amd64/link: too many errors

Thanks for the report.
Please see these related issues:
https://github.com/golang/go/issues/7980
https://github.com/golang/go/issues/9862
The crux of the matter here is that the Go toolchain is not set up to support programs that use more than 2GB of static data.
I am going to close this as a duplicate of 7980 for now.
It is possible to imagine adding support for programs that use huge amounts of data (perhaps via something like -mcmodel=medium as describe here), however this work hasn't been done yet, and it would have to be very carefully designed in order to avoid performance problems.

Duplicate of #7980


[Minor] Slightly better error message when attempting to query hive tables w/in-mem catalog

@andrewor14

Test build #59698 has started for PR 13427 at commit 4919136.

looks good

FYI @gatorsmile

Thanks!

Test build #59698 has finished for PR 13427 at commit 4919136.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/59698/
Test FAILed.

@andrewor14 when you merge pull requests in the future, please have an explicit message that the pr's merged and include the branches.

Sorry I usually do but forgot for this one. This was merged into master 2.0


gen_to_unit: settings should use signature instead of getfullargspec

I think it's the same issue as here: https://github.com/joblib/joblib/issues/1164
I'm guessing that the settings-reading code in gen_to_unit was written before the @consumer wrapper was written.
If you dive into getfullargspec, the first thing it does is call _signature_from_callable(func, follow_wrapper_chains=False, ...).
If we could set that to follow_wrapper_chains=True then it would properly inspect the wrapped-function's arguments. But that is hard-coded.
In our case, this hasn't been too detrimental so far because we are still able to get the settings annotations using get_type_hints(func) but this doesn't know anything about default values.

Hmm.  gen_to_unit is a bit of a beast -- @pperanich when you find time could you weigh in?

I've already made some good progress and added some unit tests. I'll make a PR soon.


I can rename "~_~_gdindex" to another name? Like "gfiles".

I would like to customize some things, before changing, I would like to know what files I need to change for this change to work correctly.
I ask because there may be some detail that I don't know or just find by looking for "~ _ ~ _gdindex".
Thanks for the attention guys. 🍪 ☕ @maple3142

Yes, you can replace all the occurrence of ~_~_gdindex in worker script and App.vue inside  web. Then you  have to rebuild web and modify the script src in workers script's HTML part.


Bitcoin core rpc calls fail if multiple wallets are loaded

If multiple wallets are loaded in bitcoin core the plugins rpc calls fail because no specific wallet name is specified in the calls, add wallet name arg to the rpc calls to fix this.

Fixed


File attachment

Is it possible to attach an image or pdf to the query?

It's not possible just yet. I will look into the API and get back to you. Would be a fun feature to add!

I finally had some time and energy to work on the CLI again. However, unfortunately the current API does not support the uploading of images in the chat completion request:
https://platform.openai.com/docs/api-reference/chat/create
When it becomes available I will certainly add it to the CLI.

Image URL can be included in message. Maybe it's helpful.
curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-4o",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "What'\''s in this image?"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
          }
        ]
      }
    ],
    "max_tokens": 300
  }'

Thanks! I will take a look

This actually works :)
curl --location --insecure --request POST 'https://api.openai.com/v1/chat/completions'     --header "Authorization: Bearer ${OPENAI_API_KEY}"     --header 'Content-Type: application/json'     --data-raw '{
       "model": "gpt-4o",
       "messages": [
         {"role": "user", "content": "What is this image"},
         { "role": "user", "content": [
             {
               "type": "image_url",
               "image_url": {
                 "url": "data:image/png;base64,'"$(base64 -i ~/Downloads/wifi2.png)"'"
               }
             }
           ]
         }
       ],
       "stream": false
    }' | jq .

But my default arg size (getconf ARG_MAX) is only 1MB... So that won't work for plenty of images. However, you can pass an URL to 4o models instead. I may just stick to that.

Or I can detect local path vs URL and leave it up to the user to up ARG_MAX? I am not sure just yet.


PowerToys Run / Dynamic Number of results shown before scrolling

Description of the new feature / enhancement
Under PowerToys Run, Search & results:
"Number of results shown before scrolling": Int
This configuration needs to be adjusted to allow for a auto-adjusting number of results depending on the amount of available space.
Min and Max Numbers or equivalent could alleviate this.
Scenario when this would be used?
For users with different screen sizes and aspect ratios, for example my use case:
Central Workstation with wiring to multiple rooms for access points, each with different screen vertical real estate and peripherals.
On top of that, accessing it from multiple mobile devices via RDP or equivalent (even smaller vertical real estate)
Physicals:

Single Screen with 3840px of vertical real estate.
Four Screens: Two 1440px vertical + One 2160px vertical+ One 3840px vertical
Single Screen: 1440px

Remote:

1000px
1205px
1308px

Allowing for the feature to exist, the window would show the max number of things it can in the 3840px vertical and would do so too in all the smaller resolutions all the way down to RDP.
Supporting information
Microsoft has spent a lot of time and effort getting the OS to work perfectly with Touch & Smaller Screen sizes and for the most part they have accomplished it. See: The Taskbar, which not many understood why it was being rewritten, and now is amazing for tablets among other things.
One area where the taskbar comes short at the moment is when you have too many Windows Open. Alt Tab or Win Tab fall short. And PowerToys Run solves this by letting you search/visualize open windows.
This tool becomes a must once you realize you can use it as a filterable version of Alt Tab and Win Tab. Which on a device with a small screen is an absolute must when you have are connecting to a device with more apps open than horizontal screen space to list them twice ( new scroll function kicks in even in desktop ).

^ Who wants to use that even in Desktop, when you can filter with PowerToys Run? ''orz

After reading all of that, mandatory XKCD reference:

https://xkcd.com/1172/


fix: report which test the fructoseID is missing for

might be a bit nicer to convert rmComponent key to return a promise and then reject if an Id doesn't exist


Autoencoder Architechture

Given the discussion of weight initializations, any opinions on how an autoencoder architecture should be added?
-Stopping conditions for each in a pre-created set of layers [vs.] manual saving -> layer addition -> compile -> start next level of training?
-Noise addition (perhaps as a layer) over a distribution?
-Used only as a pretraining device [vs.] allow backproagation to create and encoder + decoder?

I have an implementation of Autoencoder with tied weights.  It's basically two-layers-in-one.  After pre-training you can extract the weights and initialize two Dense layers.
def get_output(self, train):
    X = self.get_input(train)
    encode = self.activation1(T.dot(X, self.W) + self.b)
    decode = self.activation2(T.dot(encode, self.W.T) + self.b_p)
    return decode

The trick for fitting multi-layer autoencoders is how to not backprop through the previously fit weights.  The method I use is to create a regularizer function
def zero_grad(g, p):
    return 0.

Then I pass that into the pre-trained Dense layer to prevent backprop from changing the weights.

Implemented https://github.com/fchollet/keras/pull/180


DO NOT MERGE: CI Testing #897

#897

@osrf-jenkins retest this please

The build got stuck somehow... :(

Here is the rebuild: https://build.osrfoundation.org/job/ign_rendering-pr-win/3326

Looks like it still didn't find OGRE2 from vcpkg.  I have to get my Windows laptop out for other things today, I will check this on there.


Replace github.com/pkg/error with native error wrapping

Package github.com/pkg/errors is in maintenance mode due to the golang native error wrapping.
Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the library and it is still present.

cloudflare-go version
latest
Go environment
N/A
Expected output
Switch to
import "errors"

Actual output
import "github.com/pkg/errors"

References
Issue for K8: https://github.com/kubernetes/release/issues/2549
Probably just use sed to replace, but not sure if waiting for experimental client.

this is easy enough with a tool like https://comby.dev/. I think I've already run a rule like this for Terraform so I'll have a look around on Monday to see if I still have it handy.


Fixed bugs on updateMapped

Correctly declare var keysToDelete
keyString should not contain any dots

Partial fix for this here: https://github.com/abergmeier/kafka_stats_exporter/pull/2

I will close this one as it get handled in other PR's


feat(prettier): add spacing before empty bracket in ImportDeclaration

Current dependencies on/for this PR:

main

PR #1447   👈

This stack of pull requests is managed by Graphite.


module_argument_complexnum

Description of Change
This function has the algorithm to calculate the module of a complex number
Checklist

[ x ] Added description of change
[ x ] Added file name matches File name guidelines
[ x ] PR title follows semantic commit guidelines
[ x ] Search previous suggestions before making a new one, as yours may be a duplicate.
[ x ] I acknowledge that all my contributions will be made under the project's license.

Notes: Calculate the modulus and argument(radians) value for a complex number

Thank you, I've done all the corrections!

Please resolve cpplint errors.

This pull request is superseded by #884

closed with #835


Crash when switching windows

Godot version
3.3.2
System information
Win10, GLES3, Intel HD 630, GeForce GTX 1060
Issue description
After the last windows update Godot is crashing when I alt+tab or click on another window and then go back to Godot.
Widnows version:
Edition: Windows 10 Home
Version: 2004
OS Build: 19041.1055
Experience: Windows Feather Experience Pack 120.2212.2020.0
Godot versions tried:
Standard Version 64-bit 3.3.0
Standard Version 64-bit 3.3.2
Standard Version 32-bit 3.3.2
All of those versions crashed when I switched windows and then went back to Godot. Ifter the crash I am left with the godot window that looks like a command line. It will not go away, and the windows task manager does not function while that godot window is still there. I cannot restart the computer from the start menu, I have to hold the power button to restart and try again. Once the computer restarts the windows task manager works like normal until I try godot again.
Thanks for any advice and help.
Steps to reproduce
I'm not sure if this can be reproduced on another computer or not.  I open Godot, then open a project.  Then when I switch to another windows, such as chrome, and switch back to Godot, that's when Godot crashes.
Minimal reproduction project
Crash has happened when I simply started a new project, and put nothing into it at all.  Then switched windows and switched back.

Same issue here, the issue is not very consistent, couldnt reproduce it with the debug version of godot for now, ill keep trying.
I am using godot 3.3.3 stable release:
Godot Engine v3.3.3.stable.official.b973f997f
and godot 3.3 debug release:
Godot Engine v3.3.stable.custom_build.8e68f2e5f
downloaded from the mainpage and https://github.com/Calinou/godot-debug-builds/releases respectively
Since the debug version doesnt crash i couldnt get any error message, in the normal version of godot it just crashes without any message.
This isssue is very frustrating, i hope it gets fixed soon


Reset heartbeat when resetting layer.

Connects #319
When we reset a layer we also need to reset the heartbeat status. This field
is used to note that a failed EMR heartbeat was returned and we rely on
knowing that two failed heartbeats were returned to decide if the cluster
actually failed to complete the job.
To Test
For speed of testing, this can be done manually by changing the layer status fields in the admin interface.

Start a job.
Ensure the job has failed and has a timestamp for the status_heartbeat field.
In the UI "retry" the job.
Check to see that the heartbeat status has been nulled out.

+1

Added one more commit to have heartbeat in the UI.

+1 tested


Not working in Laravel. Giving error of "HTTP/1.1 403 Forbidden"

I am trying to integrate this in my fresh Laravel, but while  trying to do file_put_contents(), it gives "HTTP/1.1 403 Forbidden" error.
This happens only for some video like https://www.youtube.com/watch?v=xu-cwLqchc0

Request like this works as expected:
POST /youtubei/v1/player HTTP/1.1
Host: www.youtube.com
X-Goog-Api-Key: AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8

{"context":{"client":{"clientName":"ANDROID","clientVersion":"16.05"}},"videoId":"xu-cwLqchc0"}

Actually I had done "composer require athlon1600/youtube-downloader "^3.0" , so it was not working.
But when I copied the vendor files from other folder where I had done git clone repository, then it works.

hm, I can also get it to work through cloning but not composer. Never using youtube-dl again after coming across this smh.

my docker-compose command currently needs to look something like this:
["sh", "-c", "cd web ; composer install -n ; cd vendor/athlon1600 ; rm -rf youtube-downloader ; git clone ${ytlib} ; cd ../../ ; php -S <IP_ADDRESS>:8000"]

Instead of:

composer require athlon1600/youtube-downloader "^3.0"

try:

composer require athlon1600/youtube-downloader dev-master

that is guaranteed to grab the absolute latest version with all the most recent updates which may have not yet been released into any version

Holy moly, I've been scratching my head for upwards of 8 hours trying to fix an issue I was having with 403 errors on downloading restricted videos, switched from v3 to dev master and works with no other code changes, glad its working now but fml


config file values and filename for custom slot types don't work together

If a config file specifies both "values" array and "filename" then the values retrieved from "filename" will overwrite values specified by "values"

Resolved in v0.7.107


Clarifications for Guidelines for Bug Fix and Feature PRs

Clarifying the guidelines for bug fix and feature PRs.

Applied with https://github.com/Microsoft/visualfsharp/commit/7e47ae1272ccb6baed830c2d3d2b9a982b6badf2


[FLINK-5791] Support an optimal matching based slot manager for flip6 yarn mode

This pr is for jira-#5791
Main changes:

Add a UNIVERSAL resource profile which can match any other one.
TaskExecutor will be initialized with the UNIVERSAL resource profile.
Add a Optimal matching based slot manager which match slots to the request with closest resource

@tillrohrmann Could you please help to review this pr? And there is a question, the pending requests in slot managers are not in order. So requests arrived later may be fulfilled earlier, does this matter?

Closing this PR since it is outdated.


Get latest stable

Hi, thanks for the action.
Would be great if it was possible to get latest stable release, because some projects have a lot of beta releases at the top.

We could add something like that. I'm thinking of doing it like this:
You can add another input called excludes which would be a list of release attributes you don't want to see.
      - id: keydb
        uses: pozetroninc/github-action-get-latest-release@master
        with:
            owner: pozetroninc
            repo: github-action-get-latest-release
            excludes: "prerelease, draft"

var excludes: string[] = core.getInput('excludes').trim().split(",");
...
        if (excludes.includes('prerelease')) {
            releases = releases.filter(x => x.prerelease != true);
        }
        if (excludes.includes('draft')) {
            releases = releases.filter(x => x.draft != true);
        }

This wouldn't change the default behavior and would allow people that care to exclude anything that's not a "stable" release.

You can try this with the version I just pushed pozetroninc/github-action-get-latest-release@master
If it works for you then I'll create a new release.

Hi, thank you, a good solution. I think it will be useful for many users.
But one thing, it is not fully fit in my case, let me explain.
I building Docker image for the NodeBB, my repo checking every day for changes in their repo and if some commits appeared bot trigger the Actions to build a new image.
In the current configuration, it is building two images, one for stable (using excludes: prerelease, draft), and one more for beta (typically latest release).
The best solution in this case, if Action github-action-get-latest-release has output like:
steps.NodeBB.outputs.release_type: prerelease
steps.NodeBB-beta.outputs.release_type: draft
steps.NodeBB-beta.outputs.release_type: release

and ideally (symlincs for docker purposes)
steps.NodeBB-beta.outputs.release_type_docker: latest (for release)
steps.NodeBB-beta.outputs.release_type_docker: prerelease

@rez0n you might also want to check out: https://github.com/marketplace/actions/tagging-strategy.  I think it pairs with this get-latest-release action very well, and should do what you want. (It's actually the primary use case for that).


Neo4j browser behind ingress with TLS encryption

Hello,
I'm sorry if this is not the right place to make such request. I have deployed Neo4jJ on Kubernetes using this helm chart. I would like to expose the Neo4J browser so that the staff can interact with the graphical interface.
The ideal solution would be to use Ingress Nginx with Cert Manager. I managed to expose the browser with this technology but it doesn't work for the Bolt port. Therefore, I customised my Ingress Nginx to expose the port 7687 (https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/).
The problems are that custom TCP services are not encrypted, and I still not able to login through the problem for some websocket errors (WebSocket connection to 'wss://example.com:7687/' failed).
Have you encountered this situation before ? Do you have any solution already ?
Regards,
Chris

Hi @chris-adam-b12 - this is being worked on. Check out this PR to see the intended approach https://github.com/neo4j/helm-charts/pull/180

Hello @ojhughes ,
Thank you for that quick answer ! When is it expected to be delivered in the stable release version (a week, a month, more ?) ?

Hey @chris-adam-b12 - It will be at least a month as I am on vacation for 2 weeks, then need to add more tests / docs / perform a release.
Feel free to experiment with that branch in the mean time as it is a standalone solution that deploys an HAProxy instance for the ingress controller

I am also very interested in this as we have been trying to create such a deployment using a proxy as you have done. I will test out what you have so far, thanks so much for working on this solution!

This is addressed with the release of neo4j-reverse-proxy helm chart in 5.12.0
https://neo4j.com/docs/operations-manual/5/kubernetes/accessing-neo4j-ingress/


Open 3D files?

The 3D folder only has .stl files. Would it be possible to have them as a step or similar?

These are the two onshape projects. Can you see them? Can you export in the
format of your choice?
https://cad.onshape.com/documents/146b8b994145177887407b23/v/0a1e5f034a5403b7d545e8f5/e/b6453eca2ba530476c30538a
https://cad.onshape.com/documents/c2cb2c3a5f0213b18ca23aa6/v/0c557975f7362fe0b01ac51c/e/1478128b17ff3afd79bedf8b
On Wed, Jun 23, 2021 at 1:25 PM Marcel Robitaille @.***>
wrote:

The 3D folder only has .stl files. Would it be possible to have them as a
step or similar?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/zapta/legacy_stepper_motor_analyzer/issues/10, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQVMQPT2UF2TAMRPMLR3WDTUI7LNANCNFSM47GQS5XQ
.

That is better than a step. I use OnShape too. Thank you so much.


autocomplete panel doesn't pop up when triggering focus on the input programatically

Is this a regression?

[ ] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was
No response
Description
When using autocomplete harness to focus on the autocomplete, the autocomplete panel does not open
const inputField = await loader.getHarness(MatAutocompleteHarness.with({ selector: '#autocompleteInput' }));   await inputField.focus();   const options = await inputField.getOptions();   expect(options.length).toBeGreaterThan(0);
The above code fails with 'Error: Unable to retrieve options for autocomplete. Autocomplete panel is closed.'
On checking further, I am sure that my autocomplete has options populated and this should work.
Reproduction
StackBlitz link:
Steps to reproduce:
1.
2.
Expected Behavior
The test should pass and the autocomplete panel should open.
Actual Behavior
The above code fails with 'Error: Unable to retrieve options for autocomplete. Autocomplete panel is closed.'
Environment

Angular:
CDK/Material:
Browser(s):
Operating System (e.g. Windows, macOS, Ubuntu):

This sounds like an issue with your setup somewhere. We have a very similar test here: https://github.com/angular/components/blob/main/src/material/autocomplete/testing/shared.spec.ts#L85

Closing since there hasn't been activity on this issue for a few months


Sorting Inefficiency in validator.go

Context: Proper implementation of sorting for improved efficiency.
Location: validator.go
Issue: The sort.Interface is not optimally implemented.
Remediation: Use the sort.Interface correctly or utilize the slices.Sort package (if permitted by the Go version).

no longer needed as we're switching to BlobstreamX


Implement code expander

Closes #9
Closes #34
I have developed a script to combine the code into a single file at submission.
Usage

Import dsu

./expand.py dsu

Import dsu,fenwicktree

./expand.py dsu fenwicktree

Import convolution,internal_bit,modint,internal_math,internal_type_traits(Recursively resolving dependency)

./expand.py convolution
-  Import dsu with comments
./expand.py --output-comment dsu
Problems
I removed the process to erase comments and test codes.
These problems were resolved.
- Removing test code
It removes the test code by looking for #[cfg(test)] on the source code and not reading after it in this implement.
Therefore,if another code exists below the test code, it will disappear.
- Removing comment
It simply looks for the // and delete the comment by not loading that line.
It can't remove multiple line comments(using /* ... */).

Do you think the "problems" should be resolved in the future? They seem to be hard to resolve with naive text-processing.
Just to be sure, could you list pros & cons of text searching in Python and token parsing in Rust?

Do you think the "problems" should be resolved in the future? They seem to be hard to resolve with naive text-processing.

I think it's hard to solve the problem with a simple implement.
The process to erase comments and test codes is not important, I'm considering remove it.
I think this would obviously impose some weird constraints on the writer of the code if it's not change this script.
(e.g. The test code has to be written at the bottom of the file.)

Just to be sure, could you list pros & cons of text searching in Python and token parsing in Rust that you think?

I think the following.
Advantages of this script:

It works with a single file.

It can select import modules.

Disadvantages of this script:

The dependencies of the module have to be described in the script.

Here are advantages/disadvantages of Rust implementation that I thought.

Advantages
1.1. In Rust, we can use proc-macro(2) and syn. That means we can easily add features in a robust way such as removing #[cfg(test)] items without imposing extra constraints.
1.2. Written in Rust, we can provide a standalone binary that users can use without git clone, though we'd able to run Python script in it like Command::new("python").args(["-c", include_str!("../path/to/expand.py")]).$ cargo install ac-library-rs

$ ac-library-rs convolution >> ./src/bin/a.rs

Disadvantages
2.1. The dependencies of the each module have to be explicitly described, too. Or rather, detecting dependencies is too hard by itself.
2.2. It needs to be build. The CI will take about 60s longer.
2.3. Larger than Python single file.

By the way, does "It works with a single file" mean "small, so it's easy to maintain"? If so, I agree with it.
Anyway, without the "removing docs & tests" function, I think that script is reasonable to Rust implementation.

I added the process of rustfmt.


Destination health checks documentation

It adds the documentation for destination health checks implemented in #459.
Fixes #497

Passive health check documentation is still in progress.

Please add sections for the most common extensibility points, IProbingRequestFactory and IActiveHealthCheckPolicy. E.g. a more detailed description of what they do and how to make and registering your own.

Good point. Will do.

Overall, it seems complete.


Load GLTF-File twice

Hello together, thanks for the greate project its a pleasure to work with Threlte,
I have issues loading the same exact GLTF file twice.
<GLTF
    position={[10, 10, 10]}
    url="/static/<FILE_TO_LOAD>.gltf"
/>

<GLTF
    position={[20, 20 , 20]}
    url="/static/<FILE_TO_LOAD>.gltf"
/>

Loading two different GLTF-Files works as expected and both models are shown. However, if the same model is loaded twice, only the second model is displayed.
I think the 'issue', if one can speak of one, lies in ThreeJS itself as described in this thread: use-the-same-gltf-model-twice-in-react-three-fiber-drei-three-js
My question is how to handle such issues the "Threlte-Way"?

This might be interesting to you: https://threlte.xyz/docs/reference/extras/instanced-mesh.
Allows you to show multiple instances of the same model and also saves on performance.

Hi @LukasLoeffler, this is indeed expected behaviour. A glTF file loaded via <GLTF> under the hood uses the hook useLoader(GLTFLoader) which caches the model being loaded by an identifier, in this case the prop url passed to <GLTF>. So having two components <GLTF> in your scene with the same url indeed will give you one model because a single THREE.Object3D can only be in one place at a time in your scene. So why is this cached? glTF files are inherently large and expensive to parse. This is the reason the utility @threlte/gltf exists: The utility is reusing the stuff that is actually reusable (geometries, materials) and instantiates the rest (Meshes, Groups, everything that extends THREE.Object3D).
There's a workaround however: You can pass a different url <GLTF> by adding a search parameter, which tricks the cache into thinking it's not present:
<GLTF
    position={[10, 10, 10]}
    url="/static/<FILE_TO_LOAD>.gltf"
/>

<GLTF
    position={[20, 20 , 20]}
    url="/static/<FILE_TO_LOAD>.gltf?a"
/>

I would not suggest to do that however. The file in question will eventually be loaded twice over the network (~browser cache layer) and parsed twice (definitely). Another way to have mutliple copies of the same glTF model is by utilizing <InstancedMeshes>.

Sorry for this late reply.
@grischaerbe Thanks for this detailed clarification and the tip for the workaround.
I will test the instanced mesh in the future and give feedback.

'''jsx

'''
Uncaught TypeError: Cannot read properties of null (reading 'boundingSphere')
I think it tries to calculate bounding sphere at first render and it cant because the model is not loaded yet

localhost-1702488040668.log


Added myself and fixed todo.js

@vini7148  contribute here https://github.com/Ishaan28malik/Get-Dev-Resources


Disabling the send button until is ready for transfer

Fixes #526
Description
Our wallet consists of several ways to authenticate the user and therefore different ways to carry out a transaction. The method that WalletConnect uses is the only one that requires two steps to perform a transaction: the creation of the sendConfig object and the actual execution of the transfer.
However, it happens that if the user tries to execute the transfer before the configuration object is ready, the error described in #526 occurs.
To avoid that, we disable the submit button until we're sure the config object is ready to be used.
Test scenarios

log in using WalletConnect using this link
fill the fields of the send token form one by one

notice that every time you update any field there's a window of time where the send button is disabled
you should not be able to send until the config object is set and ready

Checklist:

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have cleaned up the code in the areas my change touches
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules
[x] I have checked my code and corrected any misspellings
[x] I have removed any unnecessary console messages
[x] I have included all english text to the translation file and/or created a new issue with the required translations for the currently supported languages
[x] I have tested for mobile functionality and responsiveness
[x] I have added appropriate test coverage

resolved via #528 (changed base branch)


Make test output visible to everyone

The automated testing for Dusty is currently all done in GameChanger's private Jenkins cluster, which isn't visible to the public. This obviously makes it difficult for other contributors to determine where their code is failing tests and fix their issues. We should come up with some way to make these results visible.

This should be fixed now, I've reconfigured Jenkins to make the Dusty unit and integration tests publicly viewable. The links that show up in PR build statuses should be accessible to everyone.


Finetuning with Customized Dataset

It's not a issue but I want to do a segmentation on point clouds and I have a .laz files for finetuning sam model. So, basically I should create a customized dataset for that but couldn't understand it properly. Can you explain it step-by-step how to finetune with customized dataset?

Currently, FA does not support custom datasets for point cloud data. If you need custom datasets for semantic segmentation, you can refer to this file to organize your data


Vickel: Watch xposehub.com

Vickel requests the watch of the watch_keyword xposehub\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

xposehub\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by cocomac in Charcoal HQ


Move storybook to its own app

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


[PROPOSAL] Archive this repository

Since the code has been successfully integrated into opensearch-net, this project is no longer necessary and can be archived.

@Yury-Fridlyand

Did we end up doing a release of this first after all? Care to close #16 and #8 with a link to the release first?
Let's add a "this repo is unmaintained as it was moved to XYZ with a link to that PR" to README?

I will archive it then.

Thanks, Daniel. I'll ping you once everything is ready.


Test PR for CI builds

Summary of the changes (in less than 80 characters):

Detail 1
Detail 2

Addresses https://github.com/NuGet/NuGetGallery/issues/123

/AzurePipelines run

/AzurePipelines run

/azp where

/azp where

/azp run

/azp run

/azp run

Do you have an explanation of the workflow(wiring) for how the end-to-end scenario works for community contribution builds? How do you approve it for build, etc.?

The workflow is super easy -- we just use the azp run comment like you saw above. This PR itself is from an outside repo as a test :)

Closing this in favor of another approach


Move Microsoft.OneDriveInternalFast 21.066.0401.0001 to Microsoft.OneDrive.Internal.Fast 21.066.0401.0001

Pull Request created using Trenly's script
Microsoft Reviewers: Open in CodeFlow

@vedantmgoyal2009 the original file still needs to be removed: https://github.com/microsoft/winget-pkgs/blob/master/manifests/m/Microsoft/OneDriveInternalFast/21.066.0401.0001/Microsoft.OneDriveInternalFast.yaml


ejs support

How to convert everything from pug to ejs?

You would look for a different view engine NPM package that would interpret the EJS views:
https://www.npmjs.com/package/ejs
In the Express code you'd wire up the EJS view engine instead of Pug. Change:
app.set("view engine", "pug");

to:
app.set("view engine", "ejs");

You could look into converters or do this yourself. That's outside of the scope of this repo.


Gradle daemon and SSHJ / java.security problem

Expected Behavior
Gradle working with SSHJ library with daemon running. Any help appreciated.
Current Behavior
Integration of SSHj library only works when Gradle plugin using it is running with --no-daemon and/or  -Dorg.gradle.debug=true option.
Context
I am trying to implement file download using SSHJ within one of tasks of my Gradle plugin.
Steps to Reproduce (for bugs)
See: https://github.com/hierynomus/sshj/issues/347
Your Environment
$ sh gradlew --version

Gradle 4.1
Build time:   2017-08-07 14:38:48 UTC
Revision:     941559e020f6c357ebb08d5c67acdb858a3defc2
Groovy:       2.4.11
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_121 (Oracle Corporation 25.121-b13)
OS:           Windows 10 10.0 amd64

yep, adding dependency to project using my plugin, solves problem
    classpath group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.57'

but when I am adding it as compile dependency to plugin it is not working (same exception). still it will be not fully elegant that plugin users will have to add that dependency by their own. :/

Please provide a reproducible example project (attached as a zip or on GitHub). The information above is not enough for use to reproduce the problem.


Making game piece service more generic

This resolves https://github.com/FRC900/prog_gen_tasks/issues/451.
The old service was called galactic_path_gen and very specific to 2021. Now, it's called game_piece_path_gen and much more customizable (the ID of objects to pick up, how many of those objects to pick up at maximum, and where the robot should end up are all customizable).
Also, there were some changes to path following simulation to add power cells and broadcast their transforms to be shown in rviz.

I just added some changes and replied with comments to things I had questions about -- thanks for reviewing!


Add d2 to From text options

[x] I agree to follow the Code of Conduct that this project adheres to.
[x] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Would the drawio team accept a PR to include d2 as a From Text option next to Mermaid and PlantUML? https://github.com/terrastruct/d2
If so, I'm happy to submit PR for implementation. (although I could not find this file: https://github.com/jgraph/drawio/blob/dev/src/main/webapp/js/diagramly/Devel.js#L294 . is the comment just outdated? Can you point me to where the equivalent would be found?)
edit: oops, forgot it's not open-contribution. I guess question then is whether drawio would support this and if there's anything I can do to help

Thanks for the suggestion. We can leave this open, but it's not something we'd look into in the next 12 months. We're focusing on Mermaid as the primary supported text input format for the time being.


Fix for dev tools usability

Changed the accelerator shortcut to CMD+d or CTRL+d
Refs #4

Arf sorry, I saw your first issue and pushed a fix right away. The shortcut is now "Control+d".
Cheers for the PR anyway.


Y24-303 - [BUG] Bioscan - Exception - A Net::ReadTimeout occurred in work_completions#create:

Describe the bug
User clicks the charge and pass button on the XP tube in Bioscan and gets a timeout exception.
See Limber server exception at 14.33pm on 5th Sept 2024.
RT Ticket Number
NA
To Reproduce
Steps to reproduce the behaviour:

User clicked on 'charge and pass' button on the LBSN-9216 Lib PCR Pool XP tube at the end of the Bioscan pipeline
Because there are so many samples in this tube the system times out

Expected behaviour
The 'charge and pass' button should not appear on this tube. Charge and pass happens on the PCR 2 plate earlier in this pipeline.
Screenshots
NA
Desktop (please complete the following information):
NA
Additional context
Normally in a library prep pipeline we would charge and pass on the XP labware at the end to close off the library prep requests.
Bioscan is a bit unusual in that we create 24 x PCR 2 plates (under different submissions) then pool those together to get to a single tube containing up to 9216 samples, and we found during development that we had to close off the library prep requests before pooling (restriction on pooling multiple submissions with active requests?). So the charge and pass is configured on the PCR 2 plate in the Limber pipeline config.
However, for some reason, we see a charge and pass button on BOTH the PCR 2 plate and the XP tube labwares.
2 options:

determine why a charge and pass button appears on the XP tube despite not being set on the pipeline config and prevent it showing (so they can't click it and trigger a timeout) - easiest option
figure out how to allow the pooling without closing off the requests, and have the charge and pass on the XP tube to align with other pipelines - much harder option, would have to change the code around pooling to allow multiple submissions to be pooled, and in charge and passing to allow requests from multiple submissions to be closed, plus make the charge and passing on a tube with 9216 samples efficient enough that it doesn't trigger a time out exception (possibly needing an asynchronous solution). Also a change to lab staff training / SOP to charge and pass at the different point.

There is a workaround so only happens if they do the wrong thing.

Could wait until there is a refactor of Bioscan.


Apply/include custom annotation to generated Kotlin data classes? (ex: moshi.JsonClass)

Question.
Is there a way to apply/include a custom annotation to the Kotlin data classes generated from graphql fragments?
I have an use case where I need to store some apollo generated data classes as String (inside an sqlite db). I'm already using moshi-codegen and it seemed like a natural thing to use it to serialise/deserialise those data classes. But moshi-codegen needs those classes annotated with @JsonClass(generateAdapter = true), hence my question.

Hi 👋  That's something that we have purposely not done so far because it adds a lot of complexity to the codegen and opens a wide range of questions like "what happens if the generated models change for some reasons, how are migrations handled, , etc...".
We usually recommend using mapper functions that translate models between different domains, that also encourages a clear separation of concerns.
Another option is to use the built-in normalized cache. This would have the advantage of bringing observability and deduplication. Could you consider this?

@martinbonnin thanks for the quick answer!
Unfortunately, the rest of the existing app already uses sqlite with Room & Paging3, the built-in normalized cache doesn't fit in all that well.
I wasn't looking forward to this but I'll treat apollo data classes as DTOs and map them.
Thanks again! 🍻


Trouble with authenticate

Hi! I have a trouble with auth0, when I try to deploy oscp-spatial-content-discovery on local machine for test goals. Is it possible to disable jwt auth, or may be there is a test token?

Hi @sseredkin-vergendo ! For now you can just remove the auth middleware and add a dummy tenant. I've added code blocks with the needed changes in here (uncomment these blocks and comment out the corresponding ones above):
https://github.com/OpenArCloud/oscp-spatial-content-discovery/blob/master/src/router.ts


Avoid warning in mysqldump and use internal envs

The current version is nice but maybe we can improve that with:

Inject password via MYSQL_PWD instead of -p to avoid warning. Nicer than grep -v.
Use interval env vars instead of inject then to avoid duplication. Lost customization but centralize configuration in the container.

Beautiful, thanks! I'll pull this in soon when I do another sweep of PR's.


Update index.mdx

Update run command wsl. It's wrong argument -list. The right way is: --list. Same for -verbose
Thank you for your contribution to the IC Developer Portal.
Before submitting your Pull Request, please make sure that:

[ ] You have updated the .github/CODEOWNERS file according to your changes.
[ ] You have registered new documents to /sidebars.js if any.

This edit is being addressed in a new PR. Closing this PR.


fix: bug preventing to configure thresholds on touch

close #404

Current coverage is 82.56% (diff: 100%)

Merging #405 into master will not change coverage

@@             master       #405   diff @@
==========================================
  Files            14         14
  Lines           562        562
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            464        464
  Misses           98         98
  Partials          0          0

Powered by Codecov. Last update d7ab02a...af89f55


Same file opened twice

VSCode Version: 1.15.1
(Also using Arduino and C/C++  )
OS Version: Windows 10 + shared disk on Cubestation cs407.
Steps to Reproduce: ??

Reproduces without extensions: Yes/No Can't tell.
Sometimes files opens both as they were named, like filename.h, and sometimes they also open as FILENAME.H in the tab. Having same file opened twice causes all types of issues.
Most probably , this shows up sometimes/always when using "find in files" or "replace in files"
( I can't promise I've noticed all times it has happened. )
This on a project stored on a shared disk on the Cubestation.

https://github.com/Microsoft/vscode/issues/12448


T-Display Amoled Touch version 1.91: Can't get brightness to work

I have the T-Display Amoled Touch version 1.91" and cannot get amoled.setBrightness(); to work.  Tried other ways such as Analog_Write, LCD_WRITE etc.. Nada.   What am I doing wrong?  Is there a proper working example someone can share for this unit?
Simple example:
In Setup:
amoled.begin();
Then in code:
  amoled.setBrightness(2);
  delay(1500);
  amoled.setBrightness(8);
  delay(1500);

I've also tried values from 1-255 as there is no documentation on this. is it PWM, or other values?

Range 0 ~ 255, example has been added. Brightness control is to write commands directly to the screen instead of using control methods such as pwm.

Thanks.  However, an LVGL example is not very helpful as I'm not an LVGL user and just trying to get this working would be a steep learning curve.  Can you provide an example just using Arduino pls?  If it's as simple as my example above, and using amoled.setBrightness(50); or amoled.setBrightness(200);  (as an example), this did not work for me.

Below is a simple sample that I cannot get to work.  It draws the red circle, but brightness does not change. Note I am using the Sprite library from Matt (link within code).   FYI, I have confirmed the Sprite library works with Arduino GFX with other projects.
`#include <Arduino.h>
#include <LilyGo_AMOLED.h>
#include "Wire.h"
#include <Arduino_GFX_Library.h> // https://github.com/moononournation/Arduino_GFX.git
//#include <DS3231.h>              //RTC time for DS3231
//#include <Adafruit_Sensor.h>     //ADXL345 gyro / accell
//#include <Adafruit_ADXL345_U.h>  //ADXL345 gyro / accell
// Image Sprites - see /lib folder
#include "arduino_sprite.h"                    //https://github.com/h5n1xp/Arduino_Sprite/
#define BYTE_SWAP true                              // Sprites - needed for LCD Image generator tool and how it outputs img data
#define GFX_DEV_DEVICE LILYGO_T_DISPLAY_S3_AMOLED
Arduino_DataBus bus = new Arduino_ESP32QSPI(
6 / cs /, 47 / sck /, 18 / d0 /, 7 / d1 /, 48 / d2 /, 5 / d3 */);
Arduino_GFX gfx = new Arduino_RM67162(bus, 17 / RST /, 0 / rotation */);
Arduino_GFX *gfx2;
Arduino_Canvas *digiClockCanvas; // Canvas for font sprites
LilyGo_Class amoled;
void setup()
{
//The difference between the touch and non-touch versions is that the display power supply of the touch version is controlled by IO38/
pinMode(38, OUTPUT);
digitalWrite(38, OUTPUT);
bool rslt = false;
Serial.begin(115200);
//amoled.begin();    // Automatically determine the access device  - this is //amoled.beginAMOLED_191();  Seems this is needed as well
rslt = amoled.beginAMOLED_191();
if (!rslt) {Serial.println("AMOLED BEGIN failed!"); }
// Init Display
if (!gfx->begin())
{
Serial.println("gfx->begin() failed!");
}
//Serial.println("1?");
//gfx->setRotation(3);
//Serial.println("2?");
//gfx2 = new Arduino_Canvas(480, 480, gfx, 0, 0); // for Sprites
gfx2 = new Arduino_Canvas(240, 536, gfx, 0, 0); // for Sprites
gfx2->begin(GFX_SKIP_OUTPUT_BEGIN);             // Added the GFX_SKIP_OUTPUT_BEGIN so the Canvas class doesn’t try and initialise the display
gfx2->setRotation(3);
//gfx2->setRotation(0);
//Serial.println("3?");
gfx2->fillScreen(BLACK);
} // end Setup
void loop()
{
for (int i=0; i<255; i++)
{
gfx2->fillCircle(130,130, 40, BLACK);
gfx2->flush();
amoled.setBrightness(i);
gfx2->fillCircle(130,130, 40, RED);
gfx2->flush();
delay(50);
}
}
`

If you use it as above, adjusting the brightness will of course not work, because gfx also calls SPI, they belong to two categories completely and cannot be used together. I have modified it slightly and it can be used now.

Hi. Thanks for the quick response, and it works. However, if I am not able to use the LilyGo library, I can't use the home button callback and getPoint for touch.    Can you help with the necessary code to enable those pls?
amoled.setHomeButtonCallback([](void *ptr) {
        Serial.println("Home key pressed!");
        static uint32_t checkMs = 0;
        checkMs = millis() + 200;
        gfx2->fillRoundRect(8,0,180,30,4,BLACK);
        gfx2->setCursor(20, 22);
        gfx2->print("H: App:  ");
        gfx2->print(appScreen);

bool touched = amoled.getPoint(&x, &y);

Of course, you can use touch. The source codes are all in the src directory. You can change them freely after downloading. I've modified the code to be touch compatible, hope this is your last question.

Thanks for this.  However, when I try to integrate that code it causes IIC failures.   Issue is I have 2 other IIC devices and use
  Wire.begin(IIC_SDA_PIN, IIC_SCL_PIN, (uint32_t)400000);  (which as worked so far), and I believe that adding  touch.begin(Wire, CST816_SLAVE_ADDRESS, 3, 2); causes it to fail.  Given my pins are not 3&2, I also tried to use the same IIC pins touch.begin(Wire, CST816_SLAVE_ADDRESS, IIC_SDA_PIN, IIC_SCL_PIN);  but I think the conflict is calling .begin twice.       I also tried to use touch.begin(); but that fails too as it requires parameters.
[599235][E][Wire.cpp:513] requestFrom(): i2cRead returned Error -1

two methods

The external sensor uses the same SDA and SCL as the touch
2.Change touch initialization to

touch.begin(Wire1, CST816_SLAVE_ADDRESS, 3, 2);

This is working now..  I decided on #2 (keep the touch on 3/2) and put my other IIC devices on another channel.  Thanks for your help!


Make package pip-installable

For ease of installation, it would be good to upload the release to PyPI so that users can simply do:
pip install pyuvdata

The link to the release in the README is also broken, it should be https://github.com/HERA-Team/pyuvdata/releases/tag/v1.0 - (but this will be moot if you upload the package to PyPI)
Note: I am reviewing the JOSS submission (https://github.com/openjournals/joss-reviews/issues/140) and I consider this to be a blocker

This is now fixed. pyuvdata is on pypi and the readme doesn't have broken links


i18n: add translations dropdown with turkish

requires, but is not blocked by https://github.com/inveniosoftware/invenio-app-rdm/pull/229

Coverage remained the same at 0.0% when pulling f0f2b5fe2bbff4594d874bb1420e5f9525cf4e57 on ppanero:i18n into 75fd88c22f412fbf8c2ec0292ba7ca65c9afdcdf on inveniosoftware:master.


Wrong Meta docs (again) leads to incorrect typings on Flow message type

HI @MarcosNicolau!
Apparently, you have built the typings for the flow interactive messages using the docs from this link.
However, as you can see, its differs from the one from this other link: the flow parameters are nested in the parameters object..
I think meta developers are not getting paid to write documentation.
Found this after getting error from my requests and testing directly in insomnia.
Nesting the parameters fixes it.
Just opened the PR.
Regards,

Oh god this is a nightmare 😂😂.
Thank you very much for the fixes.
I guess I need to build the types from the example request and not from the "actual" specification...
Again, thanks 🙏.


Selected value is too weakly distinguished

I like this plugin very much, there is just one issue with UX.
Selected value is too weakly distinguished - just faint shadow. I propose some other distinction, for example border.

I've made the icons a bit smaller in 1.0.6, which makes it clearer which button is pressed.
Before:

After:


fix: karma isparta-loader replace on istanbul-instrumenter-loader

readme coverage 100% is bug
isparta-loader is deprecated
Should be used istanbul-instrumenter-loader

Coverage decreased (-0.7%) to 99.297% when pulling 5a6e240f3571c1f50d1d4cc2e076f2b97df02e78 on zeromake:fix-coverage into f7834ec9fb7848581c6fbc7833bcbe2f2db9fe61 on developit:master.


Commands not found during launch of Docker Quickstart Terminal

I installed the Docker toolbox, and it went fine (note : it skipped the "VM" step).
But when I launch the Docker Quickstart Terminal, I get these errors :

bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 14: clear: command not found
Creating Machine default...
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 27: rm: command not found
Driver "virtualbox" not found. Do you have the plugin binary accessible in your PATH?
Host does not exist: "default"
Starting machine default...
Host does not exist: "default"
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 37: yes: command not found
Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): EOF
Setting environment variables for machine default...
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 41: clear: command not found
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 43: cat: command not found
Host does not exist: "default"
docker is configured to use the default machine with IP
For help getting started, check out the docs at https://docs.docker.com

Host does not exist: "default"
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 63: dscl: command not found
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 63: awk: command not found
/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh: line 63: head: command not found

It seems to try to launch bash commands, though on mac OS X I get a zsh shell by default.
Does someone got the same error ?

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

What version of OS X are you using? I think they changed to bash by default at some point, but not sure.
However, this issue is better handled in the Docker Toolbox issue tracker. Can you reopen that issue there? You can find the issue tracker here; https://github.com/docker/toolbox/issues. It may be worth searching for existing issues, possibly there's one already.
Thanks for reporting this, I'm going to close this issue here, because we cannot fix this in this repository.