Huge memory usage for some languages, e.g. Finnish

While testing https://github.com/NatLibFi/Annif/pull/626, I noticed that Simplemma needs a lot of memory for Finnish language lemmatization and language detection. I did a little comparison to see how the choice of language affects memory consumption.
First the baseline, English:
#!/usr/bin/env python

from simplemma import text_lemmatizer

print(text_lemmatizer("she sells seashells on a seashore", lang='en'))

Results (partial) of running this with /usr/bin/time -v:
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.14
Maximum resident set size (kbytes): 41652

So far so good. Then other languages I know.
Estonian:
print(text_lemmatizer("jääääre kuuuurija töööö", lang='et'))

Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
Maximum resident set size (kbytes): 41252

practically same as English

Swedish:
print(text_lemmatizer("sju sköna sjuksköterskor skötte sju sjösjuka sjömän", lang='sv'))

Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.70
Maximum resident set size (kbytes): 190920

somewhat slower, needs 150MB more memory

...
Finnish:
print(text_lemmatizer("mustan kissan paksut posket", lang='fi'))

Elapsed (wall clock) time (h:mm:ss or m:ss): 0:04.44
Maximum resident set size (kbytes): 1059328

oops, now takes at least an order of magnitude longer and 1GB of memory! Why?

I checked the sizes of the data files for these four languages:
 14M fi.plzma
2.6M sv.plzma
604K et.plzma
479K en.plzma

There seems to be a correlation with memory usage here. The data file for Finnish is much bigger than the others, and Swedish is also big compared to English and Estonian. But I think something must be wrong if a data file that is ~10MB larger than the others leads to 1GB of extra memory usage.

Looking closer, I see that this is probably just due to the way Simplemma stores token/lemma pairs in a plain dict that is pickled and compressed. There are a lot of entries for Finnish (5 million I think) so the dict becomes huge when loaded into memory. The lzma compression is quite efficient so the data files end up having quite similar sizes despite the huge differences in the number of entries.
I wonder if some other in-memory representation would be more efficient?
Another idea would be to use something like lmdb to store the entries in a memory-mapped file instead of as a plain dict.

Some more ideas for reducing the memory usage:

Generating and/or hand-crafting a set of rules for languages like Finnish and Polish for which the data dictionary is huge due to the morphology of the language and then dropping the items that can be handled by the rules from the dictionary, which should reduce its size to a fraction. There are already rules for English and German and I think it shouldn't be that hard to come up with similar rules for other languages.
Using a more space-efficient data structure such as a trie to store the dictionary. This would be a bit slower though, as the Python built-in dict is so heavily optimized.

Hi @osma, thanks for the thorough analysis. This issue is indeed related to the way Simplemma stores information. It is very fast and also very convenient, however the dictionaries can use a significant amount of memory. My impression is that it is still fine on modern systems.

We could work on rules for languages such as Finnish, feel free to work on a draft which I could integrate into the software.
A trie structure would result in a loss in terms of performance.

Thanks @adbar, I agree with your assessment. Though the README states this:

With its comparatively small footprint it is especially useful when speed and simplicity matter, in low-resource contexts, for educational purposes, or as a baseline system for lemmatization and morphological analysis.

I don't think 1GB of memory usage is compatible with "low-resource contexts", so it would be good to be able to reduce the memory requirements of Simplemma. Probably the idea of creating more rules makes the most sense here, as it shouldn't cause any significant loss of performance, especially for unrelated languages.
Are the word/lemma lists that you've used to build the data dictionaries available somewhere or are they only available as serialized dicts?

I've looked a bit closer at the dictionary of Finnish words, and also experimented with rule generation with some partial success.
While doing that, I noticed that quite many (around 14-15%) of the keys in the dictionary actually consist of two words. Here are some random examples:
'ovat nieleksineet' -> 'nieleksiä'
'olimme tuivertaneet' -> 'tuivertaa'
'eivät rohtuisi' -> 'rohtua'
'ei passattane' -> 'passata'
'et kultaisi' -> 'kullata'
'ei mässättäne' -> 'mässätä'
'ette putkahdelleet' -> 'putkahdella'

Is this intentional? Many of these are either negations (ei, et, eivät, ette) or forms of the verb 'to be', for example the first one ovat nieleksineet means '[they] have swallowed'. These are all valid expressions, but are these actually being used by Simplemma? I thought Simplemma looks at only one word at a time, so these entries would never match.

Some preliminary results from rule generation.
Starting point: the current Finnish dictionary contains 5082701 entries. Removing multiword keys reduces this to 4348028 (around 15% less).
I generated simple suffix rules, similar in spirit to those currently implemented for English, except that the suffix rules are stored in a dictionary instead of Python if/else statements. Currently I have generated a total of around 600 simple rules with either 3-, 4-, 5- or 6-character suffixes and the corresponding replacement. For example 'kot' -> 'kko' and 'toina' -> 'to'. Then I've applied these rules to the dictionary and dropped all entries where the rule produces the correct result; if no rules match, or the result of the rule is incorrect, the entry is left in the dictionary. This reduces the number of entries to around 1.8 million, a reduction of 65% related to the current situation (5.1M) and 59% of the 4.3M entries with single-word keys.
I haven't yet tried to add these rules to the Simplemma code base, just experimented in a Google Colab notebook that you may want to check out. I still need to fiddle around to find the best constraints for rule generation, but I don't expect to find a significantly better set than this.
Do you think this going in the right direction?

Note that I've intentionally kept the rules extremely simple and pretty much language agnostic - the same rule generation approach could be used for other languages where most of the lemmas can be found by changing the suffix of the word. Of course I know that Finnish has complicated consonant gradation mechanisms but I thought that I'd try to generate simple rules that cover the majority of "easy" cases and leave the difficult cases to be handled by the dictionary.

I'm afraid that going by such lists would be a non-starter from my perspective. There are simply so many possible suffixes and their combinations in Finnish to do this manually. I'm sure someone else has done it (in fact I know - the advanced lemmatizers for Finnish such as Voikko and LMC do something like this) but that's beyond my skills and resources. Also, I think such an approach would be out of scope for Simplemma which, after all, aims to be very simple.
However, one of the criteria I've used in the rule generation is the accuracy of a potential rule, as measured on the original dictionary. There's a minimum threshold for how accurate the rule should be when applied on the matching dictionary entries. So far I've experimented with different thresholds from 0.2 up to 0.9. I could also require perfect 100% accuracy from the generated rules, although it would probably reduce their number quite drastically and thus also their overall effectiveness in reducing the size of the dictionary. What do you think? This wouldn't be absolutely sure, but the dictionary is quite large already, so it's unlikely that there would be many rules with serious side effects.

Just an illustrative example: the word unissammekaan translates roughly as 'even in our dreams'. It consists of the noun uni (dream) and the suffixes -ssa (in), -mme (our) and -kaan (even). So most of the word is actually just suffixes tacked at the end :) It's not super rare either, an exact Google search gives more than 300 results - probably because it's part of an idiom (even in our dreams we didn't imagine...).
So can you just use simple rules to strip each suffix in turn? Well maybe in this case, you would end up with uni which happens to be the correct lemma here. But then consider haudassammekaan (even in our graves). If you do the same with this word you end up with hauda. But this is wrong, the correct lemma is hauta (grave)! This happens because of consonant gradation - both d and t are used in this word.
There are rule engines that can deal with this, for example HFST, and corresponding sets of rules for e.g. Finnish. But reimplementing all that in Simplemma would be very difficult and IMHO pointless.

Thanks for the example, this looks like a typical FST problem indeed...
I'll try to experiment with limiting the length of the entries in the dictionary, if it doesn't impact the results, then we could save some more space. I'm still not sure about the threshold you mention, even if 0.9 seems OK. If you have time we could run experiments.
Yet another idea would be to remove infrequent words from the list.
As for general use of Finnish data for now, unpacking the archive is slower, dictionary search is slightly slower, and it uses 1 GB of memory indeed. But the code remains quite portable, so all things considered I believe it is fine.

I've now generated 1631 rules which all have a minimum accuracy of 0.9. Together they allow dropping 39% of the remaining 4.3M dictionary entries, down to 2.7M entries. I also tried requiring perfect accuracy, but the result was pretty bad, only 106 rules and a reduction of a bit over 2%.
I think it's either doing something like this (I can still try tweaking the rule generation a little...), or just forget about the idea. If it helps, I can try turning this into a pull request that adds the generated rules to rules.py and drops the now-unnecessary dictionary entries. Then you could benchmark the result. What do you think?
I don't have a strong opinion about the infrequent words. I don't have access to the original word lists, only the dictionaries which don't provide any frequency information. I suspect there are going to be diminishing returns adding new entries to the dictionary, but also quite small reductions in accuracy if you remove the most infrequent word forms. Having the rules in place would perhaps also allow removing more of the infrequent words, as the rules may compensate for some of the lost word forms.

Sure, I will prepare a PR with the new rules. But my original motivation for doing this was also to reduce the size of the dictionary, in order to preserve memory. I hope we will get to that eventually.
As I said above, these 18 rules will only cover around 6% of the dictionary entries, and these are some of the best I could find . You need a lot more rules to increase the coverage significantly. There is very little cost in adding more rules, as they will all be stored in a dictionary instead of complicated if/else structures. But I'll start with these 18 as a proof of concept. If it turns out that there is no benefit or that there are unwanted consequences, we can abandon the whole idea of these kind of rules before spending too much time on it.

I would prefer to add rules in order to extend coverage but your logic
makes perfect sense.
As you say we could try these 18 rules first in order to see if they
bring anything. Feel free to write a PR.

I'm closing the issue since some progress has been made. We can look into it again in the future if necessary.


next_run() report wrong Date/Time

I'm having a situation where my JOB run too fast and after it is runned, my call to next_run() report the one that was gone!
Eg:

Before run: 2021-01-08 11:35:00
After run: 2021-01-08 11:35:00
Idle Seconds: -5.777853

My JOB taked 3.4326s to run, because there wasn't too much data to process.  So the next run was supposed to be "2021-01-09 11:35:00".
The "_schedule_next_run()" is protected, so I can't call to force a update when idle_seconds are less than one second.
To do it I have to patch the code and that's not a pretty solution.  Any future update (docker build image will do that).
So, Let's fix it?
Thanks!

Yes, Let's fix this!
Can you share the piece of code that causes this? Especially the part where you call schedule.ever()..... and the sleeping & schedule.run_pending() would be helpful.

Yes, Let's fix this!
Can you share the piece of code that causes this? Especially the part where you call schedule.ever()..... and the sleeping & schedule.run_pending() would be helpful.

Give no code was provided I assume the problem has been resolved. Feel free to open another issue if this is not the case.

Give no code was provided I assume the problem has been resolved. Feel free to open another issue if this is not the case.


Add a note about the multiple exec paths in binary archives

People repeatedly stumble over not realizing one needs more than only
bin/ in the PATH for zef to work. So be more vocal about that.
@leobm Can you have a look?

I think it's good.  I think I would have read that.


The ability (or instructions) on how to remove documents from the system

In our testing of the accelerator we have noticed that some documents become dominant, and/or are uploaded in error and skew the results. Currently the way to resolve this appears to be delete the whole accelerator instance and start again. While during development iterations this is OK, once we get to a "Production" instance the ability to manage the data will be critical. Could we get either the ability to remove documents from the 'content library' in a future build?

Resolved with latest release v1.1


NotImplementedError: Unsloth: microsoft/Phi-3-medium-128k-instruct not supported yet!

NotImplementedError: Unsloth: microsoft/Phi-3-medium-128k-instruct not supported yet!
For some reason, I ran into this problem. Can you help me to fix it? Thanks.

Oh we haven't yet supported the 128K variant yet sorry :( (on our roadmap!)


(IAC-376) Use Private Jump IP if Public not Present in tfstate

Changes
If the jump_public_ip is not present in the .tfstate file (The user opted not to create a public IP associated with the jump box) and jump_private_ip is present. Ansible will attempt to use that value for JUMP_SVR_HOST
Tests
Tested in AWS, GCP, and Azure on a 1.21 cluster

I first set up my private infrastructure, which includes a bastion host that I will use later to access the jumpbox.
Once connected to the bastion host I cloned the IAC project and edited my tfvars to include the following:create_jump_public_ip = false
create_jump_vm        = true

This ensures when my cluster infrastructure is created my jumpbox will not include a public IP address.

I ran terraform apply and waited for my cluster infrastructure to come up.
In the terraform.tfstate file I ensured that the jump_public_ip was not present and the jump_private_ip was.
From my bastion host I SSHed into the jumpbox and verified that filestore was mounted at jump_rwx_filestore_path, in my case /viya-share
Back on my bastion host I ran ansible plays from the viya4-deployment using the following tags baseline,viya,install
SSHing back into the jumpbox I saw that ansible was able to successfully connect to the jumpbox via the private IP and create the directories from roles/jump-server/tasks/main.yml
The deployment stabilized and notably the sas-cas-server-default-controller pod which requires the data and homes directories from the filestore to be present.

@thpang could you take a look at this one?

@jarpat looking now.


x509: certificate signed by unknown authority

Having issue with self-signed/internal-signed certificate.
If the was a way for us to provide the ca-cert file then that would be great.
Many thank

I also need an answer for this, eighter provide the cert or use a flag --unsecure.
is that currently possible  ?


Source Control not working with git

Issue Type: Bug
I have recently updated ubuntu from 20.04 to 22.04. Then I have installed the vs code and synced all. But I found, whenever I tried to check git output from vs code, I can't see anything. I have installed git and also added it to path. I also noticed other extentions can initialize the path but not working. However, when I was running the vs code in ubuntu 20.04, it worked fine.
I searched in the internet and disabled the builtin git extention and enabled again but did not work. Also, I runned vs code with 'code --disable-extensions' but not worked. Then, I have cleaned all user data and uninstalled the code but not worked.
Update
I am using duel boot  mode in my desktop. Thus, I have booted my pc with windows 11. Here, I can see the same error, where this works well in my laptop. All the reposetories are showing. But in my desktop, it only shows to initialize reposetory, though I have already. However, git is working in intregated terminal. Again, When I click on Initialize Reposetory, nothing happens.
 Could you please implement the following steps and share the output:

Download the latest Insiders release from https://code.visualstudio.com
Enable verbose logging as described in the following wiki page
Open the workspace/folder that contains the git repository
Share the contents of the git output channel


spelling

I watched the vimeo and liked the message, so I went to the website. I noticed a couple typos and figured I would lend a hand.

Thanks so much for these suggestions Albert! Welcome to the project! 😉


Can't fill in all the required fields for CaptureOrderRequest while using paypal sandbox

Hi I am currently trying out this sdk before we decide to use it for our team, but I am unable to perform capture order correctly because fields like Billing Address and Security code in card information are not provided as part of the sandbox accounts. Can someone please help me unblock this ?

@archthegit which endpoint are you trying to use? we use this library in both sandbox and prod and has worked fine for us.
Would def love to get you unblocked.

POST /v2/checkout/orders/ID/capture this is the endpoint I am using. I call the CaptureOrder method like so :
 response, err := client.CaptureOrder(order.ID, captureOderReq) But I am having issues with the CaptureOrderRequest object

@archthegit yeah this method is used in production by quite a few people using this library.
My guess is that you are hitting a weird edge case with their sandbox (we definitely ran into this). Happy to help debug, but I don't think this is an issue with the library itself.
If you need more help please post thew actual issues you are seeing here :)
I am going to close out this request, feel free to respond, and we I will help debug, but closing the issue out unless we can show that there is an issue with the lib itself.

@roopakv I think the problem is with the fact that there is no cvv or billing address for the sandbox account although it is required by the CaptureOrderRequest object. I keep getting this error {"name":"UNPROCESSABLE_ENTITY","details":[{"issue":"PAYEE_NOT_ENABLED_FOR_CARD_PROCESSING","description":"Payee account is not setup to be able to process card payments. Please contact PayPal customer support."}],"message":"The requested action could not be performed, semantically incorrect, or failed business validation.","debug_id":"99acb3a2e4fa1","links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-PAYEE_NOT_ENABLED_FOR_CARD_PROCESSING","rel":"information_link","method":"GET"}]}
I am not sure if this has something to do with the dummy cvv and billing address I put into the request object or if this is a paypal problem

are you taking payments for your own account, or on behalf of someone? if on behalf of someone you need to set your account up. my guess is that the problem is not related to CVV, but the dev account you have.
Usually payee errors mean that some sort of whitelisting is missing, or you do not have permissions to accept payments.


Begin untangling the mess of MacStadium-land

What is the problem that this PR is trying to fix?
What approach did you choose and why?
How can you test this?
What feedback would you like, if any?

:rip:


Make velocity dependency Copyable

In this docs,
https://velocityx.dev/#/home
I can not copy the dependency. As it's expected behavior, it needs to be fixed if Flutter web supports it.

The new documentation is in work. That will fix it forever 😉


Use "localhoost:" for test and development environments to fix security vulnerability

Description
Changes the port definition in various places from *: to localhost:portnumber to avoid a security vulnerability, because servers that expose debug protocol ports are by design vulnerable to remote code execution. This vulnerability is removed by limiting the exposure to local host.
I tested this with bin/run-dev bin/run-tests and browser tests locally. If the setup is used differently for presubmits, they will hopefully fail in that step. Comments are welcome in case you can think of other contexts this may run in and fail with the localhost limitation.
Release notes
N/A
Checklist
General
N/A
User visible changes
N/A
New Features
N/A
Issue(s) this completes
N/A

Codecov Report

Merging #3892 (8a03699) into main (2210387) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main    #3892   +/-   ##
=========================================
  Coverage     80.82%   80.82%
  Complexity     2448     2448
=========================================
  Files           296      296
  Lines          9647     9647
  Branches        658      658
=========================================
  Hits           7797     7797
  Misses         1596     1596
  Partials        254      254

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

Have you tried connecting to the running server using java debugger? You should be able to do it using intellij remote debugger. Otherwise looks good.


Health Checker URL Rewrite Rule

Is your request related to a problem? Please describe.
If an admin manually created a URL rewrite rule in IIS for the AutoDiscover virtual directory and did a match with a value of * it would fail to have AutoDiscover work correctly. You would receive a HTTP 500 back from https://localhost/autodiscover/autodiscover.xml instead of a HTTP 600 response.
Describe The Request
Do some testing to verify that if any rule has a match of * it breaks URL rewrite or if it is just on a sub virtual directory.
Additional context

Was able to reproduce this, for every location where this rule is applied, if the match type is url and equals * it will cause a 500 for every location. if you follow the latest rules for the workaround set at the default web site, it will apply to all the protocols.


Update Tutorial 1

'?flush=1' changed to '?flush', '=1' is not required.

The requirement for '=1' has only just been removed so it might be worth keeping this in the docs for now? It won't work for slightly older versions 3.1 - 3.1.6 (or thereabouts) so could trip people up.

The requirement for '=1' has only just been removed

From what I can see there was no stable release where it didn't work without a =1. If you were running the 3.1 branch between 3.1.6 and 3.1.7 then for a month or two it would have been the case that it wouldn't have worked (August - October was the un-patched period).
However, I'm not sure that removing the =1 is a good idea even if it isn't explicitly required as it may confuse some people and doesn't have any unexpected consequences in doing so.

I’d also be inclined to leave it as-is: the =1 is currently required on the command line, so for the sake of consistency I think we should always recommend flush=1.

OK, closing this. Thanks @scott1702 - it's something I thought about myself too, but I think on balance it should be there.


Lead status is not optional

Should not include square brackets when it is not optional

Fixed in PR #178


Added WritableBitmap DrawingContext support.

What does the pull request do?
Adds a CreateDrawingContext method to WriteableBitmap to return a DrawingContext which can be used to draw to the bitmap.
Question
The nearest API to this in WPF is DrawingVisual.RenderOpen - should this be called RenderOpen or CreateDrawingContext?
Checklist

[x] Added unit tests (if possible)?

Apparently @kekekeks thinks allowing this may cause problems in future because drawing GPU-backed bitmaps to a main-memory-backed WriteableBitmap will be an async operation, so closing for now.

Wouldn't that imply that the current RenderTargetBitmap is broken as well?

I think so, yeah. Getting the data from an RTB in UWP for example is async: https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.media.imaging.rendertargetbitmap.getpixelsasync?view=winrt-19041#Windows_UI_Xaml_Media_Imaging_RenderTargetBitmap_GetPixelsAsync


Image trace is not shown

Image trace does not display well.
using PlutoPlotly
plot(image(;z = rand(3,5,3)*255))

The error message is as follows

The workaround is to use Plot() with a capital P.
PlutoPlotly : Image trace is not shown - General Usage - Julia Programming Language

Pluto.jl(v0.19.26), PlutoPlotly.jl(v0.3.7)
julia> versioninfo()
Julia Version 1.8.1
Commit afb6c60d69a (2022-09-06 15:09 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin21.4.0)
  CPU: 16 × Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, skylake)
  Threads: 6 on 16 virtual cores
Environment:
  JULIA_NUM_THREADS = 6
  DYLD_LIBRARY_PATH = /usr/local/opt/suite-sparse/lib:

This should now be fixed with #17


Pytest should clear collected metrics after each test runs

Right now it's possible for the metrics generated by one test to be picked up by another test.
Each test should somehow "clear" the collected metrics, so that their actions do not pollute the result of (e.g.) generate_latest

I think I hit this issue when working on #54 — some tests passed that should have failed because they were comparing against metrics generated by other tests


[release] Multiple improvements

IMPORTANT: PRs without the template will be CLOSED
Description of your pull request and other information

Cleaned up commit history of relevant release changes. See commit history for more info.
These changes should be committed at least somewhat separately.
Template

Before submitting a pull request make sure you have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8 and ran relevant tests

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check all of the following options that apply:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[ ] Fix or improvement to an extractor (Make sure to add/update tests)
[ ] New extractor (Piracy websites will not be accepted)
[x] Core bug fix/improvement
[x] New feature (It is strongly recommended to open an issue first)

Committed as https://github.com/yt-dlp/yt-dlp/compare/447afb9eaa65...23c39a4beade


Add support for releasing Docker images

This addresses the issue #3 where we want to push to Docker image to the Docker Hub once Travis is done running the tests.

Could you add this project to travis so it builds the pr?

@alex-glv you mean this integration?


Scale is not equivariantly handled

Hi,
Thank you for your great work!
The paper says the proposed approach is equivariant to geometric transformations.
However, checking your code here, only rotation and translation are consideration.
Where is the scale handled?

Hi @hongsukchoi
Thanks for your interest in the paper. Normalization of embeddings handles the scale.


[Feature Request] Separate "media consumption" from "media production" apps in the categories

Hi!
Any way to separate the "media consumption" apps from the "media production" ones? (Audio & Video)
I'm trying to look through the media production apps available (and I usually check again from time to time) and it's really hard to distinguish because there are so many media players and other media consumption apps mixed together with the production apps into a long multi-pages list.

Nothing we have right now, but there are additional categories in the spec. Not sure they would be helpful for your usecase https://specifications.freedesktop.org/menu-spec/latest/apas02.html


Blockchain reorg handling

Summary
Handle blockchain reorg and add/remove transactions that are added/gone.
Problem Definition / Why?
There might be a case when a tip got changed and the new block has new transactions that are relevant to subscriptions and/or the transactions sent to notifier are gone. This means some of the relevant transactions will not be delivered with the current process and also some of the transactions might be erroneously reported to the wallet. This happens quite often on "fast" blockchains, like Ethereum.
Proposal
Identify a reorg is very easy -- the app just needs to compare the latest block's hash with the one at the blockbook. If they do not match, then the block needs to be fetched and sent to the notifier again. This will cover one block reorg.
We can define a const BLOCK_REORG_DEPTH that will control the maximum depth of reorgs that the app would handle. If BLOCK_REORG_DEPTH=10 the app would need to store in the tracker table an array of hashes length of 10 where the hash[9] equals the last block in the blockchain and hash[0] would be block with height=latest-9. The app will be able to iterate backwards until it finds that the hashes match. All transactions from the updated blocks would have to be resent to the notifier again.
From blockbook docs:

Note: Blockbook always follows the main chain of the backend it is attached to. If there is a rollback-reorg in the backend, Blockbook will also do rollback. When you ask for block by height, you will always get the main chain block. If you ask for block by hash, you may get the block from another fork but it is not guaranteed (backend may not keep it)

We use minConfirmation for block to handle it.
https://github.com/trustwallet/blockatlas/blob/master/coin/coins.yml#L93


Remove /var/lib/kubelet from user-volumes

As we recommend using RKE to deploy K8s on RancherOS, the legacy volume /var/lib/kubelet is meaningless. I will remove it.
    user-volumes:
      image: {{.OS_REPO}}/os-base:{{.VERSION}}{{.SUFFIX}}
      command: echo
      labels:
        io.rancher.os.createonly: "true"
        io.rancher.os.scope: system
      log_driver: json-file
      net: none
      privileged: true
      read_only: true
      volumes:
      - /home:/home
      - /opt:/opt
      - /var/lib/kubelet:/var/lib/kubelet

I believe this will break 1.6 installs?


cant download

when i give a download number to katastrophe software can't download and return this error
Traceback (most recent call last):
File "/usr/local/bin/katastrophe", line 9, in
load_entry_point('katastrophe==1.1.9', 'console_scripts', 'katastrophe')()
File "/usr/local/lib/python2.7/dist-packages/katastrophe/katastrophe.py", line 193, in main
music_torrent()
File "/usr/local/lib/python2.7/dist-packages/katastrophe/latest.py", line 282, in music_torrent
download_torrent('https://kat.cr' + torrent_href[(int(serial) + 30) - 1],music[int(serial) - 1][1])
File "/usr/local/lib/python2.7/dist-packages/katastrophe/latest.py", line 35, in download_torrent
subprocess.Popen(['xdg-open', mag[torrent - 1]],
NameError: global name 'mag' is not defined
Using Linux Mint 17.1 Rebecca
Release:        17.1
Codename:       rebecca
mint rebeca 17.1 = ubuntu trusty
and Python 2.7.6

please update the tool and try again...i have fixed it now.


Fix QR codes

On some pages, the QR codes point to Breaking FUD #1. The purpose is to enable readers to leave online comments on the articles that they're reading in physical format – so fix the QR codes ASAP.

QR codes now work as they should have. See V3, published in July 2023.


Merge system properties in a thread-safe manner

I noticed after an upgrade to OpenJDK 8u252 I started getting exceptions thrown when starting the Alluxio services. Alluxio getConf was throwing a ConcurrentModificationException when trying to load the site properties. I'm not sure exactly who was modifying the properties concurrently, but it is not safe to iterate over System.getProperties().entrySet(), so we make a copy of the properties first now before merging.
The impact of this change is low because reloadProperties is mainly called during testing and not during normal Alluxio usage.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/9280/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/9281/
Test PASSed.

alluxio-bot, merge this please.


No pointcloud received from rotors_simulation

Running the LOCO planning as described, by installing the rotors simulator and running roslaunch mav_local_planner firefly_sim.launch. Which results in the Gazebo window showing up. However no incoming messages seem to exist on either the /firefly/pointcloud or /firefly/vi_sensor/camera_depth/depth/points topic. Further I am able to visualize the stereo camera topic directly within Gazebo. Am I missing any additional steps/procedures to get the local planning module running?

Solved the issue, I was missing the ros-kinetic-gazebo-plugins.

Hi @appie-17,
I wonder can I ask you a question about using "Local Planning"? I followed the instructions and launched the gazebo window normally. However, I don't have topic /firefly/voxblox_node/mesh in rviz, and there are also no point clouds shown in rivz. There are no response by using Send Waypoint, but the drone in Gazebo have responses by using Send to Controller. I wonder do you know any potential reason for this?  Thank you very much.
Regards,
Jie


Simplify AnyAddress data switch clause

Might be easier to switch based on Blockchain type

[ ] Bitcoin has 3 addresses type

See also #2269


Write UT for openebs/types/v1/env.go

Write UT for env.go.
Please comment if you want to be assigned for this issue.
Help links:
Contributors guide
Guide to write unit tests in golang
Reference on how we write UT
Note:

We only make use of standard "testing" library provided by go. Please do not add external dependency such as 'assert' etc
Checkout new branch from release branch and once done raise a PR against the same.
Don't forget to join hacktoberfest2018 channel on our slack workspace.

@princerachit Can you please assign this to me ?

@swetax are you still working on this?

@princerachit No. I gave up this issue along with the assigned one to me .

Hi, I would like to take a look on this :)

@armudgal thank you for showing interest. Please go ahead. If you face any difficulty reach to us on slack.

Hi, I looked into the test and the docs you references, it's gonna take some time for me to get familiar with golang, so if this is a high-prioirity issue you can give to someone else, otherwise I might take couple of days :)


docs: dark mode

Would be super cool to have dark mode for the framework docs.  Painful to look at in the late hours.

Yeah I want to explore moving to a better, non-custom theme with @dtdang down the road, maybe Shibuya:
https://vyper-tests.readthedocs.io/


⚠ Bofrost.lu has degraded performance

In 0f0baa3, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1058 ms

Resolved: Bofrost.lu performance has improved in b7022c8 after 1 hour, 13 minutes.


Fix visibility of top repos for admin (#1306)

Show all non-deleted repositories for admin (without project role checking)

Coverage increased (+0.03%) to 51.432% when pulling 444b7f97bfe0fe29dd902bff7a524e4db892735f on laz2:fix-1306-admin-top-repos into 733a9fd628b77e4ba8169ccd5643fdc378e6caa2 on vmware:dev.


[R] Rename read_ipc_file to read_arrow_file & highlight arrow over feather

Following up from this mailing list conversation, I am wondering if the R package should rename read_ipc_file() / write_ipc_file()toread_arrow_file()/ write_arrow_file()`, or add an additional alias for both. It might also be helpful to update the documentation so that users read "Write an Arrow file (formerly known as a Feather file)" rather than the current Feather-named first approach, assuming there is a community decision to coalesce around the name Arrow for the file format, and the project is moving on from the name Feather.
Reporter: Stephanie Hazlitt / @stephhazlitt
Note: This issue was originally created as ARROW-18148. Please see the migration documentation for further details.

take


#improvement - Direct image reading from CameraImage

I didn't find the conversion of the camera's yuv formats to NV12 ready in the plugin, which is supported by mlKit. The YUV_420 format of the camera plugin is equivalent to the YUV_420_888 of android, which is not supported by the InputImage.fromByteArray of MlKit, so it is necessary to convert from YUV_420_888 to IMAGE_FORMAT_NV21 or IMAGE_FORMAT_YV12.
Obs: Alternatively, you can use InputImage.fromImage to read android.media.Image, which is the camera's output format on android and which uses YUV_420_888, MlKit's own documentation says this;
Android can also return it in jpeg format, but yuv420 is recommended, especially if you want to pass the data directly to MlKit;
Anyway here are some ready-made functions in kotlin/java to do this conversion, in case you receive YUV_420_888 format:
private fun YUV_420_888toNV21(width: Int, height: Int,p0: ByteArray,p1: ByteArray,p2: ByteArray, prs0: Int, prs1: Int, prs2: Int, pps0: Int, pps1: Int, pps2: Int): ByteArray? {
        val ySize = width * height
        val uvSize = width * height / 4
        val nv21 = ByteArray(ySize + uvSize * 2)
        val yBuffer: ByteBuffer = ByteBuffer.wrap(p0) // Y
        val uBuffer: ByteBuffer = ByteBuffer.wrap(p1) // U
        val vBuffer: ByteBuffer = ByteBuffer.wrap(p2) // V
        var rowStride: Int = prs0
        assert(pps0 === 1)
        var pos = 0
        if (rowStride == width) {
            yBuffer.get(nv21, 0, ySize)
            pos += ySize
        } else {
            var yBufferPos = -rowStride.toLong()
            while (pos < ySize) {
                yBufferPos += rowStride.toLong()
                yBuffer.position(yBufferPos.toInt())
                yBuffer.get(nv21, pos, width)
                pos += width
            }
        }
        rowStride = prs2
        val pixelStride: Int = pps2
        assert(rowStride == prs1)
        assert(pixelStride == pps1)
        if (pixelStride == 2 && rowStride == width && uBuffer.get(0) === vBuffer.get(1)) {
            val savePixel: Byte = vBuffer.get(1)
            try {
                vBuffer.put(1, ((savePixel as Byte).inv() as Byte))
                if (uBuffer.get(0) === savePixel.inv() as Byte) {
                    vBuffer.put(1, savePixel)
                    vBuffer.position(0)
                    uBuffer.position(0)
                    vBuffer.get(nv21, ySize, 1)
                    uBuffer.get(nv21, ySize + 1, uBuffer.remaining())
                    return nv21 // shortcut
                }
            } catch (ex: ReadOnlyBufferException) {
                // unfortunately, we cannot check if vBuffer and uBuffer overlap
            }

            vBuffer.put(1, savePixel)
        }

        for (row in 0 until height / 2) {
            for (col in 0 until width / 2) {
                val vuPos: Int = col * pixelStride + row * rowStride
                nv21[pos++] = vBuffer.get(vuPos)
                nv21[pos++] = uBuffer.get(vuPos)
            }
        }
        return nv21
    }

The original function, which I relied on to build mine in my project:
private static byte[] YUV_420_888toNV21(Image image) {

    int width = image.getWidth();
    int height = image.getHeight();
    int ySize = width*height;
    int uvSize = width*height/4;

    byte[] nv21 = new byte[ySize + uvSize*2];

    ByteBuffer yBuffer = image.getPlanes()[0].getBuffer(); // Y
    ByteBuffer uBuffer = image.getPlanes()[1].getBuffer(); // U
    ByteBuffer vBuffer = image.getPlanes()[2].getBuffer(); // V

    int rowStride = image.getPlanes()[0].getRowStride();
    assert(image.getPlanes()[0].getPixelStride() == 1);

    int pos = 0;

    if (rowStride == width) { // likely
        yBuffer.get(nv21, 0, ySize);
        pos += ySize;
    }
    else {
        long yBufferPos = -rowStride; // not an actual position
        for (; pos<ySize; pos+=width) {
            yBufferPos += rowStride;
            yBuffer.position(yBufferPos);
            yBuffer.get(nv21, pos, width);
        }
    }

    rowStride = image.getPlanes()[2].getRowStride();
    int pixelStride = image.getPlanes()[2].getPixelStride();

    assert(rowStride == image.getPlanes()[1].getRowStride());
    assert(pixelStride == image.getPlanes()[1].getPixelStride());

    if (pixelStride == 2 && rowStride == width && uBuffer.get(0) == vBuffer.get(1)) {
        // maybe V an U planes overlap as per NV21, which means vBuffer[1] is alias of uBuffer[0]
        byte savePixel = vBuffer.get(1);
        try {
            vBuffer.put(1, (byte)~savePixel);
            if (uBuffer.get(0) == (byte)~savePixel) {
                vBuffer.put(1, savePixel);
                vBuffer.position(0);
                uBuffer.position(0);
                vBuffer.get(nv21, ySize, 1);
                uBuffer.get(nv21, ySize + 1, uBuffer.remaining());

                return nv21; // shortcut
            }
        }
        catch (ReadOnlyBufferException ex) {
            // unfortunately, we cannot check if vBuffer and uBuffer overlap
        }

        // unfortunately, the check failed. We must save U and V pixel by pixel
        vBuffer.put(1, savePixel);
    }

    // other optimizations could check if (pixelStride == 1) or (pixelStride == 2),
    // but performance gain would be less significant

    for (int row=0; row<height/2; row++) {
        for (int col=0; col<width/2; col++) {
            int vuPos = col*pixelStride + row*rowStride;
            nv21[pos++] = vBuffer.get(vuPos);
            nv21[pos++] = uBuffer.get(vuPos);
        }
    }

    return nv21;
}

@AlexsandroZanella2: could you send a PR with your contribution? also, include the iOS portion

I am trying face detection on Android Nexus 6P (Physicaldevice) Video is so much laggy.  Do you have any recommendations/suggestions to improve the performance?

@KalanaPerera: try using a lower resolution.

are you developing a mobile app?

Yes, Using flutter

I am not familiar with MediaPipe, but it seems that is has a lot of capabilities.
Since both: ML Kit and MediaPipe are run by Google, maybe (I am not sure), both are using the same for ML processing, I see that in their home, MediaPipe has pretty much the same APIs that ML Kit:

https://google.github.io/mediapipe/#ml-solutions-in-mediapipe
https://developers.google.com/ml-kit

Since they will have the same output, I would use either of them, but not mix them. You do not need to get something in Flutter and process it in C++.
The advantage of using Flutter is that the plugin will allow you to deploy to both iOS and Android. With MediaPipe you will need to have separate codebases for iOS and Android.
Also, you can look at their examples and see what works best for you:
https://github.com/google/mediapipe/tree/master/mediapipe/examples


Missing input disabled state, while submitting a form via XHR/Fetch request.

Hi,
I have the issue that input fields don't get the attribute disabled while submitting a form via XHR/Fetch request.
Do I miss something or need to configure for this behavior?
Using a standard "Formkit Form" all fields are disabled while ajax submitting.
The submit handler is async.
I am using Formkit 1.5.9 and @sfxcode/formkit-primevue in V1.7.1.
Thanks for your help,
Daniel

Hi Daniel,
thank you for reporting this issue. It should be fixed with the version 1.7.3.
Can you check and close if everything works as expected ?
Greetings,
Tom

Hey Tom,
Installing V1.7.4 solves this issue.
Thank you so much for fixing!
Best,
Daniel


glib: Remove redundant null-checks before g_free

g_free's docmentation explicitly says that calling it with a null
pointer is simply a noop:
If mem is NULL it simply returns, so there is no need to check mem
against NULL before calling this function.

g_free's docmentation explicitly says that calling it with a null
pointer is simply a noop:

The same is also true for the C free function btw, at least on a C99 compatible implementation (which GLib requires).

The same is also true for the C free function btw, at least on a C99 compatible implementation (which GLib requires).

Which is extra funny because I, being aware of that and that g_free also behaves like that, added those NULL checks in that file some weeks ago.


tensorflow lite Makefile issue : nnapi_delegate_provider.cc is not compiled and nnapi cannot be used from command line of benchmarck_model

System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): yocto build system
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: NA
TensorFlow installed from (source or binary): compiled from source
TensorFlow version: 2.3
Python version: NA
Installed using virtualenv? pip? conda?: NA
Bazel version (if compiling from source): Not using bazel but Make
GCC/Compiler version (if compiling from source): 9.3.0
CUDA/cuDNN version: NA
GPU model and memory: NA

Describe the problem
I am trying to compile tensoflow-lite using the Makfile. I want to use nnapi.
The issue is: nnapi_delegate_provider.cc is not compiled so we cannot use the switch --use_nnapi=1 with benchmark_model
Provide the exact sequence of commands / steps that you executed before running into the problem
make -f tensorflow/lite/tools/make/Makefile BUILD_WITH_NNAPI=true
Any other info / logs
Here is a quick patch that solve the issue : 0001-Add-nnapi_delegate_provider.cc-to-the-list-of-source.txt
I would be very happy to open a merge request on it. But I need  feedback before, because I think the same problem happens for all delegates (I only tested nnapi).  I don't see why we filter out all delegates provider from BENCHMARK_LIB_SRCS variable:

right now, they are not added anywhere, so it does nothing (or I missed it inside the Makefile)
filter them out is not what should be done (I guess), but we should instead add the providers

as needed
What do you think? Maybe I completely miss something..
Best

@justeph Could you please try on the stable TF v2.6.0 and let us know if the issue still persists ? Thank you!


fixes #5943 geocoder selects wrong list item with key press

Search command in Source/Widgets/Geocoder/GeocoderViewModel.js  hides suggestions first and then tries to activate the selected item which is already defined undefined
Moving hideSuggestions under activateSuggestion will have no impact since activateSuggestion' also calls it.

Welcome to the Cesium community @SelimAbidin!
Can you please send in a Contributor License Agreement (CLA) so that we can review and merge this pull request?
:warning: I noticed that CHANGES.md has not been updated. If this change updates the public API in any way, fixes a bug, or makes any non-trivial update, please add a bullet point to CHANGES.md and comment on this pull request so we know it was updated. For more info, see the Pull Request Guidelines.

I am a bot who helps you make Cesium awesome! Contributions to my configuration are welcome.
:earth_africa: :earth_americas: :earth_asia:

Updated CHANGES.md in 27404a4c517.


Discrepancy with leveldown re "end" vs "lte" and "lt"

@timoxley noticed this, I'm just reporting the details: if you compare leveldown to memdown you find a discrepancy if you provide both a lte or lt property and an end property for an iterator. Obviously this isn't something you should really be doing but it's not out of the realms of possibility that someone would want to provide these properties together.
memdown treats the lte and lt as authoratative, overriding whatever end says, while leveldown takes the minimum of the options.
Compare: https://github.com/dominictarr/ltgt/blob/master/index.js#L50-L56 (lowerBound but same logic applies for upperBound I think, it's just clearer here) to https://github.com/Level/leveldown/blob/master/src/iterator.cc#L141-L153
This is something that we should resolve in AbstractLevelDOWN tests I think.

updated to s/gt/lt

given that end is now considered legacy and lt is the recommended api it should use lt first, and end if it's not available. or better, we could remove end from leveldown c and map end to lte in leveldown javascript?

yeah, I'm +1 on that, after I filed this issue I realised that ltgt was probably "right" and it was actually a leveldown issue that should have been filed


Show last build timestamp

We use the plugin for monitoring cron jobs run regularly. It would be great if it could show a timestamp for the last build.

Duplicates #63

This issue somehow is related to #63, however the patch provided in #63 does update the period since the last build every five seconds, which makes the screen look quite busy when you have more than a couple of jobs. IMO it would be sufficient to have a timestamp of the form YY-MM-DD hh:mm which should be enough to see when a job has not run for a long while.

+1

Hey @mfriedenhagen , I'm working on a patch based on #63. I agree with your view that even though the overall implementation proposed in the pull request looks good, it could result in the display looking a bit busy.
What I'm thinking of doing is decreasing the precision over time so that the display doesn't "seem" to be updated more often than it needs to. This would result in something along the lines of the following:

for builds that run between 0 and 1h ago display the time elapsed with a minute precision, ie. "17 minutes ago"
for builds that run over an hour ago display the time elapsed with an hourly precision ie. "2 hours ago" rather than "1 hour 45 minutes ago"
for even older builds the precision would further decrease, ie. "2 days ago", etc.

Would this approach work with your use case?

@jan-molak, sound like a good direction. My only concern are updates of the UI every 5 seconds, once a minute for the first hour after a run is OK for me :+1: What about rounding? 1:30h would already be 2h then?

@mfriedenhagen - I'd love to hear your feedback on the latest build

@jan-molak , great visualization :+1:


Add main entry point plugin

[ ] Parse input to Linkage section (using flf)

[ ] Generate main only if it is called from JCL (needs parsing first)


fix: uninstall envoy-gateway should also remove gateway-system namespace that it created

Description
This pull request changes the following:

updated destroy-gateway-api command to remove gateway-system namespace as well

Related Issues

Closes #349

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


feat: Allow for custom logger to be configured and default to console

datasource-rest was using the console log for all info messages. This PR Allows overriding the default logger with a custom logger implementation, by default it uses the console log.

@js-lowes: Thank you for submitting a pull request! Before we can merge it, you'll need to sign the Apollo Contributor License Agreement here: https://contribute.apollographql.com/

@trevor-scheer its ready again :)

Thanks for your work on this @js-lowes! I'll get this released right away.


Not able to host the code on railway

Hey so i wanted to get rid off heroku because of it limits so i decided to host on railway or any other host but the place where i am stuck now is that it asks me for a start command now in heroku when i went and saw the resources it only says npm start now i am only a py developer so idk how these thing works so it would be great if u told me what i have to put in the blank where it asks for me start command

The start command should be yarn run start. But make sure you deploy the application after changing the start command.
I didn't know railway.app existed until just a few minutes ago so this is all very new to me, but I managed to force a deployment after adding an environment variable in the Variables tab under Environment.
By the way, don't forget to add the HOST_PASSWORD and MAX_DELAY environment variables.

Thx for the help btw i had already added the variables cus i saw them under the config vars in heroku
so i have them already

Hey so i changed the start command to yarn run start but still this error is happening i have added a custom domain as testforspotify.com

I'll try reinstalling the project and then tell you

 Hey so i changed the start command to yarn run start but still this error is happening i have added a custom domain as testforspotify.com

did you redeploy after changing the start command?

i have to press this to do that right?

cus im using railway.app for the first time myself

 i have to press this to do that right?

No, restarting doesn't redeploy. Reread my first comment, it explains how to do so.

ok i figured it out
i had the singleton thing on bc of which i wasnt getting a new deploy button
so even after removing the exsisting deploy it wasnt redploying it
its working now thx


Tests fail with stack overflow when in breadth-first mode

How to reproduce:
Go to Registry::new in registry.rs and unconditionally enable breadth-first mode:
let breadth_first = true;

Then run tests with (you may have to run multiple times):
cargo test iter::test::check_cmp_l

Output:
    Finished dev [unoptimized + debuginfo] target(s) in 0.10s
     Running target/debug/deps/rayon-5dd50bb9f566bf60

running 3 tests
test iter::test::check_cmp_lt_to_seq ... ok
test iter::test::check_cmp_lt_direct ... ok

thread '<unknown>' has overflowed its stack
fatal runtime error: stack overflow
error: process didn't exit successfully: `/home/stjepan/work/rayon/target/debug/deps/rayon-5dd50bb9f566bf60 'iter::test::check_cmp_l'` (signal: 6, SIGABRT: process abort signal)

I was first worried that there's a bug in crossbeam-deque. After all, Deque::steal has a custom, optimized version of steal. But if I change calls to Deque::steal with good old Stealer::steal (which should be correct!), the bug is still present:
#[inline]
pub unsafe fn take_local_job(&self) -> Option<JobRef> {
    loop {
        match self.worker.stealer().steal() {
            Steal::Empty => return None,
            Steal::Data(d) => return Some(d),
            Steal::Retry => {},
        }
    }
}

This makes me believe that the bug is actually in Rayon.

My hunch is that breadth_first is turning O(log n) stack depth into O(n), as you'll end up stealing the biggest outer jobs instead of your smallest, most recently pushed jobs.

Is there anything we could do about it? Stack overflows in breadth-first sound like a potential problem (fortunately, Servo hasn't run into it...)

IIRC, Servo queues their breadth_first jobs with Scope::spawn, which means they wouldn't have nested execution, unlike join and parallel iterators.  If each job completes its work and returns to the Scope's base stack frame, then the stack won't get very deep.  It could have a problem if they nest scopes though.

Here's a rather small example that stack overflows in breadth-first mode for me:
#[test]
pub fn stack_overflow() {
    let a = vec![0; 1000];
    let b = vec![0; 1000];
    a.par_iter().cmp(&b);
}

Run with: while cargo test stack_overflow; do true; done

I assume the loop is because work-stealing randomness doesn't always trigger the problem?  And it's probably also OK in --release with inlining, right?
As for actually solving this, I wonder if we could separate things so only Scope::spawn jobs are affected by breadth_first?  We'd need deque changes, but if possible I'm thinking we could push_front for such spawns, and then just push and pop normally for everything else.  We would not need to self-steal for breadth-first anymore.
If a deque push_front is not feasible, then we could also try this with separate queues - the normal LIFO for stack-oriented jobs (like join) and a FIFO for breadth-first spawns.  For other threads work-stealing, they don't even need to know about this, just that there will be twice the number of Stealers to try.

I assume the loop is because work-stealing randomness doesn't always trigger the problem?

Exactly.

And it's probably also OK in --release with inlining, right?

It doesn't stack overflow in --release mode. But if I bump up the vector lengths to 10 million, then it always does.

If a deque push_front is not feasible,

It is feasible in the version of crossbeam-deque rayon is currently using. However, in the latest version the deque can only be FIFO or LIFO (the decision is made in the deque constructor). The addition of the new Stealer::steal_many method prohibits pushing into both ends. We technically could still support pushing into both ends, but... it's a little tricky.

then we could also try this with separate queues - the normal LIFO for stack-oriented jobs (like join) and a FIFO for breadth-first spawns.

I like this idea. We could make rayon::join always depth-first, while rayon::spawn would be depth-first or breadth-first depending on the chosen mode.
Or, I might even suggest deprecating the breadth_first configuration flag and add a new function named rayon::spawn_last (or something like it) that hints to the thread pool that this task should be pushed into the back of the queue. That would give the user strictly more control over how tasks get ordered - one can choose the ordering for each task invocation rather choosing a global mode on thread pool creation.

Or, I might even suggest deprecating the breadth_first configuration flag and add a new function named rayon::spawn_last (or something like it) that hints to the thread pool that this task should be pushed into the back of the queue. That would give the user strictly more control over how tasks get ordered - one can choose the ordering for each task invocation rather choosing a global mode on thread pool creation.

I like that too.
Our current behavior is already kind of inconsistent though.  By default local jobs are LIFO, but stolen jobs are always FIFO -- and this includes the global inject queue!  So if you call spawn from outside a threadpool, those jobs will be picked off in FIFO order.  But within a threadpool, they'll be locally processed LIFO while other threads steal FIFO.
I guess that's sort of the nature of the beast, but at least a spawn_last can be consistently FIFO.

I'm starting to believe that we don't need both spawn and spawn_last at all...

I think you're right, especially since the current spawn only acts LIFO/depth-first in the local queue, versus globally-injected or stolen jobs.  I think it would be fine to just make it FIFO everywhere.
I'm not sure how to make this properly nest though, which is also not really designed well in the current breadth_first mechanism.  The scenario I'm imagining is where you have several layers of join, and within you call scope and a series of spawn.  We want those spawns to be processed FIFO, but overall we probably should still try to have that whole scope completed before processing more of its own join jobs.
Same goes for nested scopes -- we probably want to process all of the inner scope before popping more of the outer scope.  So the scopes themselves are LIFO, while their spawns within are LIFO with respect to one particular scope.
I don't think coarse FIFO and LIFO queues will accomplish this.

So, @cuviper and I [chatted about this on Gitter]https://gitter.im/rayon-rs/Lobby?at=5b86db91146618721caca29a). We didn't reach any firm conclusions but we decided that this is a hard problem.
On the question of whether it is "more natural" for spawn to have FIFO priority (within a scope) -- at first I was skeptical, but I think I've come around. I think many applications won't care, but I do see an appeal to being able to map the priority to the sequential order: That is, join(a, b) kind of "prioritizes" as a(), b(), and spawn(a); spawn(b); the same.
One challenge is when you try to compose joins/scopes. Ideally, you would sort of treat each scope as a "single unit" on a stack, within which we push onto a queue, such that when the local job is pulling tasks, it pulls from the front of this queue until it is exhausted, and then pops from the stack. That seems like it's more spec than impl strategy, though, and it's pretty unclear how it would work with stealing.
@cuviper had at some point proposed keeping one LIFO and one FIFO queue per thread and having stealers first pop from the LIFO queue, and then dequeue from the FIFO queue. The problem here is that if you have spawns that use join, stealers will steal from the join first and not the spawn, which is suboptimal.
We both agreed that we could likely get away with changing the behavior of spawn to be FIFO and deprecated the breadth_first flag, though it's hard to know what people are using Rayon for.

I think we can solve the nesting problem, where there's a mix of LIFO and FIFO concerns, by using a little indirection.  My idea is to always consume the thread deque as LIFO, and have a private FIFO deque for each scope.  When we get a scope::spawn, we push that job to the scope's deque, and then push a indirect job to the thread deque that steals from the front of the scope deque to execute.
So if there are 10 spawns, there will be 10 jobs on both deques.  When the thread looks for its own work, it will pop from the back of the thread deque to then steal from the front of the scope deque.  When a different thread comes to steal work, it will steal from the front of the victim's thread deque to then also steal from the front of the scope deque.
This way, even when scopes are nested, a thread will always process its own scopes LIFO while still running their spawns FIFO.  And other threads will steal FIFO in all cases.  The indirection will of course add some overhead, but I hope that will be inconsequential.


Leave group

The User should be able to leave a group of the group's balances are all zero.

Depends on partido-server#5


SAML and OAuth 2 authentication

Hello, thank you for a great tutorial. However, after configuring my application on SAP Mobile Service for Development and Operations and following this guide (https://www.sap.com/developer/tutorials/fiori-ios-scpms-saml-oauth.html) for SAML authentication i get the error on my mobile client saying: "Loading Data failed! DataServiceError: The server responded with an SAP Cloud Security Login Request (status 200 with a custom login page). No handler/interceptor has been registered with the DataService to handle this case, so the response status has been changed to 401."
After getting that message i would guess that the SAML authentication are fine from SCP site and the problem are that something is missing in, probably, the metadata.xml-file that i generated in the browser without any modification (in relation to this tutorial).
What is you take on that message? See attached picture of the message.

Hi @marcusthelander, could it be you have generated the application with SDK Assistant using a different (i.e. previously configured) authentication mechanism?
For instance, if you first have created an application definition in SAP Cloud Platform mobile services (SAPcpms) with Basic Authentication, then generate an app with SDK Assistant, and then switch the authentication mechanism in SAPcpms, the generated app won't work. Reason being, the generated app takes the configuration from SAPcpms and creates the relevant Authentication class.
Can you check whether your application contains a ./ViewController/SAMLAuthViewController.swift file?

Hi @marcusthelander,
If the issue is resolved, you may close it.
Thanks,
Robin

Thank you for your feedback. We haven't heard from you in the past 30 days, so we are closing the issue.
If you still have questions, feel free to reopen the issue.


Fix c++ error caused by c99 static array size

Due to the changes in PR 593, quickjs-ng cannot be compiled in C++ mode.
C++ does not support the T val[static n] array syntax, which will cause the compiler to report an error: error: static array size is a C99 feature, not permitted in C++(clang).
This commit avoids entering the static n branch in C++ mode.

How come our c++ CI doesn't catch this? How are you building your software?

@twinstar6980 you can include quickjs.h in a C++ file but quickjs itself must be compiled as C, not C++

The cpp file in my project references the cutils.h file, so it causes the error. For some reason, I referenced it in the project a long time ago.
cutils.h seems to be a private header. Inside quickjs, it will only work in C mode and will never trigger this error.

Right, that explains it. I'll go ahead and close this.


Default style for file icons

On Openfed 7 the default theme had some default style for icons. It would be nice to have it on Kiso so we can use it in Openfed.
For example, when using append_file_info module, it adds a class to files so they can be styled according to their type.
These classes are handled in Drupal core (see core/themes/classy/css/components/file.css) and it would be nice to have them on Kiso as well.

@rutiolma @jclemmenb4y @laurent-b4y I wonder one thing... May be better to use a font icons library instead of PNG images. What do you think ?

I agree that using a font library would be better, or some home made svg icons just to not be dependent on a potentially commercial third party.


Likes count bug

When use getMediaByUrl or other method, which return Media object I call in this object getLikesCount and his return comment count instead likes.
Please, tell me why?

@HAJIOM it was a bug. Has been fixed
Update to last version

Thanks. It works now.


[DPTOOLS-1345] Delete stale nodes & relations

Tested in TARS.
This change is to remove stale Graph nodes and relations.
Prior to deletion it performs safety check to make sure, stale nodes/relations do not exceed defined threshold (default 5%). Once passes the safety check, it deletes 100 nodes/relations per execution.
sample job config:

task = Neo4jStalenessRemovalTask()
job_config = ConfigFactory.from_dict({
'job.identifier': 'remove_stale_data_job',
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.NEO4J_END_POINT_KEY):
neo4j_endpoint,
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.NEO4J_USER):
neo4j_user,
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.NEO4J_PASSWORD):
neo4j_password,
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.STALENESS_MAX_PCT):
95,
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.TARGET_NODES):
['Table','Application', 'Column', 'Source', 'Stat', 'Timestamp', 'Watermark'],
'{}.{}'.format(task.get_scope(), neo4j_staleness_removal_task.TARGET_RELATIONS):
['READ', 'READ_BY'],
'{}.{}'.format(task.get_scope(), neo4j_csv_publisher.JOB_PUBLISH_TAG):
kwargs['templates_dict'].get(neo4j_csv_publisher.JOB_PUBLISH_TAG)
})
job = DefaultJob(conf=job_config,
task=task)
job.launch()

I wonder how long it runs for the task. And have you verified the case when you create a dummy table and drop it, and see if the node get deleted in Amundsen?

I tested out in staging and confirmed, many stale tables and columns got dropped.
Initial removal took about 30 minutes as there're many nodes and relations to delete, but I expect it would be way shorter from the second run.

@jinhyukchang do you know if it is possible to recover the deleted nodes / relationship? Just to make sure that when we moving to tier 2(e.g), we can't offer some tags to get accidentally deleted.

@jinhyukchang do you know if it is possible to recover the deleted nodes / relationship? Just to make sure that when we moving to tier 2(e.g), we can't offer some tags to get accidentally deleted.

The deletion itself is final. There are several ways to prevent and recover:

We only delete Node and Relation that is being created from Databuilder in snapshot way. That way we can recover by running databuilder again.
We don't delete Nodes and Relations updated via UI or other services.
We also safe guard it by using staleness threshold which is by default 5%.
Lastly, if all go south we recover via Neo4j backup restore.

@jinhyukchang , thanks. It would be great if you could put the discussion for recovery methods on potential data loss case into our internal operation doc :)


Amending readme [vr]

Visual regression test passed!
View the visual regression test report

Visual regression test passed!
View the visual regression test report


cmd/go/internal/work: fix typo in comment

I got your reply, I will close the wrong pr, sorry for that


Refactor the project and add more abstractions

In order for development of the bot to continue, we need to refactor the project to make the code easier to understand, work with and iterate on.
We should also add more abstractions for various operations such as using the DB, actioning projects, and data validation. We should consider using a custom d.js client with extra managers attached for managing the above operations.
This would make the code much easier to write & maintain, as well as adding stability to the project.
This would also incorporate #280.

What's the TL;DR for #293?


Exclude modules originating from addons from coverage instrumentation

Addon modules should not be part of the coverage report for a project.  Addons should be tested in their own projects and will impact the coverage report of dependent projects if they are not excluded.

Came here to suggest the same thing.  Is there a plan for how to implement this?

I haven't really started looking into it - with the new way addons are namespaced in ember-cli 0.2.x it's probably more possible than it was before.  I'd probably start with asking some of the ember-cli core team about this if we want to start investigation.

Hey @stefpenner, how would you go about excluding ember-addons from build-time tooling like this?

Hey @stefanpenner, how would you go about excluding ember-addons from build-time tooling like this?

maybe some module name pattern matching?

@flyswatter - have you tried the blanket-options.js file?
It's not a perfect answer but I use it in both addons and apps to keep the focus on the code under test:

var options = {
  modulePrefix: "my-addon",
  filter: "//.*my-addon/.*/",
  antifilter: "//.*(tests|template).*/",
  loaderExclusions: [],
  enableCoverage: true,
  cliOptions: {
    reporters: ['json']
  }
};
if (typeof exports === 'undefined') {
  blanket.options(options);
} else {
  module.exports = options;
}

in one of my apps I set loaderExclusions to:
    loaderExclusions: [
    'myapp/modules/domain1/lib',
    'myapp/modules/domain2/lib',
    'myapp/vendor'
    ],

the imperfectness comes in from the fact that addons have an addon part (which is present in the resulting app) and the app/* part which is blended by the broccoli build and is indistinguishable from 'normal' app code by the time we annotate it - which is in the browser.
so the standard blanket options can help you narrow the code under cover down pretty significantly

@jschilli I have used the blanket-options, and like you say, it has some limitations, especially since the trees are merged before the filtering takes place.
I guess very specific exclusions is a solid short-term solution, but long-term it would be better if ember-cli-blanket didn't try to run coverage tests on included addons in the first place.

@flyswatter long term would be nice.  In the realistic term we don't have many options based on when and how blanket is being run.
One idea that I've had is to do the blanketing in the plugin in node land to help resolve the sourcemapping discrepancy that is compounded by blanketing in browser.
That said the issue of determining lineage of contributed code other than through pattern mapping will be involved.
I would expect that we won't make progress on this until we re-examine the way in which blanketing is being done and that requires time/capacity.  I know that @sglanzer and I are both maxxed on day jobs ATM so wouldnt' expect this to change in the near term

Yeah, looking closer at the regex filtering is actually enough for me, I agree this shouldn't be a high priority.
Thanks for your help all!

I may have some ideas on this - I need to do some prototype work and I'll update afterward.

Cool!  Look forward to seeing how you do it!

I spent some time poking at this on the weekend and it's definitely nastier than I thought going in.  The only effective strategy I've found so far is processing treeForApp on a per addon basis and capturing the output to use in coverage loader exclusions.  This approach is obviously a non-starter, but I think it clarifies what we need to make this work.
I believe the next step would be to look at the ember-cli addon build process to determine if we can peek at the broccoli trees as the addons are built and capture that output in build variable that could be used in the postBuild hook to add exclusions - basically flatten the addon app trees and exclude those patterns from the coverage.
I'll find some time to fork ember-cli and try a proof of concept, but if anyone has time to investigate this approach (or has another strategy in mind) that'd be great.

Thinking about this with a clearer head, it makes more sense to whitelist the modules in the current addon/app than to attempt to blacklist addons.  I'll explore that idea a bit - it also wouldn't require changes to ember-cli

I think the issue is that there are two kinds of content that emerge from an addon - the app content and the addon content - the addon content is definitely namespaced and should be excluded.
By the time we see the code, the app content is already assimilated and there is no way that I know of to determine if it came from the consuming app or was contributed by an addon's app exports
I recall working on parts of this in ember-cli and plugin.* treeForApp blends the broccoli trees together such that post hoc determination of what came from where is not currently possible

Yeah, absolutely - that's why I think we'll need our own file structure sweep, and the whitelist appears to be the best bet currently - far less to manage than a nested addon blacklist/exclusion.
I need a solution to this soon, so I'll try to put an effort out on the weekend

:+1: looking forward to seeing some progress on this, thanks!

:+1:  I ran into this today when I included ember-truth-helpers - suddenly many new modules under /app-name/helpers/ were included in the code coverage that had no coverage.  Filtering them out individually with either antifilter of loaderExclusions makes a long list.
So, we would like to see this also, but we do understand it is a difficult problem since knowing what app content the add-on added isn't readily available.

I ran into this a couple of days ago and it's really annoying when having a lot of addons to exclude. Is there any progress on this issue?

I doubt it, it was a pretty niche issue, I'm over it now. I believe you are the new most motivated!

Dan

On Apr 23, 2016, at 6:36 AM, Diana Falkowska<EMAIL_ADDRESS>wrote:
I ran into this a couple of days ago and it's really annoying when having a lot of addons to exclude. Is there any progress on this issue?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub


removing link formatting in the data preview in 3rd column

Thanks @shubhajeet for this request, I think we discussed this in issue #33 but was closed without solving it. @amitness said there might be some reason for putting, maybe @sagargg can help us by reviewing the issue and merging the request.


New repo: knative-sandbox/kn-plugin-curl

Org: knative-sandbox
Repo: kn-plugin-curl
Purpose (Description): This repo holds the kn curl plugin which makes curling Knative services with $kn curl <service-name>.
Sponsoring WG: client
Dependencies: #73

/assign @maximilien

New repo issue created


Mobile Input - Causes whitespace + keyboard is blocking view

Hi All - this is a super cool component, thanks for working on it.
I am having some trouble with allowing for users to submit inputs in the mobile experience.
In particular, the two issues are:

The keyboard obstructs the view of the input field
The dialog seems to pop up a huge white rectangle over the drawer when in the mobile experience.

Has anyone found a way to fix this?
I'm using version 0.8.9
Thanks!

Due to the following part of the code there is a new height attribute set:
React.useEffect(() => {
    function onVisualViewportChange() {
      if (!drawerRef.current) return;

      const focusedElement = document.activeElement as HTMLElement;
      if (isInput(focusedElement) || keyboardIsOpen.current) {
        const visualViewportHeight = window.visualViewport?.height || 0;
        // This is the height of the keyboard
        let diffFromInitial = window.innerHeight - visualViewportHeight;
        const drawerHeight = drawerRef.current.getBoundingClientRect().height || 0;
        if (!initialDrawerHeight.current) {
          initialDrawerHeight.current = drawerHeight;
        }
        const offsetFromTop = drawerRef.current.getBoundingClientRect().top;

        // visualViewport height may change due to some subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.
        if (Math.abs(previousDiffFromInitial.current - diffFromInitial) > 60) {
          keyboardIsOpen.current = !keyboardIsOpen.current;
        }

        if (snapPoints && snapPoints.length > 0 && snapPointsOffset && activeSnapPointIndex) {
          const activeSnapPointHeight = snapPointsOffset[activeSnapPointIndex] || 0;
          diffFromInitial += activeSnapPointHeight;
        }

        previousDiffFromInitial.current = diffFromInitial;
        // We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view
        if (drawerHeight > visualViewportHeight || keyboardIsOpen.current) {
          const height = drawerRef.current.getBoundingClientRect().height;
          let newDrawerHeight = height;

          if (height > visualViewportHeight) {
            newDrawerHeight = visualViewportHeight - WINDOW_TOP_OFFSET;
          }
          // When fixed, don't move the drawer upwards if there's space, but rather only change it's height so it's fully scrollable when the keyboard is open
          if (fixed) {
            drawerRef.current.style.height = `${height - Math.max(diffFromInitial, 0)}px`;
          } else {
            drawerRef.current.style.height = `${Math.max(newDrawerHeight, visualViewportHeight - offsetFromTop)}px`;
          }
        } else {
          drawerRef.current.style.height = `${initialDrawerHeight.current}px`;
        }

        if (snapPoints && snapPoints.length > 0 && !keyboardIsOpen.current) {
          drawerRef.current.style.bottom = `0px`;
        } else {
          // Negative bottom value would never make sense
          drawerRef.current.style.bottom = `${Math.max(diffFromInitial, 0)}px`;
        }
      }
    }

    window.visualViewport?.addEventListener('resize', onVisualViewportChange);
    return () => window.visualViewport?.removeEventListener('resize', onVisualViewportChange);
  }, [activeSnapPointIndex, snapPoints, snapPointsOffset]);

I'm not familiar enough with the project to dare to make adjustments.
So if someone else would like to look in to it would be lovely.
But for now I made this temporary solution that worked in my case.
So basically you're limited to the height of the remaining space while the keyboard is open. So what I did is I made an area a scrollable area if the keyboard is open.
The following part checks for the current view height
    const [viewportHeight, setViewportHeight] = useState(window.visualViewport?.height);

    useEffect(() => {
      function updateViewportHeight() {
        setViewportHeight(window.visualViewport?.height || 0);
      }

      window.visualViewport?.addEventListener('resize', updateViewportHeight);
      return () => window.visualViewport?.removeEventListener('resize', updateViewportHeight);
    }, []);

Here I adjust the styling according to when the inner height is bigger then the viewportHeight meaning the keyboard is open.
    <ScrollArea style={{ height: `${ window.innerHeight > (viewportHeight || 0) ? 20 : 100 }%` }}>

Hope this helps.
If not feel free to ask for more help.

Can you provide a demo with reproduction?

@emilkowalski I ran into this issue myself while using this component through Shadcn.
Made a reproduction here - https://github.com/AdiRishi/vaul-shadcn-drawer-issue
Hope this helps. Really keen to see this fixed 🙏
Others have also made a reproduction in the linked Shadcn issue. See https://github.com/WhyAsh5114/shadcn-drawer-mobile by @WhyAsh5114

Yup also experiencing the same thing

I have encountered the same problem when using Chrome on android - but it seems to work fine when using Firefox on android!

Same problem on Safari

Same problem on safari!

same problem on safari

I was able to get it working on my end.
This example helped a lot https://codesandbox.io/p/devbox/drawer-with-scale-forked-73f8jw?file=%2Fapp%2Fmy-drawer.tsx
I had to make sure the the Drawer.Content was exactly like in the example
<Drawer.Content className="bg-white flex flex-col fixed bottom-0 left-0 right-0 max-h-[96%] rounded-t-[10px]">
          <div className="max-w-md w-full mx-auto flex flex-col overflow-auto p-4 rounded-t-[10px]">
...

If you are experiencing this issue, please ensure that you have this html structure. Padding and overflow should be applied to the div right below Drawer.Content. This is the optimal structure. If you ever notice that something else is not working as expected, please ensure that your structure matches the examples.
It's difficult to ensure that Vaul would work with any structure. The keyboard problem on mobile devices is hard to solve due to many differences between devices.

[TEMP Solution]:
I use TOP Sheet instead and works.
https://ui.shadcn.com/docs/components/sheet

[TEMP Solution]:
I use TOP Sheet instead and works.
https://ui.shadcn.com/docs/components/sheet

God bless you 🥰🥰😘😘

Closed my other issue as it was a duplicate of this, but to add to this, is breaking in my experience specifically in chrome and with the example linked here
https://github.com/emilkowalski/vaul/assets/37072462/a91f8103-6bec-4510-9875-8561c800e882

Made a video explaining it if it'll help anybody https://www.youtube.com/watch?v=QTtxeIJmN9o&ab_channel=HosnaQasmei

@hqasmei you have shown a different issue (which I also noticed and had to address in my app) impacting vaul on Safari on iOS. I forget the references I used there but I imagine you'll find it documented somewhere on GitHub and I'm sure your video would be appreciated there.
The issue here (with whitespace when the keyboard is displayed) I believe is isolated to Android.

please add ability to disable this logic with props
React.useEffect(() => {
    function onVisualViewportChange() {
      if (!drawerRef.current) return;

i need to use !important now to override it. The snippet works bad in IOS and in IOS chrome doesn't work at all. No idea how to fix it, so at least would be good to disable it because it makes visual bugs.

It happens to me on Android too but
It would be great to be able to disable via prop or add some sort of  prop to execute a callback after the resize.

@AlejandroGutierrezB not sure if it help you, but for me worked prop disablePreventScroll for DrawerPrimitive.Root and it resolved the issue with content jump and content overflow when keyboard is opened.

@flackeryyy that doesn't seem to do it for me - PreventScroll is disabled if modal={false} (see https://github.com/emilkowalski/vaul/blob/40d3a69825df25e04ffe1e52c99c3461d785f31a/src/index.tsx#L133
Mind you, I'd say the main readme is confused about this prop - default appears to be disablePreventScroll = false
https://github.com/emilkowalski/vaul/blob/40d3a69825df25e04ffe1e52c99c3461d785f31a/src/index.tsx#L84C3-L84C21

Only If some looking for a quick fix! In our NextJS project, I was able to fix this by adding below snippet to the global.css.
[vaul-drawer][vaul-drawer-direction=bottom]:after {   z-index: -1; }

I solved this problem of the keyboard by doing three things:

Adding a fixed height for the drawer's content;
Adding scrollArea as a chield of the content;
Adding a new div with flex grow (not necessary);

Should be fixed in #441, I'll release a new version later today. I've also adjusted the repositionInputs prop to disable the visualViewport logic as well when this prop is set to false.

Should be fixed in #441, I'll release a new version later today. I've also adjusted the repositionInputs prop to disable the visualViewport logic as well when this prop is set to false.

I currently have version v0.9.6 installed, but in fact, when focusing on an input inside the drawer in iOS Safari, the drawer's content is still scrolled to an unexpected height(dialog bottom is not 0, but about 268px).
If I try to scroll, the drawer may automatically close due to the scroll event.
When drawer is closed, found that window is scrolled an offset from position of original.

Should be fixed in #441, I'll release a new version later today. I've also adjusted the repositionInputs prop to disable the visualViewport logic as well when this prop is set to false.

I currently have version v0.9.6 installed, but in fact, when focusing on an input inside the drawer in iOS Safari, the drawer's content is still scrolled to an unexpected height(dialog bottom is not 0, but about 268px). If I try to scroll, the drawer may automatically close due to the scroll event. When drawer is closed, found that window is scrolled an offset from position of original.

Can confirm this still happens in 1.0.0 when the text input is just under the area where the keyboard is going to be

the same for me. I have 1.0.0 version and still facing the same problem, that text input is under the keyboard

Still happens in version 1.1.0 mobile chrome iOS

Should be fixed in #441, I'll release a new version later today. I've also adjusted the repositionInputs prop to disable the visualViewport logic as well when this prop is set to false.

I currently have version v0.9.6 installed, but in fact, when focusing on an input inside the drawer in iOS Safari, the drawer's content is still scrolled to an unexpected height(dialog bottom is not 0, but about 268px). If I try to scroll, the drawer may automatically close due to the scroll event. When drawer is closed, found that window is scrolled an offset from position of original.

Can confirm this still happens in 1.0.0 when the text input is just under the area where the keyboard is going to be

I find that works with adding a min-height for DrawerContent. Just like this:
<DrawerContent
  className="h-[90vh] min-h-[90vh] bg-[#F2F2F2] p-3"
>


Error page is a dead end when launching from an iOS home screen bookmark.

On iOS, when launched from a homescreen bookmark, there's no chrome, so no reset button. As far as I can tell, the only way to force a reload is to kill the app.

Closed by https://github.com/skalnik/aqi-wtf/pull/34


protobuf file convert dart but undersocore change to camel

I had some problems converting protobuf to dart.
It will automatically change the underline to the hump logo.
This will cause our service identification to go wrong.
How can I keep underscores in parameters when i convert protobuf to dart?

I'm not sure I understand your problem.
Could you post a code example illustrating what goes wrong, and what you would expect?

As far as I understand, @wedcel is asking for the dart_name option to override conversion of snake_case protobuf identifiers to camelCase Dart identifiers.
It seems like we don't document dart_name, and we also don't have any tests (or I'm missing them). It would be good to test and document this feature for the next release.


chore(main): release 0.61.1

:robot: I have created a release beep boop
0.61.1 (2023-12-04)
Bug Fixes

Pipelines: run pipeline with cloudrun argument (#600) (bcc9b4e)
Workspaces: add created_by when creating workspace (#596) (a91682f)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/BLSQ/openhexa-app/releases/tag/0.61.1 :sunflower:


RHEL/CentOS 7 inside all Rancher launched containers

Currently, Rancher uses ubuntu inside all containers (server, agent, agent-instance). We need to support being able to launch RHEL/CentOS 6/7 inside the containers.

I prefer centos over ubuntu. So would be fine :)

@deniseschannon @ibuildthecloud has anyone requested this? It doesnt seem like we're seeing any demand for this. I could be wrong.

Sounds like no.


[examples] Add CameoParison Svelte example with machine

This example has a single machine, so it can be seen with the inspector.
Pair of this example is implemented with actors: https://github.com/statelyai/xstate/pull/2513
Temporary CodeSandbox link:
https://codesandbox.io/embed/github/annaghi/xstate/tree/examples/cameoparison-svelte-machine/examples/cameoparison-svelte-machine

Closing because of ruined Git on my side.


Fix: remove the leftover delta addition in cwise_ops_test.

small fix for #5810.
Should fix mac tests on master.

CC @prb12 for approval, if online.
This PR fixed the mac test failures we have been seeing.

@gunan All the others _compare methods for float32 and true_divide op are adding 0.1 to y component. We assumed that this one was missing. Isn't that the case?

@girving seems to have added some of the 0.1's.
Geoffrey, it looks like it has been a long time since yu made the changes, but do you remember why we have the 0.1's added as @lukeiwanski described above?
Do we need the + 0.1 Which I removed here?

@gunan Presumably the choice of rounding was different when the result was exactly a half integer.  I'm not sure this is different, but the only way I'd be able to tell would be removing them and trying.
@aselle Do you think we should match exactly now?  It might depend on processor flags, unfortunately.


Metric Question should be 'Pull Request Merged'

in https://github.com/chaoss/wg-gmd/blob/master/focus_areas/code_development.md
the metric 'Pull Requests Merged' has question 'What is the number of code commits?' that should be 'What is the number of pull request merged?'
Reason: Many Commits can be directly done by the authorized person without creating pull_request.

I agree.
@jgbarah?

Yesssss. That's an error, very likely because of too much copy&paste. Please, provide a fix if you want.

@sarvesh211999 are you working on this issue?

Yeah.

@sarvesh211999 , can you close this issue as the corresponding pull request appears to have been merged?

@Polaris000 here is a neat little trick for automatically closing an issue when a pull request is merged: https://help.github.com/en/articles/closing-issues-using-keywords

Thanks @GeorgLink for the information. Though I am aware of this feature and use it quite often myself, I think I am missing the point. Since I neither have write access to this repository nor am I the author of this issue, won 't it be impossible for me to close this issue?

Sorry for the confusion. I always like to point this feature out because anyone can write a comment on a pull request before it gets merged to automate the closing of issues.
This was for future reference, not for this particular issue.


CLI command had an incorrectly cased parameter

The az cli command should be publisherName not publishername. A straight copy/paste doesn't work correctly.

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

#label:"aq-pr-triaged"


Corrected package.json so it will work

Removed type-o.  Added working link to exif.

Thanks @ot-brian-mackey!

This has been long fixed - should have closed earlier,my bad :-)


Clear local messages -> freeze

Expected behavior
"Clear local messages" should clear the locally stored messages, allowing one to re-download the messages from the server.
Actual behavior
Freeze.
Steps to reproduce

Have a folder with some large amount of messages. A few hundred should suffice.
Make sure it's NOT up-to-date with the server
Clear its local messages.

Environment
K-9 Mail version: 5.203
Android version: 6.0.1
Account type (IMAP, POP3, WebDAV/Exchange): IMAP

If this is reproducible then if you can generate a debug log that might be useful.

That shouldn't be necessary. We perform the database operation in the UI thread, which is what causes the freeze.

A progress indicator might be a good idea then?

No it's just bad design is @cketti's point.


[release-2.8][backport] fix: Update k8s debian package repositories to pkgs.k8s.io

What problem does this PR solve?:
Backport of https://github.com/mesosphere/konvoy-image-builder/pull/996
Which issue(s) does this PR fix?:

https://d2iq.atlassian.net/browse/D2IQ-100167

Special notes for your reviewer:

Does this PR introduce a user-facing change?:

The non-airgapped Ubuntu tests are passing now with the new Deb repo.


Remove the language module dependency on TypeScript

Initial checklist

[x] I read the support docs
[x] I read the contributing guide
[x] I agree to follow the code of conduct
[x] I searched issues and couldn’t find anything (or linked relevant results below)
[x] If applicable, I’ve added docs and tests

Description of changes
TypeScript isn’t needed to parse MDX into virtual files. The removal of this dependency, means that the language module could later be used in places where TypeScript is unavailable.

@johnsoncodehk I would love your opinion on this

Sorry for the late reply, this looks great! To further improve type safety, you can also choose to make similar modifications:
+ import type * as ts from 'typescript'

        typescript: {
-           scriptKind: 2
+           scriptKind: 2 satisfies typeof ts.ScriptKind.JSX
        },


Multiply two large numbers for String section

hii,
I want to add my solution regarding multiplication problem of two large string contains only chars in between '0' - '9'.
please assign this to me.

Can you assign this issue to me?