End-to-end encryption (E2E) between clients (Android app, CLI, web app)

It should be possible to e2e encrypt messages, like this:
NTFY_PASSWORD=... ntfy publish --encrypt mytopic my encrypted message

Or this
echo my encrypted message | <something> | curl -T- -H "Encrypted: yes" ntfy.sh/mytopic

The message should look like this:
{
  "id": "..",
  "type": "message",
  "encryption": "aes-128-gcm",
  "message": "ZnNkZmRzZnNkZmZzZGtqZmRzamZsc2RmCg=="
}

It is important to me that the solution is widely supported and can be easily implemented in all languages. Ideally something like gpg or age, but I doubt such a format exists.

 I also looked at age a while ago and even opened an issue here (https://github.com/FiloSottile/age/discussions/404) to ask for support in other languages; and sadly there is not enough support.
I also played with openssl to see if I can encrypt and protect the integrity (~ AEAD-style), but I wasn't successful.
I will try and play some more, but I believe I'll have to implement my own format. Something similar to what I have done here (https://syncany.readthedocs.io/en/latest/security.html#encrypting-new-files), though much simpler hopefully.

Here's the basic message structure: https://github.com/binwiederhier/ntfy/pull/354. This implements the exact same thing that Pushbullet does (https://docs.pushbullet.com/#encryption) and is even compatible with it. This was super easy. The trickier part is figuring out the UX of this. I'll have to think about that.

This can encrypt a message with a key, but a key is not a password. The password we'll still have to derive using pbkdf2.
The question is now:

Does each topic have its own password?
Or is it somehow tied to the user? If so, pub-sub doesn't really work anymore, because the ciphertext is now different for each user.
Where do we enter a topic password? What happens if it's wrong?
Relatively easy would be:
Each subscription has a password.
The password is stored/entered in the subscription settings and stored locally
If an encrypted message comes in, we derive the key using the password and use it to decrypt the message. If it succeeds, it's displayed. If not, we show (encrypted message)
If an unencrypted message comes in, we do what we do now.

Password:

minimum 6 characters, max 255.
simple byte-string (implementations need to be consistent though, presumably utf-8 source, no null termination)
can also be thought of as a generic secret (eg: could use yubikey to generate a strong key)

KDF:

Should specify the URI is normalized. Non-normalized forms will derive different keys.
I'm still thinking about specifying the number of rounds as a parameter? crypto agility would say yes. but then that would need to be stored alongside the password or in the jwe header along with kid. That's messy. That's the fun with 'dir' mode.

It might also be worth adding 'kid' to the JWEs so that can give users a chance to change or rotate their passwords. Changing the passwords has some choices because of historically encrypted messages. Since the user holds the password it would be up to them to have to re-encrypt every message. Another option in that case is to have a KEK and wrap the kek with password-derived-key. Only need to rewrap that kek on password change. The KEK would be a strong AES-256-bit key that encrypts user messages. Sharing that kek across devices is harder than passwords though.

I am still working on this. It's going slow (mostly due to personal commitments), but I have still managed to come up with a design that I think I like. So here it goes:
Proposal 7/13
General flow

Each subscription has a password.
The password is stored/entered in the subscription settings
We derive the key and locally store the key
If an encrypted message comes in, decrypt the message. If it succeeds, it's displayed. If not, we show (encrypted message)
If an unencrypted message comes in, we do what we do now.

Key derivation

PBKDF2 with 50k rounds and sha256(topicURL) as a salt (see #354 for example impl)
The resulting key is used below

Encryption file format

Message (and optionally attachment) are encrypyted as JWE
As of now, only AES-256-GCM in "dir" mode ({"alg":"dir","enc":A256GCM"}) is supported

Use cases
1. Unencrypted message (headers)**
Request (HTTP)
POST /sometopic HTTP/1.1
Title: some title

some message

Request (via curl)
curl -d "some message" -H "Title: some title" ntfy.sh/sometopic

Response
{
  "id":"eWa5epsDHkQ4",
  "time":1657759261,
  "event":"message",
  "topic":"sometopic",
  "title":"some title",
  "message":"some message"
}

2. Unencrypted message (JSON)
Request (HTTP)
POST / HTTP/1.1

{
  "topic":"sometopic",
  "title":"some title",
  "message":"some message"
}

Request (via curl)
curl ntfy.sh -d '{
  "topic":"sometopic",
  "title":"some title",
  "message":"some message"
}'

Response
(same as above)
3. Unencrypted message with attachment (headers + attachment)
Request (HTTP)
POST / HTTP/1.1
Title: some title
Message: some message

<attachment data>

Request (via curl)
curl -T attachment.jpg -H "Title: some title" -H "Message: some message" ntfy.sh/sometopic

4. Unencrypted message with attachment (multipart: JSON + attachment) [**new]
Request (HTTP)
POST /sometopic HTTP/1.1
Content-Type: multipart/form-data; boundary=--ntfy-boundaryXyASDsdA

----ntfy-boundaryXyASDsdA
Content-Disposition: form-data; name="message"

{
  "topic":"sometopic",
  "title":"some title",
  "message":"some message"
}

----ntfy-boundaryXyASDsdA
Content-Disposition: form-data; name="attachment"

<attachment data>

----ntfy-boundaryXyASDsdA--

Request (via curl)
curl ntfy.sh \
  -F<EMAIL_ADDRESS>\
  -F message='{
    "topic":"sometopic",
    "title":"some title",
    "message":"some message"
  }'

5. Encrypted message (JWE-encrypted JSON) [**new]
Request (HTTP)
POST /sometopic HTTP/1.1
Topic: sometopic
Encoding: jwe

eyJhbGciOiJka.............-nH7ya1VQ_Y6ebT1w.2eyLaTUfc_rpKaZr4-5I1Q

Request (via curl)
curl ntfy.sh \
  -H "Topic: sometopic" \
  -H "Encoding: jwe" \
  -d "eyJhbGciOiJka.............-nH7ya1VQ_Y6ebT1w.2eyLaTUfc_rpKaZr4-5I1Q"

6. Encrypted message with attachment (multipart: JWE-encrypted JSON + JWE-encrypted attachment)
Request (HTTP)
POST /sometopic HTTP/1.1
Topic: sometopic
Encoding: jwe
Content-Type: multipart/form-data; boundary=--ntfy-boundaryXyASDsdA

----ntfy-boundaryXyASDsdA
Content-Disposition: form-data; name="message"

eyJhbGciOiJka.............-nH7ya1VQ_Y6ebT1w.2eyLaTUfc_rpKaZr4-5I1Q

----ntfy-boundaryXyASDsdA
Content-Disposition: form-data; name="attachment"

eyJhbGciOiJk......(this could be 15 MB of data) .........Rzs4Y5QLE2XD2_aw_SQ.y2hadrN5b2LEw7_PJHhbcA

----ntfy-boundaryXyASDsdA--

Request (via curl)
curl ntfy.sh \
  -H "Topic: sometopic" \
  -H "Encoding: jwe" \
  -F<EMAIL_ADDRESS>\
  -F<EMAIL_ADDRESS>
Issues

JWE has a 30% overhead due to base64; that's okay for messages, but a little sad for attachments
The salt for PBKDF2 is the topic URL. In some cases, endpoints are different and clients will derive an "incorrect key". Any ideas for a better salt?

base64 does appear to compress well with gzip (https://blog.virtual-void.net/base64-vs-gzip/)

NTFY_PASSWORD=... ntfy publish --encrypt mytopic my encrypted message

Friendly reminder: environment variables are only little less bad means to pass secrets than command line. Otherwise +1 (or more).

I want to throw in two considerations regarding the decision against "age" and "openpgp":

The Go OpenPGP implementation is still maintained. The one that was in the golang.org/x tree is no longer maintained, but they even referenced the existing fork from ProtonMail as a successor for people who continue using OpenPGP. We use it in production, for example. (Just as ProtonMail does, I would assume.)
While age does not have existing implementations in a lot of languages, rolling your own scheme doesn't either. If you start implementing a scheme, you might as well use one with a spec. The advantage over a custom / own scheme is obviously that it is already more battle tested and you have reference implementations to test against.

@aksdb Thanks for the comments.
Re 1: Thanks for the correction. I was not aware that there was another active implementation.
Re 2: The scheme that I picked is not a roll-your-own. It's a subset of JWE. I picked very small subset, so that I could implement it in many different languages easily. I already did it in Python, PHP, Go, and (partially) JS. It is understandable that you think it's roll-your-own, because this ticket discussion is long and old, but this is the one I picked: https://github.com/binwiederhier/ntfy/issues/69#issuecomment-1183839284 -- which is JWE with AES-256-GCM in "dir" mode ({"alg":"dir","enc":A256GCM"}).
Re 2 (age): I did approach the age devs in the GitHub discussions asking for different implementations, and while there is interest, it doesn't seem like it's been done or actively worked on/maintained. Most of the chosen scheme I could implement in 10 lines of code in most languages.  Simple and I've done that many many times. I'm not new to this :)

Sounds good, thanks for the clarification (and all the effort you put into this project).

Awesome project @binwiederhier! Great work.
Password protection would be a really great feature that would make the tool a lot more powerful.
A small question (I have no crypto background): What would happen if two people used (e.g. by accident) the same topic with a different password? Would that be possible? I guess they wouldn't receive the other person's notification and only their own (because they can only decipher their own message)?! Would they get an error message of an attempted notification/wrong password?

Regarding key derivation: since this is a new design and you have a choice, it doesn't make much sense to use PBKDF2. Instead, a memory-hard hash function like Argon2 or scrypt is far preferable.
If you ultimately stick with PBKDF2, the proposed number of iterations (50,000) is too low to defend against brute-force attacks on modern hardware. 1Password uses 650,000 iterations now, and OWASP recommends at least 600,000 iterations of PBKDF2-HMAC-SHA256: https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#pbkdf2

Regarding key derivation: since this is a new design and you have a choice, it doesn't make much sense to use PBKDF2. Instead, a memory-hard hash function like Argon2 or scrypt is far preferable.

I think this is a great recommendation, thank you. I think I picked something "low" for PBKDF2 since there are clients that will have to derive the password every time, which would make sending messages have a delay of 1s or something, or require storing the key somewhere. I'll experiment with the other key derivation functions though.
We now also have access tokens since 2.x, so it may be feasible to ditch the password altogether. I'll look at it when I eventually get to this ticket.

A small question (I have no crypto background): What would happen if two people used (e.g. by accident) the same topic with a different password? Would that be possible? I guess they wouldn't receive the other person's notification and only their own (because they can only decipher their own message)?! Would they get an error message of an attempted notification/wrong password?

@blewsky according to the "General Flow" in https://github.com/binwiederhier/ntfy/issues/69#issuecomment-1183839284 you would get a notification with (encrypted message)
This would only protect content, not the topic itself, you could have a combined encrypted and unencrypted topic even.
also, slightly interesting tidbit, there is nothing really stopping you from creating a custom client and using this with the current setup, the only thing you would miss is the native Encoding header support

What is the relation here to the Web Push Payload Encryption?
I gave an application server https://ntfy.sh/mytopic as the Web Push endpoint instead of the browser's generated endpoint URL. This resulted in receiving encrypted binary blobs in the ntfy Android app.
Seems to me like the Android app could act like a browser/app and have its own keys, while the CLI or whatever would act as the application server and have its own keys. Also using Web Push libraries would avoid rolling own crypto.
If I'm on the wrong track here, I'm interested in learning more about what the difference is.

I'm happy to see E2E as a feature to ensure every content being pushed is only visible for the push source and the certain recipients, and not readable for either some vendor's push server (like APNs or Firebase) or temporary push server. Additionally, I think passphrase instead of key is better, because generate a passphrase requires zero knowledge and passphrase can be shared easily. Generate key requires more work, and exchange key content offline is harder.
Thus I think JWE or GPG is good enough. As for Web Push Payload Encryption, it is a pre-HTTPS-everywhere tech, more about preventing insecure push providers using HTTP to send your content, as it stated in the blog:

browser chooses which push provider will be used to actually deliver the payload,..., HTTPS can only guarantee that no one can snoop on the message in transit to the push service provider. Once they receive it, they are free to do what they like, including re-transmitting the payload to third-parties or maliciously altering it to something else. To protect against this we use encryption to ensure that push services can't read or tamper with the payloads in transit.

Seems like much of this could be overkill. A simpler way is to treat it like every other method (Signal, Matrix, etc). Provide a way to send a push that tells the client to check a predetermined URL via HTTPS using its bearer token. The user can then determine if they wish to do E2E, but this would be enough to keep Google's eyes out.

Add setting in client for custom URL and access token
Script sends push with "check URL" command
Client checks URL for latest message and displays the notification.

This is basically what I do for Matrix API from a shell script for pushes via Element/Matrix.

As for Web Push Payload Encryption, it is a pre-HTTPS-everywhere tech, more about preventing insecure push providers using HTTP to send your content, as it stated in the blog

My reading is that it does not state that Web Push encryption protects from insecure push providers using HTTP.
First they assume everyone uses HTTPS, but "HTTPS can only guarantee that no one can snoop on the message in transit to the push service provider."
Then they go on to explain that HTTPS isn't End-to-End Encryption, which is why they added E2E to Web Push.

Part of the reason I'm asking if Web Push Payload Encryption has been considered is because it is an existing solution widely used in production already.
Another reason is that while people claim "Web Push compatibility", there can not be any meaningful Web Push compatibility without clients that can decrypt the messages.
Ntfy is almost Web Push compatible. I've had third party services (application servers I do not own) send push messages into my test endpoint. The only missing piece is decryption.

HTTPS can only guarantee that no one can snoop on the message in transit to the TLS terminator. This could be Cloudflare, a corporate security proxy, an evil MITM proxy whose operator has the private key of some TLS certificate trusted by your device, etc. HTTPS is not enough by itself.

Any updates for this feature?

I’d like to suggest NaCl for consideration as an encryption/decryption library. In JavaScript TweetNaCl.js can be used, and for Android Lazysodium can be used. They support both symmetric and asymmetric encryption.

It should be possible to e2e encrypt messages, like this:
NTFY_PASSWORD=... ntfy publish --encrypt mytopic my encrypted message

Or this
echo my encrypted message | <something> | curl -T- -H "Encrypted: yes" ntfy.sh/mytopic

The message should look like this:
{
  "id": "..",
  "type": "message",
  "encryption": "aes-128-gcm",
  "message": "ZnNkZmRzZnNkZmZzZGtqZmRzamZsc2RmCg=="
}

It is important to me that the solution is widely supported and can be easily implemented in all languages. Ideally something like gpg or age, but I doubt such a format exists.

I would like to suggest a two-folds solution for implementing E2E in ntfy; which I believe would greatly ease its implementation.
Sender side
Instead of going
NTFY_PASSWORD=... ntfy publish --encrypt mytopic my encrypted message

Or
echo my encrypted message | <something> | curl -T- -H "Encrypted: yes" ntfy.sh/mytopic

as suggested, why not using:
echo "my plaintext message" | gpg --encrypt --trust-model always --armor -r "$email_or_hash" \
  | curl -d@- ntfy.sh/mytopic

Notice the use of -d@ with curl instead of -T, which results in a POST and not a PUT (I don't know if PUT is currently implemented in ntfy)
Of course, it is necessary to add a recipient flag (-r) per recipient.
This method would literally not require any change to the server code.
Receiver side
On the receiver's end, the message is obtained as usual, but in case the first line is -----BEGIN PGP MESSAGE-----, the message is processed by an appropriate app (OpenKeychain on Android, and PGPro on iOS), so that the resulting clear-text can be displayed; or, if it failed, either the app displays a warning (or error) or silently ignores it, depending on per-topic configuration.
It would be probably good to display an appropriate warning by default, when receiving a PGP encrypted message, if no PGP app is installed on the device.

Why all this complexity - do as Pushbullet does: if you set a secret on one end, all other endpoints won't be able to read messages unless they know the same secret. Doesn't really matter which encryption library is used, nacl is as good as any. Just mandate a lengthy secret.

Why all this complexity

What you advertise as "complexity" (pgp) is only the standard way to do things, supports both asymmetric and symmetric encryption, is already portable because it is standard, is distributed by any stable distribution (Linux or otherwise), and is factually orders of magnitude simpler than your proposal. Just because you will end up "using docker anyway" doesn't mean it's okay to force heaps of dependencies and sometimes barely-reviewed software ripe for chain-supply attacks on everyone. Please, no gaslighting. And pgp isn't a "library". Ops matter.

do as Pushbullet does: if you set a secret on one end, all other endpoints won't be able to read messages unless they know the same secret. Doesn't really matter which encryption library is used, nacl is as good as any. Just mandate a lengthy secret.

Don't roll your own crypto.
From Phil Zimmermann's (PGP creator) Introduction to Cryptography (Page 43):

When I was in college in the early 70s, I devised what I believed was a brilliant encryption scheme. A simple pseudorandom number stream was added to the plaintext stream to create ciphertext. This would seemingly thwart any frequency analysis of the ciphertext, and would be uncrackable even to the most resourceful government intelligence agencies. I felt so smug about my achievement.
Years later, I discovered this same scheme in several introductory cryptography texts and tutorial papers. How nice. Other cryptographers had thought of the same scheme. Unfortunately, the scheme was presented as a simple homework assignment on how to use elementary cryptanalytic techniques to trivially crack it. So much for my brilliant scheme.
From this humbling experience I learned how easy it is to fall into a false sense of security when devising an encryption algorithm. Most people don’t realize how fiendishly difficult it is to devise an encryption algorithm that can withstand a prolonged and determined attack by a resourceful opponent.

From Phil Zimmermann's (PGP creator

I have profound respect for Zimmermann, I actually started studying cryptography by reading his paper on PGP, also used to be a paid user of his Silent Circle project.
But PGP is total garbage in respect to useability. It is needlessly complex and convoluted. No one sane uses it in the 21st century (unless they are forced to). That's the reason we have Signal messenger and other projects with great usability and security. Dragging GPG into the new world is just crazy.

From Phil Zimmermann's (PGP creator

I have great respect for Zimmermann, I actually started studying cryptography by reading hit paper on PGP, also used to be a paid user of his Silent Circle project.
But PGP is total garbage in respect to useability. It is needlessly complex and convoluted. No one sane uses it in the 21st century (unless they are forced to). That's the reason we have Signal messenger and other projects with great usability and security. Dragging GPG into the new world is just crazy.

But PGP is total garbage in respect to useability.

Good thing OpenKeyChain and PGPro are great apps that are well designed and UX focused.
Also, "Secure, Convenient, Doesn't need billions in revenue to implement; pick any two."

As stated earlier there already is a standard for E2EE push message encryption, and it is RFC8291.
To me it seems it would be beneficial for both interoperability and security ("don't roll your own crypto") to implement the standard.

PGP sucks, and I'd hardly consider it standardized, on the other hand, SSH's actually standardized, and broadly used in modern programs. It has replaced PGP in all modern contexts.

or age, X25519 is fairly common.

Speaking about SSH, I recently took a look at age that was earlier suggested by @binwiederhier and found that:

It supports using SSH keys as a public/private key format (but only ssh-rsa and ssh-ed25519).
It can be trivially compiled into WebAssembly.

Personally, I prefer asymmetric encryption (public/private keys) over passwords, so that if there are many senders sending notifications to the same topic, different senders cannot decrypt each other's messages.

As stated earlier there already is a standard for end-to-end push message encryption, and it is RFC8291.

I was not aware that there was a standard for E2EE of push messages specifically. I am surprised, but also thankful, that is valuable information. However, that would imply specific tooling on the sender, would it not? That was precisely what my proposal aimed to avoid.

PGP sucks, and I'd hardly consider it standardized, on the other hand, SSH's actually standardized, and broadly used in modern programs. It has replaced PGP in all modern contexts.

Absolutely fair. I'd also recommend SSH instead of PGP, now that you mention it. I don't know what apps can be used to support it on a mobile terminal, though.

Personally, I prefer asymmetric encryption (public/private keys) over passwords, so that if there are many senders sending notifications to the same topic, different senders cannot decrypt each other's messages.

Exactly.

I'm a little confused about the existence of this issue. The Unified Push spec explicitly states that notification messages must be encrypted:

Push message: This is an array of bytes (ByteArray) sent by the application server to the push server. The distributor sends this message to the end user application. It MUST be the raw POST data received by the push server (or the rewrite proxy if present). The message MUST be an encrypted content that follows RFC8291. Its size is between 1 and 4096 bytes (inclusive).

Does Ntfy not adhere to the Unified Push spec?

Does Ntfy not adhere to the Unified Push spec?

Does it claim anywhere it would? I think the docs are quite clear that it implements its own protocol.

@K4LCIFER There are 3 parties. Sender → Ntfy → Receiver.

Data from Sender to Ntfy is encrypted in transit with HTTPS.
Data Ntfy to receiver is encrypted in transit according to how each notification platform works.

So it is encrypted, but not end-to-end from Sender to Receiver. Right now Ntfy as the intermediary has to un-encrypt the message from the Sender, and then re-encrypt it for the Receiver, so it is technically possible for Ntfy service to access to the message contents. E2EE makes it impossible for the intermediary to access the message contents.

Does Ntfy not adhere to the Unified Push spec?

Does it claim anywhere it would? I think the docs are quite clear that it implements its own protocol.

I do not know if Ntfy does but UnifiedPush heavily pushes users in the direction of using Ntfy so I can see why someone could mistake it for being compatible with the UnifiedPush spec.


Nested scrollview stuck at the bottom

I'm having this issue when I scroll down inside a BottomSheetBehavior, the NestedScrollView stuck at the bottom, and when I try to scroll up it jumps back to bottom..
I also couldn't apply that fix.
https://stackoverflow.com/questions/37691748/nested-scrollview-automatically-scrolls-to-bottom

Hi, are you using the react-native-bottom-sheet-behavior?
How exactly you are using it? could you provide a way that i could reproduce the problem?
I've tested nested scroll example on the bottom-sheet-behavior, but i didn't had any problems.
Without a example project is really hard to help you, since this project is too generic.

Yes Im using it with react-native-bottom-sheet-behavior

`

<MapView
ref={(ref) => { this.mapRef = ref }}
style={StyleSheet.absoluteFillObject} >
{this.markerList()}

<Item style={{  }}>
<Button style={{ paddingTop: 0 }} transparent onPress={() => this.props.openDrawer() }>

<Input placeholder={I18n.t('search')} onChangeText={(searchText) => {this.loadData(searchText)}}/>

        <BottomSheetBehavior
            peekHeight={50}
            hideable={false}
            state={STATE_ANCHOR_POINT}
            anchorEnabled={true}
            ref={ref => { this.bottomSheet = ref }}>
            <View style={styles.bottomSheet}>
                <TouchableOpacity onPress={() => this.handleState()} style={styles.bottomSheetHeader}>
                    <Text style={styles.label}>{I18n.t('directory')}</Text>
                </TouchableOpacity>
                <View style={styles.bottomSheetContent} >
                    {this.isLoading(this.state.isLoading)}
                    <NestedScrollView ref={ref => { this.nestedScroll = ref }} style={styles.scroll}>
                        {this.renderList()}
                    </NestedScrollView>
                </View>
            </View>
        </BottomSheetBehavior>
    </CoordinatorLayout>`

I don't think you need NestedScrollView, NestedScrollView is not required if you are using BottomSheetBehavior with anchorEnabled=true
NestedScrollView + BottomSheetBehavior will only fit if you are not the anchor point and defined a fixed height, like in this gif

Now, if you are using the anchor point with anchorEnabled, the BottomSheetBehavior is already a NestedScrollView Itself (see), so it might causing a conflict.
If you look at the google maps example there's no NestedScrollView, and can you scroll the whole view without problems.
I hope i understood your issue, i also didn't be abled to run your code, so let me know if you got it.

Yeah. I just replaced the NestedScrollView with a normal View and the scroll is fixed!
Thank you so much!


I can't import scratchpy

ImportError: cannot import name 'Scratch'

is scratchpy suitable for python 3+ ? python 3+ doesn't work

should be this in python3.0
from scratch.scratch import Scratch, ScratchError, ScratchConnectionError

same problem when I try to install scratchpy from pip


Expand and collapse smoothly

Is there a way to expand list and collapse smoothly with animation?
I can't find a way to define a animation.

       @Override
        public void expand() {
            animateExpand();
        }

        @Override
        public void collapse() {
            animateCollapse();
        }

        private void animateExpand() {
            ObjectAnimator animation = ObjectAnimator.ofFloat(ivArrowIcon, "rotation", 90f);
            animation.setDuration(300);
            animation.start();
        }

        private void animateCollapse() {
            ObjectAnimator animation = ObjectAnimator.ofFloat(ivArrowIcon, "rotation", 0f);
            animation.setDuration(300);
            animation.start();
        }

        Override the expand and collapse methods and call the above methods `animateExpand`()  and `animateCollapse`()
        `ivArrowIcon` is the arrow icon that will rotate according to collapse or expand behavior.

Closing this as this library is deprecated: https://github.com/thoughtbot/expandable-recycler-view/pull/235


Build error with libguarded on XCode 8, OS X 10.11

https://travis-ci.org/GMLC-TDC/HELICS-src/builds/377525171
The build fails with the error 'shared_timed_mutex' is unavailable: introduced in macOS 10.12 in the ordered_guarded and shared_guarded headers from libguarded
Travis config that can be used when triggering a build manually: https://gist.github.com/nightlark/c18b3bcedac2fd40ef4dbd60dfa8604a

how would I trigger this on a different branch?

My best guess for what is going on is that.  the templates have a default of shared_timed_mutex.    There are some platforms this is not available.  But as it is a template parameter that never gets instantiated it isn't a big deal, since HELICS already detects that and doesn't try to use it.    What seems to be happening in xcode 8.0 is that that type got mapped to some interesting code that produces an error and spits out a message about it being available in a later version.    So instead of just kind of ignoring it in a template it now produces an error since the template is ill defined.   Creative, on the maintainers part but screws up in this case as we are not actually using the type, the name was just a place holder that never got used.    Had to rig a #define to bypass the default template parameter.    I want to see if this works in the cxx_shared_reword before making a PR.

On the Travis CI website for Helics there's a trigger build option under more options drop down in the upper right part of the page -- the target branch can be selected, and the yaml file in the gist can be copied as the config to use in the triggered build.

I think I got this to run,  had to modify the script to use cxx_shared_rework branch
But the fixes seemed to have worked.
travis


Separate the internal and external user ID in the session (GSI-663)

So far, the Session objects contained a single field for storing the user ID, which was the internal user ID if the user was already registered, and the external user ID otherwise.
To avoid this dual use of the same field and to support showing the external ID on the profile page for an already registered user, the session now has two fields, corresponding to the same fields in the User model.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 16 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 92.795%

Totals

Change from base Build<PHONE_NUMBER>:
0.01%

Covered Lines:
1391

Relevant Lines:
1499

💛  - Coveralls


WIP: ECoG channel type

Closes #2661.
Ready for review/merge from my end.
@choldgraf can you try it out a bit see if it works decently? I'm especially curious if the values chosen for plotting make sense.

Sounds good - is there any test data for ECoG yet?  It might be tricky to have a single value for ECoG because there are so many recording setups, but I'll try it on some data sets from a few different sites and see if there are differences.

Just try on some of your own. We don't have any native ECoG data format readers coded, so going through *Array class is all we can probably do now anyway (and it's what's done in the tests I wrote).

Cool... I often get ecog data in EDF format actually. Though that's still
highly site dependent
Sent from my phone, apologies for the curtness and type-os
On Apr 22, 2016 9:58 AM, "Eric Larson"<EMAIL_ADDRESS>wrote:
Just try on some of your own. We don't have any native ECoG data format
readers coded, so going through *Array class is all we can probably do now
anyway (and it's what's done in the tests I wrote).
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/mne-tools/mne-python/pull/3157#issuecomment-213512205

I often get ecog data in EDF format actually

If you can get some tiny file, we can add support to our EDF reader

Coverage increased (+0.0005%) to 90.873% when pulling 122d6f0ed043435ca699f3d53410888bd48a2d9c on Eric89GXL:ecog into f202ce34fcd296c5a9727bde808f6aa2383c1b9f on mne-tools:master.

I think you're missing some scalings information in the docstrings (e.g., plot_raw and accompanying method for the Raw object). When I plotted some data the scalings were too high, and my lines looked flat. But again this could be a site-specific thing. I'm trying to track down some "totally raw" data that hasn't been processed at all.

Can you try playing with these values in mne/defaults.py to try to get something reasonable? Hopefully that's enough to get you going. In particular, scalings=dict(..., seeg=1e4, ..., ecog=1e6) right now, so maybe ecog needs to be 1e4 as well. Not sure.
Feel free to open a PR into my branch if you're motivated, or tell me the values that work well and I'll put it in. We might as well make the scalings work for your data, and hope it generalizes well to data from other people.

Or actually scalings_plot_raw = dict(..., seeg=1e-5, bio=1e-6, ecog=1e6) might need to change. I think I meant to make that 1e-6!

Changing to WIP until @choldgraf is happy :)

So the defaults assume that the data is stored in volts (for electrical signals) right? I looked through a few of our lab's data and it's actually stored in microvolts, so it's basically already been scaled. That said, 1e6 is probably correct if you're assuming that people are loading it in in volts.

Actually looking at a bunch of channels, it's often in "hundreds of millivolts", so maybe 1e-4 (also realized I missed the negation in the exponent too in my previous comment). e.g.:

Are your data usually recorded from the  as EDF? Maybe it would be
informative to work directly from one of those files. Feel free to ping me
privately if you have one to share non-publicly, or better upload somewhere
if you have a small EDF file we could add to the test dataset. I suspect
we'll want to assume or convert data to units of V to be consistent with
the rest of the package and channel types.

From the hardware, I mean (silly mobile)

Sometimes they're recorded in EDF, but not always. Our lab gets data from a bunch of different hospitals, each with their own way of doing things (e.g., different recording systems, different storage systems, different data formats). It's actually kind of hard to find data that's totally "raw", but the edf file that I loaded for the pic above was pretty close to that. I think it's fine to expect units in V, so maybe 1e-4 is the way to go.

So what variable needs changing, the raw one? Then good to go from your end?

Scaling fixed, ready for review/merge from my end. If the scalings are off a little bit we can tweak as use cases pop up.

Coverage increased (+0.006%) to 90.816% when pulling f9ae89d72230ba004be6fdcbf028061b6186b43b on Eric89GXL:ecog into 1c2791dc6447678957f3c00b1f44d4dd6f600cd0 on mne-tools:master.

Thanks @jaeilepp comments addressed

LGTM

Coverage decreased (-35.4%) to 55.376% when pulling b0260cb7ec9379b1ae9cac375f5cc26d97064d54 on Eric89GXL:ecog into 1c2791dc6447678957f3c00b1f44d4dd6f600cd0 on mne-tools:master.

Cool! @Eric89GXL maybe we should chat in an issue / PR about figuring out some good testing data etc for ecog development?

Sure, or on Gitter if now is good.

Hopefully I'm re-submitting this paper sometime between today and
Wednesday, so can I ping you after that? :)
On Mon, Apr 25, 2016 at 9:28 AM, Eric Larson<EMAIL_ADDRESS>wrote:

Sure, or on Gitter if now is good.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/mne-tools/mne-python/pull/3157#issuecomment-214430134

Yeah sounds good

Is there any input you'd like from me on this PR? Just making sure I'm not holding anything up...

Nope, this one's good to go

thanks @Eric89GXL !


Node.js 12 actions are deprecated

Hello,
I just started to use this action and it's perfect but I get a warning message from github :

Node.js 12 actions are deprecated. Please update the following actions to use Node.js 16<EMAIL_ADDRESS>For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/.

What can I do for it ?

Hello, @Zehir
Thank you for your issue.
I will update the version of NodeJS for the very close time.

@Zehir
I've released the new version. Please, check it and close the issue if it is done.

Perfect no more warnings thanks


[Package Request]: BellSoft Liberica NIK

How can we help?
I would like someone else to build the manifest.
Please read and ensure the following

[X] The installer meets the above requirements

Please provide the following information
Download Page Url: https://bell-sw.com/pages/downloads/native-image-kit/, https://github.com/bell-sw/LibericaNIK/releases
Publisher: BellSoft
Package Name: BellSoft.LibericaNIK
Description: A versatile tool for accelerating your applications. Liberica NIK is a multilingual tool that transforms your applications into performant native images. Based on GraalVM Open Source
Package Version: Variants for JDK 17, 21, and 22 and with three flavors: Full, Standard, Core
Installer URL: https://github.com/bell-sw/LibericaNIK/releases/download/23.0.5+1-17.0.12+10/bellsoft-liberica-vm-openjdk17.0.12+10-23.0.5+1-windows-amd64.msi, https://github.com/bell-sw/LibericaNIK/releases/download/23.0.5+1-17.0.12+10/bellsoft-liberica-vm-core-openjdk17.0.12+10-23.0.5+1-windows-amd64.msi, etc.

Hi @rollingmoai,
Do you have the ability to access "Tasks" feature? Could you please add a task list and separate variants & flavors for the them? Or could you please add a table for telling them apart?

There're 2 linked pull requests of this issue. ❤
Are you willing to submit manifests on your own? I don't have enough bandwidth for downloading and inspecting the installer file 😞

Do you have the ability to access "Tasks" feature? Could you please add a task list and separate variants & flavors for the them? Or could you please add a table for telling them apart?

@Dragon1573 Here you go:
### NIK 22 (JDK 11)
- [ ] https://github.com/microsoft/winget-pkgs/pull/166296
- [ ] https://github.com/microsoft/winget-pkgs/pull/166302
- [ ] https://github.com/microsoft/winget-pkgs/pull/166303

### NIK 23 (JDK 17)
- [ ] https://github.com/microsoft/winget-pkgs/pull/166314
- [ ] https://github.com/microsoft/winget-pkgs/pull/166313
- [ ] https://github.com/microsoft/winget-pkgs/pull/166312

### NIK 23 (JDK 21)
- [ ] https://github.com/microsoft/winget-pkgs/pull/166332
- [ ] https://github.com/microsoft/winget-pkgs/pull/166331
- [ ] https://github.com/microsoft/winget-pkgs/pull/166333

### NIK 24 (JDK 22)
- [ ] https://github.com/microsoft/winget-pkgs/pull/166338
- [ ] https://github.com/microsoft/winget-pkgs/pull/166339
- [ ] https://github.com/microsoft/winget-pkgs/pull/166337
- [ ] https://github.com/microsoft/winget-pkgs/pull/166336

Notes:

Standard versions should not have a .Standard prefix (Similar to LibericaJDK; the "Standard" word does not appear in the DisplayName anyway)
Packages are grouped with the NIK version first, then the JDK version (e.g., BellSoft.LibericaNIK.24.JDK22.Full, BellSoft.LibericaNIK.24.JDK22).

Here you go:
(edit: seems like the Tasklists feature isn't enabled for this org)

"Task Lists" feature is definitely enabled in this organization, but it seems a beta feature for small amount of users. It also limits access to issue author in their first comment of the issue. Only @rollingmoai can add them to https://github.com/microsoft/winget-pkgs/issues/165799#issue-2444276676.

"Task Lists" feature is definitely enabled in this organization, but it seems a beta feature for small amount of users. It also limits access to issue author in their first comment of the issue.

It was giving me a preview before I commented, so that was misleading 😅.

CC @PakhomGolynga (just to let you know, since it seems like you maintain the Liberica packages in here)


Relative paths cannot be included recursively

Describe the bug
we use several repositories with the following structure

a common repository that contains several modules with the basic gql schemas
service repositories that extend and reuse the basic gql schemas

In the current plugin version, if the link to a common repository is specified in glob format - common schemas will not be included recursively.
But it works if you specify a link to the schema file directly.
To Reproduce
I created a repository that simulates the project structure
https://github.com/alexander-skoblikov/graphql-intellij-plugin-relative-recursive-path
Expected behavior
models are imported recursively and are available in the service repository, as in the case when the path to the scheme is specified explicitly

Actual behavior
models are not imported recursively and are not available in services repositories

Version and Environment Details
Operation system: MacOS Ventura 13.6.4
IDE name and version: IntelliJ IDEA 2024.1.2 Build #IU-241.17011.79, built on May 22, 2024
Plugin version: 241.14494.150

Specifying a path to a single file that is out of the current module scope is supported, though is not recommended. It's mostly a hack for some specific scenarios the users reported before. Overall, we aim to align our plugin's functionality with the graphql-config library. It explicitly requires creating a single configuration file for monorepos, with sub-projects configured using the projects key. More info is available in our docs and in the graphql-config docs.


Descriptor from_str parser does not allow newline characters in miniscript

It errors with Error::Unprintable

Should it? The descriptor BIP does not state anything about the newline character. I don't think it is a good idea as it will also accept checksum.


Unsigned saml assertions are not rejected

According to saml standard, it is better to validate all assertions and reject if they are any unsigned assertions. I hope we are not following this. is this needed to be done?

Only one assertion is allowed in saml response according to code. So, the issue never arise. Closing the same.


Status bar not visible on Galaxy S8+

Hi there, thanks for making the plugin.
I cannot get this work correctly on my Galaxy S8+ device (running Android 8.0.0).
Unity version: 2018.0.0f2.
OS: Windows 10
I have included the AndroidManifest and the AAR files in:
Assets/Plugins/Android/
In the Start method of one of my scripts I have set Screen.fullScreen = false;
Behavior on my device is that the status bar is only visible when you swipe from the bottom of the screen or the top of the screen.

There was a bug in Unity when fullScreen = false didn't work.
Your Unity version seems to be incorrect; I expect it to be 18.1, in that case please update to the latest patch release or to 18.2.


x-ms-logical-operation-extension

In some scenario, we could want to generate only one SDK operation, from several operations in the Swagger. The x-ms-logical-operation-extension would allow to annotate an operation, in order to explain how to group them.
This intended to fix situation where the input parameters can be anything (bytes or JSON) for instance. This is solved in OAI3, since you can specify different types per content-type, but there is no such thing avialable in Swagger 2
This is NOT intended to group operations that have radical different set of parameters or return type (exact validation TBD).
This could be implemented as overload in C#/Java and multiple input type in other language like Python
Useful for FormRecognizer at least.

Let's hold on on that, after discussion with Johan

From @lmazuel

Swagger with multiple serializable content-type, should just generate OAI3 with multiple content with same model. I think it's fair here, and we should not make it complicated (with OAI3 we could say JSON -> Model, XML -> XmlModel, but not here)
I agree with Darell and Johan that generator should NOT need x-ms-logical-operation, and should be smart enoguh when they see different format to generate smart code. Just need to see what medita-type were in Swager using m4
What that smart code is, I think it's language dependent:

C#/Java can generated one overload per media_type
Python can introspect the input type to decide how to serialize it on the fly

In both language, we will need the virtual parameter you specify at least for binary (JPEG or TIFF?)

I'm ok with that.
If we don't force an operation to be split with x-ms-paths and x-ms-logical-operation, then

the schema that's specified is always just for object serialization schema/body parameter would be ignored completely for binary payloads.

we would be implicitly adding the additional request in the operation when there is both kinds (object and binary)

multiple binary formats in one request would necessitate inferring a header parameter for content-type (or maybe for binary types we always infer a content-type header parameter, and it would be a constant when there is only one possible value)

Anyone who lazily throws multiple consumes content types may get more than they ask for (which is OK by me, it's their lousy swagger!)

If there are multiple object serialization media types we

pick the first ?
Favor JSON ?
Error  ?
add a content-type parameter?

This would require the least change on inputs, (as I can do this all in the core and m4) and you'd get the most flexibility for the user (with the expectation that weird input means weird output)

Answer

If I have PDF + text/plain + application/json, I guess it's fair to let generator have their own mapping (we know by design text/* is text, and application/* is binary in general)
Yes, let's add the optional parameter as you describe
Yes
S*** in, S*** out :p
I would add a parameter with JSON as default, or first if no JSON

@johanste to shine as well

Will follow up in https://github.com/Azure/autorest.modelerfour/issues/163


Can no longer sync extensions by copying extensions folder because of new extensions.json file

Does this issue occur when all extensions are disabled?: N/A

VS Code Version: 1.74.0
OS Version: 2 Windows machines with different extension paths and/or usernames.
This more than likely replicates as an issue on non-windows machines but I haven't tested it.

Steps to Reproduce:

Copy %userprofile%\.vscode\extensions from one machine to another. Both with active vscode installations.
Launch vscode on secondary machine.
The machine with the copy of the extensions folder doesn't load any extensions.
Close vscode on secondary machine.
Change all instances of the fsPath property in %userprofile%\.vscode\extensions\extensions.json to match the new machine's username ex "fsPath":"c:\\Users\\USER1\\.vscode\\extensions\\author.extensionID" into "fsPath":"c:\\Users\\USER2\\.vscode\\extensions\\author.extensionID"
Re-launch vscode on second machine.
Note that extensions now load correctly.

I don't know when this extensions.json file was added but previously doing this copy paste procedure of the extensions folder simply copied all installed extensions without issue. Now the newly added extensions.json file must be altered for it to work. This makes syncing extensions to a machine by USB or file-sync significantly more annoying.

actually this is the case for the past 4~5 versions on insiders as well.

extensions.json was introduced to support our upcoming profiles feature and we made sure to support all existing scenarios like picking up the extension when copy/pasted manually. Did you try copying the extensions in the destination folder while VS Code is up and running on the second machine?

Based on your comment I tried the following:

Delete extensions folder on machine 2.
Open vscode on machine 2.
Wait for extensions folder to be re-created with empty extensions.json.
Paste all extensions into extensions folder but don't copy extensions.json file from machine 1.
The same 2 extensions are consistently added to the extensions.json while the rest (~21 others) are not. These two are always azemoh.theme-onedark and valentjn.vscode-ltex.
Leaving vscode off when doing the copy results in no extensions being added to extensions.json

There are many extensions that are not detected and added to the extensions.json.
Vscode should not have to remain open when copying extensions files.
I don't know how this profiles system is supposed to work, but vscode should be smart enough to realize that there are extensions in the extension folder that are not detected as installed and should add them to this new extensions.json so that they may work correctly.
Is the proper procedure not to copy this new extensions.json file?

You don't even need to change machines. Just move the vscode folder to another location on the same machine and you loose the extensions. This is at odds with the current documentation for a portable install and is exceedingly annoying.

@UttermostUsername Just to confirm, when you copied 21 extensions, only 2 of them are added ? Does VS Code is open all the time during that?

Vscode should not have to remain open when copying extensions files.

Agreed. I will look into fixing this.

You don't even need to change machines. Just move the vscode folder to another location on the same machine and you loose the extensions. This is at odds with the current documentation for a portable install and is exceedingly annoying.

Can you please elaborate your scenario? Are you using portable VS Code? Can you please provide steps to reproduce?

I am using VS Code portable and came across this problem. I used to install the extensions in VSCode portable in data/extensions directory and afterwards pack and transfer VSCode portable to another path or computer. Now, the extensions list is empty probably because the original paths are hardcoded in extensions.json.

I think you are hitting this - https://github.com/microsoft/vscode/issues/165447

@sandy081 If you follow exactly the instructions at https://code.visualstudio.com/docs/editor/portable#_migrate-to-portable-mode to migrate to portable mode, the extensions vanish. (I'm using Windows 10, VSCode 1.74.0). I did move rather than copy the data and code directories. This may be important, otherwise it might find things in the original location.
In addition, if you re-install the extensions in the portable installation after following the referenced instructions, and then move the whole portable directory from say d:\vscode to e:\vscode, the extensions will vanish again.

@keck9939 Agreed. Filed a separate bug https://github.com/microsoft/vscode/issues/169006 for this.

@sandy081

@UttermostUsername Just to confirm, when you copied 21 extensions, only 2 of them are added ? Does VS Code is open all the time during that?

I copied 22 (previous number was a guess now I have counted) extensions from machine 1's extension folder into machine 2's extension folder and only 2 of them were added to the extensions.json (which as a consequence meant only those 2 worked in the vscode on machine 2).
Vscode was open the entire time the copying happened and I selected the "reload window" option when it indicated that it detected extensions changed on disk (the copying was finished when this popup appears). When vscode is not open 0 extensions are detected so clearly it is doing something different when active.
I retried this procedure multiple times and, as indicated prior, the same 2 extensions were the only ones detected. I know the other extensions aren't broken because copying the extensions.json from machine 1 into machine 2 and then using find-and-replace to fix all the paths in extensions.json on machine 2, results in all the extensions (that were copied over and not detected) being detected correctly.

Fix for https://github.com/microsoft/vscode/issues/169006 also fixes this issue. extensions.json file now stores the relative path of the extension in the extensions folder. So when you copy the extensions folder across machines, this will work. Hence closing this as fixed.

I tested the Visual Studio Code Insiders version 1.75.0-insider.
It appears to correctly migrate extensions between different machines with different paths even when vscode is not on during the copy. The copy includes all extension files including the extensions.json file. It also appears that the fspath property is now location and the value is relative as you indicated.
I can confirm the issue appears fixed on the insiders version indicated. I look forward to the new version release. Thank you.

I also tested the Visual Studio Code Insiders version 1.75.0-insider. And works by move vscode folder to another location.

Adding verified tag as the fix is confirmed by the users


refactor: Updated to obtain consistency with this repo's JavaScript counterpart

JavaScript counterpart: electron/electron-quick-start
Changes:

Updated all devDependencies to the latest version
Added a main to the package.json and changed start script to use electron .
Matched the renderer.ts file's comments to the JavaScript counterpart's renderer.js file
Matched the main.ts file's format  to the JavaScript counterpart's main.js file, but modified some content to use TypeScript syntax

@ckerr @vanessayuenn

This is very nice, thanks a lot.


fix: Ignore non-JSX files in views folder

Removes .ts and .js from extension list, making them ignored.
Shows a warning message if sees any .ts or .js files in /views.
Changes test files extensions to .tsx and .jsx and adds a couple of .js and .ts files, which shouldn't be processes by the plugin.
Fixes https://github.com/vaadin/hilla/issues/2248

Tested with the attached project in https://github.com/vaadin/copilot-internal/issues/1197 and the app works as expected now.


Doesn't properly render UTF-8 strikethrough characters

Description of the problem or steps to reproduce

Create a file with s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶ as contents
Open said file with micro

Greeted with this:

Here's how it looks like in vim:

This is a really minor issue, to be honest.
For info, the strikethrough character is 0xCCB6
Specifications
Commit hash: f6a9c48
OS: Arch Linux 5.5.2-arch1-1 x64
Terminal: xfce4-terminal <IP_ADDRESS> (Xfce 4.14)

I don't know when it was fixed, but it seems to be working now, so I'm closing this issue :+1:

Specifications
Version: 2.0.10
Commit hash: b9763856
Compiled on August 27, 2021


"Start at login" doesn't just start, it also opens a window

Describe the bug
"Start at login" checkbox doesn't just start, it also opens a window upon startup which is not desired.
To Reproduce

Check "start at login"
Restart
Observe an opened orbstack window

Expected behavior
no window is open but orbstack is started
Diagnostic report (REQUIRED)
OrbStack info:
Version: 1.7.4
Commit: e03df71b90121e11c379c6273bd0a63166b33957 (v1.7.4)
System info:
macOS: 12.7.2 (21G1974)
CPU: arm64, 10 cores
CPU model: Apple M1 Max
Model: MacBookPro18,4
Memory: 32 GiB
Full report: https://orbstack.dev/_admin/diag/orbstack-diagreport_2024-09-27T20-14-44.336197Z.zip

Screenshots and additional context (optional)
No response

Improved for the next version.

Released in v1.7.5.

@kdrag0n thank you very much!

@kdrag0n I'm on Version 1.7.5 (18165) and nothing has changed, am I missing something?

This can only be supported on macOS 13 and newer.


remove dynamicrestmapper which is deprecated

Description
Remove github.com/operator-framework/operator-sdk/pkg/restmapper which was deprecated in the version 0.14.0 in favor of the DynamicRESTMapper implementation in controller-runtime. (#2544)

Hi @estroz, has any reason for we need to wait for wait until v0.17.2?
I do not think that it has relation with.

@estroz It was deprecated in v0.14.x and v0.15.x, so I think we can remove in v0.16.x.
However, maybe since we're just now getting around to writing up the migration guides for v0.13, v0.14, and v0.15, we should hold off until v0.17.x since some users may not yet know about the deprecation.

/hold ( it can be merged just after the SDK v0.16.x release )

Close for now, and re-open when we can merge.


Add OHPCF support as CEM client actor

This OHPCF implementation currently implements read and write.
Events/updates we will support later as we need other use cases in order to check that it works
This was tested with a Vailant heatpump
The public api is quite basic but we can improve it once the events work

Thanks @heavyweight87 for this great start! I will look into at as soon as possible.
Some quick thoughts:

As a target the public APIs should not use SPINE data models, model.SmartEnergyManagementPsDataType is quite complex as well.
If the remote device (heatpump) returns partial data (e.g. notify), the SPINE stack currently has to do a full read, as data merges are not yet supported. So the current state here is not ideal. The current merge doesn't work, as the data structure here is completely different

Looking forward to getting this included

Hi,

I agree there should be some kind of abstraction like you did with LoadLimit. Im not 100% what to add in this struct for now, maybe it will be clearer once the notifications are working (unless you have a suggestion?)
Keo have some very strange abstractions for this usecase

I understand that you are working on adding support for partial reads. I think we will come back to finishing notifications once the other usecases are implemented as we will need to set DHW and room temperatures in order to test it.

I don't have a suggestion at the moment, sadly.
Also I am not working on partial reads, as I do not see a benefit at the moment. It makes things much more complicated. In addition: this would also require a merge for this data structure in SPINE to be available, which is not the case yet.

Whats the idea behind partial reads? Is it just to save data transfers?
I understand an issue may be also that it would be hard to tell which data has changed, but I guess there is an applicative solution to this.
Do you think these issues prevent us from merging these changes?

Think of a function in a feature belonging to an entity to be a database table. This table can contain multiple entries, e.g. LPC and LPP in the same table, so a limit of allowed production or consumption. Now depending on the device, you may only care about consumption. So the code has to be able to fetch the corresponding data points from the table, and also only update the proper datapoints on changes.
To implement the CEM side, it is technically not mandatory, but for the actor compressor it is.
So from a stack perspective, it has to be implemented at some point, as full support for this usecase for all actors can not be implemented.
Now to know what the connected devices current data state is, the stack maintains a digital twin with all known data. So whenever it sends partial data and merge is not supported, it has to make a full read as a workaround.
In addition when providing events to the application, that are as specific as possible, one has to digest the incoming data and know what is changed. For that manual code has to be written anyway.
I can't say if these issues prevent anything, until I fully understand the implementation, the use case spec and see actual data communication to verify.
EEBUS is a monster and it is way too complex. When seeing the public APIs of implemented use cases, you won't recognize that. Only when going down the stack and see what is actually going on.
This is not the complete story, just a quick overview.

Yes it seems extremely over engineered
I hope we arent starting something we can't finish then!

I don't think there will be a showstopper. There will be just work to be done that is a bit more complex than the current code in the PR ;)

I changed this PR to draft mode. Feel free to change that again when you feel it being read for review.

My colleague finished this usecase, he will open a MR when unit tests are added


[Discussion] A way Brands can talk to influencers

Brand will send a request to influencers.
influencer will accept it.
Brand will have to pay a verification charge to make sure its a genuine brand
Then they can communicate over the platform using a message box.

How can this be implemented in the platform

Does we need to create the proposal overview in the pr for this?

Its more like proposing the solution, should we create our own messaging service or should we integrate with any free available bot

@Kajol-Kumari  With considering all the aspects. I had found a solution for this. We can create a collection to store the requests with fields brand_Id, user_id, request status, time stamp. user is able to accept the request. we use any payment gatway integration for paying money. If user accepted and the brand is genuine then they can communicate. For that communication I suggest to build our own messaging service using socket.Io why because currently we are investing money on rapid api. we need to consider the budget also. It is a open source so contributor will take care of building it. after launching the app based upon the responses. we can update the app. then we can update the our messaging service or we can use available messaging services like Twilio Programmable Chat etc. So we can take the benefits of opensource and make the app successful.
I hope you like this plan. Please tell me you opinion.

hmm, i am also tending to create our own messaging service, but If we go ahead with this approach then task bifcurcation of the tasks, can you share what should be the action items in sequence here?

This is for messaging service:

Database Schema: Set up collections for users, messages, and conversations.
WebSocket Server: Implement real-time communication with Socket.IO.
Message Storage: Store and retrieve messages in MongoDB.
API Server: Develop endpoints for message and conversation management.
Frontend Integration: Build a user interface for messaging and integrate WebSocket.

1. Collections

Users: Stores user profiles.

Fields: userId, name, email, userType (brand, influencer), verificationStatus

Messages: Stores chat messages.

Fields: messageId, senderId, receiverId, content, timestamp

Conversations: Manages conversations between users.

Fields: conversationId, participants (array of userIds), lastMessageId, updatedAt

Set Up WebSocket Server
Steps

Initialize Server: Use Socket.IO with a Node.js server.
Authenticate Users: Validate WebSocket connections with user authentication tokens.
Manage Connections: Keep track of connected users and their socket IDs for real-time message delivery.
Handle Events:

connect: Authenticate and register user.
disconnect: Clean up user connection data.
message: Handle incoming messages and broadcast to recipients.

Implement Message Storage and Retrieval
Steps
Message Storage:

On receiving a message, store it in the Messages collection.
Update the corresponding conversation in the Conversations collection.

Message Retrieval:

Create an API endpoint to fetch conversation history.
Use pagination for efficient data retrieval.

@Kajol-Kumari  This is a overview with actions items in sequence. If it is ok then let me know. I will create pr as it is a discussion of level1.

hmm, granularity is still missing but yeah, good way to start, you can document it in a markdown file with issue bifurcation in the same file and raise the pr


Fix errors generated by turning off clang-diagnostic-shadow warning suppression

Seen in #2201 once putting in ROCm 5.7
investigate and fix this error and remove the warning suppression added from this commit.
https://github.com/ROCmSoftwarePlatform/AMDMIGraphX/pull/2201/commits/eb4fe3fee6db1e4dc2b0fa2e063b24ba85f89435

currently coming up in CI for MLIR builds. Need to fix this as part of #2201


Batch testing tool zip not found

Hi the bt.zip file is not found?

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

ID: 858a1c9d-35a7-f809-0fb5-39eec8fca69d
Version Independent ID: 5c8caacd-0943-c97c-7a14-7f5cf0edc83d
Content: How to test a knowledge base - QnA Maker - Azure Cognitive Services
Content Source: articles/cognitive-services/QnAMaker/How-To/test-knowledge-base.md
Service: cognitive-services
Sub-service: qna-maker
GitHub Login: @diberry
Microsoft Alias: diberry

@joe-shields-mccann thanks for reaching out, we'll look into this issue and get back to you shortly.

@joe-shields-mccann Thank you for reporting this. I've reached out to the product group to determine the exact/correct URL. #in-progress

The URL is https://aka.ms/qnamakerbatchtestingtool - I'll update the URL in the doc. #please-close

#please-close


ES6 Module Consumption

When attempting you use a modern bundler (in my case its Rollup http://rollupjs.org/).
I cannot import individual modules that I need because they aren't exported correctly.
Module MY_PROJECT/node_modules/web3-provider-engine/subproviders/rpc.js does not export default (imported by MY_PROJECT/lib/index.js)
Error: Module MY_PROJECT/node_modules/web3-provider-engine/subproviders/rpc.js does not export default (imported by MY_PROJECT/lib/index.js)
at Module.trace (MY_PROJECT/node_modules/rollup/src/Module.js:683:30)
at MY_PROJECT/node_modules/rollup/src/Module.js:265:30
at Array.forEach (native)
at MY_PROJECT/node_modules/rollup/src/Module.js:263:25
at Array.forEach (native)
at Module.bindReferences (MY_PROJECT/node_modules/rollup/src/Module.js:256:19)
at MY_PROJECT/node_modules/rollup/src/Bundle.js:104:44
at Array.forEach (native)
at MY_PROJECT/node_modules/rollup/src/Bundle.js:104:18

@jeffscottward  this is a node.js style module, you'll need to use a transpiler or something

you may need as many as all three node plugins for rollup
https://github.com/rollup/rollup/wiki/Plugins
node-builtins - Allow to use Node.JS built-in packages with rollup
node-globals - injects the same node globals browserify does (i.e process, Buffer, etc)
node-resolve – use the Node.js module resolution algorithm (e.g. modules from node_modules, installed with npm)
This will likely be a requirement for most of the ethereumjs ecosystem if using from rollup

I'm using https://github.com/rollup/rollup-plugin-node-resolve#usage which already has a field for builtins.
Adding the globals plugin I don't think would resolve the issue.
It think nodeResolve is broken?

Error transforming /Users/jeffscottward/Documents/Development/Github/ConsenSys/core/uPort/libs/uport-lib/node_modules/rollup-plugin-node-builtins/src/es6/util.js: 'import' and 'export' may only appear at the top level (26:0) in /Users/jeffscottward/Documents/Development/Github/ConsenSys/core/uPort/libs/uport-lib/node_modules/rollup-plugin-node-builtins/src/es6/util.js
SyntaxError: Error transforming /Users/jeffscottward/Documents/Development/Github/ConsenSys/core/uPort/libs/uport-lib/node_modules/rollup-plugin-node-builtins/src/es6/util.js: 'import' and 'export' may only appear at the top level (26:0) in /Users/jeffscottward/Documents/Development/Github/ConsenSys/core/uPort/libs/uport-lib/node_modules/rollup-plugin-node-builtins/src/es6/util.js

No 🎲

I'm using Webpack instead of rollup and am also experiencing difficulties. After importing
import { Web3ProviderEngine } from 'web3-provider-engine';
and creating an object
var engine =  new Web3ProviderEngine();
I get the error: Web3ProviderEngine is not a constructor function.
The generated javascript looks like this:
var engine = new web3_provider_engine_1.Web3ProviderEngine();
While poking around in the browser I can find the function at the prefix.

Not sure if this is a webpack issue or the way the library is structured. I don't experience this issue with for instance web3 or eth-lightwallet.

Ok got it to work using the following syntax in my code:
import * as Web3ProviderEngine  from 'web3-provider-engine';
import * as RpcSource  from 'web3-provider-engine/subproviders/rpc';
import * as HookedWalletSubprovider from 'web3-provider-engine/subproviders/hooked-wallet';


Translating multiple words.

We need to:

Determine the action that triggers it.
Implement the feature in translation.js

Current solution:

Sentence mode: A tap translates a sentence.
Word mode: A tap translates a word.
We also need to implement a 'merge zeeguu tag' feature to make it all work properly.

Nested tags are not removed, and tags at beginning of sentences cause a range selection problem.


Use Priority queue in chunk graph algorithm

What kind of change does this PR introduce?
algorithmic performance improvement

Did you add tests for your changes?
existing tests

Does this PR introduce a breaking change?
no

What needs to be documented once your changes are merged?
nothing

No longer needed because of #8242


Changed colour text to white for visibility

I have changed colour to white

Thanks for the opportunity! I hope I have made PR correctly.

Thank you for approving my pull request! I appreciate your time and feedback.
I've addressed the changes I mentioned, and I believe the pull request is ready for merging. Please let me know if there's anything else I need do. I'm here to assist in any way, and I look forward to seeing this contribution merged into the project.


Release api_core 1.1.2

This pull request was generated using releasetool.

Release is at https://github.com/GoogleCloudPlatform/google-cloud-python/releases/tag/api_core-1.1.2


make polygon a vector of rings

polygon currently has individual exterior_ring and interior_rings members.
It would be easier to work with in certain cases (notably GeoJSON serialization/deserialization) if it instead inherited from std::vector<linear_ring<T>>, where the exterior ring was element 0 and interior rings followed.

Having clear distinction between exterior ring and interior rings makes it easier to work when OGC geometry model is expected - WKT, WKB(postgis), boost::geometry.
Explicit is better in this case. We used to have  where the exterior ring was element 0 and interior rings followed in mapnik and it was causing more issue then solving.

The further I get with integrating geometry.hpp and exploring how we'd write algorithms, the more I'm convinced that polygon should be a simple vector of rings. Uniformity and harmony with the other geometry.hpp types and with GeoJSON is more important than conformance with OGC in this case.
Unless there are vehement objections, I'm going to pull 6b52596ec0efd0c5b6530782a79175428bce01f2 into the next release.

Good to know your experience here @jfirebaugh. I've found this design without limitations myself, but I'm open to considering the merits of this. However I do cringe as it would require large updates to mapnik-vector-tile if we adapted to the latest geometry (https://github.com/mapbox/mapnik-vector-tile/search?utf8=✓&q=interior_rings) and the distinction has felt very useful.

@springmeyer: from what I can see it will make mapnik code much shorter and simpler too.  Here, here, here, here, here, here. In fact I found only a single place where exterior and interior rings were treated differently. All other uses will benefit from keeping all rings in a single vector.

Done in 3d55ece763c25a390b31142863b3e5dbab010fd2.
Here's an example of how this enables writing concise generic algorithms.

Here's an example of how this enables writing concise generic algorithms.

Ooooo. Nice @jfirebaugh! 🙌

@jfirebaugh - one thought: In Mapnik, for best performance with polygons with lots of holes, we only use the exterior ring to determine the envelope: https://github.com/mapnik/mapnik/blob/d97583b53e134ca916aebbf9abbc4e8a5851d41f/include/mapnik/geometry_envelope_impl.hpp#L80-L95. How about specializing on multipolygon to avoid those extra loops?

After thinking about this for some time I am not convinced this is the best decision. @artemp is right in that it is very hard to adapt this to something like boost. For example look at the code where I am trying to adapt boost geometry to geometry.hpp:
template <typename CoordinateType>
struct exterior_ring<mapbox::geometry::polygon<CoordinateType> >
{
    static mapbox::geometry::linear_ring<CoordinateType> & get(mapbox::geometry::polygon<CoordinateType> & p)
    {
        return p.exterior_ring;
    }

    static mapbox::geometry::linear_ring<CoordinateType> const& get(mapbox::geometry::polygon<CoordinateType> const& p)
    {
        return p.exterior_ring;
    }
};

template <typename CoordinateType>
struct interior_rings<mapbox::geometry::polygon<CoordinateType> >
{
    using holes_type = typename mapbox::geometry::polygon<CoordinateType>::rings_container;
    static holes_type&  get(mapbox::geometry::polygon<CoordinateType> & p)
    {
        return p.interior_rings;
    }

    static holes_type const& get(mapbox::geometry::polygon<CoordinateType> const& p)
    {
        return p.interior_rings;
    }
};

The problems here is that I am not able to provide easily a reference of a std::vector that is a portion of a std::vector for interior rings and what am I supposed to do if there is no first ring in the vector or linear rings? Again, this is passed as a reference, so even if I made a temporary empty linear ring it would go out of scope.

You can use a boost iterator_range to model interior rings. Here's a proof of concept:
https://gist.github.com/jfirebaugh/c5e07939b6c4a5b975e20b966e371e3b

@jfirebaugh - iterator_range doesn't cut it unfortunately. Mutating algorithms e.g clipping needs to be able to resize/reserve internally
boost::geometry::intersection(bbox, polygon, result);

error: no member named 'resize' in 'boost::iterator_range<std::__1::__wrap_iter<mapbox::geometry::linear_ring<double, std::vector> *> >'
                interior_rings(destination).resize(

It seems that this will be inconvenient either way, especially when trying to work with boost geometry, but I'm still in favour of vector of rings — doing otherwise will make a lot of geojson-vt-cpp/geojson-cpp code much more verbose and complicated.

@artemp This example compiles for me with Boost 1.61.0. In any case, these are proofs of concept -- whether or not it works for all boost geometry algorithms without additional wrappers or trait definitions, I think it's clear that the current definition of polygon does not preclude the use of boost, despite the fact that one of the reasons we started geometry.hpp was explicitly to avoid using boost geometry!
There is zero doubt in my mind that the current design of polygon is the correct one, and I suspect that once you start to write or rewrite algorithms using it, you will come to appreciate the advantages of a uniform container structure for line strings, polygons, rings, and multi-geometries.

@jfirebaugh  The examples compiles but :

If you change mapbox::geometry::polygon<double> result; to be

container<mapbox::geometry::polygon<double>> result;

which is what you'd expect as result from intersection,  it fails to compile.

There's also subtle issue with boost::geometry::polygon concepts expects exterior_ring to be initialised e.g return p.at(0); <-- with current vector of rings polygon this statement throws.

/cc @springmeyer @jfirebaugh @flippmoke @mourner

I opened a ticket regarding the resize issue. My guess is it is an undocumented requirement and we will need add resize to the wrapper type. Here's an example that does compile.
Regarding at(0), I think this should be handled by making validity checks where necessary prior to calling boost algorithms. This can be a simple if (polygon.empty() || !boost::geometry::is_valid(polygon)) { throw std::runtime_error(...); }

@jfirebaugh - https://gist.github.com/jfirebaugh/98e961c9be11990ac6aadea21bc1683e#file-boost3-cpp-L33 - unfortunately doesn't work, calling resize might invalidate iterators.

It would be easier to work with in certain cases (notably GeoJSON serialization/deserialization) if it instead inherited from std::vector<linear_ring>, where the exterior ring was element 0 and interior rings followed.

The desired interface is easily achieved by implementing "rings iterator" e.g
namespace mapbox { namespace geometry {

template <typename T>
struct point
{
    using coordinate_type = T;
    point()
        : x(), y()
    {}
    point(T x_, T y_)
        : x(x_), y(y_)
    {}
    T x;
    T y;
};

template <typename T>
bool operator==(point<T> const& lhs, point<T> const& rhs)
{
    return lhs.x == rhs.x && lhs.y == rhs.y;
}

template <typename T>
bool operator!=(point<T> const& lhs, point<T> const& rhs)
{
    return lhs.x != rhs.x || lhs.y != rhs.y;
}

template <typename T, template <typename...> class Cont = std::vector>
struct linear_ring : Cont<point<T>>
{
    using coordinate_type = T;
    using point_type = point<T>;
    using container_type = Cont<point_type>;
    using container_type::container_type;
};

template <typename T, template <typename...> class Cont = std::vector>
struct polygon
{
    using coordinate_type = T;
    using linear_ring_type = linear_ring<T>;
    using container_type = Cont<linear_ring_type>;
    linear_ring_type exterior_ring;
    container_type interior_rings;

    class rings_iterator : public boost::iterator_facade<rings_iterator,
                                                         linear_ring_type const,
                                                         boost::forward_traversal_tag>
    {
    public:
        using value_type = linear_ring_type;
        rings_iterator(std::size_t end)
            : poly_(nullptr), pos_(end) {}
        rings_iterator(polygon const& poly)
            : poly_(&poly), pos_(0) {}
    private:
        friend class boost::iterator_core_access;
        void increment() { ++pos_;}
        void decrement() {} // no-op
        void advance(typename boost::iterator_difference<rings_iterator>::type) {} // no-op
        bool equal( rings_iterator const& other) const
        {
            return (pos_ == other.pos_);
        }
        value_type const& dereference() const
        {
            if (pos_ == 0) return poly_->exterior_ring;
            else return poly_->interior_rings.at(pos_ - 1);
        }
        polygon const* poly_;
        std::size_t pos_;
    };

    rings_iterator begin() { return rings_iterator(*this); }
    rings_iterator end() { return rings_iterator(interior_rings.size() + 1); }
};

 mapbox::geometry::polygon<double> poly;
 // .......
for (auto const& ring : poly)
{
    std::cerr << ring.size() << std::endl;
}

calling resize might invalidate iterators

True. I think this goes back to the boost issue I filed. If resize is a requirement on the result of interior_rings(), boost needs to define its invalidation semantics, or guarantee that after resize (or any other operation which might invalidate the range) interior_rings() is always called again to obtain a fresh range (as appears to in fact be the case).

https://github.com/mapnik/mapnik/blob/geometry-refactor/include/mapnik/geometry/polygon.hpp
^ this is what I had to implement in order to adapt to boost.geometry properly. As I mentioned above, using iterator range doesn't fulfil requirements for mutating algorithm. I'll need to investigate implications for mapnik in terms of memory usage and performance before deciding about merging into mapnik/master. On the brighter side - all tests are passing in mapnik now.
I have to say, I'm still totally unconvinced that not having explicit exterior ring in Polygon is a good model - on the contrary, while it makes mapping into GeoJSON easier it doesn't fit well into geometry concepts on the whole (beyond a simple data format). I'm worried that this might become a rather short-sighted solution, but hey, you've been warned :)
/cc @springmeyer @jfirebaugh @flippmoke

@flippmoke  @springmeyer @jfirebaugh
mapnik-vector-tile https://github.com/mapbox/mapnik-vector-tile/tree/geometry-refactor


Homework-13: Initial Commit

All Products

Search result:

Sort Result:

Filtered result:

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
4

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Metric
Value

alert_status
:white_check_mark: OK

bugs
0

code_smells
4

reliability_rating
A (0 Bugs)Note: A being best, E being worst

security_rating
A (0 Vulnerabilities)Note: A being best, E being worst

vulnerabilities
0

Go through the code smells
The commit messages must be in the past
Work on the directory structure and modularity


Benchmark based on CoralBlocks

Vlad, can the nutty benchmarking code be released under Apache 2.0?

I am not 100% sure. Technically netty and netlet benchmarks are based on Echo client/server measuring average/min/max time for the server to receive data from the client and packets round trip time for the client.

I'll look into using org.apache.commons.math3.stat.Frequency instead of Benchmark class.


Mgmt-Lite: update automation

/check-enforcer override

/check-enforcer override

The test fail is not caused by the PR.

The test fail is not caused by the PR.


Option to highlight fromView

Add 2 variables: highlightFromView: Bool and highlightCornerRadius: CGFloat.
When enable highlightFromView, the result will be like this (with highlightCornerRadius = 8.0):

(It's showing 4 commits but actually there's only the last one. I think I messed up something in my github repository)

Thanks, PR. 👍


[NETBEANS-1043]:Fixed updation of method-reference upon refactor move of method

… of method

I had implemented in last commit review comments of @rtaneja1 @vikasprabhakar

Any reason not to merge this?


Updated Swahili

Thank you. Nitafanya ipasavyo!

hi, could you go through the whole file please and make sure all the markdown matches the README.md format - for example match the use of ##, ### and #### if there are any. Also the header 'Windows' is duplicated. thank you!

COMPLETE!


Add support to Redmine 3.1.x

Superb plugin and it would be very great if you can add the compatibility with Redmine 3.x and higher

I suspect it is. Did you encounter any error?
One person said it worked for 3.0.3. https://www.redmine.org/plugins/redmine_pivot_table

I was able to install it, but the tab "Pivot" is empty (see attachment).

I see. Your Redmine and browser version?

Here thery are:

Redmine: 3.1.0
Browser: Chrome 46.0.2478.0 dev-m (64-bit)

I have setup clean 3.1.0 stable with bitnami redmine, and the plugin worked fine.
It seems to be some modification or the installed plugin is causing your problem.

I uninstalled all the plugins one by one, and the issue is still there :-(
However, I tried to enable the plugin on another project (same Redmine, same database, same plugins), and it works.
So the issue sems to be related to that particular project.

Alright. Let me close this then. Let me know if you find out any possible cause.

I continued the investigation and the tests...
I took one of my project on which the plugin seems to work. I used it without any problem. However, once I check "Issue closed", the bug comes back (no pivot table displayed).
When the "issue closed" is disabled, there are 34 issues (Pivot table displayed)
When the "issue closed" is enabled, there are 106 issues. (No pivot table displayed)
When I go back to the first project, I have the following volume of data:

Open issue only = 147 tickets (No pivot table displayed)
Open + closed issues = 218 tickets. (No pivot table displayed)

Do you think the number of tickets might be the root cause of the problem?

I have created 200+ dummy tickets in Redmine 3.1.1, with some closed and some open status, and found no issue.
My guess now is that there are some unhandled cases in your 106 - 34 = 72 issues. Maybe one of them has special characters in the Notes, etc. If you can re-open the 106 closed issues in some bulk size at a time, maybe you can track down whether it is a issue specific problem or not.
Press F12 when you encounter error, to see if there is a javascript error.

When I checked the "Issue closed" option, I got a Javascript error "Uncaught SyntaxError: Unexpected token " on the following line:
data = [ {
        "ID": '<ahref=\"/issues/40\">40<\/a>',
        "Project": '<ahref=\"/projects/xxx\">xxx<\/a>',
        "Tracker": 'Bug',
...
            } ];
...

Chrome displays an error on the simple quotes (shouldn't it be double-quotes?).

I figured out the issue.
First, double quotes should be used instead of single quotes, but the root issue is not there.
However, some fields are empties
data = [ {
        "parameter": ,
...
            } ];

The commit #5 fixed that issue.


How to generate summary after loading the model ?

I am new to this, can you please guide me how to generate summary after successfully loading the pretrained model.
I have used this command to load the pretrained model :-
Import torch
Model=torch.load(‘wikisum_model_step_500000.pt’)
Print(model)
This is working fine and printing all the weights, what should i do now ?

Hello Vishal!!
Did you get any solution?

Hello Vishal!!
Did you get any solution?

I switched to BERT Extractive summarizer which is a pretrained model and can be implement with just 3 lines of code.

But extractive doesnt give good results....its contextless

On the other hand, abstractive summarizer will not make proper sentences.
Sent from my iPhone

On 14-Apr-2020, at 10:50 PM, samirkapure<EMAIL_ADDRESS>wrote:

But extractive doesnt give good results....its contextless
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


CCDScan: auto refresh in CCDScan Account's sidebar info. doesn't happen, user has to reload CCDScan again in order to view changes

CCDScan: auto refresh in CCDScan Account's sidebar info. doesn't happen, user has to reload CCDScan again in order to view changes
https://stagenet.ccdscan.io/
Change in Account sidebar related info. e.g. new transactions etc. doesn't reflect unless CCDScan page is reloaded again and then account page is reopened. This doesn't look to be a good user experience. New info. should refresh automatically without having to reload CCDScan site.

Duplicate of
https://github.com/Concordium/concordium-scan/issues/31

Tested in  version 0.1.0/1.0.1. I was not able to confirm the change, issue seems to be persistent. I had to refresh the page to see the changes.
https://images.zenhubusercontent.com/495930068/51960e76-8f36-49f8-abab-8a2ac5983f9f/refreshbeforechange.mp4

This is still an issue on Stagenet (version 0.1.2/1.0.2), https://stagenet.ccdscan.io/?dcount=1&dentity=account&daddress=38TyuhoFn4SY4JyWjPJGLriyn5DBQk7QdnFLcRBB6zvi983gyp
Steps to replicate the issue -
Open Account statement sidebar for an account in CCDScan - open wallet . make a new transaction - let the transaction complete - close and reopen Account Statement sidebar in CCDScan without reloading the account - (Actual behavior) - The new transaction still doesn't show up in Account Statement. It starts showing only after CCDScan page is refreshed.


[Ballerina to OAS] Interceptor Support

Purpose

$subject

Fixes: #5986
See also: #5956

Closing this implementation since there are some gaps to fill:

Resource interceptor matching based on the resource method and path. We should implement a similar approach in dispatcher to compare interceptor path with target resource path. The interceptor is only invokable if the path match.
The logic to find the effective return type should be revisited since it is failing for some common scenarios when there are multiple interceptors.

The new implementation based on this is available in https://github.com/ballerina-platform/openapi-tools/pull/1614


Forego full suite of CI builds for documentation-only changes

Both GitHub Actions and Azure Pipelines can be filtered to only run when certain files are changed.

Skipped Azure Pipelines status checks resolve as neutral which is considered passing for required status checks.
Skipped GitHub Actions status checks do not resolve at all, thus required status checks are left in an "expected" state. In this case, the status check is overridden by the new Skip Check workflow so that required GitHub Actions can be skipped but still recognized as passing.

For an example showing that skipped Azure Pipelines still allow for the PR to be merged, see: https://github.com/mattbjordan/itwinjs-core-mergify/pull/41
For an example of how the status checks will look in itwinjs-core for a PR with only documentation changes, see: https://github.com/iTwin/itwinjs-core/pull/4212.

Why did the itwinjs ci pipeline get triggered from this pr? https://dev.azure.com/bentleycs/iModelTechnologies/_build/results?buildId=1665400&view=results
there are no .ts?x changes in here, just pipeline changes


sqlite3.DatabaseError: database disk image is malformed

another wa exporters works properly, why this throws this issue?

wtsexporter_x64.exe -a Gathering contacts...(446) Traceback (most recent call last):649)   File "C:\Users\yonka\AppData\Local\Temp\ONEFIL~3\__main__.py", line 287, in <module>   File "C:\Users\yonka\AppData\Local\Temp\ONEFIL~3\__main__.py", line 240, in main   File "C:\Users\yonka\AppData\Local\Temp\ONEFIL~3\Whatsapp_Chat_Exporter\extract.py", line 380, in messages sqlite3.DatabaseError: database disk image is malformed

what really strange, is that the DB Browser open the messages column in msgstore.db without any issues

From what I understand, for now, it doesn't seem to be the problem of the exporter itself. I can't really tell why it would happen as I don't have your database file. But if you don't mind, you can send me the database for inspection.
In the meantime, you may try this. Just remember to do a backup for your database.
PS. Could you run the exporter with pip install (i.e., not using the binary)? That should give a more verbose traceback for debugging.


Update QPY Module for Qiskit 1.0

There were some updates made to QPY in qiskit for the 1.0 release, including removing qiskit.extensions https://github.com/Qiskit/qiskit/pull/11488
We'll have to update the QPY module in this repo as well

Fixed with #1377


SVG fails

I'd expect something like this to pass: https://upload.wikimedia.org/wikipedia/commons/e/ed/Logo_of_Unsplash.svg

At the bottom of the image-type README:

SVG isn't included as it requires the whole file to be read, but you can get it here.

Would you be open to adding https://npm.im/is-svg to this lib, or should I go ahead and patch for my use case?
Thanks for the cool lib!

Added this in v1.3.0 into the option options.allowSVG.

Awesome! Thank you so much for the quick update! Your library is very helpful to me! <3

$ npm i verify-image-url


GUI

Is it really necessary? Would you be okay with me stripping it down and adding proper CLI?

I think it is. The script is meant for anyone wanting an easy way to convert messages. And still, I get emails of people having issues with running the Python script. Removing the GUI would be a disaster for them, I guess 😅

I see. What about CLI? I could add it as an option and leave GUI untouched.

Of course, that would be fine

Hi. Firstly, great app! The issue I noticed is that the Android "SMS Back and Restore" app appears to be looking for a file with a prefix of "sms-*.xml" in the filename. It didn't see the generated wp-messages.xml file until I prefixed it with "sms-". This tip may help others. Can you confirm I'm right, and if so, I'll try and create a pull request.


CAMUS dataset

Dear author,

CAMUS dataset only provides ED, ES annotations, could you please let me know where all frame annotated dataset is offered for evaluation?
Could you please let me know about camus split indexes for training, val, and test set?
For SonoSAM, the author of sonosam did not opened their code how did you evaluate on this method? and it needs point prompt for segmentation.

Thank you for your attention.

Official CAMUS  project has published full frame annotations.
See here.
We have only reproduced SonoSAM's method on our data, and the results presented are based on our reproduction only. The point prompts are randomly sampled from Ground Truth.


Update README.md

Some suggested updates to the narrative. Also, I was wondering if it would be better to distinguish between Staking Options (like the BONK ones) and Airdrop Options (or just "Token Options") like the DUAL ones.  Calling the DUAL ones Staking Options is a bit confusing to me, as you don't really stake them, you just exercise them.  Something to consider as the project develops its nomenclature!

Thanks for the feedback. That makes sense.
I do think it will be useful to categorize their uses as you have suggested, with a naming convention.
Will give some more thought to this.  Applied Options is a interesting... applied as in practical / functional - like it.  Applied could also be perceived as "complicated" or "high level" too though perhaps (I think back to "Applied Math" course - ha!).  Here's some other ideas - though I'm not convinced they are better than your suggestion - just spit balling!)... Outcome-Driven Options. Solution-Based Options. Operational Options. Effective Options.


Optimistic Locking

On top of the already built-in race condition protection that only verifies the event version within one handle*() method of a CommandHandler we should add support for explicit optimistic locking.
For this to work, it should be possible to carry the event stream version to the ReadModel (already possible via MessageMetadata). This version could then be added to the command payload and verified in EventSourcedRepository::save().

Resolved with #62


Who has access to the rbtree gem on RubyGems?

Hi there @zzak!
I saw that someone pushed a new version of rbtree (v0.4.4) on January 1, 2021.
Was it you? If so, how did you get access/rights to push the gem under the name rbtree?
The owner of the gem is this profile: https://rubygems.org/profiles/lvfl98xod5hkd1mczt9yiuyoulblcy5z
Which, I believe, belongs to Ozawa Takuma.
Three years ago I made a fork of rbtree and released it as rbtree3 because I couldn't just push to rbtree.
I still maintain it but I am not sure who uses that besides me. It also includes some of the fixes you did here. Not sure if you saw my fork or https://github.com/skade/rbtree, where I was able to obtain the source code. @skade let me know that he also doesn't have access to the rbtree gem on RubyGems.

Looks like @mame is the one pushing rbtree to RubyGems.org? https://github.com/mame/rbtree

Oh wow, so now we have one more rbtree fork, which leads to more confusion.
Great find, @dentarg 😁🤝

Yes, I pushed rbtree 0.4.5 and 0.4.6. Ozawa Takuma gave me a push privilege when I sent him a couple of patches to fix some build errors.
Note that the owner of rbtree gem is still Ozawa-san. When I need to make changes to rbtree, I email the patch to him for review before committing.


validate unsafe code

go over unsafe code and double check it is all valid/makes sense

Step 1 of this endeavor, IMO, is to delete as much unsafe code as possible without tanking benchmarks. Literally delete it all if it still performs well afterward. Undefined behavior is not worth the trouble. How many usages of unsafe in this codebase are motivated by benchmark data, and how many of them are just "well, it ought to be faster this way, and faster is better"?

Step 1 of this endeavor, IMO, is to delete as much unsafe code as possible without tanking benchmarks. Literally delete it all if it still performs well afterward. Undefined behavior is not worth the trouble. How many usages of unsafe in this codebase are motivated by benchmark data, and how many of them are just "well, it ought to be faster this way, and faster is better"?

Yea, I have to go in a bench/profiling -> delete loop for this.
fortunately, there isn't a ton of explicit unsafe code
sadly we are using flecs which can be subtly unsafe even when we arent explicitly using unsafe (although not very often)
biggest place where unsafe code is nice is probably for the BVH stuff, but that isn't being used a ton right now and can be tested/fuzzed pretty thoroughly.

closing as low prio for now


Incorrect dependency for augeasproviders_grub

In the 2.2.1 the augeasproviders_grub dependency is declared as followed:
   { "name": "herculesteam/augeasproviders_grub", "version_requirement": ">3.1.0 <4.0.0" },
augeasproviders_grub was just released and the newest version is 3.1.0, which does not fill the requirements. Dependency should be updated to:
">=3.1.0 <4.0.0"

Created #157 with a PR, closing this out


PHP 5.3 compatibility for arrays

PHP 5.3 compatibility for Older Magento versions, similar to https://github.com/Adyen/magento/commit/2f3bf8aeb00b49e65627d25dff3e96d08ec6496b

Hi pivulic,
Could you do the pull request to our develop brach ?
Regards,
Rik

Will do, is this one better? https://github.com/Adyen/magento/pull/413

yes thanks!


Will this produce different fingerprint for two similar iphones?

Given I have 2 iphones wth a same time zone, same language, same version (iphone 5), same OS (ios 9.3.2), would it result in different fingerprints?

I'm not sure.
I'm tempted to say it would produce the same fingerprint.
If you own a couple iPhones (I don't) you can go to https://browserprint.info and check the fingerprint of each


OpenCV example

Despite easyopencv being included with the SDK, there are no examples of either using it with the vision portal or without it. If you guys are open to adding more examples into the SDK this far into the season, I could work on this and send it over.
While I love the new vision portal API, it's documentation for advanced users is still lacking.

While I am not part of the team, there is an example using OpenCV with the VisionPortal in my free book: https://github.com/alan412/LearnJavaForFTC.  (Section 16.3)

While I love the new vision portal API, it's documentation for advanced users is still lacking.

NB: Truth be told, the VisionPortal API was not really designed with custom team usage of OpenCV in mind (hence e.g. the rather roundabout way the framebuffer must be annotated). It seemed at the time like advanced teams would prefer to simply use the EOCV APIs directly, and call a vision processor object as part of their pipeline if they so desired. However, it seems like a large number of teams prefer the VisionPortal API which runs counter to that assumption.

The next release of the SDK will contain VisionProcessors for using OpenCV to perform blob detection or predominant color determination, along with sample OpModes.


Large responses over stdout not properly received

When I queried a large directory for its contents, it looks like some of the output was dropped from the beginning, resulting in broken json.
My guess is that the logic to gather stdout by line is flawed and needs to be revised.

Resolved by https://github.com/chipsenkbeil/distant.nvim/commit/ea7233fc91c465c3b3c3755c3dcdf0aea298a9ac