lnd not reconnecting to peers?

Background
I have channel with bitrefill. Couple days ago i noticed that its often "off", First i was thinking that they have some issues with own lnd and taking their node off line like every day. Today it check it and i figure out that its off because lnd lost connection with peer. After i reaconnected manualy channel was working. Happend once more today and had to reconnect manualy to use that channel.
Your environment

version of lnd: lncli version 0.4.1 commit=bc029b9cd4c15ff974c4e232fb4a606e9fea4f8c
which operating system: Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux
version of btcd, bitcoind, or other backend: bitcoin core 15.1

Steps to reproduce
Was looking for information in logs but nothing can be found. To much is loged in and old logs are deleted to fast. So i dont know what is cousing this connection lost.
Maybe can be reproduced with 2 nodes having channel open and restarting one of them?
Expected behaviour
Lnd should reconnect to peers we have channels open with as soon as they get back online.
Actual behaviour
With peer not connected, channel is off and payments ends with "unknow next peer" error.

Is your node behind a NAT?

Yes.

Which port are you connecting to?  is it the standard LND port?
I had a similar problem when the peer was not using the standard port and was not using the --externalip. Most probably this is not the case with bitrefill.
It was very easy to see the reason for the problem once I turned on debug for CMGR.

Its standard port im connecting to.
What do you mean by "turned on debug for CMGR" ?

lnd with --debuglevel=CMGR=debug
This will produce debug printing for the connection manager.
I have two nodes connected A and B.
When B is down I can see in the log of A the following:

2018-04-13 15:08:46.122 [DBG] CMGR: Retrying connection to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2) in 15s
2018-04-13 15:09:01.126 [DBG] CMGR: Attempting to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2)
2018-04-13 15:09:01.126 [DBG] CMGR: Failed to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2): dial tcp <IP_ADDRESS>:10012: connect: connection refused
2018-04-13 15:09:01.126 [DBG] CMGR: Retrying connection to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2) in 20s
2018-04-13 15:09:21.130 [DBG] CMGR: Attempting to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2)
2018-04-13 15:09:21.130 [DBG] CMGR: Failed to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2): dial tcp <IP_ADDRESS>:10012: connect: connection refused
2018-04-13 15:09:21.130 [DBG] CMGR: Retrying connection to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2) in 25s
2018-04-13 15:09:46.134 [DBG] CMGR: Attempting to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2)
2018-04-13 15:09:46.134 [DBG] CMGR: Failed to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2): dial tcp <IP_ADDRESS>:10012: connect: connection refused
2018-04-13 15:09:46.134 [DBG] CMGR: Retrying connection to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2) in 30s
2018-04-13 15:10:16.134 [DBG] CMGR: Attempting to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2)
2018-04-13 15:10:16.134 [DBG] CMGR: Failed to connect to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2): dial tcp <IP_ADDRESS>:10012: connect: connection refused
2018-04-13 15:10:16.135 [DBG] CMGR: Retrying connection to 03c1db7c0f7f3fa269ac5fdcf14db545bd5775b06297e49efbf9814665497fb704@<IP_ADDRESS>:10012 (reqid 2) in 35s

@offerm would love to use this debuglevel but cant: https://github.com/lightningnetwork/lnd/issues/1092

@Roasbeef you think nat have to do something with my node being unabe to reconect to bitcoind?
Funny thing i just found in logs. It happen after i restarted my router:

unable to read message from <IP_ADDRESS>:9735: read tcp <IP_ADDRESS>:56894-><IP_ADDRESS>:9735: use of closed network connection

There were more messages like this ofc.

 No it should be able to connect to bitcoind. What I mean is that if you're behind a NAT, then nodes won't be able to connect to you. Setting debuglevel=CMGR doesn't result in a significant increase in memory.
If your node made an inbound connection, but didn't have any active channels (or an active node ann), then the remote peer doesn't know which port to use when connecting back to you.

I mean it take seens that other nodes cant reconnect to me, but how lnd is unable to reconnect to bitcoind running on same machine?

but how lnd is unable to reconnect to bitcoind running on same machine?

Well this isn't what your current issue is reporting. If you keep your issues focused, it makes things easier on our end w.r.t trying to hunt down the precise issue.
To our knowledge, reconnection for bitcoind works when using rpcuser+rpcpass, but not the auth cookie. I've tested this locally multiple times, but it seems there's an issue with your setup, as once we pushed out the bitcoind reconnect, many other users reported that their issues had been fixed.

Yea sry wrong issue :)
Back to this one. I understand that while im behind nat other peers cant reconnect to me. But why my node is not reconnecting to them while having channel open?

But why my node is not reconnecting to them while having channel open?
Your node should be connecting to them. If they're not online you won't be able to connect to them. The logs show the reconnection attempts. It may be the case that you're using the wrong port. If the connecting node didn't advertise it's connection details, then we don't know which port to use.

So how im able to manualy reconnect to peer and lnd is not able to do that?
As i wrote before. This situation happend to twice with bitrefill node. Was unable to make a payment so both times i reconnect with cli and was able to make a payment.

So how im able to manualy reconnect to peer and lnd is not able to do that?

If you can't show me any logs, then I can't diagnose the issue. The logic will reconnect to peers using either the original port we used to connect, or the new port the remote node has advertised.

@Roasbeef i was unable to get logs becuase of my problem with debuglevel. Since its working now im going to watch my node and if this problems happens again i will bring logs. So i think you can close this issue for now.

Cool thanks for the update! Will re-open once you get us some more data, thanks.

@Roasbeef Happens Again. This time on version "lnd version 0.4.2-beta commit="
My peers went down couple days ago, since then had 2 chanels inactive. Today i noticed that one of them is online, so i did "lncli connect xxx". After connection channel is again active (other peer is still off line).
Here is my log: https://ufile.io/32uph

Anyway peer i had to manualy reconnect to 02ad6fb8d693dc1e4569bcedefadf5f72a931ae027dc0f0c544b34c1c6f3b9a02b
My channel point: d600ba7c8a37aed8094ad062d930412d685506c3f4c6ba85bc0a3bf3bff25ea4:0

@Roasbeef  second peer that went offline like 2 day ago just came back online and lnd reconnected. So dunno why it didn't reconnect to the other one for more like a day. Is there any case scenario where peers are removed from list by lnd?

If the node goes offline we will periodically try to reconnect, with an increasing backoff IIRC.

@halseth I know. But there is some kid of use case where lnd don't try to reconnect. Look at this:
https://justpaste.it/5ix9w
https://justpaste.it/42sgu
Fresh state of my channels. Thing is that 02ad6fb8d693dc1e4569bcedefadf5f72a931ae027dc0f0c544b34c1c6f3b9a02b
is online, but node dont show him on peers list, so don't see him as online node.

didn't have connection with 02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f so i manually connected it.
it looks as it thought it had a persistant connection request with it, but it didn't try
$ egrep '02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f|<IP_ADDRESS>' ~/.lnd/logs/bitcoin/mainnet/lnd.log
2018-08-28 13:10:32.173 [INF] CRTR: New channel discovered! Link connects 022bd091df93de9ccb69891bfe5a4cdf91541ba045aa73eb05f4f66478184bbe89 and 02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f with ChannelPoint(65bcb6ec2df7f8218e79dd1507263fbe311e0bb94caa0ff51412b32bd81c2185:0): chan_id=566455196564193280, capacity=0.002 BTC
2018-08-28 13:11:48.497 [WRN] SRVR: Already have 1 persistent connection requests for 02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f@<IP_ADDRESS>:9735, connecting anyway.
2018-08-28 13:11:48.672 [INF] SRVR: Established connection to: <IP_ADDRESS>:9735
2018-08-28 13:11:48.672 [INF] SRVR: Finalizing connection to 02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f, inbound=false
2018-08-28 13:11:48.766 [INF] PEER: NodeKey(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f) loading ChannelPoint(5f5a8ca7e5c292a1924cd26d89f95787a9f82fe834467b4b5450cb024c79345c:0)
2018-08-28 13:11:48.789 [INF] SRVR: Negotiated chan series queries with 02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f
2018-08-28 13:11:48.790 [INF] DISC: Creating new gossipSyncer for peer=02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f
2018-08-28 13:11:48.790 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): requesting new chans from height=538743 and<PHONE_NUMBER> blocks after
2018-08-28 13:11:49.004 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): buffering chan range reply of size=185
2018-08-28 13:11:49.004 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): filtering through 185 chans
2018-08-28 13:11:49.004 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): starting query for 8 new chans
2018-08-28 13:11:49.004 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): querying for 8 new channels
2018-08-28 13:11:49.355 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): no more chans to query
2018-08-28 13:11:49.355 [INF] DISC: gossipSyncer(02634b5d6b7db0cf26025bb59ddf1eafed2f1857de3550c129cfd7dbfb403c4e0f): applying gossipFilter(start=2018-08-28 12:11:49.355865166 +0000 UTC m=-2943.402324475)```

tried another one
        {
            "active": false,
            "remote_pubkey": "02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974",
            "channel_point": "d8434024cf01c1ceb654811b4bae876adf70639b29b67130e1b9c87f32de2338:0",
            "chan_id": "584986365491412992",

$ egrep '02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974|<IP_ADDRESS>' ~/.lnd/logs/bitcoin/mainnet/lnd.log
$ egrep '02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974|<IP_ADDRESS>' ~/.lnd/logs/bitcoin/mainnet/lnd.log
robban@lndmain:~$ lncli connect 02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974@<IP_ADDRESS>:9735
{

}
robban@lndmain:~$ egrep '02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974|<IP_ADDRESS>' ~/.lnd/logs/bitcoin/mainnet/lnd.log
2018-08-28 13:16:40.758 [WRN] SRVR: Already have 1 persistent connection requests for 02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974@<IP_ADDRESS>:9735, connecting anyway.
2018-08-28 13:16:40.951 [INF] SRVR: Established connection to: <IP_ADDRESS>:9735
2018-08-28 13:16:40.951 [INF] SRVR: Finalizing connection to 02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974, inbound=false
2018-08-28 13:16:41.044 [INF] PEER: NodeKey(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974) loading ChannelPoint(d8434024cf01c1ceb654811b4bae876adf70639b29b67130e1b9c87f32de2338:0)
2018-08-28 13:16:41.072 [INF] SRVR: Negotiated chan series queries with 02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974
2018-08-28 13:16:41.072 [INF] DISC: Creating new gossipSyncer for peer=02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974
2018-08-28 13:16:41.072 [INF] DISC: gossipSyncer(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974): requesting new chans from height=538743 and<PHONE_NUMBER> blocks after
2018-08-28 13:16:41.193 [INF] DISC: gossipSyncer(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974): buffering chan range reply of size=174
2018-08-28 13:16:41.193 [INF] DISC: gossipSyncer(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974): filtering through 174 chans
2018-08-28 13:16:41.194 [INF] DISC: gossipSyncer(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974): remote peer has no new chans
2018-08-28 13:16:41.194 [INF] DISC: gossipSyncer(02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974): applying gossipFilter(start=2018-08-28 12:16:41.194175468 +0000 UTC m=-2651.564014173)

        {
            "active": true,
            "remote_pubkey": "02a22259379a3085d0e02bf9b8f213728f04acdb8862f84c5233414c4417d5e974",
            "channel_point": "d8434024cf01c1ceb654811b4bae876adf70639b29b67130e1b9c87f32de2338:0",
            "chan_id": "584986365491412992",

not sure how this helps :)


Testing, please ignore. rwlccc

This is a bug bounty test. Please do not approve this! rwlccc

 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.rwlccc begev seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Launch games with wine?

Can you launch the downloaded files with wine or is it missing some windows Steam stuff?
Thanks.

It depends on the game.
Some games require Steam to be running to verify that you've bought the game. Unfortunately, they can't interface with native Linux Steam.
Here's a list of DRM-free Steam games that should theoretically work without wine Steam: Link


⚠ Bofrost.es has degraded performance

In 4b6a0b7, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1637 ms

Resolved: Bofrost.es performance has improved in 66c8865 after 24 minutes.


Create GUI having some buttons and input boxes.

I suggest looking at TK
Create some basic GUI for example having an input to ask mobile number and enter a message then a button to send a message

Hello @NavpreetDevpuri , i'm trying this, i will try harder.
I need to assemble the screen and connect with the robot's send_message_to_number function. For this issue, is there anything else or did I understand you correctly?

@willidert
look at this example, we are calling functions to perform automation
And we just need some kind of GUI, as we added in gui.py, it is not working but you can have a basic idea after looking into it.
That GUI is gona have all options that our bot can do and we just need to give some inputs and click on some buttons to perform automations.
something like on click to some button then call that function with inputs to perform automation
Just like you did while commenting on this issue, you just clicked on the comment button and all backend things are handled by that GUI website.


⚠ Processors has degraded performance

In a5fa287, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 69 ms

Resolved: Processors performance has improved in 811a5c2.


fix: prevent empty output.stdout producing invalid path

In cases where prettier fails to run (see https://github.com/wearerequired/lint-action/issues/718) output.stdout can be empty. Generating an annotation with a blank path causes a 422 validation error pushing this check to github.
An improvement to this fix could be to also parse output.stderr

For context this is the kind of output.stderr that can be encountered during linting.
[error] src/components/Icon/Icon.stories.tsx: SyntaxError: ',' expected. (32:3)
[error]   30 |     },
[error]   31 |   },
[error] > 32 | } satisfies Meta<typeof Icon>
[error]      |   ^
[error]   33 |
[error]   34 | export default meta
[error]   35 | type Story = StoryObj<typeof Icon>

If I were to parse this instead of output.stdout

Pushed a check to stderr. Below is an example of the check running against my own (failing) codebase.

I've attempted to write unit tests for prettier, but it's hard to get it to reproduce any kind of syntax errors. I wonder if the error I am responding to was really just a feature of my project (e.g. eslint configuration?). Running a unit test of prettier over obviously invalid javascript files just emits the input file with no stderror.

Aha, I didn't notice the .prettierignore was including my invalid file. Now I can reproduce the file. :)

Unit tests presented :)


chore: revert - this caused dependency conflicts

Description
This is based on PR #857 which ended up causing conflicts across dependencies in PR #874
Related Issue
Fixes #

Relates to #874 #857
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Other (security config, docs update, etc)

Checklist before merging

[x] Test, docs, adr added or updated as needed
[x] Contributor Guide Steps followed

This is going to fail bc of the braces vulnerability, we need to put this back as a dev dependency


Set ssl_ca_dirs for rtk based on fact

Closes: #1007

Please fix commit message "rtk" -> "rkt"

ci check this


Hacker rank

💥 Proposal
(A clear and concise description of what the proposal is.)
I would like to contribute hackerrank problems using c.
Have you read the Contributing Guidelines on Pull Requests?
(Write your answer here.)
Yes

I would like to solve #2190 today.
(under GSSOC21)

Hi, i want to contribute as a participant of gssoc'21

Too ambiguous to assign.
I will put up some guidelines on creating Issues soon.


Ethan: Watch buy-auto-part.com

Ethan requests the watch of the watch_keyword buy-auto-part\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

buy-auto-part\.com has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Spevacus in Charcoal HQ


Added flight of stairs in js

Have you read the Contributing Guidelines on Pull Requests?
Yes
Description
The flight of stairs problem using dp in Javascript
Given two positive integers : n and k. We are currently at stair 0, and want to climb to stair n. We can either climb 1, 2 or 3 stairs at a time, but we can climb 3 stairs only k times. Return the number of ways to climb to the nth stair.
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[x] I've edited the README.md and link to my code.

Related Issues or Pull Requests
#4223 (javascript)

Please review @ankitaggarwal23 @HarshCasper

Done with the changes, also regarding the output, since I had to make the input dynamic, in javascript dynamic input works only if parsed using html. For others, who implemented dynamic input using javascript also its the same thing. Please review :) @ankitaggarwal23 @HarshCasper


Docs for developer

This PR closes #9.
We move all docs (except for README.md) to the docs folder and create a developer doc to keep tracking our thoughts and choices regarding the software design.
The main reason to move .md files from home to docs, is to have a cleaner repo home.

Looking at this PR, I started wondering whether it's actually considered good practice to have these .md files in the home of the repo, or whether it's also fine to move them to the docs. I couldn't really find any good resources on that.
I did find dianna-ai/dianna#161 which is probably what inspired you to do the same here, right? From that discussion the reasoning and motivation is clear and I understand why you would want to do this. Perhaps it would be good to also include the same reasoning in this issue/PR? So: the main reason to move it from home to docs, is to have a cleaner repo home.

Thanks for the comment. That's right and I thought it would be much cleaner to put all the .md files in one place, which makes it both easier for the user to find the information in one location and for the developer to keep tracking and maintaining these docs.
I agree that it is good to include the reasoning here. I will put it in the top post.

Thanks for the review and the changes made to the document. It looks awesome! I will merge this PR.


On row action docs

Closes
This is an update to the useTable docs to clarify how actions work with some of the new changes we made.
✅ Pull Request Checklist:

[ ] Included link to corresponding React Spectrum GitHub Issue.
[ ] Added/updated unit tests and storybook for this change (for new code or code which already has tests).
[ ] Filled out test instructions.
[ ] Updated documentation (if it already exists for this component).
[ ] Looked at the Accessibility Practices for this feature - Aria Practices

📝 Test Instructions:

🧢 Your Project:

@snowystinger Just a heads up, gotta bunch of conflicts when the base branch changed. I saw the useTable changes in the file change list, I can take a look at that if that is the main part of the PR

Opened in another pr because of conflicts


未能完成操作。（com.onevcat.Kingfisher.Error错误10000。）

Check List
Thanks for considering to open an issue. Before you submit your issue, please confirm these boxes are checked.

[x] I have read the wiki page and cheat sheet, but there is no information I need.
[ ] I have searched in existing issues, but did not find a same one.
[ ] I want to report a problem instead of asking a question. It'd better to use kingfisher tag in Stack Overflow to ask a question.

Issue Description
What
[Tell us about the issue]
Reproduce
[The steps to reproduce this issue. What is the url you were trying to load, where did you put your code, etc.]
Other Comment
[Add anything else here]

网络图片无法加载成功

我这边没有办法重现，图片可以正常加载...
如果能重现的话，是否可以告知一下 completion handler 里的错误信息？


[iOS] Bluetooth Media button Event is not trigger while audio is routing through bluetooth peripherals

I am unable to receive these two notifications if I play any audio through my Bluetooth peripherals.
 TrackPlayer.addEventListener(Event.RemotePlay, () => {
       // randomFunction()
    });

    TrackPlayer.addEventListener(Event.RemotePause, () => {
       // randomFunction()
    });

Are you able to reproduce this when running the example app in this repo?

Actually, could you fill in the issue template? This will provide valuable information for us in order to know where you are experiencing this issue


Style: Port over alignItems/justifyContent from Akin's PR

@Akin909, I hope you don't mind - I'm porting over your addition of justifyContent/alignItems so that I can clean up the example app.

(Ported from #58 )


This into_owned isn't necessary

Coverage remained the same at 39.939% when pulling 0f46db444a35f4696296e2922c2ef969c22664ed on pwoolcoc:remove-unnecessary-allocation into d7df27362a80ccd3f86c42c510953e2d88aa1298 on newsboat:master.

Thank you!


Option ASIO_SOURCE_DIR

This option allows to specify the source directory of Asio, removing the downloading procedure.

I think fetch content gives this option already, and with CPM I use CPM_SOURCE_CACHE. I don't remember how to do it with fetchContent but I think this could be a great place to start


accordion panel won't close in drupal

hey @bbest - one small problem with the accordion implementation on the drupal test page.  The accordion panels open fine, but they won't close.
Here's a screenshot of the console:

For one, the jQuery Easy Tabs plugin isn't behaving properly - unsure if that is causing the problem.

hey @bbest - I created my own version of the drupal test page and the accordion functionality now works fine. The issue is that two javascript libraries are being double-called on the drupal test page (jquery.min.js and bootstrap.min.js). If those libraries are called once, then everything works great.

Fantastic investigative coding @superjai 🧐 🌟

Hey @bbest - the infographic is now displaying properly on my test drupal site (no iframe this time). I now understand how to make this work in Drupal, meaning I can train NOAA folks how to make the infographic functionality work in Drupal.
Additionally, this is a good test environment to ensure that future iterations of the infographiq javascript work in drupal. The last step is to install the actual iea theme in my test site and I have asked for that theme.

hey @bbest. So I got the IEA theme and installed it on my test drupal site. The theme files are missing elements, so the layout is very messed up. But that doesn't matter, as the infographic functionality works and ensuring that functionality is the only purpose of the installation. I think that closes up this issue.


chore: add .npmrc

Adds .npmrc.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Need to pass -Drascal.generate.skip in rascal-core project

Currently, even though the -DskipTests option is provided, mvn still thinks it needs to run generate-test-sources for the artifact construction. This can be circumvented by the -Drascal.generate.skip option, but I don't see a place for passing a parameter here. Maybe I'm wrong.
It matters because rascal-core takes 30 minutes now to attach the artifact, mostly due to regenerating the test source files by the Rascal compiler.

The generate sources feature of the rascal maven plugin is not so smart. It takes a Rascal module and a function to run, in the current project, as parameter and runs those with a PathConfig as parameter. So we don't know which files are generated and we don't know which files the generator depends on. So it's not like we can do a timestamp test or something in the general case.
I can change the specific test code generator in rascal-core to do something smart, but that would require a serious programming effort. It would be much easier simply to skip this stage by giving -Drascal.generate.skip.

The action has an optional:
maven-options: -Drascal.generate.skip

flag you can use to provide specific flags to maven.

Maybe we should add -Dmaven.test.skip=true. Since that should also stop compilation of tests (instead of -DskipTests that only stops execution.

If that helps, let's do it.
On Wed, Nov 3, 2021 at 12:04 PM Davy Landman @.***>
wrote:

Maybe we should add -Dmaven.test.skip=true. Since that should also stop
compilation of tests (instead of -DskipTests that only stops execution.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SWAT-engineering/maven-full-artifacts-action/issues/1#issuecomment-958926120,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPF5FZ6IZTLJTTUZC52G7LUKEJNVANCNFSM5HIRG45Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
Jurgen Vinju
http://jurgen.vinju.org
CWI SWAT
TU Eindhoven
Swat.engineering BV

Ok, latest release has it now. maybe that's enough for the rascal maven compiler to not get executed?

Tested it (https://github.com/usethesource/rascal-core/runs/4093999434?check_suite_focus=true#step:7:29) and it still ran the rascal compiler.
So either update the rascal maven compiler so that it detects nothing has changed, or add the maven-options: -Drascal.generate.skip to the action.
An option for the change detection is to take the timestamp of all source files, and compare the newest with the oldest in the target folder.

change detection is (a) complex to add to the currently simple test code
generator, (b) specific to the test code generator and (c) has to take into
account all the source files of the compiler too (d) has to take into
account the status of dependencies like typepal and rascal. so this is not
an option for me.
I'll go with maven-options: -Drascal.generate.skip
On Wed, Nov 3, 2021 at 5:19 PM Davy Landman @.***>
wrote:

Tested it (
https://github.com/usethesource/rascal-core/runs/4093999434?check_suite_focus=true#step:7:29)
and it still ran the rascal compiler.
So either update the rascal maven compiler so that it detects nothing has
changed, or add the maven-options: -Drascal.generate.skip to the action.
An option for the change detection is to take the timestamp of all source
files, and compare the newest with the oldest in the target folder.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SWAT-engineering/maven-full-artifacts-action/issues/1#issuecomment-959618598,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAPF5F4VKVH53TSZSQBYDPDUKFOIJANCNFSM5HIRG45Q
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
Jurgen Vinju
http://jurgen.vinju.org
CWI SWAT
TU Eindhoven
Swat.engineering BV

It does not work; says "unknown key":
     - name: Attach artifact
        id: build-artifact
        maven-options: -Drascal.generate.skip
        uses: SWAT-engineering/maven-full-artifacts-action@v1

Params should be under the with section of the action.


Cannot download authorisation project code from docs example

All I wanted was to download the example code and work through the project, but cannot get the code.
The instructions to get the code, do not match the link provided
The link for the code took me into GIT hub with no zip download for the project.

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b66f8ffa-699c-8b11-0cab-805f5953805f
Version Independent ID: 7c151ed5-fd78-84fd-a08a-88912990c4ca
Content: Create an ASP.NET Core app with user data protected by authorization
Content Source: aspnetcore/security/authorization/secure-data.md
Product: aspnet-core
Technology: aspnetcore-security
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

@deryckbeard ... You have to back out to the top level ...
https://github.com/dotnet/AspNetCore.Docs
... and it's under the Code button there. That's the way GH works on all repos. The direct link in the ...
https://docs.microsoft.com/en-gb/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-3.1#how-to-download-a-sample
... section will bring down the ZIP. That link is ...
https://codeload.github.com/dotnet/AspNetCore.Docs/zip/master
You can decompress and find the sample within the folder at the same path shown on the repo from there.

Yes I worked that out Luke,
it took me some time and if the page and the links were constructed
correctly in the first instance I shouldn't have needed to.
The download instruction link should have the detail of this email, and
the link for download should be the page where you download the file. As
you point out the Git hub page is pretty much useless for the article.
It is a difficult enough subject without having to do your own Sherlock
Holmes type investigation.
I take it you will reopen the case and close it once you have made the
changes to the document.
Best regards
Deryck
On Mon, 10 Aug 2020, 17:18 Luke Latham<EMAIL_ADDRESS>wrote:

@deryckbeard https://github.com/deryckbeard ... You have to back out to
the top level ...
https://github.com/dotnet/AspNetCore.Docs
... and it's under the Code button there. That's the way GH works on
all repos. The direct link in the ...
https://docs.microsoft.com/en-gb/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-3.1#how-to-download-a-sample
... section will bring down the ZIP. That link is ...
https://codeload.github.com/dotnet/AspNetCore.Docs/zip/master
You can decompress and find the sample within the folder at the same path
shown on the repo from there.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dotnet/AspNetCore.Docs/issues/19460#issuecomment-671451679,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQRDAFY3GH6CIFED46SVSB3SAAMWRANCNFSM4P2APLHA
.

The instructions to get the code, do not match the link provided

They aren't supposed to match under the current approach. The instructions are to ...

Download the whole repo as a ZIP using that direct link in the how to download instructions (linked from the word "download").
Unzip and navigate to where the sample is located by looking at the destination of the sample link.

There has been an effort across all doc sets to have a individual sample links that should get a reader just the sample that they're looking for, but we never implemented it here ...
https://docs.microsoft.com/samples/browse/
@Rick-Anderson ... Are we still headed that way at some point ... to use that system?

cc @scottaddie  @wadepickett

Thanks for replying  Luke,
I don't care which approach you have taken as long as it is correctly
documented.
These are tutorials, they are supposed to help the user, not confuse and
make them angry.
I became extremely frustrated being led up the  garden path by the use of
incorrect links and then having to work out where and how I could access
the code sample.
Even more so when I googled it and found that the issue had been previously
reported and Rick patronisingly responded with in effect "tough, that's how
I've done it",
Github doesn't do that, and therefore  no help to the poor  person who
reported the issue. At least you explained how to get the code, for which I
am grateful.
Obviously it is better if it is consistent across all pages, but...
If you have used a non-standard approach, don't document it with the
standard approach; simply tell the reader what you have done and where to
find the code.
you have done it simply enough  here in the email, so  why not in the page?
BTW the tutorial is great, and very helpful (once I found the code :-)
Best regards
Deryck
On Mon, 10 Aug 2020 at 19:30, Luke Latham<EMAIL_ADDRESS>wrote:

The instructions to get the code, do not match the link provided
They aren't supposed to match under the current approach. The instructions
are to ...

Download the whole repo as a ZIP using that direct link in the how
to download instructions (linked from the word "download").
Unzip and navigate to where the sample is located by looking at the
destination of the sample link.

There has been an effort across all doc sets to have a individual sample
links that should get a reader just the sample that they're looking
for, but we never implemented it here ...
https://docs.microsoft.com/samples/browse/
@Rick-Anderson https://github.com/Rick-Anderson ... Are we still headed
that way at some point ... to use that system?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/dotnet/AspNetCore.Docs/issues/19460#issuecomment-671516744,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQRDAF3DV7LRQYHZI347FVLSAA4EJANCNFSM4P2APLHA
.


Get access to the data within PartialMerkleTree

It would be nice to have a way of accessing the the fields of PartialMerkleTree when, e.g., receiving a MerkleBlock over the network.
This issue was originally posted as a PR: https://github.com/rust-bitcoin/rust-bitcoin/pull/943, see discussion for solution idea.

Picking this up :)


HR Sensor not detected

Hello.
The CSC BLE Bridge does not recognize my heart rate Sensor, allthough all required dependencies (ANT Radio Service and ANT+ Plugins Service) are installed.
Other bike apps (e.g. Jepster) immediately show the transferred heart rate. So ANT+ is basically working.
Any ideas how to solve this problem?
I'm trying to run the app on a Samsung S10 with Android 11.
Any help is appreciated.
With kind regards

Hi @CS-Biker thanks for reporting the issue.
Is your heart rate sensor listed in readme ? I see Samsung S10 has complete ANT+ support so this app should work. Any chance you have other ANT+ sensors (not limited to heart rate sensors) to test with?
Also I've just released v1.3 which has some fix by a great contributor. Maybe you can test again with v1.3. Thank you.

Thanks for the info. However it will be a tricky one as I don't have the exact phone as you have. However I just tested with my Fenix 6 broadcasting heart rate to my Samsung S8 running version 1.3 of this app and it worked right away and Zwift can read my wrist heart rate from Fenix 6.
The other app can read from your 2 ANT+ sensors did indicate there could be something wrong with this app. Any chance that you can start the app, and try what you tried again for 1-3min, and then do a full bug report from Settings->Developer options->Bug report and attach here? Thank you.

Hi,
Not knowing, whether the bug report contains sensitiv information and data, I would prefer not to upload the 27MB zip file into github.
Do you have any temporary cloud drive I can copy the bug report to?
Thanks for your support so far.
Cheers,
Chris
Holen Sie sich Outlook für Androidhttps://aka.ms/AAb9ysg

From: Mark Kuo @.>
Sent: Tuesday, January 18, 2022 9:36:34 AM
To: starryalley/CSC_BLE_Bridge @.>
Cc: CS-Biker @.>; Mention @.>
Subject: Re: [starryalley/CSC_BLE_Bridge] HR Sensor not detected (Issue #23)
Thanks for the info. However it will be a tricky one as I don't have the exact phone as you have. However I just tested with my Fenix 6 broadcasting heart rate to my Samsung S8 running version 1.3 of this app and it worked right away and Zwift can read my wrist heart rate from Fenix 6.
The other app can read from your 2 ANT+ sensors did indicate there could be something wrong with this app. Any chance that you can start the app, and try what you tried again for 1-3min, and then do a full bug report from Settings->Developer options->Bug report and attach here? Thank you.
—
Reply to this email directly, view it on GitHubhttps://github.com/starryalley/CSC_BLE_Bridge/issues/23#issuecomment-1015182054, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXG73HZ3QNMPFG77KJIPN4LUWURBFANCNFSM5LRWUWRA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID: @.***>

Hi @CS-Biker that makes sense. Can you please upload to your google drive or dropbox or similar free service, and share via link and send the link privately to me (starryalley at gmail dot com) ? Once I download it I'll let you know so you can delete it online permanently. Thank you.

Hi @CS-Biker I'm able to download your bugreport zip and this is what I found:
01-18 11:00:18.889 10483 30862 30862 E AntPluginPcc: BBD30800: Unable to configure logging, plugins package not found: android.content.pm.PackageManager$NameNotFoundException: Application package com.dsi.ant.plugins.antplus not found
...
01-18 11:00:18.899 10483 30862 30862 E AntPluginPcc: BBD30800: Binding to plugin failed, not installed
...
01-18 11:00:18.948 10483 30862 30862 W AntPluginPcc: BBD30800: RequestAccess failed: Missing Dependency: com.dsi.ant.plugins.antplus not installed.
01-18 11:00:18.949 10483 30862 30862 W AntDeviceManager: Ant Device State changed: DEAD, resultCode: DEPENDENCY_NOT_INSTALLED

Since I'm sure you must have already installed all the ANT+ dependencies, it could be that CSC BLE Bridge app can't find it even if it is installed. Then I came across this article where the author fixed a similar issue
It could be due to Android 11 package visibility filtering
I've built an apk (please unzip first) with the proposed fix from the author. Can you give it a try? Thank you.
app-release.apk.zip

Hi Mark,
That fix solved the problem.
The heart rate sent from the Fenix 5 is now picked up by your CSC BLE Bridge and transmitted via Bluetooth.
Again, really appreciated your support and thank you very much for fixing the problem instantly.
Best regards,
Chris

From: Mark Kuo @.>
Sent: Wednesday, January 19, 2022 10:45:52 AM
To: starryalley/CSC_BLE_Bridge @.>
Cc: CS-Biker @.>; Mention @.>
Subject: Re: [starryalley/CSC_BLE_Bridge] HR Sensor not detected (Issue #23)
Hi @CS-Bikerhttps://github.com/CS-Biker I'm able to download your bugreport zip and this is what I found:
01-18 11:00:18.889 10483 30862 30862 E AntPluginPcc: BBD30800: Unable to configure logging, plugins package not found: android.content.pm.PackageManager$NameNotFoundException: Application package com.dsi.ant.plugins.antplus not found
...
01-18 11:00:18.899 10483 30862 30862 E AntPluginPcc: BBD30800: Binding to plugin failed, not installed
...
01-18 11:00:18.948 10483 30862 30862 W AntPluginPcc: BBD30800: RequestAccess failed: Missing Dependency: com.dsi.ant.plugins.antplus not installed.
01-18 11:00:18.949 10483 30862 30862 W AntDeviceManager: Ant Device State changed: DEAD, resultCode: DEPENDENCY_NOT_INSTALLED
Since I'm sure you must have already installed all the ANT+ dependencies, it could be that CSC BLE Bridge app can't find it even if it is installed. Then I came across this article where the author fixed a similar issuehttps://rickyvanrijn.nl/2020/12/30/android-app-with-ant/
It could be due to Android 11 package visibility filteringhttps://developer.android.com/training/package-visibility
I've built an apk (please unzip first) with the proposed fix from the author. Can you give it a try? Thank you.
app-release.apk.ziphttps://github.com/starryalley/CSC_BLE_Bridge/files/7895890/app-release.apk.zip
—
Reply to this email directly, view it on GitHubhttps://github.com/starryalley/CSC_BLE_Bridge/issues/23#issuecomment-1016259422, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AXG73H2IXDA3SXHAHWBEOVDUW2B5BANCNFSM5LRWUWRA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID: @.***>

Glad to hear that! Also thank you for helping me debug this!


Standardize test methodologies and cleanup stale test environment files

@mattgreene @richbrowne
What issues does this address?
Fixes #460
Fixes #461
What's this change do?
Converts all tests to use tox for execution and updates the makefile to use the new method. Updated the README for the repo to reflect that and cleaned up some stale directories and files after the changes.
Where should the reviewer start?

The commit messages for the commits detail each change
Look at the tox.ini file and the make files
Review the README

Any background context?

We had too many ways to run tests so we are standardizing on using tox and decoupling the environment/infrastructure from the tests.

@richbrowne I will bring back your file and put it in one of the directories under functional tests because that is what it is related to.

Ok to commit, but github is showing a branch conflict that is blocking the merge button.


Not working share in iPhone 11 Pro Max native app mail ?

Not working share in iPhone 11 Pro Max native app mail. When click on mail app, opening app and close immediately without any error.

@EstebanFuentealba , Any updates?

@sunilprajapati714 would you mind sharing which version of rn-share are you using? Also with the react-native and an example?


Create srhstheschool.txt - srhstheschool.com

Add - Sree Raghavendra High School (srhstheschool.com)

@codeblitzmaster Pull request merged. Please notice that free educational license for JetBrains tools is for high and higher schools students, i.e. those who are over 13 of age. Thank you!


Distribute configure-repositories as a CLI

As a developer, I would like configure-repositories to be distributed as a CLI that I can download directly from the releases of the repository.
This way in my Dev machine, I can install it with:
pip install git+https://github.com/serlo/configure-repositories@RELEASE_TAG

and I don't need to clone the repository, or know about the internal scripts that exist in the code base, and I only need to run it as: configure-repositories --help.

I always loved the idea of a CLI 😉
Minor pool:
What about naming it?

serlo
srl
yolo
lama

Just kidding: each person can create an alias as they like it 😄

Distributed as a binary in https://github.com/serlo/configure-repositories/pull/19.


Why does this client Program output the log ”not B-encoded?”

Client Program
public static void main(String[] args) {
        Client client = null;
        File filePath = new File(args[0]);
        File folder = new File(args[1]);

        try {
            client = new Client(
                    // This is the interface the client will listen on (you might need something
                    // else than localhost here).
                    InetAddress.getLocalHost(),

                    // Load the torrent from the torrent file and use the given
                    // output directory. Partials downloads are automatically recovered.
                    SharedTorrent.fromFile(
                            filePath,
                            folder));
        } catch (IOException | NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        }
        client.share();
        client.waitForCompletion();

Tracker Program
public static void main(String[] args) throws IOException, NoSuchAlgorithmException {

        // First, instantiate a Tracker object with the port you want it to listen on.
        // The default tracker port recommended by the BitTorrent protocol is 6969.
        Tracker tracker = new Tracker(new InetSocketAddress(6969));
// Then, for each torrent you wish to announce on this tracker, simply created
// a TrackedTorrent object and pass it to the tracker.announce() method:
        FilenameFilter filter = new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".torrent");
            }
        };

        for (File f : new File(args[0]).listFiles(filter)) {
            tracker.announce(TrackedTorrent.load(f));
        }
// Once done, you just have to start the tracker's main operation loop:
        tracker.start();

    }

When i run these Programs, Client Program output the log "Tracker message violates expected protocol(Could not decode tracker message(not B-encoded?)!)"
Why are these Programs don't work?Is this an issue?

Are you sure the Torrent file you are serving with this tracker actually points at the tracker you are running, and not some other tracker on the internet? You can use ttorrent-torrent to display information about the torrent file and show what tracker it points to.


ddev-router healthcheck.sh  permission denied

Is there an existing issue for this?

[X] I have searched the existing issues

Output of ddev debug test
Running ddev start I see below error:
Failed to start ahi: ddev-router failed to become ready; debug with 'docker logs ddev-router' and 'docker inspect --format "{{json .State.Health }}" ddev-router'; logOutput=, err=health check timed out after 1m0s: labels map[com.docker.compose.service:ddev-router] timed out without becoming healthy, status=
But still the web app is accessible in browser and working fine.
To debug I ran docker inspect --format "{{json .State.Health }}" ddev-router and I got the below output:
{"Status":"unhealthy","FailingStreak":757,"Log":[{"Start":"2023-08-07T11:20:47.937625831Z","End":"2023-08-07T11:20:48.076172289Z","ExitCode":126,"Output":"/bin/bash: /healthcheck.sh: Permission denied\n"},{"Start":"2023-08-07T11:20:49.087961165Z","End":"2023-08-07T11:20:49.258456123Z","ExitCode":126,"Output":"/bin/bash: /healthcheck.sh: Permission denied\n"},{"Start":"2023-08-07T11:20:50.271309582Z","End":"2023-08-07T11:20:50.407708957Z","ExitCode":126,"Output":"/bin/bash: /healthcheck.sh: Permission denied\n"},{"Start":"2023-08-07T11:20:51.418983124Z","End":"2023-08-07T11:20:51.563713416Z","ExitCode":126,"Output":"/bin/bash: /healthcheck.sh: Permission denied\n"},{"Start":"2023-08-07T11:20:52.574944875Z","End":"2023-08-07T11:20:52.654258958Z","ExitCode":126,"Output":"/bin/bash: /healthcheck.sh: Permission denied\n"}]}
Expected Behavior
ddev-router container should be healthy
Actual Behavior
ddev-router container should be unhealthy
Steps To Reproduce
No response
Anything else?
No response

See umask 0027 prevents healthcheck in ddev-router #5239

@rfay
Sure will include output of ddev debug test from next time onwards.
Thanks. chmod 755 ~/.ddev/router-build/* this solved the problem.


Why is ExtData with GOCART.data so slow?

This is mainly just a question for @bena-nasa because I want to know. I'm looking at the SCM (see https://github.com/GEOS-ESM/GEOSgcm_GridComp/issues/399) and so I'm doing some SCM runs. And I noticed that ExtData is pricey when you only run, say, a day with the SCM:
--Run                                                     1    83.019  95.96     0.056   0.06
----EXTDATA                                              96    77.867  90.01    77.867  90.01
----GCM                                                 192     4.204   4.86     0.024   0.03

Obviously with longer runs, it gets less and less of the time, but at one day, you notice it. Is it the structure of the GOCART.data file?

My first guess is that you are having to read the full resolution file, then it is doing a regrid creation and operation to regrid from the full resolution to the single point. This is probably more expensive or slower due to the file system than running the column.
That's my guess.

My first guess is that you are having to read the full resolution file, then it is doing a regrid creation and operation to regrid from the full resolution to the single point. This is probably more expensive or slower due to the file system than running the column.
That's my guess.

@bena-nasa Ah. Okay. It intrigued me as I think "real" GOCART runs faster.
 It intrigued me as I think "real" GOCART runs faster.
 Where as regular gocart is mostly reading 2D emissions files.

It makes perfect sense that gocart.data is slower, you are reading 3D files as these are the full 3D climatologies for each component/bin. Where as regular gocart is mostly reading 2D emissions files.

Ah! Smart! Thanks!

Ah! Smart! Thanks!


Update test suite for JSON API changes

With changes to API as per #2 , look to use airborne for improved and ease of testing the API.

Even though there's ahold on changing the API, this can still be moved to for improved testing.


LRO: Resource Group Deployment: creation now polls, but deletion polling regressed

Before. Creation of a resource group deployment did not poll, but deletion did.
azure-sdk-for-go: 95361a2573b1fa92a00c5fc2707a80308483c6f9
go-autorest: bebca455f60b24bf6a2459e9e862ff42da86f5e0

After: Creation of a resource group deployment polls for completion of the deployment. However, deletion is now an instantaneous return.
azure-sdk-for-go: b4e3bc02a65dca5237084eba6e94f06a169f09c3
go-autorest: c8bdeef20f02ae8a6494040b1a7838692648ec03

This is the response from the delete resource group call with the current/"after" versions:
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Location: https://management.azure.com/subscriptions/aff271ee-e9be-4441-b9bb-42f5af4cbaeb/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1LVUJFOjJEMjAxNjAzMTQ6MkQyMDQ1MTktV0VTVFVTIiwiam9iTG9jYXRpb24iOiJ3ZXN0dXMifQ?api-version=2015-11-01
Retry-After: 15
x-ms-ratelimit-remaining-subscription-writes: 1194
x-ms-request-id: 90d4302d-21a9-4d03-a7c6-cc79950da6de
x-ms-correlation-request-id: 90d4302d-21a9-4d03-a7c6-cc79950da6de
x-ms-routing-request-id: WESTUS:20160315T040152Z:90d4302d-21a9-4d03-a7c6-cc79950da6de
Strict-Transport-Security: max-age=31536000; includeSubDomains
Date: Tue, 15 Mar 2016 04:01:52 GMT
content-length: 0

@colemickens Which API are you using (package/method)? Have you checked the corresponding Swagger to see if the x-ms-long-running attribute is attached? If it's not, then the generator does not know to generate polling logic.

This is the method: https://github.com/Azure/azure-sdk-for-go/blob/master/arm/resources/resources/groups.go#L175
To be honest, I can't find the Swagger spec for it in the spec repo. ??
Either way, the generated code looks like it installs the LRO support when it Sends: https://github.com/Azure/azure-sdk-for-go/blob/master/arm/resources/resources/groups.go#L220
Here is a mitmproxy flow of it polling before I upgraded the sdk. You can clearly see the polling:
https://gist.github.com/anonymous/af8de2e771faf8677d5f/raw
Here's what it does after I upgrade the sdk. No polling, it just returns after the first 202:
https://gist.githubusercontent.com/anonymous/b01501d544c3d5b47bdf/raw
These deletion were both for 4 machine cluster resource groups.

@colemickens https://github.com/Azure/azure-rest-api-specs/blob/244f3bf801273039d9faa2484c1938a142b88c9b/arm-resources/resources/2015-11-01/swagger/resources.json#L593-L624

Is it sending location header back? It seems from the logs. If yes, Sdk does not do polling for location header currently. We are in process of updating code for this.
Not sure how it was polling earlier for the same call.

@garimakhulbe Okay, thanks!

@colemickens...New release will fix this issue. Let us know if issue persists.

This is fixed. Thanks!


Init the JsonModal component

This initializes the JsonModal component displaying any JSON content given in the FeatureInfoForm.
Please review @terrestris/devs.

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Formatting widgets, fix typo, fix version

Hello,
I currently can't merge this because of conflicts. I'll try to apply the changes manually.
Thanks!


Support for multiple transports

Hey just wondering if you intend to implement say azure service bus support in this?

no intentions to implement ASB for this, but we would happily welcome a PR.

Awesome I'll see what i can do =)


Question on end of life state

Avoid duplicates

[X] Question is not already answered in the FAQ
[X] Question is specific for iOS only, for general issues / questions that apply to iOS and Android please raise them in the documentation repository
[X] Question has not already been asked in another issue

Your Question
PR https://github.com/corona-warn-app/cwa-app-ios/pull/1960 (merged into release/1.13.x) added the end of life state. It added a new box to the Home Screen, if a positive test result is stored in the app:
Picture from the PR:

As my brother was tested positive, I had the option to take a look at this screen myself & it seems like the box was removed again. The home screen looks as normal but this is shown:

Is this intended? If yes, why was the box removed?

Because the ENF framework is not deactivate. But with the latest information we could discuss if the app leave the recover states automatically at the moment this is a manual interaction to remove the pcr test

@thomasaugsten
Yes exactly, exposure logging stays active, however, the user can't see their risk status. Many users are asking on twitter how they can continue after this screen, so I think the box should be added back (with an adjusted text).

I'll open an enhancement request for this later today.


Missing raylib.dll

Upon opening the FlagWars.exe file found in the Windows version of this game, the game states that raylib.dll is missing. Perhaps it could be included with the .zip file?

Thanks for reporting!
The dll for raylib v5.0 has been added to the itch.io release. I also updated the version from an old version (4.2).
Let me know if there's any issues :)

Game opens right out the box now, thanks for fixing it!


Slovak translation and new file upload #73

Hey, here is new request with changes from click-changes which could be merged without problems. I also added Slovak translation.

Hi @jlamer . This PR has changes of your other PR, can you please do a merge request from a clean branch?
Just files  src/js/providers/translations.js and src/templates/navbar.html

I did this on purpose. I also resolved issues with merge problems and merged my other changes with your click branch.

You can close the old one and just use this.

Merged individually the slovak translations


[BUG]: Handshake loops for a while/forever

Mod version: v2-alpha6 + fix of 9/7/21 uploaded on Discord by Rogor
Game version: 1.12.2
Operating system: Windows 10
Microprocessor/s in use: Intel I5

First connection is working but generally after closing the connection on the KSP side, uploading new code to the Arduino or just resetting it and reopening the connection, the handshake loops on "KerbalSimpit: SYN received on port COM3. Replying."
Experimentations
I had two Arduinos configured, removed one from the config and now testing on a bare Arduino connected through a a USB hub.
It seems to work out when no channels are subscribed to but if there are multiple channels, it will start looping. Commenting out all channels won't make it better if the handshake hasn't recovered.
How repeatable is it?
it works on the first connection, usually start looping a few seconds after a few close/start and then it seems to get worse to the point of not even recovering after a while
To Reproduce
I can reproduce fairly easily with the following pattern:

connect successfully
close connection KSP
reset Arduino with or without modification
wait a few seconds
start connection in KSP

List of channels subscribed:
mySimpit.registerChannel(ALTITUDE_MESSAGE);
mySimpit.registerChannel(ACTIONSTATUS_MESSAGE);
mySimpit.registerChannel(LF_STAGE_MESSAGE);
mySimpit.registerChannel(OX_STAGE_MESSAGE);
mySimpit.registerChannel(XENON_GAS_STAGE_MESSAGE);
mySimpit.registerChannel(MONO_MESSAGE);
mySimpit.registerChannel(ELECTRIC_MESSAGE);
mySimpit.registerChannel(FLIGHT_STATUS_MESSAGE);
mySimpit.registerChannel(CAGSTATUS_MESSAGE);
mySimpit.registerChannel(APSIDES_MESSAGE);
mySimpit.registerChannel(VELOCITY_MESSAGE);
mySimpit.registerChannel(TACLS_RESOURCE_MESSAGE);
mySimpit.registerChannel(TACLS_WASTE_MESSAGE);
mySimpit.registerChannel(APSIDESTIME_MESSAGE);
mySimpit.registerChannel(ORBIT_INFO);
mySimpit.registerChannel(MANEUVER_MESSAGE);

actual code (removed all the commented code of my controller).
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <KerbalSimpit.h>

#define DEBUG 1
#define TEST 0

const int pinDebugRx = 6;
const int pinDebugTx = 7;

SoftwareSerial Serial1(pinDebugRx, pinDebugTx); // RX, TX

KerbalSimpit mySimpit(Serial, Serial1);

void setup()
{
  Serial.begin(115200);
  Serial1.begin(38400);

  Serial1.println("debugging on");

  // simpit
  while (!mySimpit.init()) {
    delay(100);
  }
  mySimpit.printToKSP("Connected 3.10", PRINT_TO_SCREEN);

  mySimpit.inboundHandler(messageHandler);
  mySimpit.registerChannel(ALTITUDE_MESSAGE);
  mySimpit.registerChannel(ACTIONSTATUS_MESSAGE);
  mySimpit.registerChannel(LF_STAGE_MESSAGE);
  mySimpit.registerChannel(OX_STAGE_MESSAGE);
  mySimpit.registerChannel(XENON_GAS_STAGE_MESSAGE);
  mySimpit.registerChannel(MONO_MESSAGE);
  mySimpit.registerChannel(ELECTRIC_MESSAGE);
  mySimpit.registerChannel(FLIGHT_STATUS_MESSAGE);
  mySimpit.registerChannel(CAGSTATUS_MESSAGE);
  mySimpit.registerChannel(APSIDES_MESSAGE);
  mySimpit.registerChannel(VELOCITY_MESSAGE);
  mySimpit.registerChannel(TACLS_RESOURCE_MESSAGE);
  mySimpit.registerChannel(TACLS_WASTE_MESSAGE);
  mySimpit.registerChannel(APSIDESTIME_MESSAGE);
  mySimpit.registerChannel(ORBIT_INFO);
  mySimpit.registerChannel(MANEUVER_MESSAGE);
}

void loop() {
  mySimpit.update();
}

I modified KerbalSimpit.cpp to take another serial stream so I can send logs to another Arduino using pin 6 and 7 (connected respectively to 3 and 2 on the other Arduino running https://github.com/fgaudin/ArduinoDebugger)
bool KerbalSimpit::init()
{
  if (_serial == NULL) {
    return false;
  }
  _outboundBuffer[0] = 0x00;
  int i;
  for (i=0; i<sizeof(KERBALSIMPIT_VERSION); i++) {
    _outboundBuffer[i+1] = KERBALSIMPIT_VERSION[i];
  }
  i = i + 1;
  _receiveState = WaitingFirstByte;
  _serialDbg->println("sending SYN");
  _send(0x00, _outboundBuffer, i); // Send SYN

  uint8_t count = 0;

  _serialDbg->println("waiting for data");
  while (!_serial->available()){
    _serialDbg->println("not available");
    count += 1;
    delay(100);
    if(count > 10){
      return false;
    }
  }
  int b;
  _serialDbg->println("Reading first byte");
  b = _serial->read();
  _serialDbg->println(b, HEX);
  if (b == 0xAA) { // First byte of header
    _serialDbg->println("First byte of header received");
    while (!_serial->available());
    _serialDbg->println("Reading second byte");
    b = _serial->read();
    _serialDbg->println(b, HEX);
    if (b == 0x50) { // Second byte of header
      _serialDbg->println("Second byte of header received");
      while (!_serial->available());
      _serialDbg->println("reading size");
      b = _serial->read(); // size
      _serialDbg->println(b, HEX);
      while (!_serial->available());
      _serialDbg->println("reading type");
      b = _serial->read();
      _serialDbg->println(b, HEX);
      if (b == 0x00) { // type
        _serialDbg->println("type == 0x00");
        while (!_serial->available());
        _serialDbg->println("payload ready");
        if (_serial->read() == 0x01) { // first byte of payload, we got a SYNACK
          _serialDbg->println("received SYNACK");
          // TODO: Do we care about tracking handshake state?
          _outboundBuffer[0] = 0x02;
          _send(0x00, _outboundBuffer, i); // Send ACK
          _serialDbg->println("sent ACK, success");
          return true;
        }
      }
    }
  }
  _serialDbg->println("sync failed");
  return false;
}

Here's one sample of the logs:
platformio-device-monitor-210908-213819.log

I had a similar issue sometimes but I was not able to reproduce it consistently.
I have added a clearing of the sending when a handshake start in c30c73a086d519edc920458aaac60ed1c9c76b40
I have improved the init code on the Arduino lib to read all packets received and look for a SYNACK in it instead of just looking at the first one.
Can you see if the problem is solved ? For convenience, I attached the DLL as compiled with the commit mentioned above and the new KerbalSimpit.cpp as committed in the Arduino repo.
KerbalSimpit_20210909.zip

This issue appears to be fixed by those commits.


fix(deps): upgrade tar

Motivated by

https://nvd.nist.gov/vuln/detail/CVE-2021-32804
https://nvd.nist.gov/vuln/detail/CVE-2021-32803

Note that those CVEs are actually not applicable to the usage of
node-tar in any Instana package, versions are solely bumped to avoid
false positives in automatic dependency checks.

Originally provided via https://github.com/instana/nodejs/pull/367.

This has landed in 1.130.1.


Created Storer interface

Storer interface will be used to support a variety of storage
back-ends, such as writing to files or a databse.

🛳


Wrote an online version of ts based on the golang version

Deployed on deno.dev
https://deeplx.deno.dev/translate

Thanks


[Feature request] Manage archived:: true

Hi @georgeguimaraes thanks for this great plugin, do you plan to implement the "Archives" feature as stated in the Readme file ? It would be a great addition for those like that have a growing set of items in Logseq.

@DonaldoSoWell Hi Donaldo, tks!!
Yeah, I tried a few options to filter out archived projects and areas, but I'm still unsatisfied with the results.
To be honest, I was hoping to see Logseq launch the DB version soon, which will have page properties built-in, and then I'd have to change how these queries work anyway.
But since this is taking long than I was expecting, let me check my notes here on how to archive things.


small null reference fix in merge trigger after ghprb

When the trigger phrase is specified in the build config and when the build trigger is set up to trigger on every push, the comment being null causes null reference exception.

Thank you for a pull request! Please check this document for how the Jenkins project handles pull requests


Autodetect Region

I have the same problem and you most likely don't have a lockfile in that directory

Same for me. There isn't any lockfile in %localappdata% path.
So, is there any way to create that lockfile or find any solution?

Start the game then start the RPC that will fix it because the lockfile is created when you start Valorant

see @LeonHenning's solution


Release notes of v272 are not correct

Release notes of v272 in the 'Job Spec Changes' section:

The properties uaa.url and login.protocol have been removed

But looking at both manifest template and uaa spec files the properties are still there, and some other (uaa.issuer) depend on them.
Could you please clarify if these properties shall be really removed or not?
Thanks and regards,
Michael

Hey @tyyko,
Thanks for catching this! Definitely looks like a mistake in the release notes. As you found out, we most definitely are using these manifest properties...We believe those job spec changes are for a different job, and we missed labeling that job.
We're going to reach out to the right people and get the release notes updated. We'll throw another comment here once we've reached out.

Hey @tyyko, I've removed that note from the release notes for CF 272. We're still hunting down how it got in there, but we've verified that it's still required for UAA jobs. Thanks!


Add support for SWIFTCI_USE_LOCAL_DEPS in swift-inspect

If the SWIFTCI_USE_LOCAL_DEPS environment variable is set, we're building in the Swift.org CI system alongside other projects in the Swift toolchain and we can depend on local versions of our dependencies instead of fetching them remotely.
Also removes manual CXX flags set by build.ps1 invocation since they're already in Package.swift.

@swift-ci please test

@swift-ci please build toolchain Windows platform

@swift-ci please test Windows platform


CombinedSignal class reimplements derivativesignal but is no longer used

estimate 1

Likely candidate for removal if there's no future intended usage.

CombinedSignal class is still in use.


How do I generate a distance transform diagram similar to the one in README.MD?

Hello, I'd like to enter a two-value image (this one in the middle of the image below) and generate its distance transform diagram (the one on the far right below), what do I need to do?

https://github.com/orzzzjq/Parallel-Banding-Algorithm-plus/blob/2f58720302c3478d4367b21268dfbb263b46c4d2/pba-plus-2D/main.cpp#L87-L109
First, modify this function and set the value of the front points (in the image, the white pixels) to be their coordinate (tx, ty). And leave the other points to be MARKER. Then run the program you can get the Voronoi diagram. Some details can be found here:
https://github.com/orzzzjq/Parallel-Banding-Algorithm-plus/blob/2f58720302c3478d4367b21268dfbb263b46c4d2/pba-plus-2D/pba/pba2D.h#L50-L60
https://github.com/orzzzjq/Parallel-Banding-Algorithm-plus/blob/2f58720302c3478d4367b21268dfbb263b46c4d2/pba-plus-2D/pba/pba2DHost.cu#L162
After calling this function pba2DCompute(), pbaTextures[1] will store the coordinate of the closest front point, then you can write a simple kernel to compute the distance.

Thank you, I probably understand how to generate a dt diagram.


Better demo data

We need some data to demo the capabilities of Apollo on a real organism

Something small (so we can also demo local editing)
Annotations and sequence
Evidence tracks (rna seq would be especially nice)

A couple of Plasmodium species should work well for this, for example P. falciparum and P. chabaudi. PlasmoDB has a number of resources. To get genomes and annotations:
curl -O https://plasmodb.org/common/downloads/release-64/Pfalciparum3D7/fasta/data/PlasmoDB-64_Pfalciparum3D7_Genome.fasta
curl -O https://plasmodb.org/common/downloads/release-64/Pfalciparum3D7/gff/data/PlasmoDB-64_Pfalciparum3D7.gff

curl -O https://plasmodb.org/common/downloads/release-64/Pchabaudichabaudi/fasta/data/PlasmoDB-64_Pchabaudichabaudi_Genome.fasta
curl -O https://plasmodb.org/common/downloads/release-64/Pchabaudichabaudi/gff/data/PlasmoDB-64_Pchabaudichabaudi.gff

Genome size is in the order of ~20 MB, but we can select a single chromosome to make it smaller.
For RNAseq, PlasmoDB has several links to public datasets. We may need to align the raw reads ourselves to get bam  and bigwig files but this is not a problem.
For comparing species, we can generate pairwise, "crunch" files. For example, considering one chromsome pair:
samtools faidx PlasmoDB-64_Pfalciparum3D7_Genome.fasta Pf3D7_06_v3 > PlasmoDB-64_Pfalciparum3D7_Pf3D7_06_v3.fasta
samtools faidx PlasmoDB-64_Pchabaudichabaudi_Genome.fasta PCHAS_01_v3 > PlasmoDB-64_Pchabaudichabaudi_PCHAS_01_v3.fasta

makeblastdb -in PlasmoDB-64_Pfalciparum3D7_Pf3D7_06_v3.fasta -dbtype nucl

sbatch -t 7-00:00:00 -e err.log -o out.log --wrap "
    tblastx -query PlasmoDB-64_Pchabaudichabaudi_PCHAS_01_v3.fasta \
           -db PlasmoDB-64_Pfalciparum3D7_Pf3D7_06_v3.fasta \
           -evalue 0.1 \
           -max_target_seqs 10 \
           -outfmt 6 > PCHAS_01_v3_vs_Pf3D7_06_v3.crunch"

(NB: The above takes around three days to complete, for larger chromosomes consider splitting the query in chunks).

@dariober could you provide an example of raw reads in a public dataset (with a link) for each of those to species? Thanks!


Taskbar should have current directory name

When multiple instances are opened they all appear as "Files" in the taskbar:

It would be great if the title in the task bar could indicate the current tab/folder of the window.

This issue should be resolved in main.


Adding default value for PATH argument.

The PATH of the new Git repository has to be specified every time, make changes so that the default path is the current directory.

I would like to work on this issue as a GSSOC'23 participant. Can you please assign it to me?

I would like to be assigned this issue as a GSSOC'23 participant.

Hey @sahil-sagwekar2652 assign me this issue for GSSOC'23 project.
I will make changes so that the argparse.ArgumentParser includes a --path argument with a default value of '.', which represents the current directory. If the --path argument is not provided when running the script, it will default to the current directory.
You can now use the script in the following ways:
Specify a custom path: python script.py /path/to/repo MyRepo
Use the default path (current directory): python script.py MyRepo
The --path argument is now optional and will default to the current directory if not provided.

I would like to work on the issue

hello , I'm GSSOC23 contributor can you assign me this issue i would like to explore and resolve it. Would plan to use the current working directory and create the a local repo using the name

Hey everyone, the issues are being assigned on a first-come-first-serve basis. In the meanwhile, check out the other issues, or feel free to create your own. Also, don't make a PR without raising an issue and getting it assigned to you. If the original assigned isn't active or not working on the issue, then I'll assign it to the next contributor.

@nishtha981 are you working on this issue?

Yes yes I'm working on it


Move CI from Travis CI to GitHub Actions

Travis CI is disabled for this repo and it would be easier for everyone involved to just migrate it over to GitHub Actions.
The only non-trivial thing might be with code coverage.

💯  Travis CI needs to be avoided like the plague. There's major problems in that organization these days. Their response to this recent incident in particular was unacceptable:
https://cycode.com/blog/github-oauth-compromise-affecting-heroku-and-travis-ci-users/


Upgrade dependencies and fix function signature changes

Current dependencies on/for this PR:

main

PR #56

PR #57   👈

PR #58

This stack of pull requests is managed by Graphite.


beauties: init at 0.0.14

Motivation for this change
This open the way for a beauties NixOS service, which would enable a little nice web application for minimalist personal services.
This is my first contribution, I'm not sure how to compute the vendorSha256, but will do ASAP if possible and will update what I tried.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 97476 run on x86_64-linux 1

1 package built:

beauties

closing as I am not using this anymore.


style login form

Resolves #187
Before

After

@shreyshreyansh are you a part of DCP?

@shreyshreyansh after login user is not redirecting to home.html.
Make one more PR to correct it.


Few questions regarding best practices using the "binder" library

Hi!
Let's get straight to the point: I fell in love with your library. The architecture separating view/logic/state that you set up is what I have always aimed for but never managed to achieve.
Before that I've done countless refactors of my application. I've tried different approaches without ever finding one that fully satisfied me. Finally, I stumbled upon your creation last week by coincidence. I decided to give it a try for yet another refactor... It has been an incredible pleasure. This solved all the difficulties, trade-offs and accidental complexities I had been facing until then. My code is so much more modular, it's a breath of fresh air. My views are much less nested. It is infinitely simpler to share the same state between several business and UI components. I love how simple and elegant it is, and I love how development just has to let itself be guided by your api.
In short: state management in Flutter is a solved problem thanks to binder.

While I was re-writing my application, I noted a few points of interest that I would have liked to clarify. I hope you don't mind if I ask you about some of these. A short answer will suffice, I don't want to abuse your time. It's simply that I want to make the best use of your library.
Is there any purpose for the public scope attribute of a Logic?
Each class inheriting Logic has a public Scope.  I understand what it stands for, but is there any good reason to directly access this object instead of calling use()/read()?
What happens if I initialize a reference inside a widget?
All the examples show the use of LogicRef and StateRef being global variables. I was wondering: is it a problem if one is initialized as a widget attribute? There is no risk of memory leak or callback called several times?
Is there any reason why it is not possible to call context.read() for a Computed?
In particular, if one wants to access the value in a callback. It's possible to use context.read() on a StateRef but not on a Computed (which I thought would be similar to a StateRef as it is derived from). Why that?
What is the best way to request data while building a widget?
Sometimes, my View or Widget does not depend on an actual state but rather on temporal data. For example, when I need to display a list of values loaded from the cloud. How do you usually load and store this ephemeral data from a LogicRef? I do something similar to this:
FutureBuilder(
    future: Future.microtask(() => context.use(myLogicRef).loadData()),
    builder: (context, snapshot) => ...,
)

Is this an acceptable workaround, or does it indicate a problem in the structure of my application?
How to handle the lifetime of one or more Logic "instances"?
So, let's say inside my application there is a chess game. I implemented it using one ChessGameLogic which involves many states: chessBoardRef, blunderCountRef, turnRef, elapsedTimeRef, isGameFinishedRef, winnerRef, etc. So anytime the user navigates to the /chess page a new game must be started. By starting a new game, all previously listed states need to be reset to their initial value. When the game ends and is not used by any view, the refs can be disposed. What would be the best way to use binder in this case?
I could declare an init() function in my logic and make my view call it before starting the game. However, if my user is very strong, I want to display two games at the same time for him to play them simultaneously. That means I need two separate sets of states. Is it a good use case for overrideWith()?
I was thinking of declaring a function inside the logic file like that (note that I'm overriding the logic reference too):
List<BinderOverride> createGameInstance() => [
    chessGameLogicRef.overrideWith((scope) => ChessGameLogic(scope)),
    chessBoardRef.overrideWith(ChessBoard()),
    blunderCountRef.overrideWith(0),
    ...
]

And declare a new BinderScope in the view file:
BinderScope(
    overrides: createGameInstance(),
    child: GameChessView(),
)

Would you say that this is the idiomatic way to handle the Logic as if it were a class instance?
I mean, the logic and states do not actually need to exist by default. They can be instantiated independently one or multiple times, and they should "die" when the view no longer use it.
Well, that's it for tonight. :)
Anyway, thank you very much for the work you did!

Whoa, this is so great to read this kind of feedback 💙 ! Thank you so much!
It's so grateful to see that the work I have been doing is useful for you!
I will try to answer to you the best I can 🙂 :

Is there any purpose for the public scope attribute of a Logic?
Each class inheriting Logic has a public Scope. I understand what it stands for, but is there any good reason to directly access this object instead of calling use()/read()?

This is a technical reason. The scope attribute is needed internally by the read/write/use methods. I didn't want business logics to directly inherit from a type coming from binder. Otherwise I would have find binder too much intrusive.  The drawback of this decision, is that binder need the class applying the mixin to provide the scope, and the only solution I found was to declare it as abstract in the Logic mixin, so that classes have to provide it.
Because it involves some boilerplate, I created some vscode snippets, to make the creation of a business logic less cumbersome. You can find the snippets here: https://marketplace.visualstudio.com/items?itemName=romain-rastel.flutter-binder-snippets.
But to answer to your question, I don't find any reason for you, to use it directly. You should use the utility methods 😉 .

What happens if I initialize a reference inside a widget?
All the examples show the use of LogicRef and StateRef being global variables. I was wondering: is it a problem if one is initialized as a widget attribute? There is no risk of memory leak or callback called several times?

LogicRefs and StateRefs stand for ids. If you initialized them as a widget attribute, then, they can be recreated each time the parent widget rebuilds and would inevitably lead to issues. And yes I think it can cause memory leaks indeed, if the BinderScope is not cleaned.
If you don't want everyone outside a file to be able to watch a StateRef you can declare it globally but private.
Thanks for raising this, I need to add something in the README to inform the users!

Is there any reason why it is not possible to call context.read() for a Computed?
In particular, if one wants to access the value in a callback. It's possible to use context.read() on a StateRef but not on a Computed (which I thought would be similar to a StateRef as it is derived from). Why that?

It looks like I made a mistake 👍 . Everything is plugged in so that we can do it, except for the extensions and Logic. I need to look at it! Thanks 🙂 !

What is the best way to request data while building a widget?
Sometimes, my View or Widget does not depend on an actual state but rather on temporal data. For example, when I need to display a list of values loaded from the cloud. How do you usually load and store this ephemeral data from a LogicRef? I do something similar to this...

I would not use a FutureBuilder because the future will be called every time the widget rebuilds, which is maybe not what you want. Instead you can create a StatefulWidget and load the data in the initState.
I've done it in several examples. You can see such a widget here: https://github.com/letsar/binder/blob/main/examples/architecture/lib/core/widgets/logic_loader.dart
I didn't yet added one in binder because I want to see what is the best API to provide for this feature. If you have an idea, your feedback will be much appreciated.

How to handle the lifetime of one or more Logic "instances"?

Interesting use case. This is the right thing to do. Simply create a BinderScope and provide it the overrides it needs to have its own logic and states 🙂 !
When the BinderScope will be disposed, all the overriden states and logics in this scope will be deleted as well.

Would you say that this is the idiomatic way to handle the Logic as if it were a class instance?
I mean, the logic and states do not actually need to exist by default. They can be instantiated independently one or multiple times, and they should "die" when the view no longer use it.

YES and YES 🙂 ! Logics are instantiated only in overrides or when we use them for the first time. And they "die" when the BinderScope, holding their state is disposed. So if we want a logic instance to be temporal, we have to override it in a new BinderScope.
For logics, if the factory is the same, you can use overrideWithSelf instead of providing the same factory in another overrideWith.
For example, let's say chessGameLogicRef is declared like that:
final chessGameLogicRef = LogicRef((scope) => ChessGameLogic(scope));

instead of writing this:
chessGameLogicRef.overrideWith((scope) => ChessGameLogic(scope)),

you can write this:
chessGameLogicRef.overrideWithSelf(),

I'm not totally happy with how I named overrideWithSelf, so if you have a better suggestion, I'm all ears 🙂 .
I hope to have answer to all your questions. If you're still happy with binder, don't hesitate to share your feedback with others. The more people use it and the more feedback I get, the more I can adjust the API and make the documentation better 🙂 .

I've just pushed v0.2.1 in which you can use any watchable with context.read, not just a StateRef 😉 .

Hey! Thanks for the quick answers and the fast new release! :tada:

I didn't want business logics to directly inherit from a type coming from binder. Otherwise I would have find binder too much intrusive.

It's an interesting design consideration that I've never thought of before. That makes a lot of sense. Anyway, I'm already using the binder snippets you published so it's not a problem.

I would not use a FutureBuilder because the future will be called every time the widget rebuilds, which is maybe not what you want.  Instead you can create a StatefulWidget and load the data in the initState.

Oups, yeah. Classic pitfall of FutureProvider. In this sense, having a utility class or a documented example would certainly be helpful. I don't know exactly what would be the best API, my use cases have been the following:

Initializing some part of a  Logic (like calling firebase.authStateChanges().forEach(...))
Creating dynamic value based on Widget internal state (like context.use(logicRef).generateImage(widget.item))
Fetching data asynchronously (like context.use(logicRef).loadData())

For the last two cases (which are actually identical, modulo async), I mean that the widget will use the data directly instead of going through a StateRef. Such use case would require adapting the LogicLoader so that it calls some initializer during initState() and forwards the returned value to a builder. However, it requires using .addPostFrameCallback() which means the value will not yet be available during first build(). Also, using a Future is "sub-optimal" when the Widget just needs to obtain the value synchronously.
I guess it's a little bit ambiguous so let me add an example. :)
final fetchedDataCountRef = StateRef(0);

final dataFetcherRef = LogicRef((scope) => DataFetcher(scope));

class DataFetcher with Logic {
  const DataFetcher(this.scope);

  @override
  final Scope scope;

  int fetch(int num) {
    update<int>(fetchedDataCountRef, (count) => count + 1);
    return num * 2;
  }
}

class MyData extends StatefulWidget {
  final int num;

  const MyData(this.num);

  @override
  _MyDataState createState() => _MyDataState();
}

class _MyDataState extends State<MyData> {
  int data;

  @override
  void initState() {
    super.initState();
    data = context.use(dataFetcherRef).fetch(widget.num);
  }

  @override
  Widget build(BuildContext context) => Text("Data: $data");
}

This code is buggy: if I call data = context.use(dataFetcherRef).fetch(widget.num); this generates an error "setState() or markNeedsBuild() called during build." (because of the update()). If I use addPostFrameCallback() to fetch the value then data is null. So I'm not sure how to solve this properly, apart from using a Future.

YES and YES slightly_smiling_face ! Logics are instantiated only in overrides or when we use them for the first time. And they "die" when the BinderScope, holding their state is disposed. So if we want a logic instance to be temporal, we have to override it in a new BinderScope.

Great! It looks like a very elegant solution for my multiple Logic instances problem. I like how overrideWith() naturally fits this use case.

For logics, if the factory is the same, you can use overrideWithSelf instead of providing the same factory in another overrideWith.

Good to know, thanks. That's certainly better than repeating (scope) => ChessGameLogic(scope). The name overrideWithSelf is pretty descriptive, I don't have many ideas to improve it.
So, yeah, thank you again for clarifying my concerns. I hope binder will encounter the success it deserves. :+1:

Thank you for the interest you have in this package and for your well written comments.
Concerning the LogicLoader widget, I need to go through more examples to see what is the best way to do it.
Thank you for the example. That was a use case I didn't think about. Do you care about fetchedDataCountRef to be updated on the same frame, or it does not matter?
How did you do it with Provider or any other state management package?
I'm not sure how to handle this use case, because changing the state will inevitably calling a rebuild.
In your use case, do you really count and display the number of times the app fetch data, or was it only to explain the concept?
Thanks for your kind words, I also hope this package will find an audience 🙂 .

Do you care about fetchedDataCountRef to be updated on the same frame, or it does not matter?

No, I think it does not matter. Actually, I never had to make a widget which is dependent on when the frame is refreshed.
The logic notifies that some state changed, and the view will update whenever it can.

How did you do it with Provider or any other state management package?

Without using binder, I would do something like that:
class DataBloc {
  final fetchedCount = ValueNotifier<int>(0);

  int fetch(int num) {
    fetchedCount.value += 1;
    return num * 2;
  }
}

class DataWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final data = Provider.of<DataBloc>(context).fetch(111);
    return Column(children: [
      ValueListenableBuilder<int>(
        valueListenable: Provider.of<DataBloc>(context).fetchedCount,
        builder: (context, count, _) => Text("Fetched count: $count"),
      ),
      Text("Fetched data: $data"),
    ]);
  }
}

class DataView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Provider<DataBloc>(
      create: (_) => DataBloc(),
      child: DataWidget(),
    );
  }
}

Well, of course .fetch() will be called at each rebuild, which may be undesirable. In such case, I would simply define a new widget and call it from inside the initState().

In your use case, do you really count and display the number of times the app fetch data, or was it only to explain the concept?

This was a purely fictional example. :slightly_smiling_face:
The issue I faced came from a StateHolder widget I implemented. It accepts a callback, the widget calls the callback during initState() and stores the returned value, but without using addPostFrameCallback(). Also, I have a Logic which updates some StateRef during .init(). While using this widget to initialize my Logic, I realized it caused an error because of update()duringLogic.init()`.
StateHolder<void>(
    initialize: (context) => context.use(myLogicRef).init(),
    builder: (context, state) => ...,
)

Thanks to this widget, the idea was to call context.use(myLogicRef).fetch(111) during initialize so that state equals 222 at first build.
I think maybe I'm going in the wrong direction. A possible better approach would be refactoring the code so that 111 and data are associated with a StateRef. Perhaps the view should not request for data this way.
On the other hand, sometimes it's very convenient just to let the view somehow call the logic.
For example : a widget which displays a pseudo-random number generated by a Logic.
While generating the number, the Logic needs to read() and update() different  StateRef for some reason. The widget should be built only once. Displaying a default value (like 0) from one frame before re-building the widget with the generated number is undesirable. The widget may be used multiple times in the view.
Using binder, I would not know how to implement that.

Ok I see. For this kind of use case we need to do something special. Because binder is based on InheritedModel, a rebuild is requested each time we change a value. For this use case we need to workaround this. One solution could be to also work with a ValueNotifier like you did with provider:

final dataLogicRef = LogicRef((scope) => DataLogic(scope));

final fetchedCountRef = StateRef(ValueNotifier<int>(0));

class DataLogic with Logic {
  DataLogic(this.scope);

  @override
  final Scope scope;

  int fetch(int num) {
    read(fetchedCountRef).value++;
    return num * 2;
  }
}

class DataWidget extends StatefulWidget {
  @override
  _DataWidgetState createState() => _DataWidgetState();
}

class _DataWidgetState extends State<DataWidget> {
  int data;
  @override
  void initState() {
    super.initState();
    data = context.use(dataLogicRef).fetch(111);
  }

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      ValueListenableBuilder<int>(
        valueListenable: context.watch(fetchedCountRef),
        builder: (context, count, _) {
          return Text("Fetched count: $count");
        },
      ),
      Text("Fetched data: $data"),
    ]);
  }
}

I prevented to call use inside build methods to avoid some issues, but maybe I should remove this restriction.

Hum, yeah, thanks for the workaround. It's a possibility I hadn't thought of. However, it would bother me a bit. Wrapping a ValueNotifier in a StateRef and using ValueListenableBuilder makes binder lose its awesomeness!
If I were to implement a workaround, I think I would simply postpone the update.
final fetchedCountRef = StateRef(0);

final dataFetcherRef = LogicRef((scope) => DataFetcher(scope));

class DataFetcher with Logic {
  const DataFetcher(this.scope);

  @override
  final Scope scope;

  int fetch(int num) {
    Future.microtask(() => update<int>(fetchedCountRef, (count) => count + 1));
    return num * 2;
  }
}

class MyData extends StatefulWidget {
  final int num;

  const MyData(this.num);

  @override
  _MyDataState createState() => _MyDataState();
}

class _MyDataState extends State<MyData> {
  int data;

  @override
  void initState() {
    super.initState();
    data = context.use(dataFetcherRef).fetch(widget.num);
  }

  @override
  Widget build(BuildContext context) {
    final count = context.watch(fetchedCountRef);
    return Column(children: [
      Text("Fetched count: $count"),
      Text("Fetched data: $data"),
    ]);
  }
}

I don't think you need to allow use() in build methods. At least personally, I prefer to use a workaround for the few times I need it, rather than having less restrictions but opening the door to a whole new set of mistakes.
I don't know precisely what are all the possible pitfalls of using context.use() in a build method, but in my case, it's probably not the best solution. The build() method can be called a arbitrary number of times by the framework, using logic within it is therefore not a good idea. Hence the importance of initState() as you suggested.
In fact, the main problem is the following: it is not possible to use Logic.write() inside initState().
If we solve this, then my use case "let the view request data from logic" is solved too without needing a workaround. It will also prevent anyone from possibly getting an error while using a Logic in initState() without calling addPostFrameCallback().
For example, I made this change t binder which seems to solve the problem, but I don't know anything about the other possible consequences.
diff --git a/packages/binder/lib/src/binder_scope.dart b/packages/binder/lib/src/binder_scope.dart
index c409936..90d27ed 100644
--- a/packages/binder/lib/src/binder_scope.dart
+++ b/packages/binder/lib/src/binder_scope.dart
@@ -157,9 +157,8 @@ class BinderScopeState extends State<BinderScope>
     if (isOwner(ref.key)) {
       void applyNewState() {
         readOnlyKeys.remove(ref.key);
-        setState(() {
-          states[ref.key] = state;
-        });
+        states[ref.key] = state;
+        SchedulerBinding.instance.addPostFrameCallback((_) => (context as Element).markNeedsBuild());
       }

       final effectiveObservers = [...observers, ...widget.observers];

What do you think? I guess this is what you had in mind when you asked me if it mattered that fetchedDataCountRef was updated during the  same frame.
Ideally, we should not postpone the setState() if we are already outside of initState(). I don't know how addPostFrameCallback() behaves in this case, and I'm not sure if it can be detected.

Yes this is not a full binder solution. But I'm not sure I can find one if we want to have the fetchCount on the same frame. I will think about that though.
Yes, the solution with the Future.microtask was what I add in mind when I asked :

Do you care about fetchedDataCountRef to be updated on the same frame, or it does not matter?

Yes we can only mutate data outside build because it requests a rebuild (if the state has changed).
Sorry, I cannot apply the change you proposed because it would otherwise always make the change one frame after, and since it's not a typical use case, it would be penalizing.
If more people are interested by this use case, I could do something to let the user choose, but it would complicate a little the API and the code.
In the mean time I keep in mind this to see if we could do something better.

Thanks for the time you spent on my problems! I'm closing this issue because you offered a solution for all the questions I had. :+1:

If more people are interested by this use case, I could do something to let the user choose, but it would complicate a little the API and the code.

Yeah, I don't think it's worth complicating the API for that. The ideal solution would be transparent for the user, so that we can develop with a mind freed from this edge case. Otherwise, I can just use one of the workarounds discussed here.
I will open tomorrow an issue specifically about the "calling Logic.write() during initState()" use case. It will be clearer.
I was afraid that addPostFrameCallback() would be undesirable for this reason. I was not sure, as I don't know when usual callbacks like onPressed (where Logic is primarily used) are handled by the framework.
Alternatively, I thought we could detect if we are inside initState() and use addPostFrameCallback() only if necessary. I was hoping you had an idea about this, but unfortunately it doesn't seem possible...
It's very frustrating because I feel like there's not much missing to have a perfect solution!