Cannot View own solutions page.

I get this message instead: undefined method `code_challenge_review' for nil:NilClass
The culprit may have been that I have solved a Beta Kata and the page does not know how to handle it, but that is just a wild guess. My username is the same as here.

#252

It seems I'm having the same issue since yesterday. Everything works smooth expect for the solutions tab on my profile page which returns server 500.
@plasticbottle I saw your comment on issue #829 : "#944 I should have googled better :( I have the same issue exactly as here".
I think that issue is a little different, since it's about not being able to open solutions page of a certain kata after solving it, while this one is about being unable to open solutions tab on own profile.

Update: Everything seems fine as of today.

As for me, the link "https://www.codewars.com/users/plasticbottle/completed_solutions" still results in undefined method `code_challenge_review' for nil:NilClass

@plasticbottle Have you found fix for that?

The issue seems to be that I solved a Kata in a language that was subsequently removed. However, I don't think that this can be solved by anyone other than the Kata author, who could re-enable the removed language.

@plasticbottle What is the kata where it happened? What happens if you try to set satisfaction rating for that kata? I suspect it might be rekated to #1291 because I have 3 bugged katas and 3 bugged pages in the solution list.

@error256 I was able to rate satisfaction, the kata itself still works, but it's just that one of the languages is now gone.


CDC Water Scraper Error

https://github.com/deepset-ai/COVID-QA/blob/4890ad52da357926f1b27dfa6ccd3daf9fde49ae/datasources/scrapers/CDC_Water_scraper.py#L51
This line in the CDC_Water_scraper will cause an error.
UnboundLocalError: local variable 'current_question' referenced before assignment

It seems that lines https://github.com/deepset-ai/COVID-QA/blob/4890ad52da357926f1b27dfa6ccd3daf9fde49ae/datasources/scrapers/CDC_Water_scraper.py#L51-L53 should be deleted.

The page structure changed, I will adapt the script to the new structure.


Rename master to main in code

This should contain all code changes necessary to rename master to main
#748

📚 Download documentation preview for this pull-request

⚙ Download Python wheels for this pull-request (you can install these with pip)

We don't have to merge everything before this one, but let's finish the metatensor-torch release first

Ok, let's do this


ENH enable cache management on fuse

This addition can manage the use of the fuse process, with default set to 1 GB.
However, the issue with this branch is that the pytest on the fuse manager seems not working, but it is testable when running fuse/tests/fuse_wild.py.

@liusitan Ping me when this pull request is ready for review.

Hi @liusitan, do you still have bandwidth to finish this pull request?
Thanks!

yes, but I have several concerns about the implementation detail that I end up not figuring out， especially when I run the performant test, I will leave a more detailed message tomorrow. It involves the plasma mechanisms.


ERROR: manifest for containers.intersystems.com/intersystems/webgateway:2<IP_ADDRESS>.0

Hi
I am getting below error
ERROR: manifest for containers.intersystems.com/intersystems/webgateway:2<IP_ADDRESS>.0 not found: manifest unknown: The named manifest is not known to the registry.
Thanks

Bump version webgateway


Populate SBA reference data

Our reference data is incomplete for SBAs. Flesh it out based on (TODO: Link)

https://www.arcticobserving.org/images/pdf/misc/STPI-SAON-International-Arctic-Observations-Framework-Report-2017.pdf

@hazelshapiro could you add the SBA spreadsheet link here for visibility

Societal Benefit Areas spreadsheet for the STPI-SAON International Arctic Observations Framework Report (2017)
https://docs.google.com/spreadsheets/d/1pTvFVg-7YsJLqJ81YsMXwustwN28x-Jfkce9Znx0bHM/edit#gid=0


Bug: Inconsistent text scaling between desktop and mobile viewports

Freshdesk ticket
This ticket serves as a reference to the Freshdesk ticket. The acceptance criteria and definition of done will be defined when the GC Design System team and DTO have finalized on a direction for responsive typography.

Please ping the Support team once resolved, so we can circle back with client in Freshdesk Ticket #19121. Thanks!


[SPARK-14605][ML][PYTHON] Changed Python to use unicode UIDs for spark.ml Identifiable

What changes were proposed in this pull request?
Python spark.ml Identifiable classes use UIDs of type str, but they should use unicode (in Python 2.x) to match Java. This could be a problem if someone created a class in Java with odd unicode characters, saved it, and loaded it in Python.
This PR: Use unicode everywhere in Python.
How was this patch tested?
Updated persistence unit test to check uid type

CC: @thunterdb

Test build #55739 has started for PR 12368 at commit b4ac68e.

Test build #55739 has finished for PR 12368 at commit b4ac68e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55739/
Test PASSed.

Merged build finished. Test PASSed.

@jkbradley this looks great, thanks!

@jkbradley sorry for the delay, I have one comment. Also, you have some merging issues.

Thanks, updated!

Test build #55841 has started for PR 12368 at commit 5b5860a.

Test build #55841 has finished for PR 12368 at commit 5b5860a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/55841/
Test PASSed.

Merged build finished. Test PASSed.

Test build #2794 has started for PR 12368 at commit 5b5860a.

Test build #2794 has finished for PR 12368 at commit 5b5860a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

I'll go ahead and merge this with master.
Thanks for reviewing it!


Graceful Exit of Save Handler with out Saving or GetNextNumber

I have a field  [PONumber Sequence] in a job table that gets incremented when a save is executed on a Vendor Order , the format is this Job-Sequence.
If more than one user is creating a PO for this Job at the same time - the sequence thus PONumber would be duplicated and that is a bad thing. This value in table can be utilized by more than one user and must not be duplicated for any given user. While the likelihood that 2 users would generate a request for this number at the same time - I still must handle the possibility.
I thought to put a lock on the process via a Static Class , if InProcess then EXIT Save and provide message to user . In my current scenario - in the MySaveHandler overriding beforeSave() I just throw(Exception("my Error Message"); but I am not sure this is the proper way to do it.
I was also looking in BasicSamples and found SerialAutoNumberDialog with the GetNextNumber()
I am not sure how that works but maybe it is a better approach .

Would someone be kind enough to help me sort this out as to which approach is best and in the first case if that is proper or a better way ?

Hi @stixoffire ,
why don't you make the ponumber field an autom-incremental field (like the ID field)? Then at the save event it gets automatically an absolutely unique number - assigned by the SQL server. If you need to do anything with this ponumber, you can read it already within the aftersave event.
Could that help?
With kind regards,
John

@JohnRanger The po number consists of a quote number and then a sequence (QNumber-sequence)
This is in MS SQL server and I think in MSSQL the only auto increment field is the identity column.

Hi @stixoffire ,
could you separate the quote number from the sequence within the DB?
E.G: in one filed you store the quote number part and in the other you let MSSQL generate the unique sequence number?
Or does the sequence number for every quote restart new?
Regards,
John

@stixoffire ,
how exactly is the workflow so that your users are able to create conflicting PONumber Sequence numbers?
Are they working together on a stack of jobs (work) and there 2 people could pick the same job and would try to process it?
John

@JohnRanger
Different departments can create an order (different orders, different vendors) , and the order is based on the project number - so project and then a sequence number - currently this is done by one individual in a spreadsheet. I was thinking maybe leaving the po number to an authorized individual to press a button to generate the number and they be the only ones to do it - but would prefer not to do it that way as I would prefer it to be automatically generated on order creation.
The order is generated  against an existing project. In the project table I am keeping a last sequence number used.
I might need to generate this by overriding beforeSave and end up showing it after the fact . I would prefer it to be more automatically created in the form, but I have to consider somebody walking away from the browser or closing it out and not creating.

Hi @stixoffire ,
some more questions:

How bad would it be if there are "holes" within the sequence? Business-critical or no problem?

How bad would it be if the sequence number is only created at save event and not displayed within create form?

how bad would it be if the sequence numbers of a project don't have holes in the sequence but occasionally (when the user has been not finishing the order) the timing sequence would not match the number sequence? (E.G. reusing the sequence numbers of not finished orders after 24h)

Depending on the answer for above questions, there are some solutions :-)
Regards,
John

@JohnRanger
You have put it very succinctly for me to visualize ..  sometimes the many 'hats' I wear clutter my thoughts.
Item 1: I do not think there would be an issue to have holes in the sequence as they are P.O. numbers - but the office people (perhaps as a matter of course using excel) if a number is missing - it might have meaning like oops oh my gosh there is a po number out there somewhere...
Item 2: I think this might be the least problematic - how ever perhaps the save button doesn't cause the dialog to close (like update) and then catch the value into that dialog.
The issue is that when people desire a po number they want it before all the details are completed.. Like people on a job site say I need to get some xyz items now from vendor x .. ok here is a number.
So that process of giving a number before the information is completely filled out - causes the biggest hurdle - which is why I want it saved and displayed quickly and in the form.
Item 3: given the coding logic and complexities of implementing this _ I might not desire this.
Other point is that we can never have a duplicate.
Given operations of people as noted in item 2 , I can see people getting numbers and later nothing matching up.  So this option I would exclude.

Hi @stixoffire ,
from all your answers, I would have thought that it would become item 3. This is not too difficult to implement.
I would do it like this:

Have a separate POnumber table, where all POnumbers are stored. This represents the current Excel spreadsheet of the business. The table should have at minimum the following fields:

ID (auto-increment, identity, Primary Index)
ProjectID (foreign key from Project table)
PONumber (unique POnumber)
Timestamp_created (this holds the point in time when this POnumber has been given out - to determine how long the order has not been completed
isOrderCompleted (default value = false (0) - this will be set to true in the onBeforeSave method in your main method.

When the form opens, fetch a unique POnumber (a POnumber whose order has never been completed within the last 24h - or if there is none, generate the next in line) PO number from the server-side (via a servicecall from the client-side. When you are doing this, within the called method on server-side, you do the following:

Check, if there is a POnumber which has isOrderCompleted = false and the timestamp_created is older than current timestamp-24h.
--> If there is, set Timestamp_created to current timestamp in UTC and return the ID of this POnumber record.
--> If there is not (else) generate a new POnumber by using the high-watermark number which you already store within your project table and you store the following in your POnumber table:

ProjectID (from the corresponding project)
PONumber (Your just generated - unique - POnumber)
Timestamp_created (current timestamp in UTC)
isOrderCompleted = false (0)

As return value of the POnumber-generate method, you return just the ID of the record.
In your main table, you store only the ID of the POnumber record but you have a lookupscript/lookupEditor relationship there, so that it displays the desired POnumber within the form. You set that field within the form to read-only, so your users cannot manipulate it. Within the grid, you display the POnumber foreign field so that the real POnumber is shown and not the ID of it.
Then in the BeforeSave Method in the xyzRepository.cs of your main module, you simply set Row.isOrderCompleted = true (1). It will be saved together with the data entered in the form in the Save() event.
With that, you have all your criterias met:

User has immediately a guaranteed, unique POnumber visible when he/she generates an order and he/she cannot manipulate it.
No unused POnumber. POnumbers of not completed orders are automatically reused after 24h
No POnumber holes

Elegant, isn't it? :-)
Regards,
John

@JohnRanger  thank you for your answer - it is pretty nice .. I will try to implement it, although I have to say it will take me more than 30 minutes. I wear many hats - doing this coding is one of the many hats I wear . I could see if all I did was write code for web pages / or desktop apps I might be faster.  I do appreciate the time you have taken to produce this guide for me.
I have seen your conversation about the cache (read the whole thing through) - I usually search the issues table before I do things - because many times I come across someone who has experienced the same things.
BTW: I like your documentation in the WIKI - basic building blocks.  Everything I have seen you post has been clear and concise - not to mention very helpful for the entire community.
Hope you are doing well and this virus thing is not causing you too much trouble or stress ..

Hi @stixoffire ,
thanks for your kind words. As I myself also do programming as a "side effect" of my job, I am slow to understand basic stuff like object oriented programming, DOM manipulation or Typescript. But if I then have understood something, I like to describe it as I have understood it - Which normally makes it easy for others to understand it also.  - And yes - I am doing well. Hope, you too.
If you have trouble in doing the above, tell me and I will help. But when I see your knowledge when you help out others here in the forum, I think you can do it :-)
Regards,
John


Merge release v-1.0.0 to master branch

Pull Request
Proposed Changes
Merge changes for release v-1.0.0
Type of Change
Release

[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New Feature (non-breaking change which adds functionality)
[x] Breaking Change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update

Checklist

[x] I have read the Contributor's Guide and implemented those parts I needed to
[x] I have performed a self-review of my code
[x] I have commented my code, particularly in areas which are harder to understand
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

Squash & Merge approved


CSS and Less files get autoloaded

Existing CSS and Less files within /site/templates/sections/ get autoloaded even though $rockfrontend->styles()->... isn't used anywhere.

While this autoload feature is nice in general, right now and in this way it ends up in really unexpected results.

Hey @webmanufaktur thx for letting me know - maybe I was too eager on that one, sorry! I'm using LESS so I didn't realize that it makes troubles, I'll fix this asap :)

There's no the option to disable autoloading:
$rockfrontend->styles()->setOptions(['autoload'=>false]);

Setting this option works as expected.


Clarified the organizations that get visibility on 'internal' reposit…

Why:
Clarified the visibility especially for 'internal' repositories to make it clear that this stays within the enterprise.
What's being changed:
Text only
Check off the following:

[x] I have reviewed my changes in staging (look for the latest deployment event in your pull request's timeline, then click View deployment).
[x] For content changes, I have completed the self-review checklist.

Writer impact (This section is for GitHub staff members only):

[ ] This pull request impacts the contribution experience

[ ] I have added the 'writer impact' label
[ ] I have added a description and/or a video demo of the changes below (e.g. a "before and after video")

@rajbos Thanks so much for opening a PR! I'll get this triaged for review ⚡

Hi @rajbos, it looks like I'm not able to leave a suggested change on this PR, perhaps because you deleted your fork? For us to merge this, we'll need to be able to make changes to the branch. Could you possibly restore your fork? Thanks!

@lecoursen , darn it, seems like I cleaned it up to soon without realizing this was part of an open PR. Somehow it is not visible under my 'Deleted repositories' so no way to recover I guess? I can re-fork it and add the changes again, but then I'll have to create a new PR for it because I cannot link it to this PR, correct? Happy to do so then.

I can re-fork it and add the changes again, but then I'll have to create a new PR for it because I cannot link it to this PR, correct? Happy to do so then.

Yes, I think that we might need to do that, unfortunately. Thanks for taking the time! Can you also make sure you check the box that allows edits from maintainers when you do recreate the PR? And feel free to @-mention me so you don't get added to the back of the queue. 😊

Closing this PR in favor of #8286


npm out of date (1.6.5 -> 1.7.0)

Hi aemkei,
thank you for this great lib.
Please update npm package to 1.7.0.
https://www.npmjs.com/package/geocomplete
Cheers

Done. Thanks for the hint!


from django.db import models

Default Django, just started to use.

Thanks for the report. Could you please add the information in the report as described in the troubleshooting guide?

@evgen66rus is your python interpreter pointing to the right env?

closing stale issue


[TC-164-Backport] - $self needs to be passed to these methods for dbix

(cherry picked from commit f1a912f1ae4296eabf8b966fb852b2f76f91979e)

why not do $self->get_cdn_domain($ds_id); to be consistent with how we do it elsewhere?

@knutsel - yes, I agree jan...but...$self is not what it appears to be in this case as the parent method is being called from the UI namespace AND the API namespace.


fix(UE4SS): fix lua FString setter

This fixes the FString setter from lua which added an additional \0
byte at the end with each assignment.

We should to ask @Okaetsu regarding this.
They were the one that added that extra null terminator to SetCharArray: https://github.com/Re-UE4SS/UEPseudo/commit/2a1ecc59

We should to ask @Okaetsu about this. They were the one that added that extra null terminator to SetCharArray: Re-UE4SS/UEPseudo@2a1ecc59

I have no issues with removing the null terminator from SetCharArray itself other than if you're manually creating a TCHAR Array and you forget a null terminator, things will break. I'm unsure if this would ever be a problem, but just something I thought of.
I'm thinking if it would make sense to add a check to see if a null terminator exists at the end and append one if necessary rather than always including it in SetCharArray.

but, where be put the these solution code?


Use TCP nodelay for the nginx proxy

I'm making this change blindly by copy-pasting from the official documentation, so I'm not actually 100% sure that the syntax is correct.

Ah nevermind, I had missed that it is the default value.


Phase 1: InstrumentLanding Pages Modules Implementation

💡 Description

📆 01/2024 status: Deferring these landing pages to next build. This website delivery spans several builds, so no impact on delivery.

📆 05/2024 status: Start delayed 1 sprint. No impact on delivery.

📆 06/2024 status: Start delayed 2 additional sprints due to delays in https://github.com/NASA-PDS/portal-wp-tasks/issues/60. No impact on delivery.

📆 07/2024 status: Replanned to do instrument landing pages before bundle/collection. In work.

📆 08/2024 status: In work, on schedule


support github cache

this may be per-addon, or maybe a script here that the addons call via submodule

working with 5748b05f645c617beccd43674d11bddeb6e95cd2


Final updates

Codecov Report

Merging #22 (04bf46b) into master (b18b153) will decrease coverage by 2.75%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #22      +/-   ##
==========================================
- Coverage   72.68%   69.92%   -2.76%
==========================================
  Files           8        8
  Lines        1219     1217       -2
==========================================
- Hits          886      851      -35
- Misses        333      366      +33

Impacted Files
Coverage Δ

src/functions.cpp
57.78% <0.00%> (-5.24%)
:arrow_down:

src/config.cpp
69.62% <0.00%> (+1.71%)
:arrow_up:

Continue to review full report at Codecov.

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


NPC Negative Health

If an NPC's health goes below zero, it doesn't set them up in the combat tracker for a Drop, the health must be exactly zero. It would be awesome if this could be fixed so I wouldn't have to change health back to 0 after applying Harm to an NPC

I thought I addressed that in the previous version! Rar! Haha.
Thank you for the report, I will certainly get this addressed.


Add JSON-LD Structured Data for Improved SEO

Is your feature request related to a problem?
One way to improve our SEO and make our content more accessible to search engines is by adding structured data. Currently, our Head.tsx component does not include JSON-LD structured data, which could help search engines better understand the content of our pages.
Describe the solution you'd like
I propose adding a

we currently already include Open Graph information, most browsers will not care about JSON-LD within script tags
If you have docs from browsers that say otherwise, I'm happy to take a look

I am not very knowledgeable about SEO. I used this SEO checker service to audit my website (built with Quartz) and received this SEO issue to address.

If you think this fix is unnecessary, we can skip it. Otherwise, I am ready to implement the changes.

I think it's unnecessary, the vast majority of websites don't do this :)

alright, thank you so much for your quick response and Quartz (it's awesome).


Progress is unclear about what is being uploaded during backup

I do a full root back up as sudo using restic to a remote NAS. It takes way long than I would think it should given the backup is supposed to be incremental. I have 1.4 GiB that have changed, yet restic is uploading the full size of the snapshot. The backup directory does not increase in size by the full backup size (37 GiB), but by the expected size of the changed files (1.4 GiB). So, why am I uploading the entire back up, taking forever, only to save the incremental changes?

The progress should indicate what it is uploading. Something like:
[32:48] 100.00%  19.757 MiB/s  37.971 GiB / 37.962 GiB  changes  834110 / 834111 items  0 errors  ETA 0:00

Am I just doing something wrong? The documentation provides no guidance here, and I couldn't find any other similar issues, open or closed.
Output of restic version
$ restic version
restic 0.7.0 (v0.7.0-37-g6c053530)
compiled with go1.8.1 on linux/amd64

How did you start restic exactly? (Include the complete command line)
$sudo restic -r sftp:user@1host:/path_to/restic_backup backup / -e /path_to/exclu_list.txt -x -p /path_to/passwd.txt

What backend/server/service did you use?
sftp
Expected behavior
$sudo restic -r sftp:user@host:/path_to/restic_backup backup / -e /path_to/exclude_list.txt -x -p /path_to/passwd.txt
using parent snapshot 80d2833d
scan [/]
scanned 86574 directories, 747537 files in 0:35
[1:11] 100.00%  19.757 MiB/s  1.39 GiB /1.39 GiB  834110 / 834111 items  0 errors  ETA 0:00
duration: 1:11, 19.75MiB/s
snapshot 735e57f4 saved

Actual behavior
$sudo restic -r sftp:user@host:/path_to/restic_backup backup / -e /path_to/exclude_list.txt -x -p /path_to/passwd.txt
using parent snapshot 80d2833d
scan [/]
scanned 86574 directories, 747537 files in 0:35
[32:48] 100.00%  19.757 MiB/s  37.971 GiB / 37.962 GiB  834110 / 834111 items  0 errors  ETA 0:00
duration: 32:48, 19.75MiB/s
snapshot 735e57f4 saved

Steps to reproduce the behavior

implement restic backup using file structure from previous backup

Do you have any idea what may have caused this?
No.

Hey, thanks for the report. This is actually a user interface story: restic prints (a bit misleading, I admit) the amount of data it has processed and the speed at which it processes data. That is, as you have noticed, not the same as the metric in which you're interested: The amount of changed/new data, and the upload throughput to the repository.
Sometime we'll get around to reworking the user interface and the archived, and I'm sure this will get addressed. Thanks!

So, the processing combined with the uploading of incremental changes occurred at a speed of ~19MiB/s? Any way to speed up the processing?

I'm trying to answer your questions one by one:

So, the processing combined with the uploading of incremental changes occurred at a speed of ~19MiB/s?

Roughly, yes. Whereas "processing" means "restic looks at the files and only uploads them if they have changed".

My upload speed is on the order of 2.7MiB/s, so at that rate, sending 1.4GiB would have taken 8:55. I would expect that this is my bottleneck. What is taking so long?

This is a limitation restic currently has: For your use case (limited by upload speed) restic is slow because it detects that there has been a previous snapshot, and incrementally loads metadata from the repo as it is needed. Depending on the latency to the remote that waiting time for metadata to arrive sums up to quite a lot of time, so the overall process is not as fast as it could be. We're currently working on that (see #1040). In the meantime, you can try running restic backup --force, which will not load any metadata from the repo. Instead, all files will be read and hashed again locally, so restic can decide which blobs are not present in the repo any more. This will cause much more CPU and IO load locally, but may be faster.

I did look at my system upload totals, only 1.6 GiB was been uploaded for my session, so, yes, restic did only upload the changes. Any way to speed up the processing?

Try restic backup --force and report back.

And what does the ~19MiB/s indicate if not the bottleneck?

Roughly it's the amount of data processed (looked at, not necessarily read) divided by the runtime. That's mostly only accurate for the initial backup.

I thought the processing speed was indicated by:
scanned 86574 directories, 747537 files in 0:35 ?

That is an entirely different phase: restic walks the directories to be saved and counts the files and sums up the size. There's no processing involved here at all.

Thanks for the detailed explanation, If this was in the documentation, I apologize. Maybe it should be more clear in the progress bar, or the documentation.
I used the --force option but got the same result, just with more CPU usage. Do you think I will have better results with a REST server? Planning on implementing that soon.

I think that this is not in the documentation, and we plan to rework the progress reporting anyway.
The REST server can give you a bit more speed (sftp is a pretty bad protocol for transferring large amounts of data concurrently), but don't expect miracles.

@soamaven The misleading bandwidth information has been removed quite some time ago and restic prints backup statistics when run as --verbose. Showing the real upload bandwidth would then be tracked in #1581. Did I miss anything or can we close this issue?

Closing this issue as the remaining part is tracked in #1581.


Fix GitHub links

@slokhorst thank you for contributing! I just merged this PR which fixes this issue as well.


TwitterOptions does not implement Validate

This is a regression from 1.1. https://github.com/aspnet/Security/blob/rel/1.1.2/src/Microsoft.AspNetCore.Authentication.Twitter/TwitterMiddleware.cs#L71-L78
Missing ConsumerKey
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at System.Text.Encodings.Web.TextEncoder.Encode(String value)
   at Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.<ObtainRequestTokenAsync>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.<HandleChallengeAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.<ChallengeAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationService.<ChallengeAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at SocialSample.Startup.<>c.<<Configure>b__6_1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()

Missing ConsumerSecret
System.ArgumentNullException: Value cannot be null.
Parameter name: value
   at System.Text.Encodings.Web.TextEncoder.Encode(String value)
   at Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.ComputeSignature(String consumerSecret, String tokenSecret, String signatureData)
   at Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.<ObtainRequestTokenAsync>d__14.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.<HandleChallengeAsync>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.<ChallengeAsync>d__53.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Authentication.AuthenticationService.<ChallengeAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at SocialSample.Startup.<>c.<<Configure>b__6_1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.<Invoke>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()

@HaoK

Yeah its missing a validate doh.

43db99a5686471641eed7913d71dab2dcf0d2464


Message bundles have revision hashes

My project structure is as below. For cache bursting, we add a revision hash to the file names using Grunt.
message_bundles

default
-- en.0ffb29ba.json
-- fr.058b3ea2.json
brand1
-- en.8a80554c.json
-- fr.9a80654c.json
brand2
-- en.3a40554c.json
-- fr.1a80150c.json

This is my Angular Translate configuration. We have default master message bundles and the child brand bundles inherit from the parent.
$translateProvider
    .useStaticFilesLoader({
      files: [ {
        prefix: 'message_bundles/default/',
        suffix: '.json'
      },{
        prefix: 'message_bundles/' + {{BRAND}} + '/',
        suffix: '.json'
      }]
    })
    .preferredLanguage('en')
    .registerAvailableLanguageKeys(['en', 'fr'], {
      'en.*': 'en',
      'fr.*': 'fr'
    })
    .useSanitizeValueStrategy('sanitize');

This doesn't work since the file names have revision hashes. Is there any way to make Angular Translate ignore the hashes?
Environment

version of angular-translate - 2.17.0
version of angular - 1.4.4
which browser and its version - Google Chrome | 64.0.3282.140 (Official Build) (32-bit) (cohort: 64_140_win)

Ehm.. how should this even work in theory? If angular-translate aka the browser skips notice about the hash, the server will not find the corresponding resource. Because the resources (like the translation files) have changing urls, you are making the whole stuff using hashes.
Skipping them would bypass the idea of the cache. That does not make sense.
So, if you have decided to use such a pattern, you have the following options:

Configure the urls probably with the hash. If you have a post processor already (like Webpack), you could maybe inject the dynamic url of the resulting artefacts while building them. Or: It looks like you have something similar for your branding stuff. Either you inject the actual path, or you inject the information about the path segments (i.e. via a dynamic generated JSON file).
Alternatively, you could rethink the whole thing (depends on the size of files): If you are already building an "app", you can inject the actual translations without an async loading part. Definitely worth if the translation files are small.

For Approach1, the {{BRAND}} value is available to the Angular application at runtime through a jQuery AJAX call it makes even before bootstrapping the Angular app. The app does have the dynamically generated revision details generated through Grunt.
fileRevMap = {
	"message_bundles/default/en.json": "message_bundles/default/en.xxxxxxxx.json",
	"message_bundles/default/fr.json": "message_bundles/default/fr.xxxxxxxx.json",
	"message_bundles/brand1/en.json": "message_bundles/brand1/en.xxxxxxxx.json",
	"message_bundles/brand1/fr.json": "message_bundles/brand1/fr.xxxxxxxx.json",
	"message_bundles/brand2/en.json": "message_bundles/brand2/en.xxxxxxxx.json",
	"message_bundles/brand2/fr.json": "message_bundles/brand2/fr.xxxxxxxx.json"
	.
	.
	.
	and so on for the rest of the brands
}

But even with these details, how do I inject them in the $translateProvider code above since the revision hashes for all the files could be different. I was thinking if I could somehow intercept the REST call which Angular Translate makes when fetching the resources, I could somehow transform it to the one present in the fileRevMap variable above.

You can build your own custom loader (see docs) doing whatever you want. It is only a function (service).

So, here is what I have done. I intecepted the request using $httpProvider and modified it. fileRevMap is my map containing the revisioned file names.
 $httpProvider.interceptors.push(function (fileRevMap) {
    return {
      request: function (config) {
        config.url = fileRevMap[config.url] || config.url;
        return config;
      }
    };
  });

So, no changes from Angular Tanslate. So, you can close this.


kudo cli version message format

What happened:
kubectl kudo version
KUDO Version: version.Info{GitVersion:"v0.3.1", ...}

and now with v0.3.2 its
KUDO Version: version.Info{GitVersion:"0.3.2",...}

One of our scripts failed as we use GitVersion to validate if the version of cli is the same version as the deployed controller vesion.
What you expected to happen:
kudo version to stay consistent across releases
How to reproduce it (as minimally and precisely as possible):
install cli from 0.3.1 and 0.3.2  and run kudo version for them
Anything else we need to know?:
Please close this issue if the way to go from now is without v
Environment:

Kubernetes version (use kubectl version):
Kudo version (use kubectl kudo version): 0.3.1 and 0.3.2
Operator:
operatorVersion:
Cloud provider or hardware configuration:
OS (e.g. from /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

The PR https://github.com/kudobuilder/kudo/pull/579 fixed this issue


Integration with shaping is required

This is an elaboration of the kind of issue I describe in https://github.com/tc39/proposal-intl-segmenter-v2/issues/8:

Browsers’ text engines have a close interrelationship between font fallback, bidi processing, line breaking, and shaping, which cannot be matched using this API proposal.

Here's an example. Consider this Burmese string:

ဂျီးဒေါ်ကြီးကောင်ငင်

(I don't know Burmese, so I don't know whether this makes grammatical sense, but I'm using it as an example to describe a class of problems.)
It should be rendered like this:

This string is the concatenation of two Burmese words: "ဂျီးဒေါ်" and "ကြီးကောင်ငင်". Burmese doesn't require spaces between words. Line breaks in Burmese are allowed between words, so there is a line breaking opportunity between "ဂျီးဒေါ်" and "ကြီးကောင်ငင်".
Imagine this text is being laid out using Noto Sans Myanmar within some available width. Paragraph layout code attempts to pick the line breaking opportunity which fills the available space as much as possible - i.e. the one which places as much text on the line without exceeding the available space.
With the current formulation of Intl.Segmenter v2, they would have 2 approaches to accomplishing this, both of which are wrong:

They could partition the string into atomic non-breakable pieces, and measure each piece independently: "ဂျီးဒေါ်" and "ကြီးကောင်ငင်" would be measured independently. However, this is wrong because Noto Sans Myanmar has a kerning pair between the last letter of the first word and the first letter of the last word - between "ဒေါ်" and "ကြီး".

Here's an image displaying the width of "ဂျီးဒေါ်" alone:

You can see how the character overhangs its available width. However, if the next character is "ကြီး", the kerning pair in Noto Sans Myanmar moves them apart, so "ဒေါ်" no longer overhangs.
So, if this method were employed, the two words would be measured independently, and the resulting line would be rendered like this, which is wrong:

Alternatively, instead of partitioning up the string into atomic pieces, the routine could measure the entire string from the beginning of the line up until the line breaking opportunity in question. It would do this for every line breaking opportunity, and stop once the available width is exhausted.

However, this is an O(n^2) algorithm. Imagine a line with n line breaking opportunities - this algorithm would require that you re-measure that first word n times. O(n^2) is not really acceptable for something as common as text rendering.
Browsers solve this problem by integrating line layout code with shaping code. One of the outputs of shaping code is information about where ligatures and kerning pairs exist - see HB_GLYPH_FLAG_UNSAFE_TO_BREAK. Line layout code uses this information to determine which parts of the layout can be re-used and which parts need to be re-measured when a line breaking candidate is changed.
This kind of shaping integration is not included in Intl.Segmenter v2.

The above is correct. But I'm not sure if it informs us about the suitability of the proposal for TC39. There are roughly 4 components in rendering a piece of text:

Segmentation: analyze the string and extract its grapheme, bidi, line-breaking properties into string segments.
Shaping: given a text segment and shaping parameters (font, size, etc), compute the geometry of the text, including kerning, letter spacing, etc.
Line breaking: given a sequence of text segments, use the shaping component to fit the text into a desired form.
Rendering: rasterize the text fragments.

What is described in the original post is the work done by the shaping and line breaking components. There could be quite a bit of back'n'forth to fit a piece of text. However, there is, at most, a loose feedback loop with the segmentation component once the line breaking process begins (the only thing I can think of is "lazy segmentation" that can be used as a performance optimization for rendering long text).
In some applications the separation between segmentation and the other components can be temporal too. For example, as an optimization, the segmentation of a large piece of text could take place in a web worker. The text can be then shaped and rendered in the rendering isolate. In some cases, shaping and rendering are also disconnected temporally, for example, to prevent rendering more than is visible on the screen, even if the layout is computed eagerly to figure out what to render.
I think it would be more productive to think about these components as independent APIs that are composed into a solution, rather than all of them together being one solution. This is because the higher level you go the higher diversity of problems there are. The diversity shoots up particularly at the line breaking and rendering levels. The vast majority of apps could share the same segmentation and shaping. However, fitting text onto a space can be wildly different (1, 2, 3). We (the Flutter Web team) found that, while it is actually a fairly difficult problem, it's actually quite solvable in user space (in JavaScript or WebAssembly) and it does not significantly contribute to payload size (10s of KiB). Rendering is as diverse, if not more, due to several rendering technologies available - SVG, HTML, Canvas, WebGL, WebGPU - and of those WebGL and WebGPU offering unlimited customization opportunities. A special case of "rendering" worth noting is semantics, used by assistive technologies (e.g. VoiceOver, TalkBack, NVDA), but it can be viewed as a separate concern just like rasterization.
One use-case that could use segmentation completely stand-alone is education apps that teach students how to line-break text when hand-writing. Some of it could probably be satisfied by server-side segmentation, but when a server is not available would need client-side capabilities.
Conclusion
Given that segmentation only needs ICU data (which is already included in JavaScript as part of the other Intl functionality), and it being a separate concern from other aspects of text rendering, I do not yet see what makes it unsuitable for TC39.
However, I strongly agree that the proposal should actually help solving the larger problem. Flutter will not be able to adopt this proposal otherwise. To that end, we scheduled a PoC that's based on Intl.v8BreakIterator to see the results we get. Early data suggests that we can reduce the initial payload size of Flutter apps by ~0.5 MB. Currently, there's no known way to solve this in user space.

In some applications the separation between segmentation and the other components can be temporal too. For example, as an optimization, the segmentation of a large piece of text could take place in a web worker. The text can be then shaped and rendered in the rendering isolate.

Myles' point is that shaping and segmentation should not be disconnected in such a fashion, at least if you're doing segmentation for the purpose of figuring out how to lay out text on a line and want to do so performantly. Why wouldn't we want the shaping to also be done in the worker in this instance?

In some cases, shaping and rendering are also disconnected temporally, for example, to prevent rendering more than is visible on the screen, even if the layout is computed eagerly to figure out what to render.

Rendering is a completely separate stage that isn't relevant to the discussion here. You need to know dimensions and extents long before pixels ever come into play. It can indeed be something that happens with a significant temporal separation from shaping/linebreaking/etc.

Myles' point is that shaping and segmentation should not be disconnected in such a fashion, at least if you're doing segmentation for the purpose of figuring out how to lay out text on a line and want to do so performantly.

It's possible that I'm misunderstanding what @litherum wrote above. If so, please point me in the right direction. My understanding is that in string "ဂျီးဒေါ်ကြီးကောင်ငင်" the  line breaking opportunity between "ဂျီးဒေါ်" and "ကြီးကောင်ငင်" is known purely by combining the string with a table in the ICU data. This information would be vended by Intl.Segmenter v2. Nothing that's computed at the shaping and line breaking level that would need to be fed back to the segmenter to refine that data. The ligatures, kerning and the final fitting into the shape of the paragraph are figured out without the segmenter's participation. @litherum also said "Browsers solve this problem by integrating line layout code with shaping code", which is an approach that makes sense to me. I'm not arguing against it. What I'm saying is that in all of this segmenter remains a cleanly separated component with a very specific role: turning text into segments.

Why wouldn't we want the shaping to also be done in the worker in this instance?

For example, to achieve paralellism. A book reading app for example, may need to process a lot of text to lay it out on pages.

Rendering is a completely separate stage that isn't relevant to the discussion here. You need to know dimensions and extents long before pixels ever come into play. It can indeed be something that happens with a significant temporal separation from shaping/linebreaking/etc.

I agree that it's a separate stage, at least in implementations that I've seen. I only brought it up because the question of completeness of the proposal has been brought up in #8. We want to make sure that a complete text rendering system can be built with the proposed API as a building block.

The question I was trying to pose was "How would you use Intl.Segmenter v2 to fill a line with arbitrary text, like this Burmese text, in a correct and performant way?"
My claim is that it's impossible, without doing something Herculean like embedding harfbuzz.js and running shaping in Javascript.
(An additional unstated claim is that any API that performs line breaking should be able to handle text like this Burmese text in a correct an performant way.)

@litherum

My claim is that it's impossible, without doing something Herculean like embedding harfbuzz.js and running shaping in Javascript.

This is true, but only assuming we're starting from a vacuum. The reality is that HarfBuzz, Freetype, and other relevant libraries have been ported to the web and are in production use. Libraries such as CanvasKit are trivial to use and if you use Flutter you get all that stuff automatically. Figma, Adobe, AutoCAD chose to implement their own custom solutions. In the fullness of time, I expect there will be many specialized solutions, some for 2D graphics (a la CanvasKit), some for 3D graphics (a la PixiJS), some for rich document editing, etc. So the Herculean part is solved, or at least is on an incremental improvement trajectory (faster multi-threaded WASM with SIMD, WebGPU, OffscreenCanvas, will give them a boost).
I think a more useful question to ask instead is: "Does adding Segmenter v2 API alone have real-world benefits?" From a preliminary analysis the answer is "yes". For example, we have good reasons to believe that Flutter can remove ~0.5 MB of payload from all apps that target the Web. In Flutter, the text layout problem is 48% string segmentation (largely due to the size of ICU), 48% text shaping (HarfBuzz + Freetype), and 4% line breaking + rendering problem in terms for code size. Even though that 4% is a bit of a rocket science it results in small downloads after minification and compression, so the end user impact is relatively small.

An additional unstated claim is that any API that performs line breaking should be able to handle text like this Burmese text in a correct and performant way. And it should be able to do it without requiring a significant Javascript dependency.

This is the argument I'm paying a close attention to, although not because of a significant JavaScript dependency (as explained above, those dependencies already ship with production apps today). What would worry me is if the Segmenter v2 API could not be combined with other parts into a correct and performant solution. To that end, it would be interesting to see examples where the proposed API leads to incorrect results, or examples of algorithms with superior performance characteristics that the proposed API is incompatible with. We should also look for evidence that the proposal is actually useful. AFAICT, the example of Burmese text above is satisfied by the proposed API, but I'd be happier to see an actual PoC that demonstrates it.
Options
TC39 Stage 2
I'm new to TC39, but if I'm reading the process correctly, stage 1 is satisfied at this point. We have a champion with a proposal. Polyfills for this stuff exist already, both in user space (CanvasKit) and as a proprietary feature (Intl.v8BreakIterator). We've discussed cross-cutting concerns and now know what to look for (e.g. integration with shaping).
I think it would be reasonable to let the proposal to go to stage 2. It will allow the proposal to be speced out and have an experimental implementation to test against. At stage 2 we'll want to show that the adoption of the proposed API would lead to useful combinations of:

Payload size drop from adopting the new API compared to the approaches that include a copy of text segmenter in their bundles (personally I'd would want to see something no less than 0.4 MB in gzipped payloads, preferably very close to 0.5 MB).
Higher correctness in approaches that do not currently ship a copy of a fully featured segmenter (e.g. they do "naive" segmentation).
Integration with a text shaping component (e.g. HarfBuzz + Freetype).
No performance degradation (or improvement!) compared to the current approaches.

Move to W3C
While I do not yet see clear technical reasons why the proposal should not be part of TC39, moving it to W3C is not an unreasonable choice. This is because the second half of the problem - text shaping - is more appropriate for W3C than it is for TC39, as it needs fonts, styles, glyphs, a coordinate system, all of which is way beyond strings of text.
So the choice is between TC39 (segmenter) + W3C (shaping, and maybe rendering), and W3C (segmenter) + W3C (shaping). Even though TC39 + W3C might be cleaner, developing both halves under a single umbrella might be beneficial from the coordination and future maintenance standpoint.

Libraries such as CanvasKit are trivial to use

CanvasKit is 6.8MB + 133K = 6.97MB
Harfbuzz.js is 213K + 4.7K = 218KB

"Does adding Segmenter v2 API alone have real-world benefits?"

This is not the relevant question. The relevant question is "do the benefits outweigh the costs?"
If the costs are "claims to work for all languages, but cannot be used correctly with a bunch of languages, and it's not obvious which languages those are, and cannot be used correctly with bidirectional text, without being used with multiple Javascript dependencies, and it's not obvious which dependencies to use, and it would have to be maintained forever, in addition to whatever Houdini / canvas-formatted-text create, which could satisfy the same use cases" then the answer seems pretty clearly that the benefits do not outweigh the costs.
I agree with you that the proposal, as it stands, has nonzero value. I'm disagreeing that the proposal is good enough to be shipped as a standard.

I guess I also wanted to make the point that I'm not actively disagreeing with your use case. If/when an acceptable solution comes along, it ideally would be usable by Flutter.

@litherum
For payload sizes, consider using compressed numbers (gzip or brotli), as that's how modern websites are served. You will find that the size of that particular build of CanvasKit is ~2.5 MB. The numbers I used above are all gzip numbers.
By "trivial to use" I mean that it's easy for a developer to drop a library in their project and use it. It takes minutes to get going. There's no Herculean effort involved. The payload size doesn't change that.
The payload size is important for end user experience, though, and it's the whole reason the proposal exists. There are many things we can do to reduce that 2.5 MB, but one thing there's no user space solution for is the extra 0.5 MB chunk of ICU. Browser's help is needed.
Harfbuzz.js is interesting, and if it's capable of supporting all languages in a 91 KB gzipped wasm blob, then it could potentially solve the shaping problem without browser's assistance. We'll investigate. Thanks for the link :+1:

The relevant question is "do the benefits outweigh the costs?"

Agreed, but we should be mindful about who gets the benefits and who pays the costs. Today, users pay the cost (big downloads).

If the costs are [long list of costs]

That's quite a gloomy scenario! However, the TC39 process was designed to prevent such outcomes. The request is only to go to Stage 2. There will be Stage 3 that will include "feedback from implementations and users". The relevant cost to the browser vendor is the maintenance cost of the API. Let's not conflate that with other costs and benefits extemporaneously.

If/when an acceptable solution comes along, it ideally would be usable by Flutter.

I'm not sure what's suggested here. Design an API in the vacuum and hope that it solves real problems? If so, I recommend doing the reverse, identify problems apps face on the web today, then design an API that solves them.
Back to the original issue
The issue attempted to demonstrate interrelationship of the various components of text layout. It demonstrated the interactions between shaping and line breaking. No hard dependencies or feedback loops with text segmentation were identified.
I propose the following:

Resolve this issue.
For new examples that demonstrate a coupling between text segmentation and shaping, or text segmentation and line breaking, let's open a new issue.
Continue the discussion of whether this API and text shaping should go in tandem in #8. That discussion seems outside the scope of this issue.

They could partition the string into atomic non-breakable pieces, and measure each piece independently: "ဂျီးဒေါ်" and "ကြီးကောင်ငင်" would be measured independently. However, this is wrong because Noto Sans Myanmar has a kerning pair between the last letter of the first word and the first letter of the last word - between "ဒေါ်" and "ကြီး".

This will never happen, because that won't even work for the simplest English example "Hello World".
If you have "Hello World". Intl.Segmenter will break them into "Hello " and "World", and even with monospace font,
the text width of "Hello " is 5 and "World" is 5, but "Hello World" is 11. So this is an algorithm no one will even attempt to implement.

So, if this method were employed, the two words would be measured independently, and the resulting line would be rendered like this, which is wrong:
As I mention, if you follow the same algorithm to render "Hello World" in English, it will render as "HelloWorld" so no body will implement that anyway.

3. Alternatively, instead of partitioning up the string into atomic pieces, the routine could measure the entire string from the beginning of the line up until the line breaking opportunity in question. It would do this for every line breaking opportunity, and stop once the available width is exhausted.
However, this is an O(n^2) algorithm. Imagine a line with n line breaking opportunities - this algorithm would require that you re-measure that first word n times. O(n^2) is not really acceptable for something as common as text rendering.

Binary search will lead to O(n log n) , right?

and if the width of the region is short, the n in  n(n+1)/2 (which lead to O(n^2))  is limited by the region and will be small and even a linear search of all line break opportunities in it won't be very slow since the n is small. If the width of the rigion is wider, the caller could first use the width of the region / the font size and linear approximation to "guess" a point in the text, and use then Intl.Segmenter to find out the near by opportunities and then use binary search to narrow down to the exact line break point of that ine, that will be less than  n(n+1)/2 .


Need to add G729, GSM, iLBC, Speex, G711, G722, AMR ,PCMA Codec with this plugin

We want to add G729, GSM, iLBC, Speex, G711, G722, AMR ,PCMA Codec  with this plugin
Currently we are using this plugin for audio call with SIP protocol using this plugin. Now we want to add G729, GSM, iLBC, Speex, G711, G722, AMR ,PCMA codec but not able to add.
We want solution for adding those codec in this plugin
if any have add those codec in app or any one know about solution then help us.
If any one know alternative of this plug in to add those codec then help us.
We have already review entire lib classes but we find this library only supported PSMU.  so i request please add those codec in this plugin. it's very important  for us.

This plug-in currently uses webrtc as the media stack. It supports opus, PCMU, and PCMA encoding. As you mentioned, G729, GSM, Speex, and AMR encoding require custom development of libwertc, which will have a heavy workload.

Hey ! I got this over the internet https://github.com/sippet/g729 can we integrate this into this to include g729 into the application ?


Support query cancellation with AbortController / AbortSignal

Problem
Currently there's no way to cancel a Prisma query. Some queries are long-running and consume a lot of database resources, therefore it would be great if we had the ability to cancel them.
Example scenarios:

Background job running some long queries is asynchronously cancelled. The db queries should also be immediately cancelled so that we can cleanup and close the job.
We issue HTTP request and a Prisma query in parallel. HTTP request fails, so there's no point in waiting for Prisma query to finish - it can be cancelled.

Note that databases natively support cancelling queries (#1, #2, #3)
Suggested solution
It seems that AbortController  is becoming a standard for cancelling async operations. It's implemented in all major runtimes, including Node > 15.

It's used in fetch
It's used in a number of nodejs APIs, e.g. child_process: https://nodejs.dev/en/api/v18/child_process/
It's discussed as a solution to query cancellation problem in other ORMs (knex, sequelize)
It's supported in a number of other third-party solutions, e.g. Temporal

Prisma queries could take additional signal param similar to fetch and other APIs:

const controller = new AbortController()
const signal = controller.signal;

const query = prisma.model.findMany({select: {id: true}, where: {name: 'test'}}, {signal})

// Abort query
controller.abort();

try {
    await query;
} catch (e) {
    if (err.name === 'AbortError') {
        console.error('Query has been cancelled.')
  }
}

Alternatives
Custom .cancel() method on PrismaPromise?
Additional context

Having some way to cancel queries would be great!

This would be big, would love to be able to cancel queries w/ Prisma

This would be also great to have for the Go client, as all methods take a context and once the context is cancelled, the underlying SQL query should be cancelled as well.

Note that SQL Server also supports cancellation https://github.com/tediousjs/node-mssql?tab=readme-ov-file#cancel

Any updates on this? The ability to cancel queries would be very handful. 🙏

Any updates? Been watching this for a while 🙏🙏


Drop IE-specific status codes workarounds and require IE10+

Fixes #214

:shipit:

Current version is 0.11. Are we ready to release 1.0.0?

Are we ready to release 1.0.0?

Yes, fetch has been stable in production for over a year.


examples/embassy doesn't work on the rpi-pico

Summary
I just tried running the embassy example and it didn't work as expected. Specifically, awaiting the timer never returned.
The example seems quite old, is it outdated? Or any other idea why it stopped working?
Relevant log output
riot_rs_rt::startup()
rpi-pico::init()
riot-rs-embassy::init(): using interrupt mode executor
riot-rs-embassy::init_task()
riot-rs-embassy::init_task() done
Hello from main()! Running on a rpi-pico board.
async_task() signalling
before timer()
now=0ms threadtest() val=0

Hardware/ Setup

Board: rpi-pico - I don't have a nrf board with me right now so I can't check if it works there
Branch: current main (29b7310)

Possible Solution
This might be an issue around timers in embassy_rp; I only tested this example in the first place because I ran into some timer-related issues when running a benchmark for my WIP multicore implementation.
Would you like to work on fixing this bug?
Maybe

However, I can reproduce your output on an Raspberry Pi Pico W

Same!

Hmm, but generally the timers work for the RP2040, at least with the executor-thread. The below code works:
#![no_main]
#![no_std]
#![feature(type_alias_impl_trait)]
#![feature(used_with_arg)]

use embassy_time::{Duration, Timer, TICK_HZ};
use riot_rs::{
    debug::println, embassy::thread_executor::Executor, static_cell::make_static,
    thread::ThreadId,
};

// Task started in thread0
#[riot_rs::task(pool_size=1)]
async fn task0() {
    println!("task0");
    Timer::after(Duration::from_ticks(TICK_HZ / 10)).await;
    println!("task0 done");
}

#[riot_rs::thread(autostart)]
fn thread0() {
    println!("thread0 {:?}", riot_rs::thread::current_pid().unwrap());
    let executor = make_static!(Executor::new());
    executor.run(|spawner| {
        spawner.must_spawn(task0());
    });
}

// Autostarted task.
#[riot_rs::task(autostart)]
async fn task1() {
    println!("task1");
    Timer::after(Duration::from_secs(1)).await;
    println!("task1 done");
}

Maybe the issue is related to the InterruptExecutor that is used in the above example?


Replace domain parameter in APL with a full Saleor GraphQL API URL

Replace domain parameter in APL with a full Saleor GraphQL API URL. The new parameter could be named saleorApiUrl.
Background
See: https://github.com/saleor/saleor-dashboard/issues/2387

Rel https://github.com/saleor/saleor/issues/10819

Done in https://github.com/saleor/saleor-dashboard/issues/2387
full url added, not replaced

This isn't done, APL still expects domain instead of full Saleor GraphQL API URL:
https://github.com/saleor/saleor-app-sdk/blob/b91bbf3d4e1b0f2cab5d27abc238aa85de53496f/src/APL/apl.ts#L2

@mmiszy yes, its left for compatibility. APL interface requires a string, while CloudAPL accepts both URL and domain. You can construct domain/hostname from full URL, but of course name is wrong.
We also are working on next step, which is full migration of SDK and apps. APL will be extended to hold more fields (app ID, full URL) and domain will be deprecated.
I think you can safely use saleorApiUrl and put it to APL. We will soon orchestrate full migration
cc @krzysztofwolski @przlada

@mmiszy this should be finally done in 0.26.0. We are currently updating apps, for example here
https://github.com/saleor/saleor-app-invoices/pull/2
this introduces breaking changes (we used this change to improve architecture and add more fields to auth data)
we will update checkout when we finish with appstore apps


Remove unused fields of Agent

[X] Networking

@kebe7jun: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
daca83ae7d3963705cd43859f01fab27847a6ed8
link
true
/test lint_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@kebe7jun: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
daca83ae7d3963705cd43859f01fab27847a6ed8
link
true
/test lint_istio

gencheck_istio
daca83ae7d3963705cd43859f01fab27847a6ed8
link
true
/test gencheck_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Think about vendoring

We now have external dependencies in this project.
We should strongly considering vendoring them into the repo.
This re-presents the problem of this repo being used as both a package and a standalone CLI.
Generally you want to vendor for binaries, but not vendor for packages. We may want to revisit splitting the CLI part out of this into a separate tool.

Let's keep learning best practice.


⚠ Samsung has degraded performance

In 8b3ca08, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2436 ms

Resolved: Samsung performance has improved in 365ab55.


No response for location from address

If I make a call:
Locator.location(fromAddress: address, onSuccess: { (places) -> (Void) in

then I don't receive a response. Probably because in GeocoderRequest class there is no handler call in block on line 215:
geocoder.geocodeAddressString(address, in: region, completionHandler: { (placemarks, error) in
	self.isFinished = true
})

+1

The problem is with memory managment; if not assigned to a strong variable request is not keeped alive from SwiftLocation and the entire object will be deallocated.
Since 3.2.0 as for location and heading requests, geocoder requests are keeped alive by the library itself and removed automatically once request is fulfilled or rejected.
Thanks for reporting.


Increment from 2.4 to 2.5 and bump jackson from 2.14.0 to 2.14.1

Description
Increment from 2.4 to 2.5 and bump jackson from 2.14.0 to 2.14.1
During gradle assemble, found a version conflict for jackson packages. It caused by the OpenSearch repo lately upgrade  jackson from 2.14.0 to 2.14.1, thus bumping jackson packages according to resolve version conflict in this pr.
https://github.com/opensearch-project/OpenSearch/blob/main/client/sniffer/licenses/jackson-core-2.14.1.jar.sha1
Issues Resolved
#81
Check List

[x] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[x] Commits are signed as per the DCO using --signoff

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

Codecov Report

Merging #90 (a116563) into main (2308941) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main      #90   +/-   ##
=========================================
  Coverage     65.52%   65.52%
  Complexity      172      172
=========================================
  Files            29       29
  Lines           879      879
  Branches        119      119
=========================================
  Hits            576      576
  Misses          254      254
  Partials         49       49

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

jackson.core:jackson-databind:2.14.0 is working on opensearch 2.4.0,
so jackson.core:jackson-databind:2.14.1 will backport to 2.x, and it will bring along from opensearch 2.5.0


[GLUTEN-4558][VL] Enable V1WriteCommandSuite for Spark34

What changes were proposed in this pull request?
(Fixes: #4558)

@JkSelf @ulysses-you please help take a look, thanks!

could someone help rerun failed CI jobs?

lgtm except @zhztheplayer comment

===== Performance report for TPCH SF2000 with Velox backend, for reference only ====

query
log/native_4566_time.csv
log/native_master_01_30_2024_ec7f10c58_time.csv
difference
percentage

q1
32.11
35.36
3.252
110.13%

q2
26.20
24.10
-2.099
91.99%

q3
37.27
38.51
1.242
103.33%

q4
36.58
38.16
1.580
104.32%

q5
71.18
68.29
-2.892
95.94%

q6
6.71
7.27
0.561
108.36%

q7
84.42
82.16
-2.264
97.32%

q8
87.87
84.80
-3.068
96.51%

q9
123.01
126.41
3.397
102.76%

q10
44.52
44.51
-0.013
99.97%

q11
20.26
20.56
0.303
101.50%

q12
27.24
28.18
0.944
103.47%

q13
45.54
45.37
-0.168
99.63%

q14
16.79
16.65
-0.142
99.16%

q15
29.67
28.38
-1.292
95.64%

q16
14.12
14.19
0.068
100.48%

q17
100.65
101.24
0.592
100.59%

q18
148.16
149.10
0.942
100.64%

q19
12.42
12.63
0.215
101.73%

q20
26.72
26.37
-0.355
98.67%

q21
224.11
226.96
2.854
101.27%

q22
13.50
13.51
0.006
100.04%

total
1229.04
1232.71
3.663
100.30%


DeepGCNLayer Bug with no norm defined

🐛 Bug

The DeepGCNLayer throws an error if no norm function is defined due to https://github.com/rusty1s/pytorch_geometric/blob/8f9de2ebc936dd97bae806c6b1d57bc7da5153bb/torch_geometric/nn/models/deepgcn.py#L74
and
https://github.com/rusty1s/pytorch_geometric/blob/8f9de2ebc936dd97bae806c6b1d57bc7da5153bb/torch_geometric/nn/models/deepgcn.py#L76
where h is referenced when it might not be defined yet due to a missing norm call.
To Reproduce
Steps to reproduce the behavior:

Use plain DeepGCNLayer without setting any __init__ parameters.

Fix
Either replace norm=None in __init__ with norm=torch.nn.Identity or create else statement if norm is None to define h=x.
I would like to fix this in form of a pull request if this makes sense.

Great catch. Fixed it already :)

Appreciated 👍


Initial End Effector Research

Get more information about the end effector. Here are some initial notes. Need to talk with David & Collin

[ ] Talk with David
[ ] Talk with Collin

Notes
Repo
The design/implementation will be within different issues (i.e #151)


Convolution fixes for validation, support for RGB inputs.

References #10

Coverage decreased (-0.0%) to 99.61% when pulling 3ae3dff4aeb1f60c703c0e71fbe669627cbe1406 on conv into e9e38ba1d500383cc9ad82b509a8de3e7ea40dcb on master.

Coverage decreased (-0.77%) to 98.84% when pulling 7400412d3a119eb7d130d8d57ba50b9aea95a3ed on conv into e9e38ba1d500383cc9ad82b509a8de3e7ea40dcb on master.

References #1.

Coverage increased (+0.39%) to 100.0% when pulling 0fb283cde5c0ff8386efc92619526ebdf5b16bcf on conv into e9e38ba1d500383cc9ad82b509a8de3e7ea40dcb on master.

Closes #1. Closes #10.

Coverage increased (+0.39%) to 100.0% when pulling 13e8bad4dc049d69bfd0e68aa42b1c21c650205a on conv into e9e38ba1d500383cc9ad82b509a8de3e7ea40dcb on master.

Coverage increased (+0.39%) to 100.0% when pulling 13e8bad4dc049d69bfd0e68aa42b1c21c650205a on conv into e9e38ba1d500383cc9ad82b509a8de3e7ea40dcb on master.


Post endpoints for the related entities don't bust the cache.

Let consider this relation: A Book can have multiple authors
Steps:

My endpoint for fetching the books is HTTP://localhost:1337/books. Data is being cached here. This endpoint also fetches the authors data from the authors collection.
Go to the admin panel and update any author from that book.
Call the get books endpoint, it brings data from the cache but the updated author info is not available.
Go to the admin panel and update any book
Now the cache has been busted.

How can this be achieved? Is there a way to manually bust the cache via another endpoint just like graphql has exposed its playground? Help needed.
PS: I am using strapi with mongo.

Hi @muditjuneja
That's a good point, the caching is currently simple and lean, and doesn't support anything like that. The cache expiration is what would come in play here to allow the data to change.
Regarding manually busting the cache, there is none apart from making a post request.
Maybe the middleware could attach a method to strapi to bust the cache ?
e.g
// in your controller
strapi.middlewares.cache.bust(model, id);

@derrickmehaffy Would this ☝  follow (or break) strapi best practices ? Any suggestions ?
Supporting relation changes would significantly increase the scope of this project, and might enforce reads on the database, which I'm hoping to avoid (prefer keeping it lean).

To this I'm not sure, let me ask our backend engineering team to see what they think.

From @alexandrebodin it's best to not inject something into the main Strapi instance but create a service though I cannot remember off the top of my head if middlewares even have support for services. In this case I'm not sure of the best practice here since we are kinda in unknown territory. I think the bust would need to be aware of any relations during the post request.
@patrixr I don't -think- you should need to do any DB calls since the strapi.models.someModel or strapi.plugins['users-permissions'].models.user (users-permissions is just an example you would have to iterate the strapi.plugins[*].models ) has all the attributes including the relational fields. We should be able to tell when something is posted and bust any higher level cache but it would add some complexity.

Just an example using yarn strapi console and typing in strapi.plugins['users-permissions'].models.user
Gives this:
...
  allAttributes: {
    username: {
      type: 'string',
      minLength: 3,
      unique: true,
      configurable: false,
      required: true
    },
    email: {
      type: 'email',
      minLength: 6,
      configurable: false,
      required: true
    },
    provider: { type: 'string', configurable: false },
    password: {
      type: 'password',
      minLength: 6,
      configurable: false,
      private: true
    },
    resetPasswordToken: { type: 'string', configurable: false, private: true },
    confirmed: { type: 'boolean', default: false, configurable: false },
    blocked: { type: 'boolean', default: false, configurable: false },
    role: {
      model: 'role',
      via: 'users',
      plugin: 'users-permissions',
      configurable: false
    },
    created_by: { model: 'user', plugin: 'admin' },
    updated_by: { model: 'user', plugin: 'admin' },
    created_at: { type: 'timestamp' },
    updated_at: { type: 'timestamp' }
  }

And we can tell by iterating the keys in the allAttributes if there is a related model and the plugin (if any)

@derrickmehaffy  Thanks for this !
I was originally thinking we would need to read the DB to bust individual caches of hasMany relationships. However it could simply bust the entire cache for that model (including collections). Which is a bit agressive, but I guess the behaviour already is a bit like that.

Indeed, it's already aggressive so no real drawback here that I can see.

We also dealing with this issue. Do you have plans or timetable for it? Thanks!

Adding this feature would enhance the middleware a lot. @patrixr I can start working on this if you don't mind!

Adding this feature would enhance the middleware a lot. @patrixr I can start working on this if you don't mind!

@julesrenaud You're more than welcome to ! I sadly haven't had much time to focus on this middleware so happy to see the strapi community contributing.
by the way, I am available on the Strapi slack for any questions. Also thinking of adding some contributors to the repo since there seems to be a fair amount of people using this now (I never thought anyone would to be honest)

@julesrenaud You're more than welcome to ! I sadly haven't had much time to focus on this middleware so happy to see the strapi community contributing.
by the way, I am available on the Strapi slack for any questions. Also thinking of adding some contributors to the repo since there seems to be a fair amount of people using this now (I never thought anyone would to be honest)

@patrixr always happen to help where I can. Can't promise I'll always have the free time to validate PRs but I can certainly help with reviewing and testing

@patrixr always happen to help where I can. Can't promise I'll always have the free time to validate PRs but I can certainly help with reviewing and testing

@derrickmehaffy Many thanks, I've sent you an invite

@derrickmehaffy Many thanks, I've sent you an invite


@ImLegitDude  This is not an issue that should even be open. If you have little knowledge of VS and how to open an .sln file, i'm afraid there is no use for you to try using this bot.
#1 I've already explained now to basically run a VS program.

@LossyDragon I'm asking that because it's saying me this :
The tasks are only available in a workspace folder.
The #1 havn't helped me

Make sure you have not messed with the work space. When you DL the git, it would be in a folder called osuAutoBot-master. You can rename it to whatever you want, but don't mess with the file structure inside. If you still get task issues, reset VS2015 settings.

This bot can click? i'm compile, works perfect, but doesn't click.

@DemianOrtin  There is no code in this bot to do clicks.

Have a any idea how to make this code, if they can't click this realy usseless. Have a any example of the  code?

This bot is really meant for offline and relax mode.
If you want to learn about inputs, check this article to understand how to use keyboard events for 'clicking' .
https://msdn.microsoft.com/en-us/library/windows/desktop/ms645530(v=vs.85).aspx
I do have a fork of this which I stripped down to play mania (very.. very poorly), but I have an more complicated setup for mine.
https://github.com/LossyDragon/osuAutoBot/blob/master/main.cpp#L160

LossyDragon, it's a bad mania code :D
And don't use my code for it. My code is only for education. Try to use "ReplayRidor" code.

Best path - make the "memory replay".
Array of replayframes if the memory. And use "ReplayRidor" code for replay running.

@AndreySeVeN  Never said it was good! ;D I'm only interested in it because I never learned some of these types of functions during my school time, which perked my curiosity just to learn what it does and how can I make it work in different ways 😄


[TestEnv] MAC address to IP address resolution is a bit flaky

Reported by: Morten Rasmussen
Sometimes it is necessary to restart the notebook to fix it. It is currently unclear why.

This has been made more robust with #43. Should we consider it as closed?

Many improvements have been done on this topic... however a completely robust solution is almost impossible to get. For the time being what we have should be reasonable stable and since we have not got complains on that regard, let's try to close this issue.


In navigation mode,“/apollo/sensor/gnss/corrected_imu”  channel cannot be opened

We appreciate you go through Apollo documentations and search previous issues before creating an new one. If neither of the sources helped you with your issues, please report the issue using the following form. Please note missing info can delay the response time.
System information

OS Platform and Distribution (e.g., Linux Ubuntu 18.04):
Apollo installed from (source or binary):
Apollo version (3.5, 5.0, 5.5, 6.0):
Output of apollo.sh config if on master branch:

Steps to reproduce the issue:

Please use bullet points and include as much details as possible:

Supporting materials (screenshots, command lines, code/script snippets):
In navigation mode,“/apollo/sensor/gnss/corrected_imu”  channel cannot be opened

/apollo/sensor/gnss/corrected_imu is outputted by IMU device, and decoded from "corrimudata" message of novatel protocol.
btw: which IMU device and Apollo version do you choose?

/apollo/sensor/gnss/corrected_imu is outputted by IMU device, and decoded from "corrimudata" message of novatel protocol.
btw: which IMU device and Apollo version do you choose?

@diegohu Thank you for your reply. The device used is M2, and "corrimudata" is not parsed. Now the problem is, I'm not sure whether M2 can send the "corrimudata" protocol. Is it necessary to reconfigure the hardware device? How to do it? thank you

/apollo/sensor/gnss/corrected_imu is outputted by IMU device, and decoded from "corrimudata" message of novatel protocol.
btw: which IMU device and Apollo version do you choose?

@diegohu Thank you for your reply. The device used is M2, and "corrimudata" is not parsed. Now the problem is, I'm not sure whether M2 can send the "corrimudata" protocol. Is it necessary to reconfigure the hardware device? How to do it? thank you

@diegohu After setting, there is already "/apollo/sensor/gnss/corrected_imu" channel information. However, my purpose is to get the “localization / pose” channel information. What should I do next? thank you


Add period datatype

Context
As per http://openregister.github.io/specification/#period-datatype for the DSA register.
Changes proposed in this pull request
Add a new PeriodDatatype and use regex to check format.
Guidance to review
Check it's possible to load valid period data but not load invalid period data.

Oops I have failing tests. Will fix.

@arnau tests are fixed now. Are you still happy with this? The failing tests were related to a change I made to make "" an invlaid datetime value.

Yes, ready to merge 👍


FROM node:8-slim stopped to work

Related comments:

https://github.com/fititnt/uwazi-docker/pull/36#issuecomment-443101282
https://github.com/fititnt/uwazi-docker/pull/36#issuecomment-443104650

Related issue:

https://github.com/nodejs/docker-node/issues/936

Changing the Dockerfile line 1 from FROM node:8-slimto FROM node:8-jessie solves for now, but a FROM node:8-jessie-slim maybe will be added soon to docker hub

Edit: also impacts https://github.com/fititnt/uwazi-docker/issues/40

Already fixed years ago. Closing this issue.


libcups does not initialize defaults in some cases

I am using CUPS 2.2.12 on Ubuntu Eoan.
Attached is a sample C program testinit.c, to be compiled with
gcc -o testinit testinit.c -lcups

It demonstrates that the internal global data structure cg of libcups in some cases gets used but not initialized.
The program creates a destination record, connects to the CUPS daemon according to the printer URI of the destination and then request the destination info (here CUPS is supposed to do a get-printer-attributes IPP request on the printer URI).
When one calls the program with the name of an existing CUPS printer as argument, for example
./testinit Printer

it should display the IPP attributes of the CUPS queue, but in reality it tells that the queue does not exist. When looking into error_log (in debug mode) one sees that a get-printer-attributes IPP request is done, but to "file:/dev/null" (the device URI in the destination record) and not to the printer URI.
The code of the cupsCopyDestInfo() function contains:
  if (!http)
  {
    DEBUG_puts("1cupsCopyDestInfo: Default server connection.");
    http   = _cupsConnect();
    dflags = CUPS_DEST_FLAGS_NONE;
  }
#ifdef AF_LOCAL
  else if (httpAddrFamily(http->hostaddr) == AF_LOCAL)
  {
    DEBUG_puts("1cupsCopyDestInfo: Connection to server (domain socket).");
    dflags = CUPS_DEST_FLAGS_NONE;
  }
#endif /* AF_LOCAL */
  else if ((strcmp(http->hostname, cg->server) && cg->server[0] != '/') || cg->ipp_port != httpAddrPort(http->hostaddr))
  {
    DEBUG_printf(("1cupsCopyDestInfo: Connection to device (%s).", http->hostname));
    dflags = CUPS_DEST_FLAGS_DEVICE;
  }
  else
  {
    DEBUG_printf(("1cupsCopyDestInfo: Connection to server (%s).", http->hostname));
    dflags = CUPS_DEST_FLAGS_NONE;
  }

What happens here is that the first two "if" conditions resolve to false and the third to true, setting dflags to CUPS_DEST_FLAGS_DEVICE and so the device URI being used for the following get-printer-attributes IPP request and that fails.
The third "if" has the condition
((strcmp(http->hostname, cg->server) && cg->server[0] != '/') || cg->ipp_port != httpAddrPort(http->hostaddr))

If cg->server is "/run/cups/cups.sock" or "localhost" as expected and cg->ipp_port is 631 as expected, this would resolve to false and the last "else" would set dflags to CUPS_DEST_FLAGS_NONE and so the get-printer-attributes IPP request is applied to the CUPS queue.
The only explication that this does not happen is that cg->server contains an arbitrary string and cg->ipp_port and arbitrary number, which makes the condition resolve to true.
If I run my program with an arbitrary second argument, for example
./testinit Printer 1

it calls the function ippPort() in the very beginning before it calls any other function of libcups. The ippPort() function calls the internal function _cupsSetDefaults() of libcups which populates the cg data structure with the defaults.
It needs to get assured that the cg data structure gets always populated.
The sample program:
testinit.c.txt

@tillkamppeter OK, try the same thing but using the cupsGetNamedDest function rather than allocating and initializing the cups_dest_t structure yourself (which BYPASSES all of the normal initializers!)

The original program (cpdb-backend-cups, version 1.1.0) uses  cupsEnumDests() as shown in
testinit-2.c.txt
but uses an event loop and separate threads, the thread separation of the cupsEnumDests() and the later cupsCopyDestInfo() call probably leads to the cupsCopyDestInfo() call on an uninitialized libcups. In my little test program testinit-2 without multi-threading everything works as intended.

Will push the test program soon, but so far I haven't been able to reproduce the problem you are seeing...

[master cfaaa07a1] Add threading unit test program (Issue #5642)

@tillkamppeter Please test CUPS master's testthreads program and let me know if you can reproduce on your systems...

@tillkamppeter Closing for now; if you are able to reproduce using the testthreads program, please let me know.


Cumulative Layout Shift on Product Page

Running lighthouse on https://demo.vercel.store/product/next-js-enamel-mug, it says to avoid large layout shifts for the carousel under the main image.

Hey there! Thank you for opening this issue. We have decided to take Next.js Commerce in a new direction and will be closing out current PRs and issues due to this change. Please see this PR for more details: https://github.com/vercel/commerce/pull/966

I honestly forgot this PR was even open 😅


Reset the TaskChain if one of them is cancelled.

We saw an indication in telemetry that a task in TaskChain gets cancelled and making subsequent queueing of tasks fail.
This change will reset the TaskChain in any task fails or errors out.

Ran the tests on my mac machine and results on par with old SSH repo


Bug when returning empty pages in query

Describe the bug
I cannot seem to catch the value assigned to a variable as a result of an empty dv.pages() query.
I have the following query within a CustomJS code snippet called by dv.view in a dataviewjs block:
let page = dv.pages()
.filter(p => p && this.topLevelFilter(p, arg1, arg2))
.where(p => p && this.IsInSearch(p, arg3, arg4, arg5))

Which is followed by:
dv.table(this.GetTableHeaders(args), page
.sort(/*sort command line*/)
.map(this.GetTableMap(arg1, arg2, arg3)));

In btw the 2 afore-mentioned blocks, I would like to have the following empty query catch:
if (typeof page == 'undefined' || typeof page == 'null') {
  return dv.el('b', "Warning: no result matching your query")
}

The code otherwise works wonderfully, as does 'dv.table' when 'page' returns nothing. In the latter instance, i see the headers printed and nothing underneath. I would however like to catch that empty query instance to avoid printing headers only. I actuall do not even get the traditional dataview message 'the query returned 0 result' on second thought...
When I print 'page' on a .md file, nothing is returned but the code does not break.
What is the value of an empty query if it is neither undefined nor null? I have tried '==(=) 0', the above without 'typeof' (and brackets around the values) or page.length which all break the code.
Thanks in advance
dataview: 0.4.19 on iOS
Obsidian: 1.0.4 on iOS

Hello,
sorry to come back to you so late. I currently go through older issues to see which are stale or already solved.
Were you able to solve your problem? Like blacksmithgu mentioned, it should be enough if you change your empty check to
if (!page || page.length === 0) {
  return dv.el('b', "Warning: no result matching your query")
}


Provide builds for multiple kotlin releases for each detekt release

When a new version of Kotlin is released it would be great if the last N (3?) release of detekt were updated to support it. This means developers wouldn't need to wait on a detekt release to use the newest version of Kotlin.
Needing to update both detekt & kotlin in 1 PR also leads to such PRs being large since new detekt rules need to be handled in addition to handing Kotlin language changes.
Possibly a Github workflow could be created to automate most of this. It could accept a Kotlin version param and a source tag or source commit SHA param. The script could update the version of kotlin in libs.versions.toml and attempt the build. If it passes publish the artifacts. If there are issues leave the branch open and let the community resolve the issues if they are in need of such a detekt/kotlin version pairing.
Artifacts could be named according to which version of kotlin they work with. Eg:

v1.21.0-kotlin1720
v1.20.0-kotlin1720
v1.20.0-kotlin1710
v1.20.0-kotlin1700
v1.19.0-kotlin1700
v1.19.0-kotlin1621

You should be able to use detekt with any version of kotlin (maybe with 1.0.0 it doesn't work but any recent one it should). If you can't that seems an issue on your setup or a bug on detekt side.

This means developers wouldn't need to wait on a detekt release to use the newest version of Kotlin.
Never needed to wait for a detekt update when we updated the Kotlin version. Also never had compatibility issue.

Interesting. My project is an Android project that uses type resolution if that matters.
If I try to use detekt 1.20.0 with the latest version of kotlin (1.7.20) in my project (i.e., update kotlin without updating detekt) running any detekt gradle task fails with:
Execution failed for task ':feature:mymodule:detektDebug'.
> 'void org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.<init>(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.config.LanguageVersionSettings)'
...
...
Caused by: org.gradle.api.GradleException: 'void org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.<init>(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.config.LanguageVersionSettings)'
        at io.gitlab.arturbosch.detekt.invoke.DefaultCliInvoker.invokeCli(DetektInvoker.kt:65)
        at io.gitlab.arturbosch.detekt.Detekt.check(Detekt.kt:252)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
        ...
Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at io.gitlab.arturbosch.detekt.invoke.DefaultCliInvoker.invokeCli(DetektInvoker.kt:59)
        ... 123 more
Caused by: java.lang.NoSuchMethodError: 'void org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport.<init>(org.jetbrains.kotlin.cli.common.messages.MessageCollector, org.jetbrains.kotlin.config.LanguageVersionSettings)'
        at io.gitlab.arturbosch.detekt.core.BindingContextKt.generateBindingContext(BindingContext.kt:33)
        at io.gitlab.arturbosch.detekt.core.tooling.DefaultLifecycle$1.invoke(Lifecycle.kt:66)
        at io.gitlab.arturbosch.detekt.core.tooling.DefaultLifecycle$1.invoke(Lifecycle.kt:66)
        at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$analyze$bindingContext$1.invoke(Lifecycle.kt:39)
        at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$analyze$bindingContext$1.invoke(Lifecycle.kt:39)
        at io.gitlab.arturbosch.detekt.core.util.PerformanceMonitor.measure(PerformanceMonitor.kt:42)
        at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$DefaultImpls.measure(Lifecycle.kt:34)
        at io.gitlab.arturbosch.detekt.core.tooling.Lifecycle$DefaultImpls.analyze(Lifecycle.kt:39)
        at io.gitlab.arturbosch.detekt.core.tooling.DefaultLifecycle.analyze(Lifecycle.kt:61)
        at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade$runAnalysis$1.invoke(AnalysisFacade.kt:48)
        at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade$runAnalysis$1.invoke(AnalysisFacade.kt:47)
        at io.gitlab.arturbosch.detekt.core.tooling.ProcessingSpecSettingsBridgeKt.withSettings(ProcessingSpecSettingsBridge.kt:26)
        at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.runAnalysis$detekt_core(AnalysisFacade.kt:47)
        at io.gitlab.arturbosch.detekt.core.tooling.AnalysisFacade.run(AnalysisFacade.kt:25)
        at io.gitlab.arturbosch.detekt.cli.runners.Runner.call(Runner.kt:33)
        at io.gitlab.arturbosch.detekt.cli.runners.Runner.execute(Runner.kt:23)

However detekt v1.22.0-RC2 which is built with 1.7.20 (per the release notes) runs without any issues.

I can guess what's happening, but can you please send a link to a build scan so I can confirm?

I can guess what's happening, but can you please send a link to a build scan so I can confirm?

When a new version of Kotlin is released it would be great if the last N (3?) release of detekt were updated to support it. This means developers wouldn't need to wait on a detekt release to use the newest version of Kotlin.

As a rule of thumb, you should be able to update Kotlin without waiting for Detekt. We'd like to investigate case by case why this is not possibile, rather than setting up a publishing matrix which adds a lot of maintenance cost.

I can't share the entire build scan since this is a large app for my employer, but here are some of the relevant bits for how detekt is setup. If there's anything in specific to check LMK..
Dependencies:

Build Dependencies:

I can guess what's happening, but can you please send a link to a build scan so I can confirm?

@3flex any suggestions given the build scans above?

In the detekt configuration the version for kotlin-compiler-embeddable should be 1.6.20 but it's overridden to 1.6.21. That's not causing any issues.
However it's likely that when you update Kotlin but not detekt that the version is then overridden to 1.7.20, but that version of detekt needs 1.6.20.
Do you override Kotlin versions using configurations.all in your build files?

@3flex That was it! I appreciate the help solving this 🎉


CM-210: How to remove illegal characters from path and filenames in C#

Fixed PR from the previous PR, some unknown issue.  (Old PR #1508 : https://github.com/CodeMazeBlog/CodeMazeGuides/pull/1508)

All tests pass locally, but fail in Jenkins CI/CD.


perf: Use HW H.264 to improve the speed

I'm not seeing a big improvement in CPU load on the system with this setting.  Perhaps H264 is just that cheap.