lottieStickerMessage

How does the lottieStickerMessage message look and structure? Apart from that, how do I send the message?

I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})

I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})

I've tried it, but it doesn't work.
i use this code >
mypenis.relayMessage(m.chat, {
lottieStickerMessage: {
message: {
stickerMessage: {
url: "https://mmg.whatsapp.net/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0&mms3=true",
fileSha256: "O8o7dVH90uxRfV4CXbsBWs9hWOq8X9oqsWITwPYe3d8=",
fileEncSha256: "a4uXLS+dnKKNBi2ZhoDBNSRX3rSrqsyOI+yC2N8GwOs=",
mediaKey: "+xaBZiHPRNU+oVJ1z2vhrlv6dyvJAveWBNFfNQ8fBco=",
mimetype: "image/webp",
height: "64",
width: "64",
directPath: "/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0",
fileLength: "345740",
mediaKeyTimestamp: "1716088583",
firstFrameLength: "8570",
firstFrameSidecar: "FJIvHupaXJCthA==",
isAnimated: "true",
stickerSentTs: "1716123599201",
isAvatar: "false",
isAiSticker: "false",
isLottie: "true"
}
}
}
}, {});

Have you tested it with sendMessage?
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
15:14:

I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})
I've tried it, but it doesn't work.
i use this code >
mypenis.relayMessage(m.chat, {
lottieStickerMessage: {
message: {
stickerMessage: {
url: "
https://mmg.whatsapp.net/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0&mms3=true
",
fileSha256: "O8o7dVH90uxRfV4CXbsBWs9hWOq8X9oqsWITwPYe3d8=",
fileEncSha256: "a4uXLS+dnKKNBi2ZhoDBNSRX3rSrqsyOI+yC2N8GwOs=",
mediaKey: "+xaBZiHPRNU+oVJ1z2vhrlv6dyvJAveWBNFfNQ8fBco=",
mimetype: "image/webp",
height: "64",
width: "64",
directPath:
"/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0",
fileLength: "345740",
mediaKeyTimestamp: "1716088583",
firstFrameLength: "8570",
firstFrameSidecar: "FJIvHupaXJCthA==",
isAnimated: "true",
stickerSentTs: "1716123599201",
isAvatar: "false",
isAiSticker: "false",
isLottie: "true"
}
}
}
}, {});
—
Reply to this email directly, view it on GitHub
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119234502,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZN3WOJFIP5H5GZIC7LZDCQRVAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGIZTINJQGI
.
You are receiving this because you commented.Message ID:
@.***>

Have you tested it with sendMessage?
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
15:14:

I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})
I've tried it, but it doesn't work.
i use this code >
mypenis.relayMessage(m.chat, {
lottieStickerMessage: {
message: {
stickerMessage: {
url: "
https://mmg.whatsapp.net/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0&mms3=true
",
fileSha256: "O8o7dVH90uxRfV4CXbsBWs9hWOq8X9oqsWITwPYe3d8=",
fileEncSha256: "a4uXLS+dnKKNBi2ZhoDBNSRX3rSrqsyOI+yC2N8GwOs=",
mediaKey: "+xaBZiHPRNU+oVJ1z2vhrlv6dyvJAveWBNFfNQ8fBco=",
mimetype: "image/webp",
height: "64",
width: "64",
directPath:
"/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0",
fileLength: "345740",
mediaKeyTimestamp: "1716088583",
firstFrameLength: "8570",
firstFrameSidecar: "FJIvHupaXJCthA==",
isAnimated: "true",
stickerSentTs: "1716123599201",
isAvatar: "false",
isAiSticker: "false",
isLottie: "true"
}
}
}
}, {});
—
Reply to this email directly, view it on GitHub
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119234502,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZN3WOJFIP5H5GZIC7LZDCQRVAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGIZTINJQGI
.
You are receiving this because you commented.Message ID:
@.***>

it causes Error: Invalid media type

Hmmm okay i will try to find a way but i cant promise that there is one
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
16:12:

Have you tested it with sendMessage?
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
15:14:
I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})
I've tried it, but it doesn't work.
i use this code >
mypenis.relayMessage(m.chat, {
lottieStickerMessage: {
message: {
stickerMessage: {
url: "
https://mmg.whatsapp.net/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0&mms3=true
",
fileSha256: "O8o7dVH90uxRfV4CXbsBWs9hWOq8X9oqsWITwPYe3d8=",
fileEncSha256: "a4uXLS+dnKKNBi2ZhoDBNSRX3rSrqsyOI+yC2N8GwOs=",
mediaKey: "+xaBZiHPRNU+oVJ1z2vhrlv6dyvJAveWBNFfNQ8fBco=",
mimetype: "image/webp",
height: "64",
width: "64",
directPath:
"/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0",
fileLength: "345740",
mediaKeyTimestamp: "1716088583",
firstFrameLength: "8570",
firstFrameSidecar: "FJIvHupaXJCthA==",
isAnimated: "true",
stickerSentTs: "1716123599201",
isAvatar: "false",
isAiSticker: "false",
isLottie: "true"
}
}
}
}, {});
—
Reply to this email directly, view it on GitHub
#803 (comment)
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119234502
,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZN3WOJFIP5H5GZIC7LZDCQRVAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGIZTINJQGI
.
You are receiving this because you commented.Message ID:
@.***>
it causes Error: Invalid media type
—
Reply to this email directly, view it on GitHub
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119252697,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZMKBQFB56PBZ2WU3T3ZDCXONAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGI2TENRZG4
.
You are receiving this because you commented.Message ID:
@.***>

Hmmm okay i will try to find a way but i cant promise that there is one
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
16:12:

Have you tested it with sendMessage?
zetsubococaebom @.***> schrieb am So., 19. Mai 2024,
15:14:
I this it can be send like this
snowi.relayMessage(from, {
lottieStickerMessage: {
message: {
stickerMessage: {
here a random sticker message code with isLottie: true
}
}
}
})
I've tried it, but it doesn't work.
i use this code >
mypenis.relayMessage(m.chat, {
lottieStickerMessage: {
message: {
stickerMessage: {
url: "
https://mmg.whatsapp.net/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0&mms3=true
",
fileSha256: "O8o7dVH90uxRfV4CXbsBWs9hWOq8X9oqsWITwPYe3d8=",
fileEncSha256: "a4uXLS+dnKKNBi2ZhoDBNSRX3rSrqsyOI+yC2N8GwOs=",
mediaKey: "+xaBZiHPRNU+oVJ1z2vhrlv6dyvJAveWBNFfNQ8fBco=",
mimetype: "image/webp",
height: "64",
width: "64",
directPath:
"/v/t62.15575-24/69657577_1153035275978487_2957537414783630520_n.enc?ccb=11-4&oh=01_Q5AaIB0iKF74r_1Q5zxc0to5RA0ytOT36lfF-0BZ6vDCV-WN&oe=66718365&_nc_sid=5e03e0",
fileLength: "345740",
mediaKeyTimestamp: "1716088583",
firstFrameLength: "8570",
firstFrameSidecar: "FJIvHupaXJCthA==",
isAnimated: "true",
stickerSentTs: "1716123599201",
isAvatar: "false",
isAiSticker: "false",
isLottie: "true"
}
}
}
}, {});
—
Reply to this email directly, view it on GitHub
#803 (comment)
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119234502
,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZN3WOJFIP5H5GZIC7LZDCQRVAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGIZTINJQGI
.
You are receiving this because you commented.Message ID:
@.***>
it causes Error: Invalid media type
—
Reply to this email directly, view it on GitHub
https://github.com/WhiskeySockets/Baileys/issues/803#issuecomment-2119252697,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BH2LEZMKBQFB56PBZ2WU3T3ZDCXONAVCNFSM6AAAAABH5G7E2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMJZGI2TENRZG4
.
You are receiving this because you commented.Message ID:
@.***>

okay, have a nice day bro🚬🗿

I'm a little poor🗿
try using it
import { downloadMediaMessage }
import pino from "pino"
Elaina.download = async (message) => {
let buffer = await downloadMediaMessage(
message,
'buffer', {}, {
logger: pino({ level: 'silent' }),
reuploadRequest: Elaina.updateMediaMessage
}
)
    return buffer
}

let buffer = Elaina.download(m.quoted) //Is your bot like this to get the image/video message of the person you are replying to?, just match it with your bot
Elaina.sendMessage(Jid, { sticker: buffer}, { quoted: m })


support for 2.x driver and ObjectIds

See js-data/js-data#110

@marklawlor let me know if 0.2.3 works better for you

DS#Create now correctly returns the created object with mongo 2.6.x and 3.0.x
DS#Find / DS#Get still don't work with ObjectID hashs. If you pass the ObjectID object it will be caught and rejected by js-data and if you pass the hash as a string the mongo adapter will compare the the _id using a string, not an ObjectID.

if you pass the hash as a string the mongo adapter will compare the the _id using a string, not an ObjectID

Can you explain this more? Does this mean that the mongo server doesn't treat an ObjectId and its hash the same? They're not interchangeable?

Thats correct, try this in the mongo cli with test being your table name
db.test.insert({ name: 'john' });
db.test.find(); // 1 result

db.test.insert({ _id: <ObjectID hash of john > ,name: 'bob' });
db.test.find(); // 2 results

db.test.find({ _id: ObjectID( <hash string> ) }) // John
db.test.find({ _id: <hash string> }) // Bob

An ObjectID's hash is simply a readable representation of its BSON data, not an interchangeable value.


feat: improve message content chunks handling

This PR improves the parsing of content in messages by deserializing all content into ContentChunks (a vector of ContentChunk). Each ContentChunk is an enum representing either raw text or an image URL. For minimal change impact, ContentChunks can be serialized directly into a flattened string.

**note this PR improves how images are handle when sent as separate content in the chat endpoint. If ![]() markdown images are included they are still handled the same way, and a future RP may deprecate markdown images in chat and improve how images are sent to the model
example request
from huggingface_hub import InferenceClient

client = InferenceClient("http://<IP_ADDRESS>:3000")

chat = client.chat_completion(
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Whats in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/rabbit.png"
                    },
                },
            ],
        },
    ],
    seed=42,
    max_tokens=100,
)

Can you add some tests too for the deserialization ?

updates:
this pr now also parses markdown images into typed ContentChunks
for example both the string and structured JSON inputs are deserialized into ContentChunks and both currently serialize back into a string
https://github.com/huggingface/text-generation-inference/blob/f8be8d5da7d929d1ce0d7144b0f475a1e99dfcf3/router/src/lib.rs#L1277-L1288
and
https://github.com/huggingface/text-generation-inference/blob/f8be8d5da7d929d1ce0d7144b0f475a1e99dfcf3/router/src/lib.rs#L1300-L1319

closing in favor of https://github.com/huggingface/text-generation-inference/pull/1906


Can't delete a BC registry id [4]

Describe the Bug:
If you try to delete a bc registry for a committed operator, it deletes on the form but continues to show in view mode, the operators table, and dropdown on the project form.
Probability (how likely the bug is to happen, scored from 1-5): 1
(For example, probability of 5 is something like "it happens to all users every time they log in."
Probability of 1 "only happens to certain users when a really specific and unlikely path is followed.")
Effect (how bad the bug is when it does happen, scored from 1-5): 3
(For example, effect of 5 is "the entire app crashes and makes it unusable for all users" or "the bug causes the wrong data to be saved, with critical information (e.g. payment) being affected."
Effect of 1 is "It makes some styling look a little bit weird.")
Steps to reproduce the behaviour:
Screenshots:
https://www.loom.com/share/78a5df748520499cbef8faa85ea1047d
Additional information:

OS: [e.g. iOS]
Browser: [e.g. chrome, safari]
Version: [e.g. 22]
Additional context

The same happens to the contacts form

The same happens to the contacts form

Right, there's already a card for that: https://app.zenhub.com/workspaces/climate-action-secretariat-60ca4121764d710011481ca2/issues/gh/bcgov/cas-cif/1026

https://app.zenhub.com/workspaces/climate-action-secretariat-60ca4121764d710011481ca2/issues/gh/bcgov/cas-cif/1702 should fix this

That's great news! Closing


Close modals on press escape key

Please use the useEscape hook to close any open modals on press.
See this commit for an example 20c4b0973f1593598c709e86556f068a4a0da932

Hi @lil5 I will pick up this task.

mohasi has said not to be able to continue on this issue, It is now up for grabs 👐


Feature overzicht profiles

push to side branch where i have made a web page with a summary of the profile cards made


Slow Storage uploads and high CPU usage

I'm seeing very slow uploads when sending large numbers of medium-sized files to storage - in the order of it taking 10x the time compared to uploading to S3. I also see excessive CPU usage during this time.
This Gist is a repro in the form of a side-by-side comparison uploading the same set of 750 medium-sized random text files to S3 using knox and to GCS using gcloud-node
gsutil can upload the same number of files just as quickly as anything to S3, so I'm pretty sure it's not the service itself.
I've tried limiting the request module's default maxSockets to 5 or 10 for the request pool but that didn't seem to help. I have a hunch it's the sheer number of outstanding requests or streams that's causing node to spin its wheels and that maybe some form of global queue could fix it, but I haven't been able to validate that yet.
Any help getting this into a usable state would be much appreciated

Thanks for the detailed breakdown. For me, the gcloud uploads have completed between 88-90 seconds consistently. However, there are two things that are on by default with every write stream which could be contributing towards higher memory usage and slower speeds overall:

Data integrity - a hash is progressively built during an upload that is compared against the hash returned from the API when the upload is complete
Resumable - writes to a tmp file to keep track of the state of an upload

Shutting these off improved my speeds from 88-90 to 65-67. I'm not sure if the others (knox or gsutil) use these techniques as well.

Ok, so it looks like you're right and a lot of the issue is it being CPU-bound computing the hash - I'm testing on multi-core machines that don't have huge individual processors and I get a 5x improvement turning off the validate functionality. It's still not as fast as the knox implementation but it certainly is a good start for now

Should we consider turning validation to false by default?

I think that's an issue for discussion.
I'd also like to get an idea of what gsutil is doing and how it compares from a performance standpoint. If the only differences are runtime and validation, then I think our work is done and we just need to make a call about whether to validate hashes by default...

@jgeewax gsutil uses the hashlib.md5 (standard library) and a third-party crcmod which uses native C extension for speedups.
Also, in terms of turning off checks, @thobrla filed GoogleCloudPlatform/gcloud-python#547 (via @silvolu) with us and said:

We should allow to override the configuration for the checks (e.g. use only
crc32c, do not perform checks), but it should be strongly discouraged.

It looks to me like gsutil is hashing the entire file at the end, where as we hash it as the contents comes in. You would think that doing it at the end would have worse performance, but doing it all at the end might reduce thrashing and reduce our CPUs context switching.

Interesting... Might be worth a benchmark...?

I ran on my machine and didn't see a huge spike in CPU (~20% max) but certainly was more time consuming to upload with default settings (validation and resumable is on). I'm running on S3 region us-east-1 and I'm located in Ottawa (mid-east Canada). Seems S3 is really sporadic with performance, as you can see by the fluctuation in numbers with no change in settings. GCS seems a little more stable in that regard.
Here's my numbers:
With default settings:
Run 1:
Finished uploading to s3 in 47.792 seconds
Finished uploading to GCS in 91.161 seconds
Run 2:
Finished uploading to s3 in 41.566 seconds
Finished uploading to GCS in 92.455 seconds
Run 3:
Finished uploading to s3 in 47.247 seconds
Finished uploading to GCS in 93.156 seconds
Without validation or resumable GCS:
Run 1:
Finished uploading to s3 in 39.286 seconds
Finished uploading to GCS in 54.476 seconds
Run 2:
Finished uploading to s3 in 57.732 seconds
Finished uploading to GCS in 56.977 seconds
Run 3:
Finished uploading to s3 in 42.917 seconds
Finished uploading to GCS in 52.861 seconds
I haven't tried with gsutil yet or moving hashing to run at the end.

Do we have numbers comparing gsutil to GCS versus gcloud-node to GCS?

I'm working on that now.

So I used the following command to upload the directory of pre-extracted files to a bucket on GCS using gsutil. The -m option stands for multi-threading or something and allows the uploads to occur in parallel, greatly speeding up the upload time:
time gsutil -m cp -r tmp gs://my-test-bucket/my-test-folder

Results: 22.04s user 2.93s system 71% cpu 34.866 total

When possible, gsutil hashes on the fly.  I think there's only one case when using the boto library (which is not the default for interacting with GCS) where it hashes at the end.

Okay, so I won't bother messing with that. I did try and upload up to 10 at a time in parallel and got better results. It uploaded in 46.42s with default settings. It also seems resumable: false greatly speeds things up on my machine, and frankly I don't think resumable on a createWriteStream makes any sense so let's get rid of that. If they want resumable, they will have to use upload.

So, after looking at the different ways we can assist this use case we believe that tweaking the different settings when uploading can help with this specific use case. #400 will remain open in trying to simplify the validation logic, but overall when uploading relatively small files in bulk, it might be best to turn resumable off (which is on by default). We always recommend you keep validation on.
We have no way of specifying to the library that it should upload an arbitrarily large number of files, so it cannot make these decisions for you.
Also, if you want to try and gain more performance (albeit sacrificing a bit of customisability and idiomatic-ness) , you might consider using a leaner and more simplistic equivalent library like knox but for Google Cloud Storage. I would suggest taking a look at googleapis, Google's official Node.JS client library.
Please feel free to re-open if you know of some way that performance could be greatly improved without sacrificing the defaults we have set in place for resumable and validation. Or just send a PR with the fix, that'd be even better and we'd be happy to merge! :smile:

I may not have a fix or a way to drastically improve performance, but that doesn't mean I think this is fixed. Turning off validation may have gotten some significant performance gains; it was 5x faster on my setup without it, however, that's still half the speed of the S3 uploads. Whatever we did (and it wasn't just me, or my setup) we couldn't match how fast knox worked (turning resumable on/off didn't seem to make much difference to me, if any) even though the underlying GCS infrastructure could easily match S3 from the locations we tested using gsutil.
Given all this, and how knox managed to keep the 'customisability and idiomatic-ness' without sacrificing any speed, to me that seems a pretty big indicator there're some significant inefficiencies in this client.
Turning off validation is a very temporary solution to fit the timescale I have to work with for my project, but I really think this should be fixed before any 'Storage Stable' milestone - there's no way that a 10x performance hit is acceptable to anyone switching from S3 in my eyes.

If we're comparing apples to apples, then validation and resumable will need to be set off because knox is fast and great when everything works, but if something goes wrong, you're out of luck. There is no validation or resumable. That being said, not a lot can go wrong when you're uploading tiny 50kb files. You're right, the performance is terrible for this case. Unsure how to proceed. As a Firebase guy, you deal with the tiny tiny micro-transactions a lot, so I understand your pain, but I'm unsure how relevant that will be to the average GCS user. In any case, I'll re-open to acknowledge the issue, I hope in due time we can come up with a compromise (but hopefully a solution).

I spent more time running the tests, including setting up an AWS account, unlike last time.
I remodeled the script a bit to remove duplication. In the process, I used knox.put instead of .putStream. putStream uses put internally.
Here's the new gist, and here are the results:
# 1
Finished uploading to s3 in 84.883  seconds
Finished uploading to google in 65.481  seconds

# 2
Finished uploading to s3 in 87.172  seconds
Finished uploading to google in 74.828  seconds

# 3
Finished uploading to s3 in 94.344  seconds
Finished uploading to google in 64.73  seconds

# 4
Finished uploading to s3 in 102.506  seconds
Finished uploading to google in 69.615  seconds

# 5
Finished uploading to s3 in 87.63  seconds
Finished uploading to google in 66.908  seconds

I can't make s3 work as fast as you reported or gcs as fast as Ryan reported.

I'm getting consistent 60 seconds for uploads when using googleapis library (10 uploads max parallel). I'm seeing slightly better performance (between 55 and 60s uploads) from the gcloud-node library surprisingly but only when resumable is false. If resumable is true, it's super super slow and actually is making my fan start on my computer which never happens. CPU is at 99%. The entire upload took a whopping 487 seconds... :(

Resumable has to do a sync read and a sync write per file passed through. Usually isn't expensive when it's one file, but becomes noticeable (and noisy apparently) with 750, understandably.

Hi all,
The biggest thing I am interested in here is GCS via gsutil, gcloud-node, and . If we are on par with those libraries, I think we have to consider this bug closed.
Comparisons to S3 are great, but they say more about the GCS service speed than the client library, so I would prefer to leave them out of this discussion.
Do we have a snippet showing a performance comparison between gsutil and gcloud-node (and anything else in Node that talks to GCS) ? Did I miss it somewhere?

Just as a follow-up on this - a lot has changed for the better since we filed this. A combination of the following factors lead me to consider this issue able to be close:

We gained the most significant speed increases removing node 0.10's default max 5 connection per host limit (reported in #522).
On average our upload file size is 50KB, so turning off resumable uploads on streams helped us out a lot (as discussed above, and in #399).
Turning the upload validation to just crc32c helped reduce CPU overhead and increase performance too (also mentioned above).

I think we're now seeing speeds in excess of our old system when everything works, and we're tracking individual issues elsewhere. Thank you all for your time

Awesome -- thanks for all the help on this!


Move the Developers Guide from website to Documentation repository

As discussed in https://github.com/qgis/QGIS-Documentation/issues/1566, this PR begins the move:

remove the developers guide chapter
add a comment about QGIS Core development, linking to the new placement

What it doesn't do:
Move the Adding GRASS tools. I'm not really a GRASS user so wonder:

what does really this text refer to? is it about general coding skills (thus can be moved to the new place) or could it be put in the GRASS chapter of user manual or processsing grass section?
is this descripton up to date?

Digging the history, I found that @anitagraser creates this file. Do you have some opinion on above?
Things to take care of

There's a pending PR at #405 we should think to merge in the new place (would be easy)
Translation (see qgis/QGIS-Documentation#1585)

I don't know if those are up to date. I didn't write them, I just recreated them based on some previous description ... might have been on the Wiki originally.

Thanks @anitagraser

Because website updates are automatic, to make sure we don't lose information while the new documentation is not released, I would keep this page in the website until the next documentation release.

Hi @DelazJ , I was cleaning up the pull requests here, is this PR still to make valid? Or should/can I close it?

@rduivenvoorde Thanks for the cleanup. It's very welcome.
About the PR, hummm.. Somehow it needs to be done or something needs to be done! Currently (for 2 years actually), seems that nobody noticed it but we have two dev guidelines diverging (https://docs.qgis.org/testing/en/docs/developers_guide/ vs https://qgis.org/en/site/getinvolved/development/qgisdevelopersguide/index.html despite the warning on top of the latter link). And at some point THAT should be fixed.
Other than the wait for the (2.18?) doc release that makes the PR stall, there were some related questions that also refrained me:

what do we do with the grass section here? I had opened a discussion on the list but not sure of the outcome, if any
whether we keep the dev guidelines in the doc repo (the famous discussion about splitting), to avoid doing the move twice

I'll try to move forward this PR if I get time in next days.
(Not related to this PR) I was looking at the website yesterday and was telling myself that its tree would need to be refactored (see eg how heterogeneous are the items of "get involved/development" - a new header might be welcome and some items moved to another "umbrella") - my2cts.

@rduivenvoorde rebased and new commits I found are pushed to doc repo (https://github.com/qgis/QGIS-Documentation/pull/3989)


Asking about weather didn't work

This is related to #368, in the sense that certain questions (including clarifying questions about location) are handled outside the state machine and therefore one needs to reset (using [X]) or answer the question. You did neither of those things, and hit the bug.

ohh. I got it. It's kind of hard to understand what does the [x] means.


test that all recent releases have v8/node/chrome dependency data

This will go green once https://github.com/electron/electron/issues/12006 has been fixed.

~/git/electron/electron-releases master ⇡
$ np patch
 ✔ Prerequisite check
 ✔ Git
 ✔ Cleanup
 ✔ Installing dependencies using Yarn
 ✔ Running tests
 ✔ Bumping version using Yarn
 ✔ Publishing package
 ✔ Pushing tags

 electron-releases 2.11.2 published 🎉


GDscript builtin functions to rust

here is the implementation of the builtin functions in GDscript back to rust, regarding this
#893 issue.
<EMAIL_ADDRESS>

Thanks a lot for the pull request! I'll try to review it as soon as I have some time 😉
Small request: please open only one pull request per feature (#899, #900). You can change your existing commits using git commit --amend or git rebase -i (examples here. Once you have the commits like you want them, you can "force-push" your new commit history by using:
git push --force-with-lease

Thanks! 🙂

I realized that technically, we'd need std::ops::RangeInclusive instead of std::ops::Range, if the upper bound is part of the range. But even that is not fully correct: lerp(0.0..=4.0, 1.25) will be 5.0, which is outside the range, but explicitly allowed. So we might as well allow lerp(0.0..4.0, 1.0) which is 4.0 and also outside, with a nicer syntax.
But for wrapi(), it does matter which range type we use. Half-open range .. seems to be correct though, since wrapi() doesn't return the upper bound.
So unless someone finds concrete arguments where .. could be misleading, I'd say we stay with it.

They only argument I'd see is that it differs from the official GDscript language.

Most things look good now, thanks for the update!
I'm sorry I wasn't more clear, with

So we might as well allow lerp(0.0..4.0, 1.0) which is 4.0 and also outside, with a nicer syntax. [...] So unless someone finds concrete arguments where .. could be misleading, I'd say we stay with it.

I meant we should probably use Range instead of RangeInclusive.
But maybe we should wait 1-2 days until there's more input on that part. Hunam6 mentioned that it's different from GDScript, which is a valid argument, as it might hinder porting. On the other side ranges could be regarded as slightly more idiomatic in Rust, help some readability and allow a more "object-oriented" approach (e.g. range_lerp taking 3 instead of 5 parameters).

I think that for the lerp based functions RangeInclusive makes a lot more sense. The expected behavior of the lerp function is always going to expect to be an inclusive value. While we can leave it to just a range, it may lead to some unexpected situations for users.
If there are other functions that don't necessarily assume that the range be an inclusive range, then we can allow it to be a bit more flexible.
For reference a lot of egui components force RangeInclusive for certain widgets because the expectation is that you be able to scroll the widget from 0 to 1.0.

i guess everything is set now ?

@Haxeil the doctests for wrapi/wrapf should be the only thing left, would you have time to add the assertions?
Also, please squash all your commits to a single one (using git rebase -i or any decent Git UI), and then force-push (git push --force-with-lease).  Here is an explanation.
Once that's done, we can merge! 🙂

yes in currently busy once i get to my main machine i'll get it done !!!

sorry for the long wait :)

I don't quite understand why you added back the #[test] cases -- I though we agreed on using doctest instead, where it makes sense (and only #[test] when doctests are not expressive, if at all):

[Bromeon] I would only use doctests instead of #[test], if they are also useful to the user -- that is, the code is simply a couple of assert_eq!() statements that also shows how the method can be used. In fact, most methods fall under this category, so having doctests is fine 🙂

So, to be very explicit:

If a doctest covers important cases, no need for #[test].
If a test requires more complex setup that is not helpful in a documentation, use #[test] instead of a doctest.

Also, please don't forget this step:

Also, please squash all your commits to a single one (using git rebase -i or any decent Git UI), and then force-push (git push --force-with-lease).  Here is an explanation.

Sorry for the back-and-forth, and thanks in advance!

@Bromeon do you know you can

You can also disable the two other options to always clean the commits of a PR.

@Hunam6 Yes, the thing is that we merge all PRs using the bors bot, to ensure that everything that's on master must have passed the full CI suite. The problem with bors is that it only provides "all or nothing" as a static configuration (always squash or never squash). Basically, I'm waiting for this feature 🙂
But I see that it's sometimes a bit limiting and requires a lot of extra work from PR authors (and maintainers). I'm open for suggestions, maybe there are other automations that can help here.

Thanks a lot for the patience and all the amendments! 👍
bors r+

nice first PR merged :)


Update themes query/info endpoints

Pull Request
What changed?
Update themes endpoint to follow same Laravel resource pattern as Plugins
Adds support for the following filters/parameters:

search - search themes
theme - exact match on theme slug
fields - specify which fields to include in response
author - search for themes by specified author

Adds validation to ThemeInformationRequest
Adds feature list response
Handles differences between v1.0/v1.1/v1.2 API versions
Why did it change?
Implementing basic functionality from WP.org themes API
Next steps
Update to use Theme instead of ThemeSync model
Update to handle tags
Add tests
CERTIFICATION
By opening this pull request, I do agree to abide by
the CODE OF CONDUCT and be bound by the terms
of the Contribution Guidelines in effect on the date and time
of my contribution as proven by the
revision information in GitHub. I also agree that any previous contributions shall be deemed subject to the terms of the
version in effect on the date and time of this pull request, or any future revisions for pull requests I may submit.
Further, I certify that this work is my own, is original, does not violate the intellectual property of any other person
or entity, and I am not violating any license agreements or contracts I have with any person or entity. Finally, I agree
that this code may be licensed under any license deemed appropraite by AspirePress, including but not
limited to open source, closed source, proprietary or custom licenses, and that such license terms neither violate my
rights or my copyright to this code.

I'm a little iffy on things like traits used only once, but the fundamentals are all good, and I'm working on the same things in my own branch and can always refactor.  Definitely want to see if laravel-data and resource classes/collections can be made to play together more closely, but that doesn't need to hold up new code.


Selenium-download dependencies on async & mkdirp out of date

Hi Grouponians! Thanks again for making this useful node module! ❤
We are using it in our project and it works however sadly we are getting a warning ⚠
because a couple of dependencies are out-of-date:
https://david-dm.org/groupon/selenium-download

> Question: would you accept a Pull Request with an update?

I think this is a duplicate of https://github.com/groupon/selenium-download/issues/23 (apart from the "insecure" thing that fixed in https://github.com/groupon/selenium-download/pull/32).


If there is no email registered for the current user then unit test ZCL_ABAPGIT_USER_RECORD fails

If there is no email registered for the current user then unit tests for class ZCL_ABAPGIT_USER_RECORD fails

Unit tests that depend on sy-uname are a bad idea (same with other sy-fields).

yea, not sure how to fix it, perhaps just delete the unit test


[stable/cluster-autoscaler] Allow configuring service port name

Adding service port name because prometheus operator service manager requires a port name for the cluster-autoscaler service to pick up the metrics.

/assign @mattfarin

Just came back to this. Foget about my comment. I didn't really fully look at why you did this. Sorry.

/ok-to-test

/lgtm


emqx_v4 - parsing incomplete

We are not able to launch emqx_v4 getting Syntax error in /opt/emqx/etc/emqx.conf after line 11 column 1, parsing incomplete

Steps to reproduce:

clone https://github.com/hummingbot/brokers
Go to compose/emqx_v4 then run launch.sh

@rapcmia This error is due to previously running the v5 version of emqx and thus the emqx-data volume contains files not supported by v4.
Though, I will change the volume names so that cannot be messed up.


JAVA-3382: Filter null values for Observables

This is a partial revert of the fix for JAVA-3279. We no longer allow nulls to be added to the queue or as a result.
Evergreen patch: https://evergreen.mongodb.com/version/5d5d5f6a0305b91665f71e09

@rozza should we just do this in 4.x or do you want to get this fixed in 3.x and the scala/reactive drivers that depend on 3.x?

I think this should go in the next release 3.11.1 or 3.12
As of now distinct still has a bug if it sees null as that will end the observable.


Update 970079.xyz.md

I told you pingdom is broken :)))
https://tools.pingdom.com/#5f1321d13e000000 561b
https://tools.pingdom.com/#5f132185fa000000 568b
https://tools.pingdom.com/#5f1321682cc00000 581b
Updated a bit of text and look what magnific results i got!
Since it's rounded to 0.6kb i have changed the 1.0 to 0.6

Every site on the list could probably jump up and down ever so slightly based on the location chosen, redirects, small inconsistencies etc.
The overall point of the "club" is to just focus on listing websites that take performance and bandwidth into consideration for the end users. Dead on specifics by exact decimals, updated frequently was never the intention of the project.
I'm still getting 1.0 (rounded up) based on my multiple tests --> https://tools.pingdom.com/#5f1327784ec00000 so for now I'll just leave it as is. As I get more time I plan to go through the list more periodically to update potential changes etc.


ROADMAP: $state immutable

reference
For some reason I thought there wasn't a global state, but saved in the DOM?  Or is this the state cached in memory while said DOM is processed?
Is this state directly accessible by user code, or only via Quik?
Either way, I lean towards which ever is fastest.  Could try non-immutable for v1, then visit the question again for v2; seems getting rid of immutable would be harder for programmers than adding later.

BTW, I thought of using flatstr to before saving/sending state in microservices.  Performance gains from using flatstr:
ManySmallConcats: 28%
SeveralLargeConcats: 21%
ExponentialSmallConcats: 46%
ExponentialLargeConcats: 33%

best place to use flatstr is just prior to passing it to an API that eventually runs non-v8 code (such as fs.WriteStream, or perhaps xhr or DOM apis in the browser).

Hi @tomByrer ,
Thanks for your question.

The roadmap doc, is more of a mental dump for me than anything else. We are trying hard to make sure there is no state. $state is an instance variable that allows us to separate transient vs persistent state for entities.
Currently you can think of the current API as the low-level API and we may choose to put something on top of it to make it more friendly, but it would not be to replace the low-level things only to augment it.

PS: If this answers your question, can we close this issue?

cheers


design and deploy related entities API

Design and deploy an API that returns entities (issues, docs, etc) that are related to the given document. Consider allowing the following parameters/filters:

filter: source/type of document (GitHub project, Gerrit project, crawled webpage etc)
cutoff: the similarity value (0-1) at which entities should be considered related
max number of related entities to return

Suggested design of the API:
Endpoint POST /api/search?threshold=T&limit=L
Threshold is the lowest score to return, assuming the max score is 1 and the min is 0.
Limit is the max number of results to return.
The post body is the JSON for the EmbedDoc struct:
 type EmbedDoc struct {
        Title string // title of document
        Text  string // text of document
  }

This is the search query, which may itself be some document (like a GitHub issue).
The response is the JSON for this Go:
[]SearchResult

type SearchResult struct {
    Kind string // type of result, e.g. "GerritCL", "GitHubIssue", etc.
    ID string    // always a URL, for now
    Score float64
}

Responses are by decreasing score.
Notes:

The system doesn't store the kind, but it can be determined from the ID.

We'll omit the filter for now, since it is tricky to implement with the current structure of the vector DB and may not be important.


⚠ Visual-Crew_Builder has degraded performance

In c5f7cbd, Visual-Crew_Builder (https://visual-crew-builder.ai) experienced degraded performance:

HTTP code: 200
Response time: 1655 ms

Resolved: Visual-Crew_Builder performance has improved in 5e8b454 after 6 minutes.


The pex.resolver.resolve API should accept a target dir.

Currently, pex.resolver.resolve resolves distributions as wheels installed in individual tmpdir chroots. If a client wants the installed wheel to outlast the process, they need to copy or move the chroot somewhere. Allow clients to avoid the copy by specifying a chroot root directly for resolve to install wheels into.

This was actually solved when #809 was solved via #815: The user can pass a cache dir that points to stable (non-tmpdir) storage.


Change to objective bug error to warning and only on <v7

Ref https://github.com/JuliaOpt/Gurobi.jl/issues/60#issuecomment-293706516

@mlubin thoughts? Or should we just remove this entirely.

Okay with me as is


Shortest Path from source to all vertices Dijkstra in C

I'd like to work on this.

I've added the code. Please review.
PR : #73


Adding user causes error in console

Version - master 4/8 - UI version - 2.3.0
Steps to reproduce (least amount of steps as possible):

Turn on dev console
Add user

Result:
/g/accounts/add:1 Unchecked runtime.lastError: The message port closed before a response was received

Couldn't reproduce


Locator - CMS Design

move Cateogry Filter to Settings tab
fixes #96

Current coverage is 61.01%

Merging #97 into master will not affect coverage as of 39d17ca

@@            master     #97   diff @@
======================================
  Files            2       2
  Stmts          177     177
  Branches         0       0
  Methods         19      19
======================================
  Hit            108     108
  Partial          0       0
  Missed          69      69

Review entire Coverage Diff as of 39d17ca

Powered by Codecov. Updated on successful CI builds.


fix deprecated note for ByteBuffer type

The proper format is a comment that starts with
"Deprecated:" as described in godoc docs.
Signed-off-by: Iskander Sharipov<EMAIL_ADDRESS>

Thanks for the PR!


Npm run build not working on windows

The Npm run build command isn't working on windows.

<EMAIL_ADDRESS>build
npm run build:collector && npm run build-lambda

<EMAIL_ADDRESS>build:collector
cd lib/lambda; npm ci; npm run build; cd -

The system cannot find the path specified.

this solution is only supports build and deploy from linux/mac environment. We might support Windows should strong singal of requirements supports it.

Hi @lakuakuaontop,
We suggest you try to build and deploy using a mac/linux machine, this is what we recommend. Closing this issue as it's over an year old and there is a workaround.
Thanks!


Switch to ghc-8.10.2 in Hydra

Can you document why we need to override nixpkgs here?

Can you document why we need to override nixpkgs here?

I'm actually not sure if I needed it.  It was suggested in Slack.  I'll try without.

bors merge


Rework CI workflow

This PR updates the CI workflow:

The matrix is extended to include variables sqlite and openssl for telling whether to build them statically. As a result, 12 independent jobs are shown in the test suite. include and lib paths are moved to the matrix too.
The name of each job shows an icon representing the OS, as well as SQLITE and SSL variables.
On Windows, MSYS2 is used (through Action setup-msys2), instead of Git for Windows. OpenSSL is installed through the package manager. Installed packages are cached by default.
Option submodules: recursive of action/checkout is used, instead of doing it in a run step.

@umarcor this is really great, thanks so much for showing a better way!
I'm happy with the PR as is. However, in a later PR I may have to add detection of an MSYS2 make variable to conditionally do those micro surgeries to vendor/sqlcipher's configure script and the Makefile it generates because some people working with this library are definitely using Git for Windows on their local machines. The other option would be to document that if you're building on Windows you must be in an MSYS2 environment with such and such dependencies installed.

The other option would be to document that if you're building on Windows you must be in an MSYS2 environment with such and such dependencies installed.

@michaelsbradleyjr, AFAIAA, Git for Windows is a subset of MSYS2. Mimicking Arch Linux, MSYS2 is a rolling distribution with a package manager (pacman) that provides thousands of tools: https://packages.msys2.org/package/. Git for Windows picks the core and a reduced set of git related packages, and adds some other git specific features (such as LFS). However, it does not provide pacman, because it's shell is not meant to be used for purposes other than git.
In your case, you need additional packages which are not included in Git for Windows. That's why I think that using MSYS2 (the superset) and it's package manager is desirable. The instructions for any contributor would be:

Download the latest tarball or self-executable package from https://github.com/msys2/msys2-installer/releases/tag/2020-11-09.
As explained in https://www.msys2.org/#installation, open a terminal (I suggest MINGW64) and run pacman -Syu to update the system.
Install additional packages: pacman -S base-devel git mingw-w64-x86_64-toolchain mingw-w64-x86_64-openssl

That should be enough for running the build scripts in this repo. Contributors might want to install additional dependencies for e.g. gitk. But that's up to them.

in a later PR I may have to add detection of an MSYS2 make variable to conditionally do those micro surgeries to vendor/sqlcipher's configure script and the Makefile it generates because some people working with this library are definitely using Git for Windows on their local machines.

That's sensible. However, since Git for Windows is a subset of MSYS2, I don't know which specific variable might work. These are the ones I see in an MSYS2 MINGW64 shell:
# env | grep MSYS
MSYSTEM_CARCH=x86_64
MSYSTEM_CHOST=x86_64-w64-mingw32
MSYSTEM_PREFIX=/mingw64
MSYSTEM=MINGW64

# env | grep MINGW
MINGW_PACKAGE_PREFIX=mingw-w64-x86_64
MINGW_CHOST=x86_64-w64-mingw32
MSYSTEM=MINGW64
MINGW_PREFIX=/mingw64


Change Management process visualization for publication

Describe the Issue
Work with the web design team to create a visualization of the Change Management process for publication
Additional Context
Add any other context, attachments or screenshots
Acceptance Criteria

Work with design team management to set a schedule for working with a designer
Take finalized Change Management process and create the visual flow with them
Create draft version for review with Thibault
Update with suggestions and present to team for feedback
Present to Olena and incorporate final feedback
Work out accessibility solution for diagram
Work with web team to have it published

Completed Change Management document was passed to the web design team for the creation of the web-published flow diagram for it.  Issue with timing and their existing projects now, so will create a basic draft of it first as per their request, and then pass it to them to complete the diagram creation + publishing process


Feature request: cherry-pick multiple commits to a single branch

This extension seems like a natural place to implement some UI that allows the user to specify a range or list of commits for the source.commits parameter to the cherryPicks API.  The user should select a commit to cherry-pick; enter the target and topic branch as they do now; and then be allowed to search additional commits to add to the cherry-picked branch.
The use case in mind is f.ex. if a feature branch has commits A, B, C, D ahead of master; but you want only B, C, and D to be merged to master. Currently you have to cherry-pick each commit separately; this would save a lot of clicks.

Just for clarification, the cherryPicks API supports this use case already.  The body payload field source.commitList is of type GitCommitRef[] as documented here: https://docs.microsoft.com/en-us/rest/api/azure/devops/git/cherry picks/create?view=azure-devops-rest-5.1#gitasyncrefoperationsource

How do you think this should be surfaced in the UI?
My team doesn't have bandwidth to work on this atm, but we'd love to take contributions if you come up with a proposal!

I think that from the branch history view, it would be great to let the user select multiple commits and initiate a cherry-pick containing all those commits. Seems like there's room for more controls next to the "Show/Hide Filter Panel" toggle; add a control there to enable "select commits". Let the user click to select one or more commits. When one or more are selected, enable a button to initiate a cherry-pick (also a revert, which I believe supports the same use case via API) from selected commits. The dialog would essentially be the same as the existing cherry-pick dialog when initiated from a single commit: select target branch and enter topic branch name, and go.
I could also see modifying this extension's Multi-Cherry-Pick dialog when opened from the commit details view.  Show the user the list of all commits from the source commit's branch, newest first; click to select multiple other commits to include with the cherry-pick; and then cherry-pick all selected commits to every target branch entered in the dialog's existing UI.

Ideally, we'd like to keep this extension scoped to the PR UI, as it's original intended use case was applying hotfixes to release branches. Adding this feature isn't something we can do for the foreseeable future, but we'd love to take contributions that add it!
If you're up for it, I can help get your dev environment running.

Hi @ethanis is this something that can still be added? Just asking because there isn't much activity (especially for PRs) on this repo lately


feature: downgraded did-resolver plus reading errors from enum

downgraded did-resolver from ^4.0.0 to 3.1.5
reading all the errors from enum instead of literal strings

Codecov Report

Merging #4 (59ba036) into develop (662e175) will increase coverage by 0.01%.
The diff coverage is 79.20%.

@@             Coverage Diff             @@
##           develop       #4      +/-   ##
===========================================
+ Coverage    87.36%   87.37%   +0.01%
===========================================
  Files            8        9       +1
  Lines          269      309      +40
  Branches        94       91       -3
===========================================
+ Hits           235      270      +35
- Misses          31       32       +1
- Partials         3        7       +4

Flag
Coverage Δ

unittest
87.37% <79.20%> (+0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

lib/types/index.ts
100.00% <ø> (ø)

lib/verifier/WellKnownDidVerifier.ts
80.50% <62.00%> (-3.65%)
:arrow_down:

lib/utils/index.ts
92.00% <71.42%> (+0.33%)
:arrow_up:

lib/constants/Errors.ts
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


LinkedHashSet is much slower than LinkedHashSet

I noticed a Set<int> performing very slowly when working on a Flutter project. I had about 20k integers in a Set, and checking set.contains() took a very long time. But when I used toString() to convert all items to string, it performed 1000x faster.
It's apparently only reproducible with these particular integers (that I've included in the code), any randomly generated integers performed much faster in my testing (1200 ms vs 1 ms).
I've asked a question on Stack Overflow as well with more details and screenshots, a commenter pointed out that it's only LinkedHashSet<int> that caused the issue.
Dart SDK version: 2.15.1 (stable)
Environment: macOS 12.1 (Apple M1) / macOS 12.1 (Intel i5) / Android 12 (Snapdragon)
Click to show full test code with data.

With the values you have in the list it is possible we are running into hash collisions resulting in the slow down, Let me extract your list into a simple dart program and check it out.

Here's a self-contained way to see this behavior:
extension<X> on Set<X> {
  measureContains(X value) {
    final watch = Stopwatch();
    watch.start();
    for (int y = 0; y < 100000; y++) contains(value);
    watch.stop();
    print('Elapsed time, $X: ${watch.elapsedMilliseconds}');
  }
}

void main() {
  <int>{}
    ..addAll(list)
    ..measureContains(123456789);
  <String>{}
    ..addAll(list.map((e) => e.toString()))
    ..measureContains('123456789');
}

const list = [...]; // Use the data from https://pastebin.com/raw/4fm2hKQB

The output does indeed demonstrate a large difference in performance:
Elapsed time, int: 2178
Elapsed time, String: 2

IMO the better question is not why LinkedHashSet<int> is much slower than LinkedHashSet<String> but why LinkedHashSet<int> is so much slower than HashSet<int>.  The int vs. String difference could be attributed to different hash codes that resulted in a pathological number of collisions, but difference between LinkedHashSet vs HashSet seems very unexpected to me.

Changing next probe to be quadratic improves performance of the example listed above, please see
https://dart-review.googlesource.com/c/sdk/+/239004

IMO the better question is not why LinkedHashSet<int> is much slower than LinkedHashSet<String> but why LinkedHashSet<int> is so much slower than HashSet<int>. The int vs. String difference could be attributed to different hash codes that perhaps resulted in a pathological number of collisions, but the difference between LinkedHashSet vs HashSet seems very surprising to me.

With regards to the different between LinkedHashSet and HashSet, the implementation behind these are different,
in the case of LinkedHashSet if there is a collision, the next free entry is probed by going through the entries whereas HashSet creates a _HashSetEntry and if there is a collision it links these entries.

@a-siva I think there is a bigger problem that is not solved by quadratic probing.
Changing the sequence of elements like this:
final list = [
  for (int i = 0; i < 14790; i++) (i + 1) * 0x10000000 + 123456789
];

results in terrible performance for both LinkedHashSet and HashSet.
Elapsed time, _CompactLinkedHashSet<int>: 3623
Elapsed time, _CompactLinkedHashSet<String>: 5
Elapsed time, _HashSet<int>: 3091
Elapsed time, _HashSet<String>: 2

Both  _CompactLinkedHashSet and _HashSet have reasonable behaviour provided the hash values are nicely distributed with few collisions. alpha ≤ 0.5 for _CompactLinkedHashSet, and _HashSet has chained buckets.
What goes wrong is that not all of the bits of the hashCode are used. The original example has 14790 distinct values, but there are only 377 distinct values of the lower 16 bits. The sequence above is even worse - it has only one value of the lower 16 bits. Both hash table implementations use the low N bits of the hashCode.
What we really need better dispersion of the bits of the provided hashCode.
Good dispersion means that every bit in the output is somewhat sensitive to every bit in the input. Flip any bit in the input and about half of the output bits should change. Our int hashCode is the identity function, so is inherently poorly dispersed.
We could change int.hashCode to be better dispersed, but that does not help for objects that implement hashCode e.g. via a counter. It should be the responsibility of the data structure to make the most of the provided bits.
The trick is to do the dispersion efficiently, since computing the hash bits is on the critical path and Map indexing shows up in the profile on many apps. On x64 dispersion can be achieved efficiently using the 64x64->128 MUL instruction to multiply the given hash code by a magic dispersion constant and then adding the low and high words of the product (similar idea to Murmur hash).  We might want compiler support since writing it without support will require a few dozen instructions and might impact a lot of applications.
If we are going to massage the given hashCode, we should also protect against hash table denial of service attacks by adding in a value that is initialized to a (different) random value in each isolate. Accessing this constant should be fast, e.g. via THR.

I think we should change the int.hashCode to be better dispersed.
If the performance of int.hashCode really matters, it's because people are using it in a hash table.
A small overhead on the int.hashCode getter is a very small price to pay. Most hashCode implementations are much more complicated and expensive, and people use them happily. If it makes the HashSet/HashMap work much better, it pays for itself, and it doesn't cost anything for any other class.
Having hashMap/hashSet/etc. post-optimize the hashCode is an option too. I believe the Java SDK HashMap used to do so, but they have since stopped.
Doing so helps every class with a bad hash code, but also costs extra for each class with an already good-enough hash code.
It's a fix that needs to be applied to every hash-table based data structure.
(Well, ideally, every class should have a good hashCode, and every data structure should work well with a bad hashCode, but getting the same amount of improvement at twice the price doesn't seem that great.)
We do have a problem with double, where == allows equality between integers and doubles, and therefore integral doubles need to have the same hash code as the integer. Changing int.hashCode might make double.hashCode more expensive too. Especially on the web.

@lrhn @rakudrama so what is the final conclusion here, one of you picking up the task of  changing int.hashCode ?

@a-siva They don't have to happen at the same time. The dart2js versions of {Linked,}Hash{Map,Set} do not use thehashCode for small integers, so I would let someone go ahead with the VM version and I can fix the web version when I return from vacation.

For reference and to check performance impact I put together https://dart-review.googlesource.com/c/sdk/+/258600 which adds 32-bit MurmurHash implementation on ia86/x64 platforms.
Running benchmarks shows huge improvements on newly added IntegerSetLookup benchmark built from (bad-behaved) data set referenced above, while regressing  at the same time by 30-50% on well-behaved(random) integer sets, 20-40% on
WordSolver, CollectionSieves benchmarks that also use sets of (well-behaved) integers(see below).
I believe this is more or less in line with expectations of having better, better distributed hashCode function, but wanted to confirm (@lrhn @rakudrama) (before I extend the assembly implementation of hashCode to arm/arm64).
dart-aot on x64

dart-jit on x64

dart-jit on ia32

I think this slowdown is a higher than I expected, especially on 64-bit.
Do we need int.hashCode to be the same on different architectures?
Murmur hash takes the idea of using the multiplier (and inherent adder carry-ripple) to a point where the dispersion is excellent.
I think we just need 'good'.
On x64 something like this would be good enough and quite a bit faster:
movq RAX, operand
movq RDX, 0x1b873593cc9e2d51  // or similar dispersing multiplicand
imulq RDX                     // single operand imul produces double-width product
addq RAX, RDX                 // mix in high bits into low bits
andl RAX, 0xffffffff          // optional truncation

@aam Consider trying out simpler and faster hash functions, such as Jenkins hash. Multiplication is quite slow compared to shift, addition and bitwise operations.

x86 imul is typically 3-5 cycle latency and pipelined to enable one result per cycle.
While shift/add/bitops can be issued at a rate of several per cycle, the effective issue rate declines when they are data-dependent.
Data-dependent simple ops will be worse than imul if you have more than a handful.
The reason I ask 'Do we need int.hashCode to be the same on different architectures?' is that the best answer depends on the architecture. It will be hard to beat the 5 instruction sequence above on x64 that makes use of the 64x64->128 bit multiplier to do the same dispersal as a few dozen simple ops. The story on another architecture might be very different.

Maybe @mraleph @mkustermann have better ideas.

If we are going to massage the given hashCode, we should also protect against hash table denial of service attacks by adding in a value that is initialized to a (different) random value in each isolate.

At the bare minimum we require that const maps can be shared across isolates, thereby forcing all isolates to use same hashing function of the keys. We may allow sharing deeply immutable maps in future - so same requirement there.
We may want to have the option to pre-calculate const maps/sets at AOT compilation time (to avoid cost of re-hashing at AOT runtime). For AppJIT the training run may create the const maps/sets with computed index tables, forcing the later run of AppJIT snapshot to use the same.
All of that requires us to use deterministic hashes for integers/...

For reference and to check performance impact I put together https://dart-review.googlesource.com/c/sdk/+/258600 which adds 32-bit MurmurHash implementation on ia86/x64 platforms.

Consider trying out simpler and faster hash functions, such as Jenkins hash. Multiplication is quite slow compared to shift, addition and bitwise operations.

A good reference point may be the linux kernel code - it has high standards for performance and security, see it's implementation here hash_64 and a relevant lkml discussion from linus himself.

The reason I ask 'Do we need int.hashCode to be the same on different architectures?'

There's value in having the same implementation across architectures: We often measure performance on x64 and assume it will translate to other architectures - using different implementations may lead to significant differences in performance due to more collisions. At least we should strive to be consistent across 64-bit archs and 32-bit archs.
Interestingly enough, in C++ this
#include <unordered_map>
#include <cstdint>
int64_t hashit(std::unordered_map<int64_t, int64_t> map, int64_t a) {
    return map.hash_function()(a);
}

compiles to
mov     rax, rsi
ret

So the burden in C++ lies on the map implementation to scramble the bits.

For reference and to check performance impact I put together https://dart-review.googlesource.com/c/sdk/+/258600 which adds 32-bit MurmurHash implementation on ia86/x64 platforms.

As a side-note: Assembly intrinsics will - by-default - prevent inlining of a functions IIRC: So it will turn the base price for int.hashCode into box this and call (though may not matter for the benchmarks in question here)

Do we need int.hashCode to be the same on different architectures?

I think we do due to vm snapshots (with constants, hash values, but without actual code) shared across platforms. (cc @rmacnak-google )

Tried various constants and hashing sequences, the following  seems to produce best results on x64 on existing benchmarks(inlined via graph intrinsics)
  __ movq(RDX, compiler::Immediate(0x2d51));
  __ imulq(RDX);
  __ xorq(RAX, RDX);
  __ movq(RDX, RAX);
  __ shrq(RDX, compiler::Immediate(32));
  __ xorq(RAX, RDX);
  __ andq(RAX, compiler::Immediate(0x3fffffff));

CollectionSieves-Set-removeLoop severely penalizes hash collisions for small integers as it continuously deletes elements from initially populated set.


Feature request: Custom post types

Hi,
I'm really enjoying this plugin! My only feature request would be support for custom post types. Is that in the works?

Hello @audvin ,
Thanks for idea. CPT support is in my mind , but I just need some time for it. I'm a little busy nowadays. So I'll note it for next release.

Awesome, thanks!

Feature added at v1.5.0

Thanks for this, it works great so far :+1:


Hub-826: only notify on all encryption key decryption failures during dual running

see: https://govukverify.atlassian.net/browse/HUB-826

My instinct on this piece of work would be to try change as little as possible, even if there is some repetition of the looping through the decrypters - so that it's easier to understand in the future. Let's talk it through?


Cannot have a class named Subscription, causes field resolution to fail

I have the following types defined

but when trying to access the field using this query
{
  viewer{
    userUnsubscribes{
      subscriptionId
      isOptoutOfSms
      isOptoutOfEmail
      subscription{
        name
        description
      }
    }
  }
}

i get this error
"errors": [
    {
      "message": "The field `name` does not exist on the type `Query`.",
      "locations": [
        {
          "line": 1,
          "column": 20
        }
      ],
      "extensions": {
        "remote": {
          "Exception": null,
          "message": "The field `name` does not exist on the type `Query`.",
          "locations": [
            {
              "line": 1,
              "column": 20
            }
          ]
        }
      }
    },

if i rename my class from Subscription to anything else it works as expected

We are moving this to 11. We will definitely fix it.

I'd love to raise a fix for this if I can get some directions @michaelstaib

Duplicate of #3571.


cronjob not working.

Log file output:
/bin/sh: 1: godaddy-dns: not found
which godaddy-dns
/usr/local/bin/godaddy-dns
cronjob:
*/5 * * * * godaddy-dns > /var/log/godaddy-dns.log 2>&1
cronjob installed under root user.
any ideas?
if I type
godaddy-dns
[Tue Jul 03 2018 12:19:10 GMT+0300 (EEST)] Current ip and last ip match. No update neccessary.
Thanks.

Is NPM bin path exposed to your root user?

if not you can try to use the full binary path in your cron definition. Something like:
*/5 * * * * /full/path/bin/godaddy-dns > /var/log/godaddy-dns.log 2>&1

If I run it in terminal just using 'godaddy-dns' with the root user it runs, so I think the npm bin path is exposed to root user..
I already tried with full path too:
*/1 * * * * /usr/local/bin/godaddy-dns > /var/log/godaddy-dns.log 2>&1
log output file:
/usr/bin/env: node: No such file or directory

Then it seems node to be missing in your cron user...

which node
/usr/local/bin/node
node --version
v6.9.2

Hey sorry for the delay, i hope you already figured it out but to me it seems that you are either missing node or /usr/bin/env for some reason is not present in your machine.
The following approach might work even though it might not be the cleanest:
*/1 * * * * /usr/local/bin/node /usr/local/bin/godaddy-dns > /var/log/godaddy-dns.log 2>&1

it works indeed.
thanks you for your time. :)

Glad it works :)


Small change to remove duplicate unit tests

Motivation and Context

After test projects renaming one folder was merged incorrectly. This PR removes duplicate unit tests, which currently exist in two places.
Description

I noticed a folder in src which is obsolete, since this folder is currently located in SemanticKernel.UnitTests:

Contribution Checklist

[x] The code builds clean without any errors or warnings
[x] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
[x] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with dotnet format
[x] All unit tests pass, and I have added new tests where possible
[x] I didn't break anyone :smile:

Closed since the same change exists in https://github.com/microsoft/semantic-kernel/pull/113


Encode key name

What kind of change does this PR introduce (bug fix, feature, docs update, ...)?
feature
What is the new behaviour (if this is a feature change)?
Adds encodeKeyName methods for encoding key names according to LSP2 JSONSchema standard https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-2-ERC725YJSONSchema.md
Other information:
Closes #74

Codecov Report

Merging #86 (d677886) into develop (103d485) will increase coverage by 11.21%.
The diff coverage is 87.27%.

@@             Coverage Diff              @@
##           develop      #86       +/-   ##
============================================
+ Coverage    76.07%   87.28%   +11.21%
============================================
  Files            9       10        +1
  Lines          443      590      +147
  Branches       101      116       +15
============================================
+ Hits           337      515      +178
+ Misses          54       40       -14
+ Partials        52       35       -17

Impacted Files
Coverage Δ

src/providers/ethereumProviderWrapper.ts
75.00% <75.00%> (+16.37%)
:arrow_up:

src/lib/utils.ts
79.72% <77.87%> (-0.43%)
:arrow_down:

src/providers/web3ProviderWrapper.ts
86.95% <83.78%> (+22.09%)
:arrow_up:

src/lib/provider-wrapper-utils.ts
88.88% <88.88%> (ø)

src/index.ts
89.39% <90.59%> (+10.94%)
:arrow_up:

src/lib/schemaParser.ts
94.11% <94.11%> (ø)

src/lib/constants.ts
100.00% <100.00%> (ø)

src/lib/encoder.ts
91.48% <100.00%> (+20.52%)
:arrow_up:

src/schemas/index.ts
100.00% <100.00%> (ø)

src/types/Method.ts
100.00% <100.00%> (ø)

... and 4 more

Continue to review full report at Codecov.

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


Image file viewer not working

Right click on a jpeg and click 'view'. A popup opens saying 'viewing file' but nothing happens.
Safe Browser 0.14.1.

I can't reproduce this error with the Solid version. I've uploaded a jpg and was able to right-click -> open the image and it displayed it. (Using Firefox and Solid)


the page starts without any styling, how can I change it?

when I enter the app it shows a page without formatting for a short period, is there a solution for that?

Already covered in Readme.
Usage -> Use useThemeSwitcher Hook:
  if (status === 'loading') {     return
Loading styles...
; }
But this status check causes rendering components twice. I was able to fix it like this:
  if (status !== 'loaded') {     return
Loading styles...
; }
Hope it helps :)


Deleting files on windows is slow

In certain cases deleting a large number of files in windows is seen as being much slower than through explorer.  I did some investigation on this over at arsenetar/dupeguru/issues/664.  I was curious if the IFileOperation interface would provide a faster means of interacting with the windows API, this was technically correct although not a huge savings.  I did find that by batching delete operations to the API (using IFileOperation) did have pretty significant time savings (around 70-75% less time).  It does appear this can be done with SHFileOperation as well so I might give that a try as well.
Is supporting a list of files to trash something that makes sense to support?  If a platform driver does not support bulk operations then it could just loop over them instead of truly batching.

Yes, it would be a fine addition to the library.

Looks like I just need to update the unit test to include a case where multiple files are specified, right now my branch is passing tests (but not testing lists).  I'll get a PR open once I get through that.


option to disable non-workspace extension recommendations, or make it more clear which extension recommendations are not workspace recomendations

in my project, there are several extensions in our recommended extensions.json, but vscode sneaks in recommendations that are not recommended by workspace, but by vscode itself:

in this screenshot, the WSL extension is recommended by vscode, and the YAML extension is recommended by the workspace. you have to hover over the star icon to figure out which recommendations are actually relevant for this workspace. this makes it confusing for new developers who just want to install the extensions required for the workspace, and not random additional ones that vscode suggests.
as a workaround, i can add these vscode recommendations to the unwantedRecommendations array, but that's annoying because i would have to update that list whenever new recommendations show up.

VS Code shows workspace recommendations on the top followed by other recommendations. If you are not seeing in this order, can you please share the steps to reproduce?

i don't know if i could, since it seems to be some sort of recommendation algorithm that shows different results based on all sorts of unknown factors. (i feel like it'd be comparable to coming up with steps to reproduce an ad i saw in a social media feed.) but i'll give it a go

it seems that the docker and wsl extensions always appear above workspace recommendations.
steps to reproduce:

add redhat.vscode-yaml to the workspace recommended extensions

open a Dockerfile to trigger the non-workspace recommendation

go to the extensions tab and look at the recommended extensions list

even if these were showing up in the correct order (workspace recommendations first), it's still extremely confusing and misleading to the user to use the exact same icon for two completely different types of recommendations. i get that microsoft wants to get as many people using their extensions as possible, but this seems comparable to an advertisement that is not clearly labelled as one.

I found out that there is a bug in showing them in the right order. Will fix that.

it's still extremely confusing and misleading to the user to use the exact same icon for two completely different types of recommendations.

I am not sure how much it makes sense to show different icons for different kinds of recommendations. It might be super noisy or confusing. I believe at present we have a right balance to show an icon for recommendation and explanation on hover.


[QUERY] retry policy of ResourceManagementClient.Resources.BeginUpdateByIdWithHttpMessagesAsync

Library name and version
Microsoft.Azure.Management.ResourceManager.Fluent 1.37.1
Query/Question
this is how we create a ResourceManagementClient:
new ResourceManagementClient(
RestClient
.Configure()
.WithEnvironment(AzureGlobalCloud)
.WithHttpClient(this.httpClientFactory.CreateClient())
.WithCredentials(credentials)
.Build()
);
then we call resourceManagementClient.Resources.BeginUpdateByIdWithHttpMessagesAsync to update a VMSS. The problem is, for some 4** and 5** error, we set retry-count to 3 in our service side and totally trigger 4 times BeginUpdateByIdWithHttpMessagesAsync, but there are all 16 Patch requests from VMSS activity-log side:

per 4 Patch request shared the same clientRequestId. I guess probably it's the retry-policy of ResourceManagementClient SDK leads to those all 16 Patch requests.
So I want to know, as we did not explicitly set retry-policy of resourceManagementClient, is there any retry-policy is configured to ResourceManagementClient by default? and how can we check/see its retry-policy in our service?
Thanks!
Environment
No response

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Hey @wangcancan1996 , thank you for reaching out to us.
The SDK you're using is the old one which has been deprecated, please follow this migration guide and move to the new Azure.ResourceManager SDK, in which you can customize the retry policy.


Handling X-Forwarded-Proto

Hi there.
I'm wondering if there is a "standard" way to handle reverse proxying in Javalin.  To explain the issue, I have the following test Javalin project
fun main(args: Array<String>) {
    val javalin = Javalin.create().start(7777)

    fun printKeyDetails(ctx: Context){
        ctx.result("""
            Host: ${ctx.host()}
            Scheme: ${ctx.scheme()}
            URL: ${ctx.url()}
            Full URL: ${ctx.fullUrl()}
        """.trimIndent())
    }

    javalin.get("/",::printKeyDetails)
}

I then have an apache server in front of it which is using SSL and looks like this
<VirtualHost *:443>
  ServerName mydomain.com

  # set up ssl
  SSLEngine on

  # SSL related configuration goes here, so certificates etc

  # proxy pass through to Javalin
  RequestHeader set X-Forwarded-Proto "https"
  ProxyPass / http://localhost:7777/
  ProxyPassReverse / http://localhost:7777/
</VirtualHost>

Problem is that when I access that, I see the following

Host: mydomain.com
Scheme: http
URL: http://mydomain.com/
Full URL: http://mydomain.com/

So it doesn't appear to pick up the X-Forwarded-Proto header.  I know I can override the ContextResolver in JavalinConfig to change the method which calculates the scheme, but this only changes the scheme and not the URL, so I'd also need to override url() and fullURL() and wouldn't affect the raw http request.
I think X-Forwarded-[xxx] headers can be handled automatically by Jetty, so I'm wondering if there is a better (or standard) way to do this in Javalin?

I think X-Forwarded-[xxx] headers can be handled automatically by Jetty, so I'm wondering if there is a better (or standard) way to do this in Javalin?

Can you elaborate a bit on this? How can this be handled? In Javalin, you have the option to fully configure the Jetty Server, maybe you can already configure this?

That was what I was wondering.  Running stuff behind an SSL terminating proxy is fairly standard so I was wondering if there was a "standard" way of doing it so that URLs are correctly resolved.
For example, with Tomcat you can set a "valve" which replaces the protocol / host / remote IP with the ones read from the relevant X-Forwarded-XXX headers
https://stackoverflow.com/questions/5741210/handling-x-forwarded-proto-header-in-java-web-application
Jetty seems to support this via a configuration but I'm not sure how this explanation would map through into embedded Jetty
https://serverfault.com/questions/618172/https-reverse-proxy-on-http-jetty
It seems to be some form of "customizer" if that makes any sense, but I'm not super-familiar with Jetty - it talks about adding a org.eclipse.jetty.server.ForwardedRequestCustomizer which then handles the X-Forwarded-XXX headers.

The idea is that this replaces it at the http request level.  If I fix it at the Javalin level (by overriding scheme(), url() and fullURL()) the raw HTTP request would still be returning the "wrong" scheme, url, etc.  The benefit of the Tomcat valve is that it replaces it in the HttpServletRequest as well so it is lower level.

Ah.  Just found this which appears to be relevant
https://github.com/javalin/javalin/issues/1166

Hi @tipsy
That looks fine to me.  I'll take a look at it tomorrow.
Do you agree we should output a warning if someone sets a httpConfigurationConfig but also sets a server?  Just thinking that if someone supplies a custom server they should already have done all the httpConfiguration stuff and I don't think we'd know which of the connectors to apply to etc.

Do you agree we should output a warning if someone sets a httpConfigurationConfig but also sets a server?

Yes, and that's probably something we should look into for the other consumers too.


Multi-node Tree Picker property editor in Block List block causes duplicated block previews

Which Umbraco.Community.BlockPreview version are you using?
1.10.3
Which Umbraco version are you using? For example: 10.4.0 - don't just write v10
13.4.1
Bug summary
When an element type (block) within a Block List contains a Multi-Node Tree Picker property editor, the preview of the first block in the block list is rendered for all other blocks. Even after removing the block containing the multi-node tree picker and re-saving the content, the block previews are still duplicated.
Steps to reproduce
Just a note, in testing this, I was using a clean install of Umbraco with the official Umbraco Starter Kit added to it.

Create a Block List property editor containing several blocks (e.g. the Headline and Rich Text blocks that come in the demo set of blocks).
Ensure the blocks use the block preview from the package (~/App_Plugins/Umbraco.Community.BlockPreview/views/block-preview.html).
Create a new block (element type) and add a Multi-node Tree Picker property editor to it that picks up to 1 item from a collection of content in the CMS.
For example, a Blogpost block that contains a multi-node tree picker property editor to pick the blog post:

Create a Razor view for the Blogpost block and save it in Views/Partials/blocklist/Components/.
For example:

@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockListItem>;
@using ContentModels = Umbraco13Demo.Web.Models.PublishedContent;
@{
    var blogpostBlock = (BlogpostBlock)Model.Content;

    var blogpost = blogpostBlock.Content as ContentModels.Blogpost;
}

<EMAIL_ADDRESS>

Go to a CMS page that uses the Block List property editor and create an instance of 'Headline' block (or other block). Then add an instance of the block that uses the multi-node tree picker property editor (e.g. Blogpost block).

Expected result / actual result
Each block should render a preview using the HTML defined for that block's razor file. Instead, the first block's preview is duplicated for all other blocks.

Even after removing the block containing the multi-node tree picker, the previews still seem to be duplicated.

IMPORTANT NOTE: This bug does not occur in a Block Grid property editor.

Hi @rickbutterfield. Thanks for this amazing plugin!
Just wondering whether you might have some availability soon to investigate this ticket?

Hey @timeverts! There was another issue raised recently where Block List items were duplicated, fixed in 1.10.4 (see some of the later comments on #64)
Please could you try that first, and if it doesn't fix it I'll investigate further!

Hey @timeverts! Please can you confirm if this is still an issue? If not I'll close the issue 😊

@rickbutterfield, my apologies for taking so long to look into this again. Now that I've updated from v1.10.3 to v1.10.5 I can confirm the issue is resolved. I suspect it was resolved in 1.10.4, as you mentioned.
Thanks for all your work on this amazing plugin.


Update label to include name when adding objects.

It's a little suspicious that the "addObject" message gets sent twice per mesh but the second message includes the correct label. This change updates the label on the existing treeViewItem.

thanks again :)
I looked at the code and i got a few questions

does this work if the object3d name is changed over time ?
shouldn't that be in the 'objectSelected'  ?


.gitattributes: text=auto

Without this change, files get weirdly mangled on checking them out, git rebase and whatnot.
Initially, I got this version of .gitattributes from this comment on GitHub checkout Action repository.
Why have I even introduced this? Because I've decided we want to keep the line endings as \n (otherwise, they themselves get occasionally messed up by myself and other contributors). And then I found that GitHub Actions check out the repository with autocrlf=true on Windows. To avoid that, I wanted to do an equivalent of core.autocrlf=input, and took the advice from the aforementioned comment.
I was wrong, and I hope the problem gets fixed by this.

An example of how things got messed up you can see in PR https://github.com/ForNeVeR/wpf-math/pull/329: as you can see, .ttf and .png files become 1 byte lesser, perhaps because a stray \r\n was found by Git somewhere there.


Added support for video analytics (and fix)

Added retry strategy for accounts with rate limit (HTTP 429)
Changed VideoFile to disable sampling
Fixed connectivity test issue on collab due to the lack of /etc/proto file  (and re-enabled connectivity test)

btw, don't forget to add a new entry to README to showcase your work, @cat101


Removed the Gitops guide

Removed the gitops guide as it does not work for Kubeflow v0.7 onwards. Also removed the redirect entry for the same guide.
Fixes https://github.com/kubeflow/website/issues/1259

This change is

/assign @jlewi

/lgtm
/approve


fastroute should gracefully die on illegal defs (specifically multidriven pins)

Priority: Medium
Details:
fastroute should be able to detect illegal defs, specifically ones that have multiple nets connected to the same sink/pin. TritonCTS had/has a bug that can create this, and the resulting case is TritonRoute complaining about no coverage on one of the nets (I think fastroute only covers the pin on one net)
Steps to reproduce
Try to route a design with a pin connected to multiple nets. Ideally this should be added as a unit test that is expected to fail

tiny-tests need support for annotations in comments about the expected error message in the case a test is expected to fail.
Look at a couple of these tests from gcc-testsuite, it's a folder with thousands of tiny tests for the gcc compiler. It's absolutely fanatastic to work with as a compile developer.
One of the things that you can do that's very useful is to specify options in a .c file and specify what expected error message you should see.
https://github.com/gcc-mirror/gcc/tree/master/gcc/testsuite/gcc.c-torture/execute

Please, check commit 237ee4bff34060fd7e1e322086c259ee5c51a548.

Closing based on commit information. The bug has been fixed in TritonCTS and is hard to manually create a bad test case.


Implement lifecycle node

Solves #9
Side note: we had issues with the sick scanner node crashing with an error -11 and reported it on issue #8. This is solved when using a lifecycle node where we call configure then activate using ros2 lifecycle set /name_of_the_node configure && ros2 lifecycle set /name_of_the_node activate or using navigation2's lifecycle manager node.

Hi, thanks for sharing this. It looks like there are some code duplication now between the classic node and lifecycle node.
i will put a TODO, to refactor this in the future. however I will test and check the lifecycle node as is and merge it probably in two weeks, when I had access to a scanner. First brief glance at the PR looks promising

I could work on the duplication, but it wouldn't be before early August. Agreed that this is something to do!

@puck-fzi Any update on this ?

Hi, sorry I didn't get around to Testing it before my Holidays. Will do that as soon as i get back. Sorry for the delay.

Hi, I finally got around to testing it. Working as expected. There are two minor things I would like to be in the PR. Could you add a brief description to the readme on how to start and and activate the node with the lifecycle.
Second: when only doing the configure step, there will be a lot of warnings, that messages are tried to being published. Since I am not that familiar with lifecycle Nodes maybe you know how to best resolve this.
[sick_safetyscanners2_lifecycle_node-1] [WARN] [1628500948.017306622] [LifecyclePublisher]: Trying to publish message on the topic '/scan', but the publisher is not activated
Otherwise I deem it ready to be merged, with the open future to do of refactoring it, that both lifecycle and non lifecycle node don't have that much code duplication.

@puck-fzi Latest changes should prevent the warnings from happening, tell me if it does on your side.


Add full tests for proto zip, static zip, and zipAll

Conflicts resolved and merged with 381d5bf ... thanks @staltz


Removing Mac GPU links out of r1.3.

Sorry, can you resolve the conflicts? :(

I merged this in with https://github.com/tensorflow/tensorflow/pull/11794 which caused the conflict.


use {{ site.baseurl }} instead of {{ site.url }}

Theme runs nicely on Github Pages if the site is setup as users or organizations pages, but links are broken if the site is a project page, see #215.
This PR is to correct this behavior by replacing {{ site.url }} by {{ site.baseurl }}.
See more info here.

This is an improper use of baseurl, see https://byparker.com/blog/2014/clearing-up-confusion-around-baseurl/
If you're going to use it both should be define eg. {{ site.url }}{{ site.baseurl }}
A better way to support url and baseurl is to do it similar to how I've done it in my other theme.
{% if site.url %}
  {% assign base_path = site.url | append: site.baseurl %}
{% else %}
  {% assign base_path = site.github.url %}
{% endif %}

Which is in an include and can be used as the variable {{ base_path }}.
Eg. {{ post.title }}

What about relative_url and absolute_url?
{{ "/docs/assets/" | absolute_url }} => https://jekyllrb.com/myproject/docs/assets
{{ "/docs/assets/" | relative_url }} => /myproject/docs/assets

More info.

baseurl and url have been correctly used in the theme by relying on Jekyll's relative_url and absolute_url filters as @sanmai pointed out.
Currently in #265, and will land when merged.


ncdu: Illegal instruction (core dumped)

Describe the bug
The new version of ncdu crashes at runtime.
However, when run in a nix-shell, the 1.16 version is grabbed so it works:
[gaetan@server:~]$ ncdu --version
ncdu 2.1.2

[gaetan@server:~]$ ncdu
Illegal instruction (core dumped)

[gaetan@server:~]$ nix-shell -p ncdu --command "ncdu --version"
ncdu 1.16

[gaetan@server:~]$ nix-shell -p ncdu --command ncdu       # It works

Steps To Reproduce
Steps to reproduce the behavior:

Add ncdu to the system packages
run ncdu

Expected behavior
The program works as expected.
Additional context
I am using the nixos-unstable channel.
Bug report on ArchLinux: https://bugs.archlinux.org/task/74046
Notify maintainers
@pSub @SuperSandro2000
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[gaetan@server:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 5.15.59, NixOS, 22.11 (Raccoon), 22.11.20220808.0e27b0d`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.10.3`
 - nixpkgs: `/nix/var/nix/profiles/per-user/root/channels/nixos`

Probably a case of https://github.com/NixOS/nixpkgs/issues/185665 where zig uses -march=native and hydra builds binaries with too high CPU requirement.

Is there something we can do to fix this ?

arch has https://github.com/archlinux/svntogit-community/blob/9268385f4036c3db5f221f9d16d95f93d1cc3b9d/trunk/PKGBUILD#L31

looks like a duplicate of #169461

Proposed a fix in https://github.com/NixOS/nixpkgs/pull/197046


Fix Packet URLs

Description
Fixed broken links to Packet docs.
Urgency

[ ] Blocker
[ ] High
[x] Medium

Requirements

Test all commands and procedures.
Build content locally and test for formatting/links.
Add redirects to dcos-website/redirect-files.
Change all affected versions (e.g. 1.7, 1.8, and 1.9).
See the contribution guidelines.

👍  Looks good to me, thanks!


Track numVisited when performing graph searches

This PR introduces a results container to return nearest neighbors alongside associated metrics from the search.

Ship it!


[Question] Possible to show video title in media player title bar?

Hi. Just wondering if it's possible to show the video title in the media player title bar (I use VLC).
Thanks for this great piece of software. I use it everyday with Chatty and Twitch.tv

This is currently not possible. (See #194 )

Thanks.


TypeError: Cannot read property 'state' of getState

Hi guys, great lib to control spotify.
However i m running into an error when i try to get the state.
spotify.getState(function(err, state){});
here the full error :

TypeError: Cannot read property 'state' of undefined
....
at spotify-node-applescript/lib/spotify-node-applescript.js:98:20
at ChildProcess. (...node_modules/applescript/lib/applescript.js:54:7)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)

even more weird seems that the Json object state is not empty because i can still print it.
This happen even if my callback of the getState function is empty.
I have been looking in the code and also on the issue #28 but no luck for now.
OSX : 10.12 - node js V6.8.0 - npm 3.10.8
Hope you can help me =)

One more hint, i just realised that if I restart my spotify i don't have the issue.


It should be possible to choose the order of groups in the chart list

Charts can be given a 'Group' and a 'Sub group' in the database, which sorts the charts into different groups in the chart list:

It is unclear to me how the order of these groups is determined (not alphabetically for example). Is it be possible to choose the order of these groups somewhere? That would be nice!

I agree it would be nice to do this in the admin section. For now it can be done by changing the order of group keys here.

I think I just wanted to know how to adjust the order and now I know. Good enough to change the order of group keys like this :)


fix: inheritance diagram links

Overview: What does this pull request change?

Fix for inheritance graph links within sphinx documentation

Motivation and Explanation: Why and how do your changes improve the library?

All the links within the inheritance graph are broke. They are not pointing to the stable/reference link.
As explained in the issue #1885
Links to added or changed documentation pages

Further Information and Comments

Reviewer Checklist

[ ] The PR title is descriptive enough for the changelog, and the PR is labeled correctly
[ ] If applicable: newly added non-private functions and classes have a docstring including a short summary and a PARAMETERS section
[ ] If applicable: newly added functions and classes are tested

Rendering the diagrams as png's is not a good idea, as they will loose the ability to adapt to the color scheme. Additionally, for me (Safari 14.1.1) the links in the diagram are not rendered in the correct places.
I'm closing this PR for now, given that there haven't been any changes in the last two weeks – please feel free to reopen it, in case you want to continue working on this.


qt.style.catppuccin.apply doesn't do anything for me

I trying to make qt apps use catppuccin and i have this in my home.nix
 home.catppuccin = {
   enable = true;
   accent = "blue";
   flavor = "macchiato";
   pointerCursor = {
     #size = 24;
     enable = true;
     accent = "dark";
   };
 };
 qt = {
   platformTheme.name = "kvantum";
   style = {
     name = "kvantum";
     catppuccin = {
       apply = true;
       enable = true;
       accent = "blue";
       flavor = "frappe";
     };
   };
 };

Unfortunately I still do not have a Kvantum folder in ~/.config, after looking at kvantum.nix I see no reason why it should not work.
For now, I will just recreate this from kvantum.nix
    xdg.configFile = {
      "Kvantum/${themeName}".source = "${theme}/share/Kvantum/${themeName}";
      "Kvantum/kvantum.kvconfig" = lib.mkIf cfg.apply {
        text = ''
          [General]
          theme=${themeName}
        '';
      };
    };

But I would be very grateful if someone could tell me why it doesn't work on its own.

 qt = {
  # MISSING
   enable = true;
   platformTheme.name = "kvantum";
   style = {
     name = "kvantum";
     catppuccin = {
       apply = true;
       enable = true;
       accent = "blue";
       flavor = "frappe";
     };
   };
 };

I think you are missing qt.enable=true ? Which is needed for the catppuccin module (and home-manager module) to set everything related to qt

Sorry for long reply and yeah of course setting qt.enable to true helped 😅
Thank you!


CLI fails to reload local dev env with no context when auth is set as Bearer in api.yml and no auth scheme is set

Describe the bug
Pretty much title. In the api.yml file, when setting the auth: parameter to something like Bearer, where the generator is expecting a subsequent
auth-schemes:
    Bearer: ...

but none is provided, the cli docs dev tool will print Failed to reload because of validation errors: and nothing else.
To reproduce
Steps to reproduce the behavior:

Run the command fern docs dev to set up local dev environment with auto reload
Write an api.yml file with an auth: set to a capitalized word (as opposed to a lowercase, i.e. Bearer vs bearer) with no auth-schemes: specified.
CLI tool will reload and state Failed to reload because of validation errors: with no additional context, which makes this issue hard to debug.

Example api.yml:
name: api
auth: Bearer
error-discrimination:
  strategy: status-code
display-name: Example API
environments:
  Staging:
    docs: This is the staging environment for testing!
    url: http://api.exampleservice.com
default-environment: Staging

Expected behavior
I expect context in the error thrown by the cli pointing me to the api.yml file and telling me i have no auth-scheme specified.
Screenshots

CLI Version
0.30.0

this seems to be an issue in many other cases of invalid fern definition, still trying to figure out where the bugs are appearing within the api definition

Actually, issue can be easily resolved if the user just runs fern check --warnings.  Was just expecting some context around the Failed to reload because of validation errors: due to the colon. Perhaps can change the error message to instruct the user to run fern check --warnings or provide some context after the colon? @dsinghvi feel free to close the issue though.

We've since improved the error messaging here to be more specific:

this is on version 0.46.2. feel free to run fern upgrade to get the latest CLI version.