Ledger Integration

We are evaluating writing a Sia app for the Ledger Nano S. Nothing is promised at this point. I'm creating this issue so that we can discuss design and track progress.
Plan
The current plan is to write a barebones Ledger app from scratch using the Nano S SDK that will support generating addresses and signing transactions. This app will talk to a client program on the user's computer -- preferably siac, but possibly a separate standalone program.
Ledger provides Bitcoin equivalents for these programs (blue-btc-app for the device itself and ledger-wallet-chrome for the client program), and as far as I can tell, pretty much every altcoin Ledger app is a fork of these. It's feasible that we could do the same for Sia: just replace the Bitcoin-specific code with Sia-specific code. ("Just" is a bit misleading; we don't really know how difficult this would be in practice.) However, we are uncomfortable with both the size of these programs and the dependency on Chrome. The larger a program is, the more difficult it is to audit. My hope is that we can produce a Ledger app that is minimal, easy to understand, and easy to audit. I unfortunately cannot ascribe these qualities to any other Ledger app I've looked at.
UX
The UX of our Ledger app will not deviate substantially from blue-app-btc. The flow for generating an address looks like this:

User plugs Nano S into their computer and initializes it, generating a seed.
User installs and opens Sia Ledger app.
User runs siac wallet ledger address on their computer.
Nano S displays address; user confirms, and the address is recorded in the user's siad wallet.

The flow for signing transactions is more complicated. For now, it will not be very user friendly.

User uses the /wallet/unspent endpoint (added by #2907) to get a list of outputs to spend.
User constructs an unsigned transaction using the outputs.
User runs siac wallet ledger sign [txn] [inputs to sign]
Nano S displays each input being signed and the address + amount of each output.
User confirms, and siac displays the signed transaction.
User broadcasts signed transaction.

Implementation
One interesting thing I discovered is that the Nano S can only generate HD keys. There isn't a secure way to generate standard Sia keys using the Nano S's seed, because access to the seed is mediated by a few specialized functions.
This isn't a big deal; in practice, we'll do what other coins do: pick a Sia-specific derivation constant, and use the Sia "index" as the last part of the derivation path. This will all be invisible to the user. One potential pitfall is that the user may assume that they can import their Nano S seed into a standard siad wallet -- this is not at all the case.
#2907 suggests this interface for a hardware wallet:
type HardwareWallet interface {
    DeriveKey(index uint64) (pubkey [32]byte)
    SignHash(hash [32]byte, index uint64) (signature [64]byte)
}

And indeed, this is sufficient to implement key derivation and transaction signing. In this model, the Ledger app does the bare minimum, making its code maximally simple to understand and verify. However, this approach is fundamentally flawed, because it blindly signs whatever hashes the client program provides without user validation. Even if the user did want to validate the hashes, how would they? They would need to compare each hash to a "trusted" hash, and unless you can do blake2b in your head, that means trusting another computer. Remember, the entire reason to use a hardware wallet is because you don't trust the software running on your PC. We must assume that the user may be running a malicious version of siac. Which means that we must design the Ledger app such that even if it is talking to a malicious computer, the computer cannot trick the Ledger (or the user) into losing coins. At worst, the computer may be able to trick the user into thinking that they sent coins, when in reality the transaction was invalid and silently dropped.
So if users can't realistically validate hashes, what can they validate? Anything that appears in an explorer is probably fair game, so that means addresses, output IDs, and amounts. So a more secure interface would be:
type HardwareWallet interface {
    DeriveKey(index uint64) (pubkey [32]byte)
    Sign(txn types.Transaction, sigIndex int, keyIndex uint64) (signature [64]byte)
}

Sign would basically do what addSignatures does: calculate txn.SigHash(sigIndex) and sign it with the key derived from keyIndex. txn will have to include a half-formed TransactionSignature at sigIndex; Sign would only fill in the actual TransactionSignature.Signature field. It would then display txn.TransactionSignatures[sigIndex].ParentID, which would be the OutputID of the output being spent. The user would be responsible for confirming that this is the output they intend to spend.
This takes care of the inputs, but the user will always want to verify the outputs of the transaction. The Nano S should display the address and amount of each transaction output. This prevents the client program from altering the outputs.
The downside of this approach is that it requires a lot more work on behalf of the Nano S. We would need to port much of the transaction serialization code to C. It's certainly doable, and maybe not even that hard, but it's annoying because it would be much easier to do client-side. It also requires some fancier UI code (to scroll through the inputs and outputs), and writing UI code is (at least for me) much trickier than writing transaction signing code.
Security
The client program can try to trick the Nano S (or the user) into doing something they didn't intend to do. For our purposes, this essentially can be reduced to "sending coins to any address not explicitly approved by the user," but it's also possible that the client program could exploit a flaw in the Sia Ledger app to cause it to malfunction. This is the motivation for keeping our app code as minimal as possible.
The client program has one primary means of attack: displaying one piece of data to the user while sending/receiving a different piece of data to/from the Nano S. We already saw how this attack can work if the Nano S only receives a hash. The client program can tell the user that a given transaction hash is x, when in reality the hash is y and x is the hash of a different transaction.
The new implementation should thwart any such attack, as long as the user performs validation correctly. Here I will enumerate the main attacks I can think of, and how they fail. Please suggest more attacks if you think of any.

The client program modifies the outputs of the transaction before sending them to the Nano S. The user will see that the outputs are not what they expected, and refuse to sign.
The client program modifies the outputs of the transaction after sending them to the Nano S. This causes the signatures added by the Nano S to become invalid.
The client program modifies the CoveredFields field of the TransactionSignature so that the signature only covers one input. This type of signature would not become invalid if other parts of the transaction were altered. The Sia Ledger app should either refuse to sign CoveredFields that do not set the WholeTransaction flag, or display an extra warning to the user that non-standard CoveredFields are being used.
The client program calls DeriveKey or Sign with invalid parameters, such as a malformed txn or an out-of-bounds sigIndex. The Sia Ledger app must be able to detect these and throw an error.

Status
I have implemented some basic routines for key derivation and signing. The next step is to start porting the transaction decoding code, so that the Nano S can parse transactions received from the client program and display their inputs/outputs to the user. No validation will be performed at this point. Once the Nano S can perform these actions in isolation, we can move on to writing client program code to pass data to and from the Nano S. For now, we will likely use Ledger's C or Python API to communicate with the Nano S, but later on we may want to port the API to Go so that we can integrate the client program code directly into siac. If this proves infeasible, the client program will have to remain a standalone program.

Keep in mind that the Chrome apps are being deprecated and new standalone versions of the apps are coming. https://www.ledger.fr/2018/02/23/announcing-new-ledger-wallet-desktop-mobile-applications/
As much as I'd like to see Sia on the ledger, the flows described above would not entice me to use it. I think ease of use is critical for this feature. Ideally it should work like the existing wallet app, but saving that, an integration like myetherwallet or even the Neon wallet (standalone app, seemless integration) would suffice.

Thanks, that is good to know.
Ideally we could work closely with the Ledger team to get Sia on their wallets, but based on their roadmap, that seems unlikely to happen in the near future -- there are too many other coins competing for their attention.
I will give more consideration to forking the existing Ledger apps instead of writing our own. Our main concern is ensuring the security of the code running on the device itself. As I mentioned above, the device has to assume that it may be talking to a malicious client program anyway, so the security of the client program is of lesser importance.
One aspect that I need to research more is the question of full nodes. The Ledger Bitcoin wallet connects to Ledger's servers, not your local bitcoind. Sia doesn't have "light wallets," so our Ledger app must be able to connect to a local siad. It looks like the Ledger Ethereum wallet can connect to a local geth, so this sort of thing is definitely possible, but it might be tricky.
My current feeling is that for now, we should focus on the device code, and try to make its API match the other Ledger apps (even if the implementation is different). That way, we don't close off the possibility of interfacing with a Ledger wallet app in the future.

I wonder if this might be helpful too: https://github.com/CityOfZion/neon-wallet/blob/dev/app/ledger/neonLedger.js
NEON wallet app has a button to use the Ledger to open the wallet and sign.  I guess Ark works with way also.  Sorry, I don't know how applicable this could be to SIA-UI.  I've used NEON and MyEtherWallet with Ledger outside of the Bitcoin wallet app.  I've not tried to use a local geth before.

Progress update:
I have a Ledger Nano S that can generate Sia addresses. Keys are derived using the Ledger API's HD key derivation function. The resulting public key is then hashed as part of the UnlockConditions Merkle tree to produce an UnlockHash, and a final checksum is tacked on to complete the address. The address is displayed on the device so the user can confirm that it matches the address sent to the computer.
In a way, this is half of the equation: now I "just" need to add transaction signing, and the Ledger code will be more or less complete. In reality, the signing code is going to be much harder than the address generation code. The encoding/hashing/signing aspect will be tricky, but it's the UI that I'm worried about; so far I haven't implemented any non-trivial UI behavior, and the API is pretty scary. So don't hold your breath. :P
The Ledger SDK remains woefully undocumented, but I've been able to make good progress by borrowing heavily from the blue-app-eth code, which is surprisingly readable. I'm adding comments as I go, so hopefully when this is finished it will serve as a good base for someone looking to write their own Ledger app.

@lukechampine I think the industry would also benefit from you taking notes about all the places the API could be better, and all the things you find along the way that work well and don't work well.
It would be a good feature on the sia blog too.

The single most helpful thing they could do is provide a way to test apps without having to load them onto an actual Ledger device. Even if everything was poorly-documented, with a fast enough turn-around, I could eventually figure it out. But right now, every time I want to test a change, I have to build the app, uninstall the old app, re-enter my PIN (ugh), wait for the new app to transfer, and then open it. As you might imagine, this can make it incredibly frustrating to track down a bug.
Aside from that, the main issue is a lack of documentation. Most of the Ledger API functions have passable docstrings, but they aren't very helpful without context and examples. Reading the code of other Ledger apps is much more fruitful than trying to figure something out just from the docs.

It occurs to me that most Ledger apps are inadequate in terms of protecting you from a malicious computer.
When generating an address, the Ledger BTC and ETH apps will display the address on the device so that the user can confirm that the computer is not modifying it. But this is not enough! For one, if only the address is displayed, not the public key, then you can't use the key for anything other than receiving money at that address. Meaning you can't use the key for other purposes, e.g. a multi-sig address. But more dangerously, the ETH app (at least the python testing script) will in fact display the public key on the computer -- but not the device. For obvious reasons, this key cannot be trusted!
Even if the pubkey were displayed, there's another crucial piece of information that's missing: the HD key derivation path! This means the user is trusting the computer to tell the truth about which path it passed to the Ledger. It would be trivial for the computer to say "yep, this is the address for path m/44'/60'/0'/0," when it actually sent m/44'/60'/0'/100000 to the Ledger. To be clear, this attack does not allow the computer to steal your money; no matter what path is used, the address always "belongs" to your seed. But it can cause you to lose money, by sending it to an address whose path you do not know. If you don't know which path was used to derive a key, your only recourse is to search the entire path space (unless there's some BIP32 magic I don't know about that lets you figure out the path from the address). Worse, you have to perform this brute-force search on the Ledger itself, since only it knows the HD master seed. Needless to say, this would be prohibitively slow.
So my thinking is that the Sia Ledger app should display the path alongside the address. As for the public key, maybe we'll have a single screen for the path+pubkey+address, or maybe we'll have two separate screens: path+pubkey and path+address.

To avoid the PIN entry you can install a custom certificate on the Nano S. Then install apps you sign. Still have to put on the real device so it is uncomfortable but saves a few presses for the PIN.

ah, it hadn't occurred to me that signed apps don't need PIN entry -- thanks!
Progress update:
I've added the ability to sign arbitrary hashes. This means that the Sia Ledger app is now minimally useful! You can generate addresses, and as long as you can calculate transaction hashes in a trusted way, you can sign transactions! Of course, if you're paranoid about this stuff (and if you're using a Ledger, hopefully you are), you don't want to rely on some other computer to calculate the transaction hash for you. Even if you use an airgapped computer, there's some risk involved. So we really want to be calculating the hash on the Ledger itself. That's the next step. Still, I think the final version of the app will retain the ability to sign arbitrary hashes, since it's useful to have that sort of power as long as you understand the risks.
As part of the work required to implement hash signing, I've had to dive more deeply into how the Ledger UI works, and I feel like I have a better understanding of it now (although it's still mostly magic). Would you believe that the types and functions pertaining to the UI are almost completely undocumented? Fun stuff. But I think at this point it shouldn't be too hard for me to add an extra screen to the address generation and hash signing that displays the HD key derivation path. I really can't believe that other Ledger apps don't do this -- it's such an egregious omission that I feel like I must be missing something.


[Bug]-[2670]:geolocation callback is not called

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
https://docs.appsmith.com/framework-reference/appsmith#geolocation
Calling an API onSuccess of getCurrentPosition doesn't work.
{{
  appsmith.geolocation.getCurrentPosition(() => {
	  showAlert("ABC")
  })
}}

Steps To Reproduce

On button click.
Call appsmith.geolocation.getCurrentPosition.
And call an API inside it's success callback.
Click the button.
Notice the API never gets called.

workaround
Call the API after getCurrentPosition instead of the callback.

Environment
Production
Version
Cloud

@eco-monk is this even expected? Now with the new promises, I think only .then should work for these newer functions. @hetunandu can confirm

Assuming 100% of users who use getCurrentLocation() on WIDGET_PROPERTY_UPDATE or AUTO_COMPLETE_SELECT
Stats

Stat
Values

Reach
267

Effort (months)
0.2

Tested this with on PR
cc @ramsaptami
{{appsmith.geolocation.getCurrentPosition(() => {
	Api1.run({id: 15});
	showAlert("abc " + Math.random())
	setTimeout(() => {
		showModal('Modal1')
	})
}, (error) => {
	Api1.run({id: 15});
        console.log("ERROR",error)
	showModal("Modal1")
	showAlert("Error " + Math.random());
})}}


Directsum

Description
+(::MPO,::MPO,alg="directsum")
Fixes #(issue)
If practical and applicable, please include a minimal demonstration of the previous behavior and new behavior below.
summing two mpos with directsum alg was returning an MPO
sites = siteinds("Boson",5,dim=5)
H1 = randomMPO(sites)
H2 = randomMPO(sites)
res = sum(H1,H2; alg = "directsum")
typeof(res)

Now the output is an MPO
sites = siteinds("Boson",5,dim=5)
H1 = randomMPO(sites)
H2 = randomMPO(sites)
res = sum(H1,H2; alg = "directsum")
typeof(res)

How Has This Been Tested?
Please add tests that verify your changes to a file in the test directory.
added to a file named test_sum
Please give a summary of the tests that you added to verify your changes.

[ ] directsum test
It just tests that the sum of an array of MPS returns an MPS and same for MPO

[x] My code follows the style guidelines of this project. Please run using JuliaFormatter; format(".") in the base directory of the repository (~/.julia/dev/ITensors) to format your code according to our style guidelines.

[x] I have performed a self-review of my own code.

[x] I have commented my code, particularly in hard-to-understand areas.

[x] I have added tests that verify the behavior of the changes I made.

[] I have made corresponding changes to the documentation.

[x] My changes generate no new warnings.

[x] Any dependent changes have been merged and published in downstream modules.

@EmilioRui looks like this is the same as #1132.


check address vMOONEY

who can submit proposal based on their vMOONEY? can be implemented by guild.xyz?

connected to #92


Wire-pod.service crash due to index out of range for connTimer

My wire-pod install generated this failure last night:
Feb 21 19:40:11 escapepod start.sh[460]: Closing SDK connection for 00403249, source: connTimer
Feb 21 19:40:12 escapepod start.sh[460]: panic: runtime error: index out of range [0] with length 0
Feb 21 19:40:12 escapepod start.sh[460]: goroutine 208 [running]:
Feb 21 19:40:12 escapepod start.sh[460]: github.com/kercre123/chipper/pkg/wirepod/sdkapp.SdkapiHandler.func1()
Feb 21 19:40:12 escapepod start.sh[460]:         /home/pi/wire-pod/chipper/pkg/wirepod/sdkapp/server.go:285 +0x378
Feb 21 19:40:12 escapepod start.sh[460]: created by github.com/kercre123/chipper/pkg/wirepod/sdkapp.SdkapiHandler
Feb 21 19:40:12 escapepod start.sh[460]:         /home/pi/wire-pod/chipper/pkg/wirepod/sdkapp/server.go:269 +0x1a44
Feb 21 19:40:12 escapepod systemd[1]: wire-pod.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Feb 21 19:40:12 escapepod systemd[1]: wire-pod.service: Failed with result 'exit-code'.
Feb 21 19:40:12 escapepod systemd[1]: wire-pod.service: Consumed 1min 1.706s CPU time.

In addition to that, what do you think about adding some restart conditions to the service so it doesn't just tank on a failure like this? Maybe we give it a chance to restart the service up to 5 times before it stops? I can make a PR for this part if you want.
[Unit]
Description=Wire Escape Pod (coqui)
StartLimitIntervalSec=500
StartLimitBurst=5

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
WorkingDirectory=/home/pi/wire-pod/chipper
ExecStart=/home/pi/wire-pod/chipper/start.sh

[Install]
WantedBy=multi-user.target

A fix will come in the next few commits. A PR would be appreciated for the service file

The issue should be solved now. The bug was due to the event stream code trying to read a bool which was removed by the connection timeout timer.


Mixup between ARM64 and AMD64 in /ansible/tasks/setup-postgrest.yml

Is it just me or are these URLs the wrong way round in setup-postgrest.yml
- name: PostgREST - download ubuntu binary archive (arm)
  get_url:
    url: "https://github.com/PostgREST/postgrest/releases/download/v{{ postgrest_release }}/postgrest-v{{ postgrest_release }}-linux-x64-static.tar.xz"
    dest: /tmp/postgrest.tar.xz
    checksum: "{{ postgrest_arm_release_checksum }}"
    timeout: 60
  when: platform == "arm64"

- name: PostgREST - download ubuntu binary archive (x86)
  get_url:
    url: "https://github.com/PostgREST/postgrest/releases/download/v{{ postgrest_release }}/postgrest-v{{ postgrest_release }}-ubuntu-aarch64.tar.xz"
    dest: /tmp/postgrest.tar.xz
    checksum: "{{ postgrest_x86_release_checksum }}"
    timeout: 60
  when: platform == "amd64"

That does seem to be a bug, do you want to send a PR to fix this?

OK will do
On Sat, 18 Dec 2021, 04:59 Inian, @.***> wrote:

That does seem to be a bug, do you want to send a PR to fix this?
—
Reply to this email directly, view it on GitHub
https://github.com/supabase/postgres/issues/115#issuecomment-997144538,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIBYV2SX6FNQWQP7M7M6IDURQIKZANCNFSM5KJB5QYQ
.
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.
You are receiving this because you authored the thread.Message ID:
@.***>

Please see https://github.com/supabase/postgres/pull/116
On Sat, 18 Dec 2021 at 08:34, Darren Gallagher @.***> wrote:

OK will do
On Sat, 18 Dec 2021, 04:59 Inian, @.***> wrote:

That does seem to be a bug, do you want to send a PR to fix this?
—
Reply to this email directly, view it on GitHub
https://github.com/supabase/postgres/issues/115#issuecomment-997144538,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAIBYV2SX6FNQWQP7M7M6IDURQIKZANCNFSM5KJB5QYQ
.
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.
You are receiving this because you authored the thread.Message ID:
@.***>


Change typo in JMS Dount -> Count and plural for all columns

When navigating to any kind of JMS Topic and Monitoring -> Utilization there was an Typo in last column:
Non Durable Messages Dount -> Non Durable Messages Count
Also different kind of singular and plural was used in this report, so instead of multiple ones, use only one:
Mesaage -> Messages
@miq-bot add_label providers/hawkular, bug, ui, euwe/yes
https://bugzilla.redhat.com/show_bug.cgi?id=1392514

Euwe backport details:
$ git log -1
commit d51f920b7abed97210d2052427e6687c7774bc69
Author: Oleg Barenboim<EMAIL_ADDRESS>Date:   Mon Nov 14 15:03:56 2016 -0500

    Merge pull request #12611 from karelhala/jms_typo

    Change typo in JMS Dount -> Count and plural for all columns
    (cherry picked from commit 58d67c51102dbff5ef7a1b35991e6b4351e05abb)

    https://bugzilla.redhat.com/show_bug.cgi?id=1411793


Landing page

@anumehaagrawal Any updates on the reviews?

I cannot see any reviews

@anumehaagrawal check now!

@anumehaagrawal any updates?

Yeah its done


IndexError with some audio clips

Hi there,
Just for some wav files I'm getting the error:
INFO:tensorflow:Restoring parameters from /Users/ignaciot/miniconda3/lib/python3.6/site-packages/ADTLib/files/SnareADTLibAll
INFO:tensorflow:Restoring parameters from /Users/ignaciot/miniconda3/lib/python3.6/site-packages/ADTLib/files/HihatADTLibAll
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/ignaciot/miniconda3/lib/python3.6/site-packages/ADTLib/__init__.py", line 24, in ADT
    Peaks.append(utils.meanPPmm(AFs[j][:,0],PP[j,0],PP[j,1],PP[j,2]))
  File "/Users/ignaciot/miniconda3/lib/python3.6/site-packages/ADTLib/utils/__init__.py", line 44, in meanPPmm
    np.delete(onsets,onsets[i-1+ind])
  File "<__array_function__ internals>", line 6, in delete
  File "/Users/ignaciot/miniconda3/lib/python3.6/site-packages/numpy/lib/function_base.py", line 4406, in delete
    keep[obj,] = False
IndexError: arrays used as indices must be of integer (or boolean) type

Any hints of what might be causing this? These are short clips from songs with a very clearly defined beat pattern.

+1, running into the same error

same here. Could provide audio.

Hey, how did you manage to run this library? I've been trying for ages with no success

same @matidfk I'd appreciate if you guys shared how you managed to run it in 2022 @avikj @ignaciot @jie-chen


[feat] marketing?

But doge seems to me like it is a marketing goldmine for many businesses that are trying to differentiate themselves in the market and I think it’s one of the major appeals that this coin has because it can relate to such a wide audience and demographic because of its branding.
The idea would be to try and promote the coin to businesses and essentially manufacture a deal where we can get them to accept doge as a currency with the stipulation that they have to hold on to their doge that they accumulated for at least one year, having many businesses agree to this model on a wide scale would allow the coin to build up and not be used in a way where the companies will quickly liquidate but rather hold on and see their total value increase as the coin continues to rise in value and hence their previous sales would accumulate more value. Doing this on a wide scale would quickly dispel the notion that the coin has little use case and really push it into the mainstream world.
There’s definitely flaws in this but I didn’t really take too long to look to see every potential pitfall but I thought about a few, I would assume someone (prob Elon) would have to fork up money to entice this form of deal to be accepted by businesses, like an up front payment to the company to take this coin on. Because outside of it there is little incentive for a business to just not make the decision on their own to accept doge and feel free to hold/sell their coins at their own desire and need. But the stability formed and the launching pad that would be created from that would be interesting to see. I could also see how whatever money was spent trying to get doge through the door on a wide scale for businesses would not look like money terribly spent if the coin can essentially be used for stores that are heavily frequented. Like Starbucks/Dunkin, McDonald’s or other common fast food shops, Stores, Gas Stations, etc.. Basically any place that is heavily frequented and really holds a grip on almost every citizen, this would put doge basically everywhere people go and again massively increase the use case of the coin. Another pitfall I see is the amount of damage that could be caused if the coin were to be collectively dumped by every or a lot of the businesses when the stipulation for the 1 year holding period ends. I can’t really see a 2 year holding period being even conceivable because no business would not take their profit that quickly and it would just put on a bandaid on the problem. Another pitfall that I may just be an idiot for overlooking until now is that some companies may be unwilling to do this because they need to pay for their employees to work, big shocker, and they may not want to fork over some of their reserve cash to hold on to their incoming, recent, and past sales revenue. This would probably be a problem for companies who do not operate on a really high scale so their sales revenue may be of more importance. I would say if that is the case then there could be another stipulation that the employer was in this position they could then distribute the doge from their wallet to their employees directly who would be free to liquidate to and receive their salary in that way if they choose. One benefit to this is that it would increase more people having crypto wallets and becoming more introduced to the world of crypto as well because their basically getting paid in crypto.
Idk it’s a rough draft of an idea that I don’t even know if I’m supposed to put in here or in the doge subreddit but w/e if y’all are viewing this I pulled the trig and posted

I understand. However, that's not the scope here on GitHub. Here, code and product will be developed -- the marketing is ancillary.
Good product practices will lead to adoption. Just need to put in the time. Once the product is able to be adopted by heavy hitters, everyone else will follow. For now, let's put the horse before the cart.


add msi type in arm template

I ran through a couple of times for MSI-enabled AKS creation via Azure CLI and ARM template, a successful MSI-enable AKS would have both servicePrincipalProfile and identity section. I got error when no 'identity' information added in arm template.  Please feel free to reach out to me in case of any queries. I have an other PR with regards to it ( here it is https://github.com/Azure/azure-quickstart-templates/pull/7667 )

@cloudmelon : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Hi @cloudmelon - Microsoft product managers should work in the private repository for advanced quality validations and staging (you also can sign off directly in the private repo). To edit an article in the private repo from within the documentation, after you select Edit on an article page,  add “-pr” to the URL. Would you make the updates in the private repo? We'll close this PR. Thanks!

@cloudmelon We can keep this PR open for review in this repo. To access azure-docs-pr, complete the steps to join the MicrosoftDocs organization. (Single sign-on was implemented since this article was written. I don't know what implications there might be.) Thanks for letting me know you don't have access to the private repo.

Hi Kristine, I joined the org, however, to get access to some private repos need additional permissions. Please review my PR, let me know if you have any queries 😊
Melony

On 9 Jun 2020, at 01:28, Kristine Toliver<EMAIL_ADDRESS>wrote:

@cloudmelon We can keep this PR open for review in this repo. To access azure-docs-pr, complete the steps to join the MicrosoftDocs organization. (Single sign-on was implemented since this article was written. I don't know what implications there might be.) Thanks for letting me know you don't have access to the private repo.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@laurenhughes @mlearned Could you review this pull request? Thanks.

@TomGeske

@TomGeske  anything needed on this one?  (its a public pr too)


Backup data

Pull Request instructions:

Please follow the update protocol
Answer the questions below in detail. Your responses will be emailed to experimenters.
If the experimenters must do anything new, provide detailed step by step instructions on the wiki
If computer maintainers need to manually update anything, provide detailed step by step instructions
Use markdown syntax in order for your comments to be rendered reliably in the email: "1." instead of "1)", use four spaces for indents.
If you use the keyword "skip email" in the title, it will skip the email updates
Merges from "develop" into "production_testing" should use the keyword "production merge" in the title for reliable indexing of updates
Merges from "production_testing" into "main" should use the keyword "update main"

Describe changes:

Back up the data each trial.
The code for saving backup data runs in a different thread and does not affect the operation of behavior propagation in the main thread.
The data format is the same as normal saving process.

What issues or discussions does this update address?
Back up the data in case the software crashes
Describe the expected change in behavior from the perspective of the experimenter
No
The backup is turned on by default. If you want to turn it off, set save_each_trial in the ForagingSettings.json to False.
Describe any manual update steps for task computers
No
Was this update tested in 446/447?

[x] Tested on my own computer
[x] Tested in 447
[x] Tested in 323_EPHYS3

@yonibrowning @alexpiet @hanhou @galenlynch
I think we should merge this first to use this backup function. If it's really necessary to save the single trial, we can update it later.

Please also make sure that this backup saving mechanism does not interfere with the normal saving process at the end of the session.
Specifically:

If the session crashes, what part of data will be saved and what part will be missing (at least the post weight)? How about meta data?
If the session crashes, the data not entered to the GUI will not be saved (including the post weight). The meta data will be saved. The backup saving triggers the same saving function, so all fields provided to the GUI should be saved.

If the session runs fine, will the final saving process overwrite the backup file with all correct information included (weight info, e.g.)?
Yes, the final saving will overwrite the backup file with all correct information.

What if the user decides not to save the session in the end? Would you delete the backup file?
If the user decides not to save the session, I think it's better to save the entire session folder.

They are all good questions. The backup saving will not interfere the normal saving steps.
Please see inline one-to-one response

Please also make sure that this backup saving mechanism does not interfere with the normal saving process at the end of the session.
Specifically:

If the session crashes, what part of data will be saved and what part will be missing (at least the post weight)? How about meta data?
If the session crashes, the data not entered to the GUI will not be saved (including the post weight). The meta data will be saved. The backup saving triggers the same saving function, so all fields provided to the GUI should be saved.

If the session runs fine, will the final saving process overwrite the backup file with all correct information included (weight info, e.g.)?
Yes, the final saving will overwrite the backup file with all correct information.

What if the user decides not to save the session in the end? Would you delete the backup file?
If the user decides not to save the session, I think it's better to delete the entire session folder.

They are all good questions. The backup saving will not interfere the normal saving steps.
Please see inline one-to-one response

Sounds good.

I think it's better to delete the entire session folder.

Does this need to be executed by the code?
Or shall we explicitly separate the normally saved file and the backup file like this:

The backup thread always saves the data to xxx.backup
At the end of the session, if the user saves the data or choose to restart without saving, always delete the backup file.
If the session crashes, the backup file remains

Please also make sure that this backup saving mechanism does not interfere with the normal saving process at the end of the session.
Specifically:

If the session crashes, what part of data will be saved and what part will be missing (at least the post weight)? How about meta data?
If the session crashes, the data not entered to the GUI will not be saved (including the post weight). The meta data will be saved. The backup saving triggers the same saving function, so all fields provided to the GUI should be saved.

If the session runs fine, will the final saving process overwrite the backup file with all correct information included (weight info, e.g.)?
Yes, the final saving will overwrite the backup file with all correct information.

What if the user decides not to save the session in the end? Would you delete the backup file?
If the user decides not to save the session, I think it's better to delete the entire session folder.

They are all good questions. The backup saving will not interfere the normal saving steps.
Please see inline one-to-one response

Sounds good.

I think it's better to delete the entire session folder.

Does this need to be executed by the code?
Or shall we explicitly separate the normally saved file and the backup file like this:

The backup thread always saves the data to xxx.backup
At the end of the session, if the user saves the data or choose to restart without saving, always delete the backup file.
If the session crashes, the backup file remains

This would give them even less opportunity to interfere with each other, and we'll easily know which sessions have crashed.

To simplify steps, I just added a tag saving_type_label to differentiate normal saving and backup saving. If the user clicks the Save button, it will overwrite the existing file with label changed from backup saving to normal saving.

@yonibrowning has agreed to merge this for use in the ephys rig, although he thought we need more discussions in the future.
Can we approve it so that we can merge it this week?

Have we tested this with FIP running?

Have we tested this with FIP running?

Not yet, I don't stop the fib photometry for backup saving. It shouldn't influence the fiber photometry, but I will test it.

@alexpiet I tested the fiber photometry, it worked.

@XX-Yin I will review tomorrow, and we can merge before friday


fix(config): add 0x1351 product ID for MCOHome A8-9

I purchased this air quality sensor and it has with a different product ID than any of the ones in the existing configuration file. I added the product Id to the list, that should solve the issue and let me set the configuration.

Can you sort the entries in that array so the ones with lower product ID come first? So opposite of how it is now.
Other than that lgtm

Thanks!


feat(share_plus): Added excludedActivityTypes support for the iOS platform.

The iOS platform is missing the exclusion feature. This PR adds the platform exclusion functionality for iOS.
fix: https://github.com/fluttercommunity/plus_plugins/issues/3377
Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I titled the PR using Conventional Commits.
[x] I did not modify the CHANGELOG.md nor the plugin version in pubspec.yaml files.
[x] All existing and new tests are passing.
[x] The analyzer (flutter analyze) does not report any problems on my PR.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate that with a ! in the title as explained in Conventional Commits).
[x] No, this is not a breaking change.

Thanks for this contribution as well! We have to keep this one on hold because I plan to refactor the share() method parameters, as also discussed in https://github.com/fluttercommunity/plus_plugins/pull/3372
Your input on this topic would be appreciated as well.

@miquelbeltran
Thank you for your reply.
I understand your plan now. If needed, I can still improve this PR after your plan.

FYI, started working on the shareplus refactor, that should simplify adding this and other optional parameters: https://github.com/fluttercommunity/plus_plugins/pull/3404

Hi, that's great! I've been studying the code in your branch. It's really well-organized and tidy. Next, I need to add the parameter excludedActivityType for this pull request (PR) to ShareParams. After that, I'll wait for you to finish merging xx into the main branch. Once that's done, I'll synchronize my changes accordingly.


Fixes for issues #1456 and #1458 - support for complex document ID and routing ID

Description
Fixes issues #1456  and #1458
#1456 - support for complex documentId.
With this change, pipeline config may contain optional document_id_field with "/"s in the value. The document_id is extracted from the incoming events by looking for the specified field in the incoming events, even inside nested json objects.
   document_id_field: "ident"
   document_id_field: "info/ident"
   document_id_field: "info/ids/ident" (and so on)

When the document_id_field contains "/", it is searched inside nested json objects
#1458 - Routing of documents to shards in OpenSearch sink
This change supports new optional "routing_id_field" which can be specified just like document_id_field (ie with or without "/"s) to extract routing id from the incoming events, even inside nested json objects.
   routing_id_field: "routeId"
   routing_id_field: "info/routeId"
   routing_id_field: "info/route_ids/routeId" (and so on)

Issues Resolved
#1456
#1458
Check List

[X] New functionality includes testing.
[ X] New functionality has been documented.

[ ] New functionality has javadoc added

[X ] Commits are signed with a real name per the DCO

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #1966 (a9d6a9b) into main (8600d93) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head a9d6a9b differs from pull request most recent head 19d13d8. Consider uploading reports for the commit 19d13d8 to get more accurate results

@@            Coverage Diff            @@
##               main    #1966   +/-   ##
=========================================
  Coverage     93.95%   93.95%
- Complexity     1536     1537    +1
=========================================
  Files           197      197
  Lines          4564     4564
  Branches        367      367
=========================================
  Hits           4288     4288
  Misses          194      194
  Partials         82       82

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


cell of magics in the imported file does not match the original python file

Repro steps:

open manualTestFile.py in VSCode, and on the first cell click Run Cell And All Below
with the step 1 result, click the Export as Jupyter Notebook and generate .ipynb file
In VSCode open up the exported .ipynb file and import
compare the code between imported file and original python file
expected: imported file should match the original python file
actual: the part of magic cell doesn't match
original python file(full path is src/test/datascience/manualTestFiles/manualTestFile.py):

imported file:

Python tool version: 2019.3.5719-dev
VSCode version:
Version: 1.32.2 (system setup)
Commit: e64cb27b1a0cbbc3f643c9fc6c7d93d6c6509951
Date: 2019-03-13T02:00:46.035Z
Electron: 3.1.6
Chrome: 66.0.3359.181
Node.js: 10.2.0
V8: 6.6.346.32
OS: Windows_NT x64 10.0.17763

This is a function of nbconvert. I don't think we can fix this.

After triage decided that this doesn't meet the bar for fixing. The result is functionally equivalent.


workbench.action.terminal.rename should accept name as an argument

Currently, workbench.action.terminal.rename command doesn't accept any argument. I wanted to make macros that renames current terminal after performing some other actions.
At the moment, it requires user prompt interaction.
https://github.com/microsoft/vscode/blob/f0faef0dd7abdb4e823d32ef21c557123427e0b3/src/vs/workbench/contrib/terminal/browser/terminalActions.ts#L1053-L1066

@Tyriar no, I am using custom fork of macros, which is addressed here. I needed some delays between sending terminal sequences: https://github.com/geddski/macros/issues/9#issuecomment-322806597
Fortunatelly, it solves issues with providing some dynamic input like passphrase (because I couldn't establish SSH without passphrase prompt, unluckily, so I have to use bad technique atm), running console program on remote computer after SSH login, REPL commands to 3DX MQL.
Thank you for advising fabiospampinato.vscode-terminals extension! I will try it tomorrow.

I think I know how to make rename feature programmatic (with simple title argument), but it takes a time to contribute here, hehe.

@Tyriar thank you again for recommending Terminals Manager, it feels great to use and it's packed with custom delays, which helps me to perform time-consuming tasks. 🎉

@perceptron007 right now the rename command is defined here:
https://github.com/microsoft/vscode/blob/8a806778ea25e16314750eb4c3fc313f736442a6/src/vs/workbench/contrib/terminal/browser/terminalActions.ts#L1039-L1067
I think we need to convert it into a Command to accept an arg like this one:
https://github.com/microsoft/vscode/blob/8a806778ea25e16314750eb4c3fc313f736442a6/src/vs/workbench/contrib/terminal/browser/terminalActions.ts#L301-L325

@perceptron007 Sorry for late response. I made some changes to code, please review it and cover with some test if needed. I'm not ready to make pull request yet, so I derive it to you, guys.

@vintprox I would have thought you'd need to convert it to a Command, does passing in the arg in a keybinding work there?
We want this keybinding to be able to rename the terminal by executing it:
{
  "key": "cmd+shift+h",
  "command": "workbench.action.terminal.rename",
  "args": {
    "title": "My term"
  }
}

Also you can get intellisense for title, see the workbench.action.terminal.newWithCwd command for how to do this:

@Tyliar
Oh, didn't think about that. How do I deal with entry?: TerminalEntry argument though?
Made another commit for review.

@vintprox hmm, we may just need to make a new command just like newWithCwd I guess renameActiveTerminal? You're pretty close, you can put a PR out as it will be easier to give feedback there.

 I completely forgot what pull requests are for here.

Hello @vintprox  did you create the PR ? is this issue resolved ?

Uh-oh, I'm kind of busy right now and cannot find a right time. You can make it, if you want to solve the issue!

Hey, if this issue is open I'd like to pick it up!

Of course, why not, proceed! @petevdp


Sign up form improvement

Description

I want to improve the ui of the signup form. The image is much extended. Please assign it to me under gssoc'23.
Steps to reproduce
Improvement in ui
Screenshots
No response
Desktop (please complete the following information)
No response
Smartphone (please complete the following information)
No response
Additional information
No response
Record

[X] I agree to follow this project's Code of Conduct
[X] I have checked the existing issues
[X] I'm a GSSoC'23 contributor
[X] I want to work on this issue

Description

I want to improve the ui of the signup form. The image is much extended. Please assign it to me under gssoc'23.
Steps to reproduce
Improvement in ui
Screenshots
No response
Desktop (please complete the following information)
No response
Smartphone (please complete the following information)
No response
Additional information
No response
Record

[x]  I agree to follow this project's Code of Conduct
[x]  I have checked the existing issues
[x]  I'm a GSSoC'23 contributor
[x]  I want to work on this issue

Sure, you may work on this! :)
also please check login form's image as well, images of both login and signup page should synchronise for a good UI/UX

@narayan954 please check  https://github.com/narayan954/dummygram/pull/821


Formulate and implement properties for PBFT STS in Byron-Shelley

Once SIGCNT is properly tested, the PBFT STS that depends on the SIGCNT STS can be tested. Formulate and implements properties for PBFT.

Closing this for now. Feel free to re-open if anybody thinks this is necessary.


Problem with timezone

Hello,
I use Dbeaver for all my Mysql/MariaDB work and I get a problem with sone databases : I can't connect to some databases with a message :
The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
I don't know how to solve that problem ...
Regards
JP P

I have the same problem since upgrading from 7.2.0 to 7.2.2
Manually setting the timezone for the connection fixed it for now (edit connection, server time zone on the main tab).

The Default MySQL driver was changed to MySQL 8 since 7.2.2. Timezone isn't set on your MySQL server, so driver throws an error.
You could:

Change connection Driver from MySQL to MySQL 5
Set Timezone in Connection properties.

Set Timezone at MySQL server.

I've added a workaround for this nasty issue.
DBeaver will automatatically set UTC as default serverTimezone. But only if it wasn't set in properties and only after connection attempt fail.

verified


job_watch_timeout variable cannot be None

Current behavior
In the develop-k8s branch attempting to deploy a prefect flow using kubernetes results in the error below:
pydantic.error_wrappers.ValidationError: 1 validation error for KubernetesJob
job_watch_timeout_seconds
  none is not an allowed value (type=type_error.none.not_allowed)

It seems like there is some kind of update or prefect bug requiring that job_watch_timeout_seconds can't be set to None in the geodata-k8s block in prefect.
Tasks

Look into if there's any way to set a None or max value here
look into whether this is a bug or an updated requirement

Hey @cmhwang, I attempted to replicate this error on my own machine today, and didn't run into this issue. What version of Prefect are you using? Perhaps updating to a later version will resolve this problem.

Hey @cmhwang, I attempted to replicate this error on my own machine today, and didn't run into this issue. What version of Prefect are you using? Perhaps updating to a later version will resolve this problem.

I'm on prefect version 2.14.0. I can look into if that's the cause of incompatibility

prefect version 2.14.0

That's a pretty recent version, so that's probably not causing the issue. I'm working on switching from Prefect agents to workers, which will overwrite a lot of the relevant code.


Datasette.config() is being renamed to .setting()

Most of these use plugin_config which is unaffected. It looks like the only code I need to worry about is this trick in datasette-graphl: https://github.com/simonw/datasette-graphql/blob/483c9a9e203bb90365def3df8b8f01dda1e75865/datasette_graphql/utils.py#L456-L460

Originally posted by @simonw in https://github.com/simonw/datasette/issues/1107#issuecomment-733245097

If I add a setting() method here in addition to the .config() method then the plugin will work against Datasette both before and after the method is renamed.


use keystore

inspired by<EMAIL_ADDRESS>
min required version changed to 18 because keystore is only available 18+
added promise callback for set item

Hello @evollu , thank you!!!! 😃 I'll merge it, also I'd like to know if you can provide some example to put it into README?

there is no change is usage. It encrypts every value in the shared preference.

@evollu , thank you for your response. Sorry, i didn't know that.

@mCodex I just realized that this is a breaking change. Old values stored in shared preference won't be readable.

Hi @evollu, thanks for your response!
We had already merged your PR but did not release it on npm so it should not affect others. We decided to revert it for now, but in case you find a new fix feel free to submit another PR ;)

because the backward compatibility?

Yes, we're planning a new major release, just need to get everything in place so we don't accidentally break stuff for people who already use this module


Activity feed-Notify a user about an event using custom topic.

In example 2, sending an activity feed notification with a custom topic doesn't work and throws a conflict error.
The specified request payload always leads to an AAD App ID conflict error.
Fix for this: Please update the document to use the "teamsAppId" parameter value in the request payload.
Note: teamsAppId is an appCatalogId of a teamsApp
{
"topic": {
"source": "text",
"value": "Deployment Approvals Channel",
"webUrl": ""
},
"activityType": "deploymentApprovalRequired",
"previewText": {
"content": "New deployment requires your approval"
},
"teamsAppId": "",
"templateParameters": [
{
"name": "deploymentId",
"value": "6788662"
}
]
}

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

ID: 9948c753-b761-228d-4915-9c26b47dd6a3
Version Independent ID: 5b4f132c-3409-885d-9a1a-848bcd7c3c7c
Content: userTeamwork: sendActivityNotification - Microsoft Graph v1.0
Content Source: api-reference/v1.0/api/userteamwork-sendactivitynotification.md
Product: microsoft-teams
Technology: microsoft-graph
GitHub Login: @eddie-lee-msft
Microsoft Alias: MSGraphDocsVteam

Ack. We will update the docs.

A workitem has been created for this by engineering team.

Document has been updated hence closing the issue here.


RFC 0420: Rich Schema Objects Common

I'd like to see this PR merged so we can begin refining the ideas outlined here (by submitting PRs against it) and work toward getting it accepted.
What are the steps for merging a PR for a proposed RFC @swcurran @dhh1128 ?

I'm willing to merge it. I can be cheerful about using a DID to identify a schema, IFF the DID spec evolves to say that schemas are a reasonable DID subject. However, I still have strong objections to the idea of returning a DID doc as a way to get schema info.

Moved to the concept folder.


NDN-RTC installing issue with Ubuntu 18.04

I am trying to install NDN-RTC on the following Ubuntu machine:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
From the file ndnrtc/cpp/INSTALL.md in the repository while installing WebRTC I did a git checkout -b branch-heads-59 refs/remotes/branch-heads/59 and followed the steps further. But the additional setup for Ubuntu with ./build/install-build-deps.sh command failed with the error telling it is not supported on Ubuntu 18.04. I looked for more recent branches of webrtc on the repository and changed to latest branch using git checkout -b branch-heads-m78 refs/remotes/branch-heads/m78. The webrtc installation now suceeded, but while compiling and installing the NDN-RTC command  make && make install is failing with the following error :
trupthi@trupthi:~/NDN_root/ndn-rtc/ndnrtc/cpp$ make && make install
/bin/bash: /home/trupthi/NDN_root/ndn-rtc/webrtc-checkout/src/out/Default/obj/webrtc/libwebrtc-all.mri: No such file or directory
/bin/bash: line 0: cd: /home/trupthi/NDN_root/ndn-rtc/webrtc-checkout/src/out/Default/obj/webrtc: No such file or directory
CXX      tools/frame-fetcher/frame_fetcher-main.o
In file included from tools/frame-fetcher/../../include/frame-fetcher.hpp:17:0,
from tools/frame-fetcher/main.cpp:31:
./src/frame-data.hpp:17:10: fatal error: webrtc/video_frame.h: No such file or directory
#include <webrtc/video_frame.h>
^~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:14932: recipe for target 'tools/frame-fetcher/frame_fetcher-main.o' failed
make: *** [tools/frame-fetcher/frame_fetcher-main.o] Error 1
I tried changing the Makefile and playing around with the location of the header files. The header files seems to have been in a different location and I am stuck. Please help me in proceeding and suggesting how I can install NDN-RTC successfully on Ubuntu 18.04.

I am trying to install NDN-RTC on the following Ubuntu machine:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
From the file ndnrtc/cpp/INSTALL.md in the repository while installing WebRTC I did a git checkout -b branch-heads-59 refs/remotes/branch-heads/59 and followed the steps further. But the additional setup for Ubuntu with ./build/install-build-deps.sh command failed with the error telling it is not supported on Ubuntu 18.04. I looked for more recent branches of webrtc on the repository and changed to latest branch using git checkout -b branch-heads-m78 refs/remotes/branch-heads/m78. The webrtc installation now suceeded, but while compiling and installing the NDN-RTC command make && make install is failing with the following error :
trupthi@trupthi:~/NDN_root/ndn-rtc/ndnrtc/cpp$ make && make install /bin/bash: /home/trupthi/NDN_root/ndn-rtc/webrtc-checkout/src/out/Default/obj/webrtc/libwebrtc-all.mri: No such file or directory /bin/bash: line 0: cd: /home/trupthi/NDN_root/ndn-rtc/webrtc-checkout/src/out/Default/obj/webrtc: No such file or directory CXX tools/frame-fetcher/frame_fetcher-main.o In file included from tools/frame-fetcher/../../include/frame-fetcher.hpp:17:0, from tools/frame-fetcher/main.cpp:31: ./src/frame-data.hpp:17:10: fatal error: webrtc/video_frame.h: No such file or directory #include <webrtc/video_frame.h> ^~~~~~~~~~~~~~~~~~~~~~ compilation terminated. Makefile:14932: recipe for target 'tools/frame-fetcher/frame_fetcher-main.o' failed make: *** [tools/frame-fetcher/frame_fetcher-main.o] Error 1
I tried changing the Makefile and playing around with the location of the header files. The header files seems to have been in a different location and I am stuck. Please help me in proceeding and suggesting how I can install NDN-RTC successfully on Ubuntu 18.04.

I met the same issue. Do you find any solution to it later? Thanks

I meet the same issue. Do you find any solution later? Thanks


Implement order of precedence for configuration

As per https://github.com/elastic/apm-agent-nodejs/issues/287

It's already implemented that way. See
https://github.com/elastic/apm-agent-java/blob/964ed2b6b66ca30917892db8743af5d8eaa31494/apm-agent-core/src/main/java/co/elastic/apm/impl/ElasticApmTracerBuilder.java#L134-L159

Great thanks


Tabs should close on middle click

I exclusively use middleclick to close tabs of things rather than the X, I find it's just better than having to be accurate, and nearly all programs do this.
How hard would it be to add it to gxi for someone who knows practically nothing about coding? I'd like to contribute if possible.
Also maybe add an option to toggle off the X's because i don't want to accidentally click one.

I exclusively use middleclick to close tabs of things rather than the X, I find it's just better than having to be accurate, and nearly all programs do this.

Good idea, thanks for the idea!

How hard would it be to add it to gxi for someone who knows practically nothing about coding? I'd like to contribute if possible.

Hm, I don't think that this is a good starter issue, due to event handling needing some knowledge with GTK. I'll open a PR for this in a bit, if you want to you can give it a look and asks questions for stuff you don't understand. If you want to you can also look at Tau's docs. Run cargo doc --document-private-items --open (or browse the sourcecode directly, everything behind /// is docs)  and see if there's stuff you don't understand, Tau's docs really need to be upped.

Also maybe add an option to toggle off the X's because i don't want to accidentally click one.

Hmmm...I feel like this doesn't fit well with the GNOME Human Interface Guidelines:

When considering adding options to your app, try to strike a balance of making your app more accessible without pushing design work onto your users.

Actually, building docs with cargo doc doesn't work due to https://github.com/rust-lang/rust/issues/61732 right now.


Doesn't seem to be using Traits.

Example is Culinary lvl 82 The Careful Synthesis gets a boost from 150% to 180%. Yet in the optimizer, it will always show 150%, and doesn't give the bonus.
This could be a huge factor in my previous report of the calculator being unable to find consistent solves and spitting back odd results.

Again, was using wrong link. Sorry!


__FormatData property shows up in unexpected places in <IP_ADDRESS> and earlier

Reported from direct email:
When using this Get-Phonetic function, __FormatData is outputted:
PS [4]: 'jOIHU56%%3##kdj?=4/' | Get-Phonetic
Input text: jOIHU56%%3##kdj?=4/
                          Char Phonetic                           __FormatData
                          ---- --------                           ------------
                             j juliett                            {FormatPx.FormatRecord}
                             O OSCAR                              {FormatPx.FormatRecord}
                             I INDIA                              {FormatPx.FormatRecord}
                             H HOTEL                              {FormatPx.FormatRecord}
                             U UNIFORM                            {FormatPx.FormatRecord}
                             5 five                               {FormatPx.FormatRecord}
                             6 six                                {FormatPx.FormatRecord}
                             % %                                  {FormatPx.FormatRecord}
                             % %                                  {FormatPx.FormatRecord}
                             3 three                              {FormatPx.FormatRecord}
                             # #                                  {FormatPx.FormatRecord}
                             # #                                  {FormatPx.FormatRecord}
                             k kilo                               {FormatPx.FormatRecord}
                             d delta                              {FormatPx.FormatRecord}
                             j juliett                            {FormatPx.FormatRecord}
                             ? questionmark                       {FormatPx.FormatRecord}
                             = =                                  {FormatPx.FormatRecord}
                             4 four                               {FormatPx.FormatRecord}
                             / /                                  {FormatPx.FormatRecord}

Expected or bug?

This was a bug (a shortcoming really) in the original design.  I was adding a __FormatData PSNoteProperty to the objects that were being output, and that property would appear in several situations, one of which is when you have an object without a default display property set that you pass to ft -auto.  For example, a simple test is this:
$x = [pscustomobject]@{one=1;two=2}
$x | ft -auto
The second command would output a table with properties one, two, and __FormatData.  This is undesirable so I went poking around and found out that properties of type PSNoteProperty can be hidden from the output when using an internal field, so I updated how __FormatData is created/added to the objects that go through FormatPx so that __FormatData is automatically hidden.  The end result is that the formatting information is hidden from the property output when using a Format-* command as well as from Get-Member output.  The property is still there though, and you can see it in .PSObject.Properties['__FormatData'].  This is a nicer solution, so I released this in a new build.  Update to version <IP_ADDRESS> or later to get this fix.


mist-cli exits 0 when a download fails due to disk capacity

:beetle: mist-cli exits 0 when a download fails due to disk capacity
Describe clearly and concisely what is not working.
:clipboard: Steps to Reproduce

Get a device with under 40gb free
run a command like /usr/local/bin/mist download installer 23C71 image -o /Users/Shared/Mist/DMGs
run echo $? when the command fails

:white_check_mark: Expected Behaviour
mist should exit with a unique error code indicating the issue
:computer: Environment
mist --version
2.0 (latest: 2.0)

macOS 14.2.1
MacBook Pro 16-inch, 2021 Apple M1 Pro
/usr/local/bin/mist download installer 23C71 image -o /Users/Shared/Mist/DMGs
┌──────────────────┐
│ INPUT VALIDATION │
└──────────────────┘
  ├─ User is 'root'...
  ├─ Download search string will be '23C71'...
  ├─ Include betas in search results will be 'false'...
  ├─ Only include compatible installers will be 'false'...
  ├─ Cache downloads will be 'false'...
  ├─ Output directory will be '/Users/Shared/Mist/DMGs'...
  ├─ Temporary directory will be '/private/tmp/com.ninxsoft.mist'...
  ├─ Force flag has not been set, existing files will not be overwritten...
  ├─ Disk Image name will be 'Install %NAME% %VERSION%-%BUILD%.dmg'...
┌────────┐
│ SEARCH │
└────────┘
  ├─ Searching for macOS download '23C71'...
  ├─ Found [052-23678] macOS Sonoma 14.2.1 (23C71) [2024-01-10]
┌───────┐
│ SETUP │
└───────┘
  ├─ Deleting old temporary directory '/private/tmp/com.ninxsoft.mist/052-23678'...
  ├─ Creating new temporary directory '/private/tmp/com.ninxsoft.mist/052-23678'...
  └─ Not enough free space on volume '/': 36.26 GB free, 40.18 GB required
root@REDACTED Mistomatic # echo $?
0

:information_source: Additional context
This causes problems with my wrapper script, which looks at the exit code of the mist command to know whether or not the download was successful.

Nice catch! All errors currently return an exit code of 0
The easy workaround is to exit non-zero for all errors - not sure if it's worth creating custom exit codes for each error as I am printing out the details already.


Help with HTTP control in Domoticz

How do I control my McLighting in Domoticz ?
For example, what command should I enter in domoticz to set the mode BREATH with WHITE color ?
http://IP/tv is OK but http://IP/Breath does not work.
What is the correct syntax ? It is not clear for me in the documentation.

http://IPNodemcu/all?rgb=%sFFFFFFF white color all

thanks a lot


Difference in label display between 0.7.* & 1.0 beta

Hi
I'm still learning the ropes of Javascript/Leafle/Label, so I'm unsure if this is problem or I'm doing something wrong. I'm loading a GeoJson file (available from here if you wish to run the code: https://github.com/martinjc/UK-GeoJSON/blob/master/json/electoral/eng/wards_by_lad/E06000022.json (Sorry, github wouldn't let me upload it as a zip)
<!DOCTYPE html>

    <title>Wards Label</title>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>

    <link rel="stylesheet" href="http://leaflet.github.io/Leaflet.label/leaflet.label.css" />

The leaflet label css/js files I downloaded were from here: https://github.com/Leaflet/Leaflet.label/tree/leaflet-master/dist. Are these the correct ones for running 1.0?
Using 0.7.* references, labels appear like this:

Using 1.0.* references, labels appear like this:

The problem appears to be in the css file, but beyond that, I'm lost. Any ideas?

To help me understand more, could it be explained why in this example https://github.com/Leaflet/Leaflet.label/blob/leaflet-master/example/label.html there's a long list Label .js files instead of a ref to Leaflet.Label.js?
Thanks
Dave F>

There seems to be a problem with the z-index.
Put
.leaflet-label { z-index: 400; }

Increase the number as needed.


Issues/1184

[x] Breaking change? (if so, please describe the impact and migration path for existing application instances)
Removed redundant path segment from routing

What changes did you make? (Give an overview)
Is there anything you'd like reviewers to focus on?
Please review the routing changes
How Has This Been Tested? (put an "x" (case-sensitive!) next to an item)

[ ] No need to
[ ] Manually (please, describe, if necessary)
[x] Unit checks
[ ] Integration checks
[ ] Covered by existing automation

Checklist (put an "x" (case-sensitive!) next to all the items, otherwise the build will fail)

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation (e.g. ENVIRONMENT VARIABLES)
[x] My changes generate no new warnings (e.g. Sonar is happy)
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged

Check out Contributing and Code of Conduct
A picture of a cute animal (not mandatory but encouraged)
Closes #1184

Everything seems good Tested it out on feature testing branch - seems like it didn't break things (it's not like i tested everything) @Haarolean Can you check if we have some strange things coupled with ui in pathname on backend?

Nah, it's not like we have something related to ui paths there.


Beam + HBase 2.x support

It seems that the Beam library (https://mvnrepository.com/artifact/com.google.cloud.bigtable/bigtable-hbase-beam/1.14.0) depends on hbase 1.x.
Is there a way to use Beam with the HBase 2.x client?

We would need to publish a different artifact. hbase 2.x broke binary compatibility with hbase 1.x (which why we needed to create bigtable-hbase-1.x & bigtable-hbase-2.x). To support hbase 2x for beam, we would need to create hbase-2.x-beam. Or we need to define shims that abstract the compatibility differences.
I'd like to gain better understanding about your use case. What is the motivation for wanting hbase 2.x apis? What are the features that you are interested in? The primary hbase surface that we expose in beam is the entities (Scans, Mutations, Puts, Results, etc) and as far as I know that has changed much in hbase 2.x
Looking forward to your answers.
Best,
Igor

Hi Igor.
We were already using HBase 2.x and Beam.
We switched to BigTable and  bigtable-hbase-2.x works great but the Beam jobs started failing.
I don't fully understand why bigtable-hbase-2.x doesn't do it out of the box and why an additional 3-party bigtable-hbase-and-beam is necessary, but I'm guessing it has to do with how Beam uses HBase?
In either case, our jobs have stopped working and we were planning on switching to BigTable so this blocks us.
Is having a bigtable-hbase-2x-beam hard? Would it perhaps be easier to just enable the switch to BigTableIo in our code and side-step this completely?
We've been back and forth with Google Support over this,  but their solution didn't seem to actually work, so decided to ask here directly.

I don't fully understand why bigtable-hbase-2.x doesn't do it out of the box and why an additional 3-party bigtable-hbase-and-beam is necessary, but I'm guessing it has to do with how Beam uses HBase?

I don't quite understand what you mean here. Are you asking why someone can't just use Beam's HBaseIO with bigtable-hbase-2.x? If so, the problem is that the HBaseIO tries to connect to zookeeper to get splits, which is hard to shim in bigtable-hbase.
Can you clarify what you mean by "switched to BigTable and bigtable-hbase-2.x works great but the Beam jobs started failing". Did you have pre-existing Beam jobs that used HBaseIO?
I think adding HBase 2x support for Beam makes sense, but needs to researched a bit first. The current development efforts are geared to refactoring internals of bigtable-hbase to use http://www.github.com/googleapis/java-bigtable. So adding hbase 2x support to beam would have to come after that.

If so, the problem is that the HBaseIO tries to connect to zookeeper to get splits, which is hard to shim in bigtable-hbase.
is anything preventing the HBaseIO impl to copy how TableInputFormat works using RegionLocator? Does it need to set watchers or something like that?

It would work with bigtable-hbase out of the box
https://github.com/googleapis/java-bigtable-hbase/blob/master/bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/BigtableRegionLocator.java ?

Can you clarify what you mean by "switched to BigTable and bigtable-hbase-2.x works great

Our jobs use HBaseIO and the rest of the (non Beam) code uses the regular HBase 2.x client.
Since we need something now, I'm looking at any alternative and perhaps the easiest thing to change is to use BigtableIO for the Beam jobs when running in GCP.

We've had discussions about fixing the compatibility issues between HBaseIO and bigtable-hbase, but it just hasn't been prioritized yet.
If I recall correctly, this was the problematic bit:
https://github.com/apache/beam/blob/8239ff/sdks/java/io/hbase/src/main/java/org/apache/beam/sdk/io/hbase/HBaseUtils.java#L61-L73
In the longer term, fixing this compatibility seems like a viable approach to getting hbase 2.x compatibility in beam.
In the shorter term, have you tried using bigtable-hbase-beam, and forcing hbase-shaded-client 1.x using dependencyManagement in your pipelines? I believe the binary incompatibilities in hbase2x were mostly in the Table & Connection interfaces. The data classes (Put, Result, etc) remained backwards compatible. So downgrading to hbase-shaded-client 1x in your pipelines shouldn't cause issues.

We transitively get bigtable-hbase-2.x (from our "common")  and 1.x from Beam.
By forcing, you mean excluding the 2.x dependency?
[INFO] |  +- com.google.cloud.bigtable:bigtable-hbase-2.x:jar:1.14.0:compile
[INFO] |  |  +- com.google.cloud.bigtable:bigtable-hbase:jar:1.14.0:compile

and

[INFO] +- com.google.cloud.bigtable:bigtable-hbase-beam:jar:1.14.0:compile
[INFO] |  +- com.google.cloud.bigtable:bigtable-hbase-1.x-shaded:jar:1.14.0:compile
[

We started seeing
Exception in thread "main" java.io.IOException: java.lang.NoSuchMethodException: com.google.cloud.bigtable.hbase1_x.BigtableConnection.<init>(org.apache.hadoop.conf.Configuration, java.util.concurrent.ExecutorService, org.apache.hadoop.hbase.security.User)
	at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:232)
	at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:128)
	at io.tapwater.common.HBaseUtils.<init>(HBaseUtils.java:60)
	at io.tapwater.processor.pipeline.Pipeline.main(Pipeline.java:86)
Caused by: java.lang.NoSuchMethodException: com.google.cloud.bigtable.hbase1_x.BigtableConnection.<init>(org.apache.hadoop.conf.Configuration, java.util.concurrent.ExecutorService, org.apache.hadoop.hbase.security.User)
	at java.lang.Class.getConstructor0(Class.java:3082)
	at java.lang.Class.getDeclaredConstructor(Class.java:2178)
	at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:225)

Yes, but I think you also have to make sure to force hbase-shaded-client to 1.4.12.

In case this helps others trying to get this working.
I used mvn dependency:tree to figure out which dependencies transitively include hbase-1.x / hbase-2.x.
Added exclusions for those
      <exclusions>
        <exclusion>
          <groupId>org.apache.hbase</groupId>
          <artifactId>hbase-shaded-client</artifactId>
          <hbase.version>${hbase-2.x.version}</hbase.version>
        </exclusion>
      </exclusions>

Explicitely added hbase-1.x API deps:
    <dependency>
      <groupId>com.google.cloud.bigtable</groupId>
      <artifactId>bigtable-hbase-beam</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-shaded-client</artifactId>
      <classifier>hbase-1.x</classifier>
    </dependency>

    <dependency>
      <groupId>com.google.cloud.bigtable</groupId>
      <artifactId>bigtable-hbase-1.x</artifactId>
    </dependency>

@igorbernstein2 was there any progress on the refactoring you mentioned. In other words is there a change we'd get beam with hbase 2.x?

@igorbernstein2, is there still a plan to get beam working with bigtable-hbase 2.x? We use a mono repo, and it's quite a hack to override the version down to 1.x just for beam support.


El Salvador, March 5th

looks good to me.

@bndoone Actually, while the file itself looks good in format, for future commits, you should make sure the file is in the right folder, i.e. put it in the El_Salvador/Epidemiological_Bulletin/data/ folder before committing and submitting the pull request. Looks like @majohansson cleaned this one up after accepting the pull request.

Got it! Thank you.
Bianca
On Mar 18, 2016 9:47 AM, "Nicholas G Reich"<EMAIL_ADDRESS>wrote:

@bndoone https://github.com/bndoone Actually, while the file itself
looks good in format, for future commits, you should make sure the file is
in the right folder, i.e. put it in the
El_Salvador/Epidemiological_Bulletin/data/ folder before committing and
submitting the pull request. Looks like @majohansson
https://github.com/majohansson cleaned this one up after accepting the
pull request.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/cdcepi/zika/pull/25#issuecomment-198368064


Import stops

differenciate stop points from stop areas
handle a geographical property data value type

and the first step would be to not merge the stops between producer

closed by #37


codehilite produces invalid html when used within a list

When using codeblocks within a list, the list item (if it contains other text as well before the codeblock) is wrapped in a

 element. Within that, when the codeblock comes, codehilite puts a

# Code goes here ...

 in there.
This is invalid html: https://stackoverflow.com/questions/10763780/putting-div-inside-p-is-adding-an-extra-p
Why not just add the class to the
 element:
# Code goes here ...
? This would solve the issue I think.

...or replace the
 with a .

But the code block shouldn't be wrapped in the paragraph tag previously.  It's not part of the paragraph.  It should be it's own block as denoted by the empty line between the code block and paragraph.
Even in non-list examples per the Markdown spec, they are not included in the prior paragraph: https://daringfireball.net/projects/markdown/syntax#precode.
Markdown separates blocks by empty lines.  That is why you get two paragraphs in this case:
One paragraph

Two paragraph

And two blocks with this
One paragraph

     A separate block

So I would expect the first block in a list to be a paragraph, and the second to be the code block in this example:
- I am a paragraph

        I am a code block

Also, it will be much clearer when you explain an issue to also post a Markdown source example that causes the bug as it will ensure there is no ambiguity.

For clarity, I don't think Markdown puts the code block in the paragraph to begin with, I believe the code should be, and is, written outside of the paragraph in the HTML source before it ever gets to the browser.

The codehilite extension passes the code block to Pygments to do the highlighting. Pygments returns a div which is then simply inserted into the document to replace the code block. We don't have any control over what Pygments returns (except as they provide through their limited options), so we get a div. I've never been a fan of how they wrap their code blocks, but not enough to be motivated to write a custom Pygments Formatter. That being the case, the discussion over a div verses some other wrapping tag is not up for discussion here. You should take that upstream and address that with the Pygments developers.
Now on to the bug being reported. Please provide all three of the following: (1) a simple example of the Markdown input, (2) the actual output and (3) what output you expected.

Running the following through Python Markdown
1. Make sure [Python 2][] is installed

2. Install the Python packages [Markdown][], [PyMdownExtensions][] and [Pygments][] (optional, for code highlighting):
   ```
   pip install markdown pymdown-extensions pygments
   ```

will produce the following invalid HTML

Make sure Python 2 is installed

Install the Python packages Markdown, PyMdownExtensions and Pygments (optional, for code highlighting):

pip install markdown pymdown-extensions pygments

Okay:

Fenced blocks are not supported in lists unless you are using something like pymdownx.superfences.  So if you are using markdown.extensions.fenced_code, you should not be using them in a list.  See warning in fenced_code docs: https://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html.

If you are using SuperFences. While I don't explicitly mention this, fences are meant to be separate blocks and it is intended that you separate them with an empty line before them.  I assume the same is true for the fenced_code extension, but due to the way they are implemented, this can currently occur.

So ignoring the fact that Python Markdown's fenced_code extension does not support fences in lists, the code block should not be included in the preceding paragraph, so that is a bug.  The browser corrects it as it should by separating out.
I imagine the best course of action is to either not capture and convert a fence that is not preceded by an empty line (except when at the start of a file).  Or, when inserting the converted form back into the file, a new line is injected before it (when one is not already present), to prevent it from being included in the preceding paragraph.  Only @waylan, can weigh in on what he'd like for fenced_code.
Now as the maintainer of SuperFences which does support nesting fences in lists, I would only attempt one of the fixes above.  Code blocks being encapsulated in a div should have no bearing on this issue as I feel the issue is it is getting included in the paragraph in the first place. So my approach would be as I suggested above.
So if you are using SuperFences, create an issue there, but in the short term, put an empty line before your fence.
If you are using fenced_code, don't put the fenced block in a list, and put an empty line before your fence and @waylan will decided what, if anything, should be done in fenced_code to prevent this.

Just to illustrate the point, inspect this post in your browser to see what GitHub does:

Make sure Python 2 is installed

Install the Python packages Markdown, PyMdownExtensions and Pygments (optional, for code highlighting):
pip install markdown pymdown-extensions pygments

I am actually using super fences. However, leaving a blank line in front of the codeblock (as you suggest) will break the list:

Because your example doesn't indent by 4.  Your example indents by 3.

Oh right. Did not know that this was needed. In all other Markdown variants, I usually indent by three to align it with the list item itself...
Thanks!

Yeah, Python Markdown sets a general indentation width of 4 by default.  So anytime you need to indent, it is by that value, unless you override that value to something else.

So is there a bug here? Fenced code blocks must be surrounded by blank lines and can’t be nested. Yes, you get weird output if you don’t follow those rules, but the weird output is the clue that you need to edit your Markdown. I’m not seeing a bug and all the wrong assumptions are already addressed in our documentation.
I’m also assuming the invalid HTML is generated by SuperFences as fenced_code would never see that as a code block. Which means this is an upstream (downstream?) problem which should be reported there.
If my assumptions are correct then this should be closed.

@waylan , the issue is not unique to SuperFences as the list has nothing to do with what is seen.  Below is the same issue reproduced in Fenced Code.
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import markdown
>>> text = """A paragraph
... ```
... some code
... ```
... """
>>> markdown.Markdown(extensions=['markdown.extensions.extra']).convert(text)
'
A paragraph
\n
some code\n
'

The question is if you care to guard against it or just tell people to stop leaving out the empty line before the fence.

Never mind, I take it back, the issue does not reproduce.  I didn't look close enough at my example.  I guess it can be closed, as this is SuperFences specific.

I've closed this issue as it is downstream.

Just an FYI on this.  SuperFences is kind of a workaround to get nested fences despite Python Markdown's weakness in parsing these kinds of blocks, so there are concessions that are made to pull this off (the behavior above being one of them).  After reviewing the code, due to constraints that are currently unavoidable, SuperFences will always require empty lines around fences.
Personally I think this is just good practice despite other parsers allowing them without, but it is not going to possible (or possibly better stated, I have no plans to put in a more complicated system to accommodate this corner case as it is too much work for something I already have a bias against).
In the future, my plan is to alter the the parsing logic so it will be aware of whether it is preceded by empty lines, and most likely, those without will not be counted as fences to avoid confusion in this type of corner case.  In the short term, I've updated the documentation to formally state this as a requirement.
Feel free to hop on over the the pymdown-extension issue to read more details on why this is difficult to handle: https://github.com/facelessuser/pymdown-extensions/issues/114.  Feel free to ask more questions over there if you want more details on why this is so difficult, but most likely my stance is going to remain as I am not expecting a huge overhaul on how Python Markdown handles blocks that are like fences.


Initial "configuration form" is not displayed

I'm not sure if this is an appropriate place for this issue. ( Please delete it if not )
After creating a new droplet on digital ocean from dokku image. The initial configuiration page is not displayed.
Expected Result:
see initial configuration page
( as per instructions https://dokku.com/docs/getting-started/install/digitalocean/ ( step 9 )
Actual Result:
displays default Welcome to NGINX page

What I found so far is that the problem is with NGINX which can't start and gives the error below about mapping port 80
[emerg] bind() to [::]:80 failed (98: Unknown error)

Sorted after reading comments and going through the docs...
Removing default nginx site works.
I believe docs could be updated to reflex it.
rm /etc/nginx/sites-enabled/default

After many times installing new droplets, I found This answer, crossed few buddies on Dokku repo issue raised this one too, but some of them just give up and move to other solutions, please update in the one click installation documentation too.


Update bluebird to 2.9.12

Closes #242.

Coverage remained the same at 100.0% when pulling 9f3d1d914e32f7542b54d9dfa6cb34ae93937c88 on bluebird into b030191f14c7d6106370e02608d8cc9fd696158f on master.

@cvrebert Merge if LGTY.


Wrong TypeReference name in TypeAliasDeclaration in AST

Bug Report

🔎 Search Terms
typealias
type alias
🕗 Version & Regression Information
Reproduces with every version staring from 4.2.1, including nightly.

This changed between versions 4.1.5 and 4.2.1

⏯ Playground Link

Playground AST Visualiser link with relevant code
💻 Code

export type tEntityId<Name extends string> = { name: Name };
export type tImageId = tEntityId<"some_name">;

🙁 Actual behavior

The second line of provided example is a TypeAliasDeclaration and tEntityId<"some_name"> is a TypeReference.
escapedName property of this type reference is tImageId which breaks out code generation that depends on it.
🙂 Expected behavior
escapedName property of this TypeReference should be tEntityId<"some_name"> as is always was before.

I'm not sure what you're pointing at. Code I'm running:
const ts = require("typescript");
const sourceFile = ts.createSourceFile(
  "file.ts",
  "export type tEntityId<Name extends string> = { name: Name }; export type tImageId = tEntityId<'some_name'>;",
  ts.ScriptTarget.Latest
);
console.log(sourceFile.statements[1].type.typeName.escapedText);

This prints tEntityId as expected. Can you provide a sample that prints the wrong thing?

This doesn't seem like a defect; returning tImageId here is what the aliasSymbol property is for. It's attached so that type printback uses the alias name when possible.
I'm probably confused here -- you linked an AST explorer as part of the repro, but the AST part of this is all as expected (?). It's the type alias resolution that's changed for the better, not anything with parsing. The code here asks two different questions (what is the parsed tree of this program; what is the name to give this type) and gets two different answers.

Sorry, I'm a bit new to all these core language things, so I might use wrong terminology.
There is nothing wrong with AST structure itself. I linked AST explorer because for me it was easier to see the difference. I'll add some screenshots of it.
This is 4.1.5:

And this is 4.5.2:

The same expression, but different result for different language versions. Question here is — was it changed by intension?
Because on the second line we have type alias declaration, where what lies before = is Identifier (as in AST) and its value (escapedText property I suppose) is tImageId. And what lies after = is TypeReference (according to AST) and it refers to the first line of our example code. Which is tEntityId. I just don't get the idea how it became tImageId.

A bit modified script:
`import * as ts from "typescript";
const sourceFile = ts.createSourceFile(
"file.ts",
"export type tEntityId = { name: Name }; export type tImageId = tEntityId<'some_name'>;",
ts.ScriptTarget.Latest
);
const host = ts.createCompilerHost({});
host.getSourceFile = (name: string, version: ts.ScriptTarget) => {
return sourceFile;
}
const program: ts.Program = ts.createProgram(["file.ts"], {}, host);
const node = (sourceFile.statements[1] as ts.TypeAliasDeclaration).type as ts.TypeReferenceNode;
const type = program.getTypeChecker().getTypeAtLocation(node);
const sym = program.getTypeChecker().getSymbolAtLocation(node.typeName);
console.log("NODE: " + node.getText());
console.log("NODE SYMBOL: " + sym.escapedName);
console.log("NODE SYMBOL DECLARATION: " + sym.declarations[0].getText());
console.log("NODE TYPE SYMBOL: " + type.symbol.escapedName);
console.log("NODE TYPE SYMBOL DECLARATION: " + type.symbol.declarations[0].getText());
console.log("NODE TYPE ALIAS SYMBOL DECLARATION: " + type.aliasSymbol.declarations[0].getText());
console.log("NODE TYPE ALIAS SYMBOL: "+ type.aliasSymbol.escapedName);`
With TS 4.5.2 product the following:
NODE: tEntityId<'some_name'> NODE SYMBOL: tEntityId NODE SYMBOL DECLARATION: export type tEntityId<Name extends string> = { name: Name }; NODE TYPE SYMBOL: __type NODE TYPE SYMBOL DECLARATION: { name: Name } NODE TYPE ALIAS SYMBOL DECLARATION: export type tImageId = tEntityId<'some_name'>; NODE TYPE ALIAS SYMBOL: tImageId
And with TS 4.1.5:
NODE: tEntityId<'some_name'> NODE SYMBOL: tEntityId NODE SYMBOL DECLARATION: export type tEntityId<Name extends string> = { name: Name }; NODE TYPE SYMBOL: __type NODE TYPE SYMBOL DECLARATION: { name: Name } NODE TYPE ALIAS SYMBOL DECLARATION: export type tEntityId<Name extends string> = { name: Name }; NODE TYPE ALIAS SYMBOL: tEntityId
And the last one seems correct...

This is what aliasSymbol is for -- to tell you which type alias (if any) declared this type. This is why aliasSymbol property exists. The difference between symbol and aliasSymbol is about whether you're asking about the type itself, or an alias that declared it if one exists. That is why there are two properties, and you need to access the one that corresponds to the behavior you're looking for.

@RyanCavanaugh this is true - but please notice that in the example above for the type { name: Name } the alias symbol should be type tEntityId<Name extends string> = { name: Name } but type checker suggest the type tImageId = tEntityId<'some_name'>; what is not correct.

This is, again, a misunderstanding of what these properties mean. The type you got from getTypeAtLocation is tEntityId<'some_name'>, which is an instantiation whose symbol has a declaration of { name: Name }, but this instantiation has the attached alias tImageId because you wrote
type tImageId = tEntityId<'some_name'>
import * as ts from "typescript";

const sourceFile = ts.createSourceFile(
    "file.ts",
    `/*0*/ export type tEntityId<Name extends string> = { name: Name };
    /*1*/ export type tImageId = tEntityId<'some_name'>;
    /*2*/ export type tImageIdOther = tEntityId<'other_name'>;
    /*3*/ declare const j: tEntityId<'foo'>;`,
    ts.ScriptTarget.Latest
);
const host = ts.createCompilerHost({});
host.getSourceFile = (name: string, version: ts.ScriptTarget) => {
    return sourceFile;
}

const program: ts.Program = ts.createProgram(["file.ts"], {}, host);
console.log('ref 1');
desc((sourceFile.statements[1] as ts.TypeAliasDeclaration).type as ts.TypeReferenceNode);
console.log('ref 2');
desc((sourceFile.statements[2] as ts.TypeAliasDeclaration).type as ts.TypeReferenceNode);
console.log('ref 3');
desc((sourceFile.statements[3] as ts.VariableStatement).declarationList.declarations[0].type! as ts.TypeReferenceNode);

function desc(node: ts.TypeReferenceNode) {
    const type = program.getTypeChecker().getTypeAtLocation(node)!;
    const sym = program.getTypeChecker().getSymbolAtLocation(node.typeName)!;
    console.log("NODE: " + node.getText());
    console.log("NODE SYMBOL: " + sym.escapedName);
    console.log("NODE SYMBOL DECLARATION: " + sym.declarations![0].getText());
    console.log("NODE TYPE DISPLAY: " + program.getTypeChecker().typeToString(type));
    console.log("NODE TYPE SYMBOL DECLARATION: " + type.symbol.declarations![0].getText());
    console.log("NODE TYPE ALIAS SYMBOL DECLARATION: " + type.aliasSymbol?.declarations![0].getText());
    console.log("NODE TYPE ALIAS SYMBOL: "+ type.aliasSymbol?.escapedName);
}

You can't just look at the .declarations of a type's symbol and assume that's the whole story -- a generic type instantiation will have a symbol whose declaration points at the underlying template, but the type itself is different.


Sublime3 plugin performance improvements

As mentioned at the gocode fork of @stamblerre #13. When trying to type in sublime does the view freeze until gocode has returned it's results. This pull requests makes all autocomplete requests called async and are synced with the active view once done.
Before:

After:

@nsf Maybe an idea to include a settings option that disables the Sublime default textual autocomplete and only displays the results from gocode?

Thanks, will try it.

Thanks for this. I have also been using (a modified version of) the Sublime code.
I just modified @jeroenrinzema's async completion to do the following to stop those uninteresting default completions from flashing up briefly:
https://github.com/frou/GoFeather/blob/976469b29fdfc333e1a312703db7b5b3890a194c/plugin_autocomplete.py#L77-L101

@frou Also already made a improved version of the gocode plugin at stamblerre's fork of gocode. I still have to make a PR to this repo to update the plugin.


Bone emoji

There are three or four emojis showing a bone, 🍖 🍗 ☠ and 💀, but none only that’s showing a characteristic femur Bone(i.e. without flesh and skull).
Proposals

L2/17-246: Bone emoji proposal by Jane Solomon (2017-07-24)
L2/17-259: Body Parts emojis proposal by ESC

The candidate emojis for Unicode 11 include a Bone emoji as U+1F9B4.
http://www.unicode.org/L2/L2017/17284-emoji-recs.pdf


Treatment of "Missing Data" in ICEES+ Associations

This issue is to implement a solution to the challenge of missing data/observations in ICEES+ integrated feature tables. Specifically, the API currently treats missing data (null fields) as "not 0" or "not 1", depending upon how a query is structured. The results is that the "not" sample sizes include missing data/observations, which isn't quite accurate.
The solution that the team has agreed upon is to subtract out all missing data/observations/null fields from the API output for all association tests. This way, the user will see that the total N for an association is smaller than the total N for a cohort, thus implying that there are missing data points.

This feature now works correctly. Ticket can be closed.


Rp integration with command "-f ReportPortal::RSpec::Formatter" not working when we execute rake file

Rp integration with command "-f ReportPortal::RSpec::Formatter" not working when we execute rake file
I have set up job in jenkins to run multiple spec files through rake file and tried to integrate rp with below command. But it is not working. Please help me on this?
bundle exec rake dbc_regression -f ReportPortal::RSpec::Formatter
Thanks in advance.

Could you please provide more information on what do you mean by "not working"?

When I used to run specific spec file by adding report portal command like below, it was working fine and I could able to see report in rp.
"rspec  /spec/specfilename.rb -f ReportPortal::RSpec::Formatter"
but I have set up job in jenkins and trying to run multiple spec file through rake by using below command in shell script in jenkins configuration
"bundle exec rake"
Then it build success and job completed with publishing results in rp.
Now I'm not sure where to give/add command "-f ReportPortal::RSpec::Formatter" to get results in rp. So i have just tried like below
bundle exec rake dbc_regression -f ReportPortal::RSpec::Formatter
And it is not working. Please help me to set this command with rake file execution.

Does bundle exec rake -f ReportPortal::RSpec::Formatter work?

No it is not working

Do you see any error message?

Yes, getting below error.
rake aborted!
No Rakefile found (looking for: ReportPortal::RSpec::Formatter)

Do you have reportportal in gemfile?

Yes, I have

Hi I found the solution... I need to configure it in my rake file script not in the command line.
It is working now.
Thanks...


updating details on EOL

After a customer Q/A on EOL, i found two points that could be added to the existing help article. The points were discussed over here: https://aiven-io.slack.com/archives/C01UBB57XFS/p1682621996912009

The EOL article looks fine, but there appear to be other commits added here that added other files not related to this PR?

The EOL article looks fine, but there appear to be other commits added here that added other files not related to this PR?

Yes, not sure how it got added! Can i close this PR and create a new one ?

That works, too, yeah! Feel free to tag me in the new PR and I'll get it approved/published. :)

The EOL article looks fine, but there appear to be other commits added here that added other files not related to this PR?

Yes, not sure how it got added! Can i close this PR and create a new one ?

That works, too, yeah! Feel free to tag me in the new PR and I'll get it approved/published. :)

Added a new PR - https://github.com/aiven/devportal/pull/1906