🆕 Software Suggestion | Lemmy

Basic Information
Name: Lemmy
Category: Social Networks/Social News Aggregators
URL: https://lemmy.ml/ https://github.com/LemmyNet/lemmy
Description
Lemmy is similar to sites like Reddit, Lobste.rs, or Hacker News: you subscribe to forums you're interested in, post links and discussions, then vote, and comment on them. Behind the scenes, it is very different; anyone can easily run a server, and all these servers are federated (think email), and connected to the same universe, called the Fediverse.
For a link aggregator, this means a user registered on one server can subscribe to forums on any other server, and can have discussions with users registered elsewhere.
The overall goal is to create an easily self-hostable, decentralized alternative to Reddit and other link aggregators, outside of their corporate control and meddling.
Each Lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing.
Why I am making the suggestion
Recently Lemmy was able to release its federation so now different instances can be created and they can interact with each other, besides this, it is a libre and privacy respecting alternative to websites like Reddit or Lobsters while also aiming at not providing spaces for right wing organizations. Listing them would also help them to gain some recognition and with more people aware of the project they would probably get more people to help them with development.
As a side note, I think it would be a really awesome idea if the team behind Privacy Tools would add some official moderation in the !privacytools community in the official instance, and/or maybe even hosting an instance. This last part is up to discussion, though.
My connection with the software
I am a user of the software and administrator in couple communities over there.

[x] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software.

It's currently in worth mentioning at https://privacytools.io/providers/social-news-aggregator/

@Mikaela Well, still, since now it has reached federation I think it deserves to be listed.

... while also aiming at not providing spaces for right wing organizations.

and what about the left-wing organizations?

while also aiming at not providing spaces for right wing organizations.

I want to point out that this is added by the requestor and not in any documentation from Lemmy at all. It would be nice if political views can be kept out of software recommendations.
Lemmy aims to do the same thing Mastodon has done, so it seems, which is fantastic.

while also aiming at not providing spaces for right wing organizations.

I want to point out that this is added by the requestor and not in any documentation from Lemmy at all. It would be nice if political views can be kept out of software recommendations.
Lemmy aims to do the same thing Mastodon has done, so it seems, which is fantastic.

while also aiming at not providing spaces for right wing organizations.

I want to point out that this is added by the requestor and not in any documentation from Lemmy at all. It would be nice if political views can be kept out of software recommendations.
Lemmy aims to do the same thing Mastodon has done, so it seems, which is fantastic.

The Lemmy developers are communists and their official instance is pretty strict about not allowing nazis, they also won't help anyone with self hosting and they will block contact with its instance if they found out to be rightists so even though maybe the documentations doesn't say that I know they're into it. And I am totally against not being aware of the political implications of the software you chose, I'm not saying we start a discussion about what branch of communism is better, but stuff like keeping alt-righters away is really important nowadays and I think it is within the scope of Privacy Tools admins to help with that, even more so with recent events.

while also aiming at not providing spaces for right wing organizations.

I want to point out that this is added by the requestor and not in any documentation from Lemmy at all. It would be nice if political views can be kept out of software recommendations.
Lemmy aims to do the same thing Mastodon has done, so it seems, which is fantastic.

The Lemmy developers are communists and their official instance is pretty strict about not allowing nazis, they also won't help anyone with self hosting and they will block contact with its instance if they found out to be rightists so even though maybe the documentations doesn't say that I know they're into it. And I am totally against not being aware of the political implications of the software you chose, I'm not saying we start a discussion about what branch of communism is better, but stuff like keeping alt-righters away is really important nowadays and I think it is within the scope of Privacy Tools admins to help with that, even more so with recent events.

It would be nice if political views can be kept out of software recommendations.

those political views were not conjured up in discussion here - they are an intrinsic part of Lemmy and merely pointed out here - at it's core, Lemmy is obviously not centered around freedom
6. Goals

We encourage the membership of groups such as LGBT, religious or ethnic minorities, abuse victims, etc etc, and strive to create a safe space for them to express their opinions. We also support measures to increase participation by the previously mentioned groups.
The following are banned, and will always be harshly punished: fascism, abuse, racism, sexism, etc etc,

that said, apparently the core values need not be adhered to by 3rd party instances

It would be nice if political views can be kept out of software recommendations.

those political views were not conjured up in discussion here - they are an intrinsic part of Lemmy and merely pointed out here - at it's core, Lemmy is obviously not centered around freedom
6. Goals

We encourage the membership of groups such as LGBT, religious or ethnic minorities, abuse victims, etc etc, and strive to create a safe space for them to express their opinions. We also support measures to increase participation by the previously mentioned groups.
The following are banned, and will always be harshly punished: fascism, abuse, racism, sexism, etc etc,

that said, apparently the core values need not be adhered to by 3rd party instances

We are talking about 2 different things here. The recommendation is the software, not the home instance.
I am unaware of any place on PTIO that recommends software for the sake of being a fascist, abuser, racist, sexist, etc etc. If the software itself required a personality test before being able to download it and use it, it would not be free software (and as far as I am aware the software licenses do not have this clause in them).
It is fine if you want to back something because of their views on people, politics, or whatever it is, but if it does not play a part in the recommendation of the software itself, and its ability to obtain and use it (in this case your own instance and site, even though it might be disconnected from the rest because of its content) I do not believe it should be a reason to be considered or not.

We are talking about 2 different things here. The recommendation is the software, not the home instance.
I am unaware of any place on PTIO that recommends software for the sake of being a fascist, abuser, racist, sexist, etc etc. If the software itself required a personality test before being able to download it and use it, it would not be free software (and as far as I am aware the software licenses do not have this clause in them).
It is fine if you want to back something because of their views on people, politics, or whatever it is, but if it does not play a part in the recommendation of the software itself, and its ability to obtain and use it (in this case your own instance and site, even though it might be disconnected from the rest because of its content) I do not believe it should be a reason to be considered or not.

Neat, TIL their main instance is federating now. I agree this should probably be listed.

and what about the left-wing organizations?

@atomGit bit of a false equivalence I think, seeing as unlike the alt-right, the left is not promoting racism, homophobia, fascism, anti-intellectualism, etc. 🤷♂

Neat, TIL their main instance is federating now. I agree this should probably be listed.

and what about the left-wing organizations?

@atomGit bit of a false equivalence I think, seeing as unlike the alt-right, the left is not promoting racism, homophobia, fascism, anti-intellectualism, etc. 🤷♂

Neat, TIL their main instance is federating now. I agree this should probably be listed.

Yes, as far as I know all the instances (except the ones that are hosted by alt-righters) are working together now, the only one I think has some issues is one called Chapo something and I think that's related to them changing various stuff in the code before federation was enabled.
@jonaharagon do you think there's a chance of an official Privacy Tools community on Lemmy? I know it would be hard since there's the forum and Reddit but I feel like it's a good idea.

@wylel A lot of times the recommendation is both the software and the main instance, even if not directly, most people will end up using the default instance, but I understand.  Please let us end this conversation here, and let it be only about technical or practical reasons why Lemmy should be listed.

Neat, TIL their main instance is federating now. I agree this should probably be listed.

Yes, as far as I know all the instances (except the ones that are hosted by alt-righters) are working together now, the only one I think has some issues is one called Chapo something and I think that's related to them changing various stuff in the code before federation was enabled.
@jonaharagon do you think there's a chance of an official Privacy Tools community on Lemmy? I know it would be hard since there's the forum and Reddit but I feel like it's a good idea.

@wylel A lot of times the recommendation is both the software and the main instance, even if not directly, most people will end up using the default instance, but I understand.  Please let us end this conversation here, and let it be only about technical or practical reasons why Lemmy should be listed.

@LongJohn-Silver I am no longer working with PrivacyTools for various reasons, so I couldn't say. I highly doubt it in the short-/mid-term at least, as I don't believe the current admin team has any intention to host anything new.

@LongJohn-Silver I am no longer working with PrivacyTools for various reasons, so I couldn't say. I highly doubt it in the short-/mid-term at least, as I don't believe the current admin team has any intention to host anything new.

@LongJohn-Silver I am no longer working with PrivacyTools for various reasons, so I couldn't say. I highly doubt it in the short-/mid-term at least, as I don't believe the current admin team has any intention to host anything new.

I didn't mean to host an instance, but rather to create a community in the official instance, but I understand. Thanks!

@LongJohn-Silver I am no longer working with PrivacyTools for various reasons, so I couldn't say. I highly doubt it in the short-/mid-term at least, as I don't believe the current admin team has any intention to host anything new.

I didn't mean to host an instance, but rather to create a community in the official instance, but I understand. Thanks!

IMHO I don't think it would be more beneficial to create a Lemmy community (on lemmy.ml) over creating a Reddit community in the long-run, and in fact because PTIO already has a successful Reddit community it would actually be more harmful to create that kind of fragmentation without significant gain.
To me, the clear benefit to ActivityPub federation and other federations like Matrix is the independence that self-hosting your community grants you, and giving that up to create a community on the flagship instance just to have one doesn't make much sense to me.

IMHO I don't think it would be more beneficial to create a Lemmy community (on lemmy.ml) over creating a Reddit community in the long-run, and in fact because PTIO already has a successful Reddit community it would actually be more harmful to create that kind of fragmentation without significant gain.
To me, the clear benefit to ActivityPub federation and other federations like Matrix is the independence that self-hosting your community grants you, and giving that up to create a community on the flagship instance just to have one doesn't make much sense to me.

I didn't mean to host an instance, but rather to create a community in the official instance, but I understand. Thanks!

@LongJohn-Silver we have no intentions of creating an official Lemmy community at this point in time.

I didn't mean to host an instance, but rather to create a community in the official instance, but I understand. Thanks!

@LongJohn-Silver we have no intentions of creating an official Lemmy community at this point in time.

I agree Lemmy should be promoted, it's a stable and functionally exhaustive decentralized alternative to Reddit.


feat(rpc): Gobject rpc rename

Issue being fixed or feature implemented
With #5525 , MNs shouldn't use Sentinel anymore.
What was done?
In order to force them to remove Sentinel, all gobject sub-RPCs are removed to govobject.
How Has This Been Tested?
feature_governance.py and feature_governance_object.py
Breaking Changes
Normally, only Sentinel should be broken.
Checklist:

[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[x] I have added or updated relevant unit/integration/functional/e2e tests
[x] I have made corresponding changes to the documentation
[x] I have assigned this pull request to a milestone (for repository code-owners and collaborators only)

Only functionality only intended to be used by sentinel should be broken IMO; we shouldn't break simply voting or creating a proposal as that would break lots of documentation and automated processes for proposal creation

Only functionality only intended to be used by sentinel should be broken IMO; we shouldn't break simply voting or creating a proposal as that would break lots of documentation and automated processes for proposal creation

I was about to mention this too :slightly_smiling_face: As far as I can tell, gobject submit and gobject vote-conf are the only commands Sentinel uses that matter (gobject list and gobject getcurrentvotes just read info and should be harmless).

👍 I like that this minimizes the impact on external tools. Should the same thing be done with gobject vote-conf?

Well in #5525, trigger creation is done automatically. This is the feature that we want to protect.

👍 I like that this minimizes the impact on external tools. Should the same thing be done with gobject vote-conf?

Well in #5525, trigger creation is done automatically. This is the feature that we want to protect.

Yes, but don't we want to prevent Sentinel from trying to vote on triggers also? I assume that is also done automatically in Core now too.

👍 I like that this minimizes the impact on external tools. Should the same thing be done with gobject vote-conf?

Well in #5525, trigger creation is done automatically. This is the feature that we want to protect.

Yes, but don't we want to prevent Sentinel from trying to vote on triggers also? I assume that is also done automatically in Core now too.

@UdjinM6 thoughts ?

Agree, it should not be possible to submit triggers and vote for them via rpc.

@UdjinM6 Voting for triggers is also disabled

vote-conf can't be used for proposals, it should be dropped imo 8e20f76cb5. gobject submit help should not mention a possibility of submitting triggers, must require all params and maybe have a bit better description 217a82f585.

vote-conf can't be used for proposals, it should be dropped imo 8e20f76. gobject submit help should not mention a possibility of submitting triggers, must require all params and maybe have a bit better description 217a82f.

Right, so rename vote-conf? Deprecate it? What do you suggest? @UdjinM6


[1725] Build rake task for rollover and RecruitmentCycle creation

Context
We are creating a service which encompasses the rollover code. It will be removed from MCB in a separate ticket.
Changes proposed in this pull request

Add RecruitmentCycleCreationService, which takes the required fields as arguments.
Create RolloverService encompassing the logic previously in rollover.rb. You can rollover all providers or specific ones using a rake task.
Refactor MCB rollover task, encapsulating logic in RolloverService
Build rollover rake tasks

Recruitment Cycle guidance to review

Run  bundle exec rake rollover:create_recruitment_cycle"[YYYY, "YYYY-MM-DD", "YYYY-MM-DD"]. This is year, application_start_date and application_end_date respectively.

Open up the rails console and execute RecruitmentCycle.find_by(year: YYYY) to check the recruitment cycle has been successfully created.

Rollover guidance to review

Ensure you have created a new RecruitmentCycle, as shown above because this is required.
Ensure you have providers, locations and courses in your database.
In Publish, change can_edit_current_and_next_cycles in development.local.yml to true
Navigate to a provider organisations/{provider_code} check that you can click on Current cycle but not Next cycle
Run bundle exec rake rollover:providers"[{provider_code}]"
Go back to the publish UI and check that you can now access the next cycle. Check all sections have been correctly rolled over,
You can roll over all providers, however there is currently an ongoing issue with email validation which will cause issues. See this trello ticket.

Checklist

[ ] Make sure all information from the Trello card is in here
[ ] Attach to Trello card
[ ] Rebased master
[ ] Cleaned commit history
[ ] Tested by running locally

 Rollover - Write the copying code


New container afni 23.0.04

There is a new container, use this command to test:
bash /neurocommand/local/fetch_and_run.sh afni 23.0.04 20230215

and then add to apps.json to release:
https://github.com/NeuroDesk/neurocommand/edit/main/neurodesk/apps.json

integrated


chore(main): release 1.1.0

:robot: I have created a release beep boop
What's Changed

fix: check both item and list disabled states by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/15
feat: add if-active directive by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/17
feat: add if-focused directive by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/18
chore: update release config by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/19
chore: update release config with packages by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/21
chore: update package settings by @johnhwhite in https://github.com/johnhwhite/ng-keyboard-sort/pull/23

Full Changelog: https://github.com/johnhwhite/ng-keyboard-sort/compare/v1.0.2...v1.1.0

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/johnhwhite/ng-keyboard-sort/releases/tag/v1.1.0 :sunflower:


Fixing Data race conditions caught by TSAN

Enable TSAN on MoyaTests Target, so when we run the tests TSAN is always enabled.

Fixing issue caught by TSAN on interceptor when running tests with it

It was just a concurrent read/write access to the willSend MoyaInterceptor property.

cc @sunshinejr

Warnings

:warning:

Any changes to library code should be reflected in the Changelog.
Please consider adding a note there and adhere to the Changelog Guidelines.

:warning:
The Cartfile.resolved was updated, but there were no changes in Moya.podspec, Cartfile, Package.swift, Package.resolved.
Did you forget to update them?

:warning:
The library files were changed, but the tests remained unmodified. Consider updating or adding to the tests to match the library changes.

Messages

:book:
iOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 13.287 (13.689) seconds

:book:
tvOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 13.455 (13.967) seconds

:book:
macOS: 	 Executed 282 tests, with 0 failures (0 unexpected) in 16.470 (16.961) seconds

  Generated by :no_entry_sign: Danger Swift against 67c4d4f0e4e8e10d22799692e4a6325850fe07a4

Codecov Report

Merging #1952 into development will decrease coverage by 1.14%.
The diff coverage is 100%.

@@               Coverage Diff               @@
##           development    #1952      +/-   ##
===============================================
- Coverage        93.96%   92.81%   -1.15%
===============================================
  Files               26       26
  Lines              944      947       +3
===============================================
- Hits               887      879       -8
- Misses              57       68      +11

Impacted Files
Coverage Δ

Sources/Moya/MoyaProvider+Internal.swift
98.6% <100%> (ø)
:arrow_up:

Sources/Moya/Moya+Alamofire.swift
85.71% <100%> (+0.71%)
:arrow_up:

Sources/RxMoya/Single+Response.swift
87.5% <0%> (-12.5%)
:arrow_down:

Sources/ReactiveMoya/SignalProducer+Response.swift
84.84% <0%> (-9.1%)
:arrow_down:

Sources/RxMoya/Observable+Response.swift
53.84% <0%> (-7.7%)
:arrow_down:

Sources/Moya/Response.swift
90.8% <0%> (-4.6%)
:arrow_down:

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 16f89f5...67c4d4f. Read the comment docs.

thank you so much for the find @LucianoPAlmeida! and this is interesting - so do we actually call the same interceptor multiple times? did you check if it's alamofire or moya that does the call multiple times creating the race?

thank you so much for the find @LucianoPAlmeida! and this is interesting - so do we actually call the same interceptor multiple times? did you check if it's alamofire or moya that does the call multiple times creating the race?

The race is being caused by a concurrent read/write access to will, where the read is done by alamofire hook in the adapt which I think is on the alamofire thread, and the write(set the willSend property) is done in our setup method by another thread. So that what's causing the race ... so the solution was simply lock the access. I don't check if there is multiple calls to set, but I think there's not. The adapt may call multiple times, but that's not the cause of the data race :)

Two more additions to this:

Since we are here, and we are enabling TSAN on tests I just replace the objc_sync_enter/exit APIs in favor of lock.
Increase the timeout of integration tests, because sometimes in slow networks tests will fail very often with the current 5.0 timeout.

@LucianoPAlmeida what's the benefit of NSLock vs objc_sync_enter/exit?

@LucianoPAlmeida what's the benefit of NSLock vs objc_sync_enter/exit?

There are some benchmarks and stuff e.g. this one
Where objc_sync_enter falls behind other APIs.
But the reason for changing was that:

Normalizing the locking mechanism, because there some places with NSLock and some places with objc_sync_enter/exit... so the point was just to use the same mechanism for everything and since lock is the most common API, I'd go for that.
objc_sync_enter is not available on linux, so if one day we would try to make an effort to support Moya on Linux, it would a thing that change anyways ;)

In the end I think is not much difference, in terms of performance because of the places it is being used, but just normalizing the sync mechanism is a good thing :))

Hey @LucianoPAlmeida, looks good! One thing is that we want to support Xcode 10 in this newest release so the property wrapper would need to go for now, but we can try to reintroduce it afterwards into the development-5.1 branch that Bas is working on.

Hey @LucianoPAlmeida, looks good! One thing is that we want to support Xcode 10 in this newest release so the property wrapper would need to go for now, but we can try to reintroduce it afterwards into the development-5.1 branch that Bas is working on.

That's unfortunate :((
But ok I'll remove the wrapper then. Thanks @sunshinejr :)

All reverted @sunshinejr

alright thanks @LucianoPAlmeida! one last thing - could you add changelog entry, please?

alright thanks @LucianoPAlmeida! one last thing - could you add changelog entry, please?

Sure ;)

beta.6 was just released 👍

Awesome 🎉


support zooming "out" - below zoom factor 1.0.

Works using QPainter::drawImage functionality instead of manual memcpy for displaying pre-rendered chunk images.

The most important zoom factor for Minutor is 1:1 (one Minecraft Block per screen pixel).
If you zoom IN, you get more pixels per block but still see all details (fine).

First comment:
How do you ensure that it is easy for the user to get exactly this 1:1 zoom?
This is an UI question. What do we implement to achieve good usability of this feature?
At the moment 1:1 is at one end of scrolling direction. This is obviously easy to use. Just scroll into one direction. It does not matter if you scroll too much.
Second comment:
How do we ensure the users PC has enough RAM for more Chunks on the screen?
If you zoom OUT too much without enough RAM, Minutor will stall or crash.
Don't get me wrong, I also would like to zoom out more than possible at the moment. But during the last years I did not find answers to the questions above...

OK, I got your points.
1 - Yes, exact 1:1 zoom can't be achieved anymore after zooming afterwards. That's something I would suggest to fix by introducing a shortcut key combination that resets to zoom factor 1.0. For example Ctrl+0 like many users are already used from other applications like browser.
2 - Yes, availability of RAM can be an issue, depending on users pc hardware.
I saw in the code that there is already some logic implemented to check how much free RAM is available. It's part of the ChunkCache. I would suggest to use this information, combined with window size to determine automatically the possible zoom factor range.
Apart from that, do you think it would be OK to just introduce an "experimental" menu entry which allows to enable such features like this? I think that many users probably still can profit from it - even though it's not yet perfect in all details.

Never change working behavior that is expected by the users.
So I would like to stick to the known behavior/procedure to get to exactly 1:1 zoom factor (scrolling/zooming out until it stops). What is about using a modifier key for the zoom-out-more feature?

The RAM estimation code is not working perfectly at the moment. But it should be improved to define the maximum possible zoom-out value. Maybe number of Chunks needed for maximum-zoom-out at full-screen plus some margin for scrolling (e.g. 25%).

There is already a dialog for configuration: Help->Settings
We could place some mode/enable stuff there.

Is it possible that your mouse wheel creates much more scroll events than typical ones?
I just compared your "more-natural" zoom behavior to the current one:

at the moment we need 16 scroll events (15° turns) to get to 20x zoom (maximum)
your solution needs 262 scroll events, which takes eternities for me to reach

By calculating the real zoom factors in Excel, I come to the conclusion, that simple adding a one when the mouse has turned 15° (120 delta) would be much better. In that case we always have integer multiples of a single block, which would generate the least distortions during rendering.

The new feature forced me to introduce a change regarding the zooming. Consider moving below zoom factor of 1.0, then the approach of just adding/substracting 1 simply doesn't work anymore. 1-1 = 0
But yes, I guess the new approach is much "slower" when compared with the original implementation. The reason why I think the suggested approach is more "natural" is that the relative step size is always the same. Humans perceive the reality in logarithmic scales and thus I thought it's more natural.
But anyway I think I can give also the new zoom a bit more speed and then update the pull request.
One question about the "least distortions during rendering" you mentioned: Is your concern in this regards the performance during drawing or the visual appearance?
If its performance then this might be a stop for this pull request, as I just rely on the QPainter's implementation and if this isn't acceptable for you, I will not be able to improve there anything.

@EtlamGit I've found a trackpad with smooth scrolling and pinch-to-zoom sends out far more events than a mousewheel... that could be what they're seeing?

About distortion:
There are many map creators and creative builders and out there, which are planning their builds with the help of a map. For these people, it is essential that a Block in Minecraft is displayed on the map always with the same scale. Even distances and relations have to be "mapped" correctly.
If we have non-integer zoom factors, this is not ensured, as e.g. Block 1 and 2 are mapped to pixel 1 but Blocks 3 to 5 to pixel 2. You can find more elaborated description of this effect when you search for "aliasing".
Even the current implementation is not ensuring this. Therefore, I suggested to find a new zooming behavior that achieves this. You are right, something logarithmic is more natural, Fibonacci would also work, or squared like you did. But I think at the end this curve should be mapped to integer numbers.
As example for zoom-in:

always add +1 for each 15° scroll event to zoom_internal
use a squared or other nice mapping to get real zoom
round to next integer

Example for zoom-out:

always add +1 to another internal variable
use 1/variable to create zoom factors 1/2 1/4 1/8 1/16
it is impossible to zoom-out more than 16, because than a complete Chunk will be mapped to one pixel

As a real-live example from my map: I have a build structure that has a border of 1 Blocks. These Blocks have a high contrast to the surrounding (Granite in Water). When you now start zooming-out this look very ugly, as sometimes these lines are partly vanishing and coming back during zooming. You can test that also with a large white square on black background. With exact integer zoom factors (1/integer) these effects look much less worse.
About performance:
I did not test performance impact. But I believe the QPainters implementation might be even faster than the current one. And if not, it is not rocked-science to write own blending/rendering code.

Thanks for your patience and explanations, I didn't know all of the main usecases this tool is used for.
I updated the pull request with a change that reintroduces the previous zoom behavior as the default zoom behavior. I added two entries in the setting dialog.
One which allows to enable the "more natural" zoom approach called fine zoom now. Actually I "speed" up this zoom behavior quite a lot. Thanks for your input (testing and comments) there. The other option is to enable the "zoom out" feature which allows a minimal zoom factor of 0.20 (this was the useful limit on my hardware). The description of this option contains also the hint that it would need quite some RAM. Both settings are in a new QGroupBox called "experimental".
I like your additional ideas regarding further zoom improvements. Anyway I suggest that this should be done then in other pull requests, as it is currently not of a priority for me as I'm not doing creative building or map creating. Rather I use the map for faster exploration.

I will test your changes as soon as possible, but unfortunately I'm short of time at the moment...
You idea to split topics to different Pull Request is fine. I planned to add something to restrict zoom levels anyway to fix an issue regarding out of memory and resulting crash.

Finally I found some time to do first tests:

The new zoom behavior is nice. I think we can use a non linear zoom as default. I will do that when developping the changes regarding memory issues caused by zoom-out.

We still have rendering issues when zooming-out fine structures:
Your code:  with bilinear filtering:
As shown in the second image, it gets better when doing some blending/filtering (combining all relevant pixels from the Chunk to a screen pixel).

This can be achieved by changing mapview.cpp#428:
  QPainter canvas(&imageChunks);
  if (this->zoom < 1.0)
    canvas.setRenderHint(QPainter::SmoothPixmapTransform);
  canvas.drawImage(targetRect, srcImage);

You might want to add that change to your Pull Request. Otherwise I would do that during Christmas.

Regarding Performance, I was not able to notice any difference to the old code. But my assumption is that QPainter:drawImage() is using most efficient code and probably even GPU support for doing the task. So it should be faster than our old pixel-per-pixel copy.

As all changes from this Pull Request are disabled by default, I think it is save to merge them.

@EtlamGit Nice improvement. I like it too. I put the code snippet into the pull request as suggested.

@mrkite I did not test deeply, but it seems to work.
As all changes from this Pull Request are disabled by default, I think it is save to merge them.
I will use the new zoom behavior as basis to fix out-of-memory issues.


Use pretty JSON to reduce risk of going over 1k character per line limit

According to [Sendgrid's SMTP API documentation](
https://sendgrid.com/docs/API_Reference/SMTP_API/using_the_smtp_api.html
#-Requirements-and-Limitations), all lines in a header must be under
1,000 characters. By using JSON.pretty_generate, arrays (e.g. multiple recipients  and substitutions) will be wrapped, reducing the likelihood of exceeding this limit, with the exception being if some element in an array is itself over 1,000 characters long.

I have now found out that ActionMailer takes care of wrapping lines, which must be why you had the gsub to add the spaces. Still, using pretty_generate could make that a bit clearer.


Read-only mode for reviewing forms?

I've been looking around with no answer to this question: How to show the same form in read-only mode.
An example use-case: a simple shop checkout process: enter address - check order - confirm order.
Check order contains the same address form as enter address. It has the same layout but is using different elements - e.g. a span instead of an input.
Is there any suggested way how this can be done with react-redux-form?

Have you tried <Control readOnly>?

I see, so looks like that's passed to underlying elements like it does for custom components.
That plus some css helps, thanks for quick reply!


rasterizer bug

rasterizer code seems to have a bug.
Steps to reproduce:
Render two boxes into the depth buffer and write the result into a bitmap file.
Odd artefacts arise at triangle edges. See attached image.

Hi brunntho,
This behaviour is by design. The algorithm is approximate (but conservative) in that it may incorrectly report an occluded object as visible, but never incorrectly report a visible object as occluded. For rendering it's typically ok to have a few false positives because they will be removed by the GPUs depth test later anyway.
What you see is leakage due to the merging heuristic, which is unfortunate but also crucial to the performance of our rasterizer. This can happen when you have more than 2 visible surfaces in an 8x4 tile which may sometimes force the merging heuristic to push the depth value back (to guarantee conservative correctness). It typically happens where triangle edges intersect as in your image.
The merging heuristic is order dependent and you get least amount of leaking if you render your geometry in front-to-back depth order (this is also the best in terms of raw rasterization performance). The better the sorting the closer you will get to the exact solution. In practice it's usually enough to do a rough per-object sort, or a sorted traversal of your scene tree/graph structure. Landscapes and other extremely large singular objects should be split up and not sent as a single large drawcall.
Hope this helps,
Jon

Hey Jon
Thank you very much for your explanations.


Follower Chain POC

Goal of this PR
Fixes #337
This PR is against the s3-feeder branch and currently does not build since it upgrades our dependencies quite a lot (to use the latest version of master for Flow-Go for example, in order to use their new commits with the follower package which we need.)
We will need to wait for a proper release before we are able to properly integrate this feature. For now, this PR can already give an idea of what it could look like.
The basic design for now is the following:

A new component called the Follower Chain is added. It has access to the protocol state on disk (which is written because the DPS node becomes a follower of the consensus) and gets notified whenever a new block is finalized.
When a block is finalized, we fetch its height from the protocol state database and set that as the latest available height. Any attempt to fetch a block height that is not yet finalized results in a timeout error.

Checklist

[x] Is on the right branch
[ ] Documentation is up-to-date
[ ] Tests are up-to-date

@awfm9 So basically all of the issues you mention come from something that I thought was impossible here (since we do not get blocks from the consensus follower but just their IDs, as far as I've seen) so I must be missing something. Let's talk about it at the daily meeting.

Progress report: I've begun adding two components under follower/consensus and follower/execution which are WIP. They will both write what information they have access to in the badger DB (the same that the consensus follower already automatically fills) and be able to report the height at which they currently are.
The Live Chain will use the execution follower's height to know which heights it can index at, while the feeder will simply directly read encoded BlockData structures from S3 files. We can either make a new, very simple feeder, that just calls trieUpdate, err := executionFollower.Update() to fetch the next available update and return it, or we can use the execution follower as a trie update feeder since it already implements the proper interface from the POV of the mapper.
No tests are written yet, and the program still does not compile because the dependency to flow-go still breaks the build at the moment.


Remove version: qBittorrent.qBittorrent version 4.5.1

[Automated] It returns code over 400 in all urls
Microsoft Reviewers: Open in CodeFlow

Close with reason: Package still available.;


CAMEL-20286 camel-netty: add support for native transport over kqueue and fixed UDS-connected warnings

Description

Added choices beetween Epoll and KQueue in all TCP-conntected places and checked that native transport still works fine on Linux. Also removed noisy warnings as i described in Jira task.
Important: I cant properly test this cause i do not have Mac OS or BSD operating system. The main test is NettyTCPSyncUDSTest - it tests both consumer and producer. I typed corresponding KQueue* classes basing on Epoll* names.
Target

[x] I checked that the commit is targeting the correct branch (note that Camel 3 uses camel-3.x, whereas Camel 4 uses the main branch)

Tracking

[x] If this is a large change, bug fix, or code improvement, I checked there is a JIRA issue filed for the change (usually before you start working on it).

Apache Camel coding standards and style

[x] I checked that each commit in the pull request has a meaningful subject line and body.

[x] I have run mvn clean install -DskipTests locally and I have committed all auto-generated changes

on mac with M1 I get this test error
[INFO] Running org.apache.camel.component.netty.NettyTCPSyncUDSTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.427 s <<< FAILURE! -- in org.apache.camel.component.netty.NettyTCPSyncUDSTest
[ERROR] org.apache.camel.component.netty.NettyTCPSyncUDSTest.test -- Time elapsed: 0.188 s <<< ERROR!
java.lang.IllegalStateException: Unable to use native transport - both Epoll and KQueue are not available
	at org.apache.camel.component.netty.NettyServerBossPoolBuilder.build(NettyServerBossPoolBuilder.java:84)
	at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.startServerBootstrap(SingleTCPNettyServerBootstrapFactory.java:136)
	at org.apache.camel.component.netty.SingleTCPNettyServerBootstrapFactory.doStart(SingleTCPNettyServerBootstrapFactory.java:117)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
	at org.apache.camel.support.service.ServiceHelper.startService(ServiceHelper.java:126)
	at org.apache.camel.component.netty.NettyConsumer.doStart(NettyConsumer.java:75)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
	at org.apache.camel.support.service.ServiceHelper.startService(ServiceHelper.java:126)
	at org.apache.camel.impl.engine.AbstractCamelContext.startService(AbstractCamelContext.java:3092)
	at org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRouteConsumers(InternalRouteStartupManager.java:408)
	at org.apache.camel.impl.engine.InternalRouteStartupManager.doStartRouteConsumers(InternalRouteStartupManager.java:325)
	at org.apache.camel.impl.engine.InternalRouteStartupManager.safelyStartRouteServices(InternalRouteStartupManager.java:211)
	at org.apache.camel.impl.engine.InternalRouteStartupManager.doStartOrResumeRoutes(InternalRouteStartupManager.java:144)
	at org.apache.camel.impl.engine.AbstractCamelContext.doStartCamel(AbstractCamelContext.java:2816)
	at org.apache.camel.impl.engine.AbstractCamelContext.doStartContext(AbstractCamelContext.java:2497)
	at org.apache.camel.impl.engine.AbstractCamelContext.doStart(AbstractCamelContext.java:2452)
	at org.apache.camel.support.service.BaseService.start(BaseService.java:113)
	at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2057)
	at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:208)
	at org.apache.camel.test.junit5.CamelTestSupport.startCamelContext(CamelTestSupport.java:765)
	at org.apache.camel.test.junit5.CamelTestSupport.doSetUp(CamelTestSupport.java:540)
	at org.apache.camel.test.junit5.CamelTestSupport.setUp(CamelTestSupport.java:378)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

java.lang.UnsatisfiedLinkError: could not load a native library: netty_transport_native_kqueue_aarch_64

Okay it works when I use aarch64
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport-native-kqueue</artifactId>
        <classifier>osx-aarch_64</classifier>
    </dependency>

That can maybe be made via some maven profile stuff that matches host os and select correct dependency

Thanks, Claus:)
I will research that thing, never did such maven profiles

/component-test camel-netty

It's also broken on power:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.485 s
[INFO] Finished at: 2024-01-03T10:09:47Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project camel-netty: Could not resolve dependencies for project org.apache.camel:camel-netty:jar:4.4.0-SNAPSHOT: The following artifacts could not be resolved: io.netty:netty-transport-native-epoll:jar:linux-ppcle_64:4.1.104.Final (absent): Could not find artifact io.netty:netty-transport-native-epoll:jar:linux-ppcle_64:4.1.104.Final in central (https://repo1.maven.org/maven2/) -> [Help 1]

I think you can add <arch>x86</arch> to the epoll profile activation to fix this. You might need to add another profile for arm as well (if it works on that platform)

@orpiske fixed - i add not x86, but amd64 - as far as i understand this names are equivalent

@orpiske fixed - i add not x86, but amd64 - as far as i understand this names are equivalent

Thanks. It's looking good on s390x and Power now.

How to retrieve logs from failed build? I see there somewhere incremental-test.log but cant find:(

/component-test camel-netty

How to retrieve logs from failed build? I see there somewhere incremental-test.log but cant find:(

ASF restricts access to the logs to the committers. So, when there's a failure, just drop a message and we can download it. That said, I see it is working now ...

I think this is ready to merge. I'll take a closer look on Monday if isn't merge until then


In Quill Editor not work proper for Bold, Italic and Underline [Mobile]

I use latest flutter_quill in my flutter app.
When i use bold, italic and underline then its working fine but after that i tried to edit then its not work proper.
please check this video for more explanation about this bug.
video link
I use this flutter_quill: ^2.0.4

Please Submit a PR

@singerdmx This can be closed I guess.


Resource Type
Microsoft.Web/connections@2016-06-01
Api Version
2016-06-01
Issue Type
Missing property(s)
Other Notes
There are Missing Properties for Microsoft.Web/connections@2016-06-01 on bicep such as Kind and parameterValueSet
and it works while deployed but the Bicep linter does recognize the properties and the documentation is quite not useful.
Bicep Repro
resource ApiConnection 'Microsoft.Web/connections@2016-06-01' = {
  name: Properties.ApiConnectionName
  location: resourceGroup().location
  kind: 'V2'
  properties: {
    api: {
      description: Properties.description
      type: 'Microsoft.Web/locations/managedApis'
      id: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Web/locations/${resourceGroup().location}/managedApis/${Properties.Type}'
    }
    parameterValueSet: {
      name: 'managedIdentityAuth'
      values: {
        namespaceEndpoint: {
          value: Properties.namespaceEndpoint
        }
      }
    }
    displayName: Properties.displayName
  }

Confirm

[X] I have read the troubleshooting guide and looked for duplicates.

@dhanesh13 I built a prototype module for this. Logic Apps are confusing at the moment.
https://github.com/coolhome/ResourceModules/commit/86a530d5b7c170c6913473709632c806c3b12834#diff-e59fe3e95d066bc83057705d46408f57c9f8b6f13ebb38aa64f05441cadf1064


Disable culling for the duration of vkCmdClearAttachments

This fixes a bug where the quad drawn by vkCmdClearAttachments can be culled if the winding order of the quad happens to match the current pipeline's cull mode. Note that the original cull mode will be restored immediately after the quad is drawn via the existing cmdEncoder->_graphicsPipelineState.markDirty(); call, so no pushing and popping of state should be necessary.

But, there are other states which could interfere with this.

Good point, thanks! I've made the changes you requested. I'm not 100% sure I've set/reset the viewport and scissor states correctly, so please let me know if I need to change anything there.


Workflow Task Graph: WorkSpec and related constraints

Provide traits / types that can be collected into a workflow task graph.

Whether or not to track operation support through an enum.
If an operation is not supported, should we track it via an enum, and require implementors to choose a variant? Maybe not -- it adds complexity to the API that may not be necessary in the common case.
If we had one, it may look like the following snippet:
#[derive(Debug)]
pub enum OpOutputMaybe {
    /// This operation is not supported.
    NotSupported {
        /// Message to display when this operation is run.
        ///
        /// This may be a link to an issue to explain why this is not supported.
        suggestion: Option<String>,
    },
    /// Nothing needs to be done for this to work.
    Unnecessary,
    /// This logic has not been written yet.
    ImplPending {
        /// Message to display when this operation is run.
        ///
        /// This may be a link to an issue to implement this operation.
        suggestion: Option<String>,
    },
}

Learnings:

DataInit trait should not be a constraint on the data types, otherwise consumers cannot use third party data types without wrapping them in newtypes then implementing DataInit on the newtypes.
Data derive should reference peace::data::.. because it's inconvenient to import about 5 other types to get them in scope. For peace_* crates, adding a #[peace_internal] attribute or similar will change the module reference to peace_data::...


[Feature Request] Schematics: Run local a schematic written in TypeScript directly (ts-node integration)

🚀 Feature request
Command (mark with an x)

- [x] schematics

Description
Schematics runner can accept a JavsScript file as a factory of a schematic.
To create boilerplates in my app, it seems a good solution to create local schematics. But it is not easy to get ready.
Writing schematics without TypeScript's help is tough and unsafe. But schematics cannot use them. We have to do manually transpiling with tsc and executing the output JS. Very primitive and boring.
Describe the solution you'd like
If schematics runner can handle TypeScript files directly, developers are free from non-essencial jobs and the repository can keep clean.
I think ts-node/register can help it.

In general, I don't think shipping or transpile TypeScript  at runtime is a good idea as it opens a whole new pandora box.
Compiling a .ts file to .js is dependent on a couple of factors which might vary from one project to another.

tsconfig - this can be different from one project to another and hence might cause failure of a transpilation which in another project might work.
tsc version, syntax that works with this current typescript version, might not be able to be compiled in the next/previous version.

Apart from that consumers of a schematic, shouldn't care if it's written in TypeScript or vanilla JavaScript and hence when compiling at runtime they might get a TypeScript error, which for them are un-actionable and irrelevant. Also, the consumers might need to install dev only dependencies which otherwise won't have too. Such as an @types/ package.

@alan-agius4 Shipping TS is not good, totally I agree. I've mentioned about only project local use of schematics. It's a common demand that scaffolding some application code in project local.

@lacolaco, yeah in your case, ts-node might work, however this would mean a couple of things.

Schematic runner would need to be aware made aware of a tsconfig file path, as otherwise ts-node might resolve an incorrect tsconfig.
API features which are specific only for local schematics.

Currently, schematics-cli is doing many jobs. It is designed as a general reference implementation of schematics runner but technically I don't think it is easy to implement another tool equivalent to that.
I think it is needed that a JavaScript API which can be used with less configuration. It wraps  @angular_devkit/schematics and contains the preset "workflow" as well as CLI.
If it can be executed in Node.js script with well-abstracted easy API, I can run just ts-node run-my-schematics.js.

something like schematics-cli-js maybe I need. 🤔

Hi @lacolaco,
This is a great feature request. Unfortunately the schematics CLI is not a priority right now, but we do accept pull requests to add features like these. I'm going to remove the need further discussion, but let us know if you can implement that we can help you answer questions.


Fix bug in hex encoding of normalized constraint hashes

#314 included a new routine for hex-formatting the hash used for constraint name normalization. This PR fixes a bug in that routine which caused the 4th bit of every byte to be ignored when formatting.

Codecov Report

Merging #315 (78f1488) into main (cce41a9) will not change coverage.
The diff coverage is 0.00%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #315   +/-   ##
=======================================
  Coverage   57.55%   57.55%
=======================================
  Files           8        8
  Lines         344      344
=======================================
  Hits          198      198
  Misses        146      146

Flag
Coverage Δ

unittests
57.55% <0.00%> (ø)

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

Impacted Files
Coverage Δ

Sources/MySQLKit/MySQLDialect.swift
60.86% <0.00%> (ø)

These changes are now available in 4.6.1


begin backend migration

need to migrate github actions in backend as well as deal with non-environment variable-related errors when running pnpm run build --filter backend after pnpm install at monorepo root

Thanks for the effort. This is a good start. While we have the chance, we should take  this opportunity to make some much-needed architectural changes. The main one is migrating from plain JSON api to TRPC, which this repo is set up for. This should be pretty simple to set up, just replace the controllers with routers.
We want to get rid of doppler and replace jest with vite. But this is a good start.

Made all the schemas. Couple of things needed:

Extract all relations to a relations function, similar to the auth.ts schema
Make all primary keys varchars instead of serial, similar to the auth.ts schema
Add createdAt and updatedAt on all schemas.


quarkus_quickstarts_test failed with Could not find the selected project in the reactor: :hibernate-search-elasticsearch-quickstart

quarkus_quickstarts_test failed on all platforms.
internal/Test_openjdk11_j9_sanity.external_x86-64_linux/49 output:
Downloaded from central: https://repo.maven.apache.org/maven2/org/optaplanner/optaplanner-parent/8.16.1.Final/optaplanner-parent-8.16.1.Final.pom (5.1 kB at 69 kB/s)
00:09:36.475  [ERROR] [ERROR] Could not find the selected project in the reactor: :hibernate-search-elasticsearch-quickstart @
00:09:36.475  [ERROR] Could not find the selected project in the reactor: :hibernate-search-elasticsearch-quickstart -> [Help 1]
00:09:36.475  [ERROR]
00:09:36.475  [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
00:09:36.475  [ERROR] Re-run Maven using the -X switch to enable full debug logging.
00:09:36.475  [ERROR]
00:09:36.475  [ERROR] For more information about the errors and possible solutions, please read the following articles:
00:09:36.475  [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException
00:09:36.900  Build quarkus_quickstarts completed
00:09:36.900  Test results copied
00:09:37.303
00:09:37.303  quarkus_quickstarts_test_0_FAILED

The last passed build was Feb 4th Test_openjdk11_j9_sanity.external_x86-64_linux/44
We can reproduce the error in Grinder:

openj9: https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/4147/console
hotspot: https://ci.adoptopenjdk.net/view/Test_grinder/job/Grinder/4148/console

@sophia-guo is the failure related to recent version upgrades?

For quarkus_quickstarts there are two updates: one is latest version tag and the other one is maven version.

No project hibernate-search-elasticsearch-quickstart in latest 2.7.1.Final, which should be removed.


Add screenshot tests with Shot

Great project @MaciejCiemiega 😃  congrats!!
I've seen your challenge's implementation on Twitter and I've thought it could be great if you could automatically test your animations. I've prepared this branch where Shot is configured and a bunch of seams are added to your code in order to make it a little bit more testable. The result is what you can see in this PR. A lot of tests ensuring your challenge works as expected using pixel-perfect precision 📸  If for some reason after a code modification your app doesn't show the expected UI you'll get a test failure and a nice report like this:

The diff column will show you the different pixels between the original screenshot recorded and the new one taken where the bug should be 😃
I've also configured CI to run these tests whenever a PR is requested or some code is pushed so external contributions are also checked by these tests I wrote.
P.S: Feel free to close this PR if you don't want to add coverage to the project.

Hey, thanks for the PR. It looks very interesting 👍


Feature: Deadzone control for both ends of axis

Any chance for something like this:

In both UCR and UCR-C you can only control the deadzone around the center of the axis correct?

What code is used for each plugin to handle deadzones is dictated by the plugin itself.
There would be nothing stopping you from writing new code, and making a plugin use that code instead for deadzones.
Plugin calling DZ function
Existing DeadzoneHelper class
So you could write an alternative DeadzoneHelper, then make a plugin that uses it.

I am against anything using sliders, period.
UNLESS:
There is an equivalent text box to type exact value.
OR
You can use eg arrow keys to select exact value.
Otherwise, unless the slider is over 100px wide, it's impossible to select all values, and even then it's a right pain to select the exact value you want.

A thought - given that the DZ on each of the scales is identical, a linear sensitivity option of <100% would achieve the same result.


fix(table): change required for RxJS v6.0

this._sort.sortChange and this._paginator.page are of type EventEmitter<Sort> and EventEmitter<PageEvent>.
In RxJS 6.0 the empty observable returns Observable<never> instead of the currently Observable<Sort> and Observable<PageEvent>. Therefore with RxJS v6.0 sortChange is of type EventEmitter<Sort>|Observable<never> and pageChange is of type EventEmitter<PageEvent>|Observable<never>. The union Observable types throw TS2554: Expected 0 arguments, but got 1. error. Details in https://github.com/ReactiveX/rxjs/issues/3388

I think the failed tests are unrelated to my changes?
master is failing on those tests at https://travis-ci.org/angular/material2/jobs/353088323

I’ve submitted a PR to fix the e2e failure.

This issue occurs in rxjs 5.5.x+ (with pipe). I believe this is a typescript 2.7.x issue with stricter type checking.

Needs rebase

https://github.com/angular/material2/pull/10482 looks like a super set of this change.
I'm closing this one in favor of https://github.com/angular/material2/pull/10482


Front as a vue app

Hi,
The current app structure is a bit cumbersome. Are there plans to separate the front end in an independant vuejs app ? That would make typemill much easier to debug and extend.

with version 2 the author interface consists mostly of vue apps, only data is printed out in template due to performance. Additionally you can use Typemill in headless mode very soon and create your own vue applications, content or content administration.


add_variable_for_prometheus_metrics

Description
Add variable listen_address to enable prometheus metrics
Migrations required
NO
Verification
plan is joined to the PR
plan.txt

Just merged https://github.com/npalm/terraform-aws-gitlab-runner/pull/481 fixing the submodule


undefined.json

originalData/coconut/full/coconut.2022-03-28.zip
originalData/coconut/full/uniqueNaturalProduct.undefined.bson

Not happening anymore as can be seen by telegram log:
08:17:56.025 - syncCoconut:Start parsing: /originalData/coconut/full/uniqueNaturalProduct.2022-04-06.bson


Cannot deserialize PodExecOptions into DynamicObject

Current and expected behavior
When making an admission controller for pod/exec resource, I cannot deserialize the admission request into AdmissionReview<DynamicObject>.
The actual request looks like this:
{
  "kind": "AdmissionReview",
  "apiVersion": "admission.k8s.io/v1",
  "request": {
    "uid": "...",
    "kind": {
      "group": "",
      "version": "v1",
      "kind": "PodExecOptions"
    },
    "resource": {
      "group": "",
      "version": "v1",
      "resource": "pods"
    },
    "subResource": "exec",
    "requestKind": {
      "group": "",
      "version": "v1",
      "kind": "PodExecOptions"
    },
    "requestResource": {
      "group": "",
      "version": "v1",
      "resource": "pods"
    },
    "requestSubResource": "exec",
    "name": "test-pod",
    "namespace": "foobar",
    "operation": "CONNECT",
    "userInfo": {
      "username": "kubernetes-admin",
      "groups": [
        "system:masters",
        "system:authenticated"
      ]
    },
    "object": {
      "kind": "PodExecOptions",
      "apiVersion": "v1",
      "stdin": true,
      "stdout": true,
      "tty": true,
      "container": "test",
      "command": [
        "sh"
      ]
    },
    "oldObject": null,
    "dryRun": false,
    "options": null
  }
}

Deserialization into AdmissionReview<DynamicObject> always fails because the object...
{
  "kind": "PodExecOptions",
  "apiVersion": "v1",
  "stdin": true,
  "stdout": true,
  "tty": true,
  "container": "test",
  "command": [
    "sh"
  ]
}

...does not have metadata.
I think this is a bug.
Possible solution
No response
Additional context
I currently using following type as a hacky workaround:
#[derive(Deserialize, Serialize, Clone)]
struct MetadataLessDynamicObjectForAdmissionReview(serde_json::Value);

impl Resource for MetadataLessDynamicObjectForAdmissionReview {
    type DynamicType = ApiResource;

    fn group(dt: &ApiResource) -> Cow<'_, str> {
        dt.group.as_str().into()
    }

    fn version(dt: &ApiResource) -> Cow<'_, str> {
        dt.version.as_str().into()
    }

    fn kind(dt: &ApiResource) -> Cow<'_, str> {
        dt.kind.as_str().into()
    }

    fn api_version(dt: &ApiResource) -> Cow<'_, str> {
        dt.api_version.as_str().into()
    }

    fn plural(dt: &ApiResource) -> Cow<'_, str> {
        dt.plural.as_str().into()
    }

    fn meta(&self) -> &ObjectMeta {
        panic!("This method `meta` should not be called. This is a bug.")
    }

    fn meta_mut(&mut self) -> &mut ObjectMeta {
        panic!("This method `meta_mut` should not be called. This is a bug.")
    }
}

Environment
Client Version: v1.24.3
Kustomize Version: v4.5.4
Server Version: v1.20.15

Configuration and features
No response
Affected crates
kube-core
Would you like to work on fixing this bug?
No response

I think this is a better workaround (or even a solution, maybe):
#[derive(Deserialize, Serialize, Clone, Debug)]
struct DynamicObjectWithOptionalMetadata {
    #[serde(flatten, default)]
    pub types: Option<TypeMeta>,
    #[serde(default)] // Added
    pub metadata: ObjectMeta,

    #[serde(flatten)]
    pub data: serde_json::Value,
}

impl Resource for DynamicObjectWithOptionalMetadata {
	// ...
}

Thanks for this report. It looks like Kubernetes does not treat subresources (like PodExecOptions and PodAttachOptions - neither are presented with metadata in the schema) like true (top level) objects and appear exempt from the api convention of metadata for objects.
Maybe there's room for another dynamic type here (like your last suggestion), but I am leaning towards just adding the #[serde(default)] to the DynamicObject's metadata direct and document that metadata for subresources are not filled in and must be read from the parent object. All the properties of ObjectMeta are optional after all (and kubernetes generally treats them as +optional anyway) and we no longer assume a lot about them in ResourceExt after the last deprecation.


Bring pygamer up to tier one status

It was a planned tier one board and is labeled as such, but conversion isn't complete.

I've got a pygamer on the way, hoping to dig in to this early December

Looks like it's not been obsoleted by Adafruit. I have no problem bringing it up to T1 because of its peripheral set. I think 6 T1 boards is probably enough, I prefer to keep the T1 list short and sweet, as not to overburden ourselves with every breaking change.


UDP/TCP messages contain ICMP codes

https://github.com/Azure/Azure-Sentinel/blob/799dc67acda591fd4ef44fe701e3bf9110cbbf1a/Parsers/ASimNetworkSession/Parsers/ASimNetworkSessionAzureFirewall.yaml#L61
There seems to be a logic issue related to the above iff() function: If the msg does not start with ICMP, the NetworkIcmpCode will always be echo-reply. So we will have UDP/TCP events with echo-reply ICMP codes which is misleading.

Thanks @cgiampoulakis to identifying the issue. I have fixed the parsers. The fix is available in the GitHub version. It will be available in the built-in parsers in the near future.


A fatal error has been detected by the Java Runtime Environment - SIGSEGV

Hello,
We have a Jama application running  as a docker container, but suddenly application crashed with below error. Could you please help possible root cause.
Memory utilization was fine but load average of the server quite went high.
Platform: Centos 7
Environment:
JRE version: OpenJDK Runtime Environment (11.0.3+7) (build 11.0.3+7)
Java VM: OpenJDK 64-Bit Server VM (11.0.3+7, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x00007fcf68a140b1, pid=1, tid=97
JRE version: OpenJDK Runtime Environment (11.0.3+7) (build 11.0.3+7)
Java VM: OpenJDK 64-Bit Server VM (11.0.3+7, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)
Problematic frame:
V  [libjvm.so+0xaa30b1]  PhaseIdealLoop::build_loop_late_post(Node*)+0x171
Core dump will be written. Default location: /usr/local/tomcat/bin/core.1
An error report file with more information is saved as:
/usr/local/tomcat/bin/hs_err_pid1.log
Compiler replay data is saved as:
/usr/local/tomcat/bin/replay_pid1.log
If you would like to submit a bug report, please visit:
https://github.com/AdoptOpenJDK/openjdk-build/issues
error occurred during error reporting (), id 0xb, SIGSEGV (0xb) at pc=0x00007fcf69425a47
error occurred during error reporting (), id 0xb, SIGSEGV (0xb) at pc=0x00007fcf69425a47
error occurred during error reporting (), id 0xb, SIGSEGV (0xb) at pc=0x00007fcf69425a47
Thanks

Could you please check whether it still happens with 11.0.6 and, if so, test with an upstream build (https://adoptopenjdk.net/upstream.html?variant=openjdk11&jvmVariant=hotspot)?

Sure will test it. Could you please let us know is it bug in the current version ? Is it so, is there any temporary fix for work around?

I have no idea if the bug is in the current version. I'm merely asking triage questions so that we can determine if it's a problem with AdoptOpenJDK or if we have to report it to OpenJDK.

@jagadeeswar725863 Based on the version output you've given:
JRE version: OpenJDK Runtime Environment (11.0.3+7) (build 11.0.3+7)
Java VM: OpenJDK 64-Bit Server VM (11.0.3+7, mixed mode, tiered, compressed oops, g1 gc, linux-amd64)

you don't appear to be using an AdoptOpenJDK build as ours should have AdoptOpenJDK in the version string.

(Transferring to support repository)


Get rid of ? in paths

Using a ? in path definitions has limitations. For example, if you want to match a path that has an optional segment in it, you actually need two of them: one for the parameter name and another for the slash. So people end up using paths like /users/:userID?/?edit.
I'd like to suggest that instead of ? we use ( and ) to indicate that portions of a path are optional. This gives us the ability to indicate where the optional portion of a path begins and ends. So you can do /users(/:userID)/edit which, at least to me, is a little cleaner.
This may help us address #820
See also #929

+1 adds readability IMHO. I hate this ?:someParam? it reminds me of this "¿ por que ? ".

so... backbone router syntax? +1 I much prefer ( ) to ?

Looks definitely cleaner, because the visual grouping going on there! :+1:

Or kill it altogether and allow route configs w/o handlers to simply configure a route to match. Any use-case for optional segments can be solved with child route configs.
<Route name="foo" path="/foo(/:id)" handler={Foo}/>

<!-- can already be handled with -->

<Route name="foo" path="/foo" handler={Foo}/>
  <Route name="fooWithId" path=":id">
</Route>

You don't need a handler on fooWithId, Foo can just not ever render a RouteHandler and do the same parameter branching it does already w/ optional params. Removing optional params would also clean up our path matching and active link className code simpler. I think it also makes user code clearer.

Personally I'd really prefer keeping a path syntax for optional parts.
<Route name="foo" path="/foo" handler={Foo}/>
  <Route name="fooWithId" path=":id">
</Route>

seems unnecessarily verbose, and I find it harder to grok quickly compared to: /foo(/:id)...take that with as much weight as appropriate for anecdotal aesthetic opinions from strangers.
I definitely see how it would make your lives easier to be able to remove some complexity from path matching. If i'm being honest though, I'd prefer you folks handle the complexity instead of me :P

The thing I don't like is this:
<Route name="foo" path="/foo(/:id)" handler={Foo}/>

// ...

// URL is `/foo/123`
<Link to="foo">do I have the active class?</Link>
<Link to="foo" params={null}>do I have the active class?</Link>
<Link to="foo" params={{id: 123}}>do I have the active class?</Link>
<Link to="foo" params={{id: 234}}>do I have the active class?</Link>

I like the idea of killing off the magic characters. Using child routes, while more verbose, is clean, readable and declarative. It think it will also be a bit more intuitive when using Redirect to set default paths. I think it will ultimately make for more maintanable code which is more important that saving a few keystrokes initially.

@mjackson when it'll be released?


Add: default handler for command

@fabio-ivona how about it?

It could be better be handled as plain message

@fabio-ivona
I want to know if it is a command type or a normal message

It can be detected from the leading slash

@fabio-ivona is it ok now؟

Will review it as soon as return from vacation (on 22nd of August)

it's true
Thank you

superseded by #148


create a user profile page and allow them to edit it

create a new page where users can see and create their profile. this will include their info (first name, last name, class standing, email, profile pic, etc.), an "about" section, and their listings (if any). users should also have the option to edit their information with an "Edit" button. this issue will be done in branch "issue-39"

actually, this was already done with the "Sellers" collection. Just need to do the edit button and create the page


[Update] Created countdown widget

@snehmehta please review this quickly

It's still left, will complete it ASAP tomorrow morning. I just created a new pr as the old one was from my fork but this new one also came to be a fork only.


fix: swap confirmation modal swap approved count

Bug Report
Swaplace version
f1ed47049f6b0350d5e31d75b5a9bc3b2dfde35f
Current behavior

Expected behavior
If the tokens are approved must show in dApp
Steps to reproduce

Go to Offers page
Click to accept swap

Related code
SwapOfferConfirmation Modal

@heronlancellot Could you specify what this bug is about? Also, I couldn't reproduce it, could you be more clear in how to reproduce it please?


Use ToTokens instead of constructing spans directly

It seems more idiomatic to store whole tokens in the AST, instead of just spans – see this example and Spanned.
Let's change Maud to use this convention as well.

On reflection, I don't think it's worth pursuing this.
There are a couple places where we construct fake AST nodes, e.g. when desugaring class/ID shorthand. If the underlying AST changes from storing a separate SpanRange to storing a single LitStr token, then that extra span information would be lost. Maybe when Span::join stabilizes, the calculus around this might change, but right now I think the change will regress functionality.


CRI plugin not picking up default runtime in v1 config

Description
We are trying to use nvidia runtime instead of runc to enable gpu workloads. NVIDIA has it's own gpu operator which updates containerd v1 config with nvidia's container runtime. But, containerd does not pick up the new runtime and defaults to runc which causes gpu workloads to fail.
When default_runtime_name was updated, it started working. But, since this was introduced only v2, this shouldn't be the case.

Steps to reproduce the issue:

Update container config to

[plugins]

  [plugins.cri]

    [plugins.cri.containerd]

      [plugins.cri.containerd.default_runtime]
        privileged_without_host_devices = false
        runtime_engine = ""
        runtime_root = ""
        runtime_type = "io.containerd.runtime.v1.linux"

        [plugins.cri.containerd.default_runtime.options]
          Runtime = "/usr/local/nvidia/toolkit/nvidia-container-runtime"

      [plugins.cri.containerd.runtimes]

        [plugins.cri.containerd.runtimes.nvidia]
          privileged_without_host_devices = false
          runtime_engine = ""
          runtime_root = ""
          runtime_type = "io.containerd.runtime.v1.linux"

          [plugins.cri.containerd.runtimes.nvidia.options]
            Runtime = "/usr/local/nvidia/toolkit/nvidia-container-runtime"

Restart containerd

Describe the results you received:
runc is still the default runtime.
Describe the results you expected :
use nvidia-container-runtime as cri runtime.
Output of containerd --version:
Client:
  Version:  v1.3.0
  Revision: 36cf5b690dcc00ff0f34ff7799209050c3d0c59a

Server:
  Version:  v1.3.0
  Revision: 36cf5b690dcc00ff0f34ff7799209050c3d0c59a
  UUID: 6268252e-6f47-4e5a-90ea-eb8aadaac90b

Any other relevant information:

cc @mikebrow

backward compatibility for default_runtime handled here.
https://github.com/containerd/containerd/blob/746cef0bc2afe8b8c4592fec3df966138bdcedff/pkg/cri/config/config.go#L313-L314
I tried updating container runtime in my local environment using old option default_runtime and containerd picks up. (I had not installed nvdia container runtime, just checking if containerd picks it or not). Not sure what goes wrong above.
 [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime]
        runtime_type = "io.containerd.runtime.v1.linux"
        runtime_engine = ""
        runtime_root = ""
        privileged_without_host_devices = false
        base_runtime_spec = ""
        [plugins."io.containerd.grpc.v1.cri".containerd.default_runtime.options]
          Runtime = "/usr/local/nvidia/toolkit/nvidia-container-runtime"
      [plugins."io.containerd.grpc.v1.cri".containerd.runtimes]
        [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvdia]
          runtime_type = "io.containerd.runtime.v1.linux"
          runtime_engine = ""
          runtime_root = ""
          privileged_without_host_devices = false
          base_runtime_spec = ""
            [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvdia.options]
              Runtime = "/usr/local/nvidia/toolkit/nvidia-container-runtime"

$ sudo crictl runp pod-config.json
FATA[0002] run pod sandbox: rpc error: code = Unknown desc = failed to create containerd task: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v1.linux/k8s.io/802114cf7198dbf60ee84f049f447bde1831ff9349d1e54cc9219149cadb9b26/log.json: no such file or directory):
fork/exec /usr/local/nvidia/toolkit/nvidia-container-runtime: no such file or directory: unknown

@adisky Thanks for testing it out. I noticed you're using plugins."io.containerd.grpc.v1.cri".containerd.default_runtime in place of plugins.cri.containerd.default_runtime. Do you think this will automatically be interpreted as v2 spec eventhough the version field is not specified?

@adisky Thanks for testing it out. I noticed you're using plugins."io.containerd.grpc.v1.cri".containerd.default_runtime in place of plugins.cri.containerd.default_runtime. Do you think this will make any difference?

not sure i guess this difference is because i was using containerd from master branch and now cri repo merged in it.
can you paste full configuration file somewhere?

The configuration in the issue description is the full configuration that gets applied.


Add HTTP Capsule support

Not 100% if this the correct way to add new registries (some readme advice on contributions would be useful).
Took some liberties to adjust language to accomodate capsules, which aren't anything to do with QUIC apart from the varint and grease range mechanism.
Aside: its a tiny bit annoying that QUIC registries used decimal values for grease, while H3 and capsules used hex, but /shrug

@martinthomson I didn't merge the maths changed yet (was just double checking since I banjanxed them the first time)


🐛 Missing roles when running the dashboard locally

Describe the bug
The "Auth" page is not working correctly when running the dashboard in local development mode. Creating a user works fine, but clicking on a user and saving the form breaks the user's roles. The reason for this is probably that no user roles are available in the form, therefore the roles of a user get removed as soon as the form is saved.
On the permissions page, I use useGetRemoteAppRolesQuery (using a remote app client) instead of useGetRolesQuery as the former is available even if Nhost's backend is not. I don't know exactly how this will play with the things we discussed regarding the roles, but this needs to be fixed.
To Reproduce
Steps to reproduce the behavior:

Start an Nhost project locally by running nhost dev
Open http://localhost:3030
Go to the "Auth" page
Create a user
Click on the user in the list
Take a look at the "Default Role" and "Allowed Roles" sections

Expected behavior
I should see the available roles.
Screenshots

Additional context
This issue is going to be visible as soon as #1537 gets merged.

This bug is still in effect. I have been debugging it w/local CLI. It works fine on nhost.io.
I've done an A/B comparison
local:
POST https://local.graphql.nhost.run/v1
The gql is:
query GetRolesPermissions($appId: uuid!) {
  config(appID: $appId, resolve: true) {
    id: __typename
    __typename
    auth {
      user {
        roles {
          allowed
          default
          __typename
        }
        __typename
      }
      session {
        accessToken {
          customClaims {
            ...PermissionVariable
            __typename
          }
          __typename
        }
        __typename
      }
      __typename
    }
  }
}

fragment PermissionVariable on ConfigAuthsessionaccessTokenCustomClaims {
  id: key
  key
  value
  __typename
}

response local CLI dashboard:
{
  "errors": [
    {
      "message": "field 'config' not found in type: 'query_root'",
      "extensions": {
        "path": "$.selectionSet.config",
        "code": "validation-failed"
      }
    }
  ]
}

On nhost.io dash,
POST https://nhost.run/v1/graphql
response is:
{
  "data": {
    "config": {
      "id": "ConfigConfig",
      "__typename": "ConfigConfig",
      "auth": {
        "user": {
          "roles": {
            "allowed": [
              "user",
              "me",
              "sysadmin"
            ],
            "default": "user",
            "__typename": "ConfigAuthUserRoles"
          },
          "__typename": "ConfigAuthUser"
        },
        "session": {
          "accessToken": {
            "customClaims": [
              {
                "id": "User-Email",
                "key": "User-Email",
                "value": "email",
                "__typename": "ConfigAuthsessionaccessTokenCustomClaims"
              }
            ],
            "__typename": "ConfigAuthSessionAccessToken"
          },
          "__typename": "ConfigAuthSession"
        },
        "__typename": "ConfigAuth"
      }
    }
  }
}

... which allows the UI to render.
There is some kind of special config() fragment which doesn't work with the local graphql endpoint + permissions, whereas it works on the cloud. I don't understand that. I'm not sure how to fix it.
Maybe the endpoint is wrong on 'local', or its not the same?
Please review, its a drag on my local dev.
The workaround is to assign roles via gql but thats a drag.
more screenshots:
local example:

gql response

nhost.io

gql response

This is expected for now. The local cli doesn't have access to the configuration.


SerialIterator.is_new_epoch deprecated?

The IntervalTrigger was changed to accept float periods, therefore the flag is_new_epoch from the iterators are never used and maybe deprecated.
$ grep -r "is_new_epoch" *
dataset/iterator.py:    - ``is_new_epoch``: True if the epoch count was incremented at the last
iterators/multiprocess_iterator.py:        self.is_new_epoch = False
iterators/multiprocess_iterator.py:        self.is_new_epoch = False
iterators/multiprocess_iterator.py:        self.is_new_epoch = serializer('is_new_epoch', self.is_new_epoch)
iterators/multiprocess_iterator.py:                self.is_new_epoch = True
iterators/serial_iterator.py:        self.is_new_epoch = False
iterators/serial_iterator.py:            self.is_new_epoch = True
iterators/serial_iterator.py:            self.is_new_epoch = False
iterators/serial_iterator.py:        self.is_new_epoch = serializer('is_new_epoch', self.is_new_epoch)
training/triggers/interval.py:            return updater.is_new_epoch and updater.epoch % self.period == 0
training/updater.py:    def is_new_epoch(self):
training/updater.py:        return self._iterators['main'].is_new_epoch

Thank you for pointing out the issue. There are several things to consider to determine if we should make is_new_epoch deprecated or not.
As you mentioned, IntervalTrigger doesn't use Iterator.is_new_epoch any longer. But users can freely use this attribute for creating their custom triggers. On the other hand, Trigger.is_new_epoch is prone to cause the issue that IntervalTrigger had and solved in #1423.

OK, I only wanted to mention this.
I ran in the problem, that I wrote my own evaluator, which push the data to a log reporter for all kind of types (also matrices) and used is_new_epoch to ensure that the IntervalTrigger does not trigger.
But it is confusing, that there is a flag, that is no longer used and has such a special meaning.
I think this issue can be closed.

Thank you for sharing the problem you encountered. In my opinion, we should keep the issue open because the situation is not ideal and there can be a pitfall.


Potential memory leakage issues in ConnectionPool

Describe the bug

Based on the current implementation, we can find that Lru is encapsulated in RwLock<ThreadLocal<RefCell<T>>>. Please see https://github.com/cloudflare/pingora/blob/845c30d0825e7faf5e13ea88a9cc4949082bf00c/pingora-pool/src/lru.rs#L42-L50
There may be the following behaviors:

Thread 1 puts the Connection into its thread local Lru and the global PoolNode.
Thread2 is responsible for executing the idle_poll async task(such as the release_http_session method in v2.rs). Please see https://github.com/cloudflare/pingora/blob/845c30d0825e7faf5e13ea88a9cc4949082bf00c/pingora-core/src/connectors/mod.rs#L240-L243 and https://github.com/cloudflare/pingora/blob/845c30d0825e7faf5e13ea88a9cc4949082bf00c/pingora-pool/src/connection.rs#L218-L222
By executing the pop_closed method, it will successfully remove the Connection from the PoolNode, but it cannot remove it from the Lru.

Steps to reproduce
The existence of this memory leak can be proven through the following tests:
// pingora-pool/src/connection.rs
#[test]
fn test_pop_multi_threads() {
    use env_logger;

    let _ = env_logger::builder()
    .is_test(true)
    .filter_level(log::LevelFilter::Debug)
    .try_init();

    let meta = ConnectionMeta::new(101, 1);
    let value = "v1".to_string();

    let cp: Arc<ConnectionPool<String>> = Arc::new(ConnectionPool::new(3));
    // put meta in main thread
    cp.put(&meta, value);

    {
        let cp = cp.clone();
        let meta = meta.clone();
        std::thread::spawn(move || {
            // pop meta in child thread
            cp.pop_closed(&meta);
        })
        .join()
        .unwrap();
    }
}

// Add log print in the method pop_closed
fn pop_closed(&self, meta: &ConnectionMeta) {
    // NOTE: which of these should be done first?
    self.pop_evicted(meta);
    let r = self.lru.pop(&meta.id);
    debug!("pop from lru res: {}",r.is_some()); // the added log print
}

Console printing:
running 1 test
[2024-04-20T02:51:48Z DEBUG pingora_pool::connection] evict fd: 1 from key 101
[2024-04-20T02:51:48Z DEBUG pingora_pool::connection] pop from lru res: false
test connection::test_pop_multi_threads ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 9 filtered out; finished in 0.00s

Currently, the maximum size of memory leaks depends on the size setting of the ConnectionPool.
If I haven't missed any other important information, I guess the RwLock<ThreadLocal<RefCell<T>> is mainly to reduce lock contention. Another solution to this is to use the sharded lock way(every connection has its ID, which should not be difficult to achieve).
There are use cases in the Rocksdb project on how to use sharded cache, please refer to: https://github.com/facebook/rocksdb/blob/master/cache/sharded_cache.cc

Your observation is correct. This is by design. We trade memory for execution efficiency. I won't call it memory leak because the memory is still tracked in the LRU and will be reclaimed when the LRU evicts it eventually. The code just doesn't free it right away.
  Now we have things like TinyUFO. So we will optimize this in the future.


Make api.create able to run with one specific creator plugin

Changes
This PR closes #507. Depends on the type of input argument family of api.create, try matching all plugins via family if it's a string, or dierctly run the given plugin if family is that plugin.

Here's my test code
class CreateA(api.Creator):
    label = "A"
    family = "foobar"

    def process(self):
        print("A")

class CreateB(api.Creator):
    label = "B"
    family = "foobar"

    def process(self):
        print("B")

from avalon import api
from avalon.tools import creator
# Deregister all plugins for clarity
for path in api.registered_plugin_paths()[api.Creator]:
    api.deregister_plugin_path(api.Creator, path)

api.register_plugin(api.Creator, CreateA)
api.register_plugin(api.Creator, CreateB)

creator.show()

After this PR, only one creator obove will be triggered.

Merging this today :D

@davidlatwe I'm wondering. Since you've a ready to go test for this? Any chance you can add a test too for the unittests?
One that tests the old by string family behavior, and the new behavior?
It would be in core/avalon/tests then.

Just added, also fixed an obvious bug that I missed in ebcb78c. :P

Weird, the test actually failed, but build passed. :/
The test passed in my Maya session, maybe I should write the test plugin into an actual script file.

Ah, now I see the problem, the host registed in test_pipeline has no attribute 'maintained_selection'
avalon.pipeline: WARNING: 'module' object has no attribute 'maintained_selection'

Test fixed ! See log

Awesome work!
The only thing you are missing in the test is the test case where two plug-ins register to the same family where running it by family string name it should run both (as originally) and by solely Plugin run only the single one. That's the test case we want to preserve over time I suppose (or at least know about that it changes).
# psuedocode

data= {"value": 0}

class CreateA(api.Creator):
    label = "A"
    family = "foobar"

    def process(self):
        data["value"] += 1

class CreateB(api.Creator):
    label = "B"
    family = "foobar"

    def process(self):
        data["value"] += 10

from avalon import api
from avalon.tools import creator
# Deregister all plugins for clarity
for path in api.registered_plugin_paths()[api.Creator]:
    api.deregister_plugin_path(api.Creator, path)

api.register_plugin(api.Creator, CreateA)
api.register_plugin(api.Creator, CreateB)

api.create("foo", "my_asset", family="foobar")
assert data["value"] == 11, "Must run both Creator Plugins"

api.create("foo", "my_asset", family=CreateA)
assert data["value"] == 12, "Must run onlyCreatorA Plugin"

Following counting-like logic from pyblish tests, example.

That indeed much better ! Thanks. 🚀


[CMT-959-1330] add(article): yearn-at-eth-amsterdam - EN

Can't embed the tweet properly (see this issue: https://github.com/yearn/yearn-comms/issues/1318)
Also not sure how to add the link in the "Secureum Trust X and MEV Day" paragraph
Type of change

Please delete options that are not relevant and check the box.

[X] Add a new article/page
[ ] Fix a Typo
[ ] Add a new translation
[ ] Other

Resources
https://medium.com/iearn/yearn-at-ethamsterdam-a-look-back-78b95a61b9b1

The last video looks ok on hackmd, but not here... don't know why

@cryptoouf-blog please check the image formats, these are all png and some are super large. could you reupload them as jpgs and check the dimensions?

also, can you please make the folder directory lowercase ? Farrahmay --> farrahmay

will be merged once support is added for embedding YT videos / tweets


Remove greps in clean_vcf_part1 which could match sample IDs to variant IDs

This fixes a problem in clean_vcf_part1.sh which could cause problems in the calculation of median with-sex depth for allosome CNVs if a sample ID was present in the batch name. The root cause was a grep statement based on sample IDs which could match variant IDs. I've rewritten the bash pipe in question to use bcftools instead of grep/awk/vcftools. Also passed the allosome fai down into this task so that we are less dependent on hard coded searches for X and Y chromosome names, although there are still multiple places in this script where that is the case. Tested this out in a full single sample pipeline run and confirmed that a missing, clinically important chr X duplication in a male sample is now correctly called with this change.

As far as I know there aren't any other bugs related to this, but that doesn't rule out the possibility, so it's probably safest not to put sample IDs in the batch name. However, it's a natural thing to want to do when running the single sample pipeline. Perhaps we should just make the pipeline create a batch name automatically (maybe something like GATKSVSingleSample_{TIMESTAMP}?) to avoid any chance of something like this again.


Remove work-arounds for setting cell_contents

Summary
Simple assignment to cell_contents works starting from Python 3.7[1]. This is also the minimum supported version of Python according to pyproject.toml. It follows that we don't need complex work-arounds that were needed in the past.
Also tested on pypy 3.8.
[1] https://bugs.python.org/issue30486

@hynek Possibly someone noticed the change mentioned on this page: https://docs.python.org/3.8/whatsnew/changelog.html and assumed it was new in 3.8. However, this is a cumulative changelog, and the change is under "Python 3.7.0 alpha 1" :-)


[Proposal] Way to change transition for ALL pages at once

From what I'm understanding, you need to change each route to change its transition.
Would be nice to just set it globally once for all of them.
Use case, I want to have everything fade instead of default

From what I'm understanding, you need to change each route to change its transition.
Would be nice to just set it globally once for all of them.
Use case, I want to have everything fade instead of default

Hi, this is very anti-pattern.
I understand that you want this feature to make your job easier, but you cannot change all routes transitions in your app, it will not be accepted by the AppStore.
I created GetPlatform in the last update to identify the platform being used and use the native one by default because I had an application declined in the AppleStore for using transitions not compatible with Human Guidelines.
So even if you forget to define a transition, the default will still be the native one.
Transitions are created to be used casually, on android you can change as you like, but on iOS you will need the native transition, or your app will be declined.
Obviously using some transitions in your app in fade will not make it be rejected, but the transitions of the main screen, if they have a very different transition, manual analysis will decline your app.
And this is not just me, I have devs friends who work in companies like Facebook, and in a conversation they told me that they, which are giants, have already had updates refused, imagine smaller companies. Facebook has even adopted the cupertino transition by default for Facebook (if you open your Facebook application on an android now, you will see that the transition is all cupertino) because android approves anything, but iOS does not, at least for now. Google has also changed the policy of accepting apps a lot, icons that could be literally anything, now only material icons are accepted, and I believe that in the future they can also become strict, and at that point, it is better to follow the rules of the material, which makes it clear that Android transitions must have a "material fade" effect.
That said, I have no intention of defining this feature, as I find it harmful for less experienced people, who may for lack of information have their application rejected, at least for now, in the AppleStore.
And I advise you that unless you intend to launch an Android-only app, don't abuse Transitions.fade. It moves to Mac programs (I have one in the store with Flutter), but not iOS.

I'm building a web app, not an iOS app

In the next update I will improve Get.config on the stable branch (currently this feature is only available on stable, because a lot has changed in the Framework on the dev that made it difficult to launch this feature) and I will launch it on the dev branch, and maybe I add the option to have a standard transition.
I will also decide whether or not to launch the "defaultTransition", and if I do, I will make it explicit in the documentation that for multiplatform applications this would be a bad practice, but that for uniplataforms applications it can be useful.
If I include this in Get.config, I will mark this issue to let you know, but I will close it for now.

Added on lastest update
use:
Get.config(defaultTransition: Transitions.fade);

so great to hear that you implemented this!
Unfortunately it is not working for me.
I went quickly through the source code, and although I see it implemented on get_main.dart I don't see it being used on GetRoute anywhere... I might have overlooked something, but since it is not working, there might be something missing?
At the same time, if this needs fixing, it would be nice to also have a defaultTransitionDuration

I just tested this on android, iOS, web and desktop, and they both work properly.
See the following reproduction code:
import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  Get.config(defaultTransition: Transition.downToUp);
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData.dark(),
      navigatorKey: Get.key,
      home: First(),
    );
  }
}

class First extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.add),
          onPressed: () {
            Get.snackbar("hi", "i am a modern snackbar");
          },
        ),
        title: Text('First Route'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Open route'),
          onPressed: () {
            Get.to(Second());
          },
        ),
      ),
    );
  }
}

class Second extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(
          icon: Icon(Icons.add),
          onPressed: () {
            Get.snackbar("hi", "i am a modern snackbar");
          },
        ),
        title: Text('second Route'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Open route'),
          onPressed: () {
            Get.to(Third());
          },
        ),
      ),
    );
  }
}

class Third extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Third Route"),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            Get.back();
          },
          child: Text('Go back!'),
        ),
      ),
    );
  }
}

My test was using common routes, and it was passing everything. I included a test with named routes and it failed at some points in Get.config in previous versions. I think the named routes were ignoring the feature somewhere in GetRoute, so I decided to centralize everything in the same resource and access it through a get to avoid any problem or human error. If there was still an error with Get.config it was fixed in the latest version, where all features were extensively tested to backport to the stable branch. This should definitely be working now.

Yup! This is working great now! You are great
How do you feel about adding a defaultTransitionDuration as well??

Yup! This is working great now! You are great
How do you feel about adding a defaultTransitionDuration as well??

I will probably add it in the next update, the last issue made me wonder if I should create a parameter in Get.back () to make it optional to close snackbars/modals together with Get.back() and make this also a global configuration parameter, but that would force people to add GetObserver in addition to Get.key. I don't know if people prefer this, or a Widget inherited from MaterialApp as a GetMaterialApp that already has all the necessary settings, and it was possible to make the Global settings directly on it.
The second option seems to be easier, however it can seem aggressive to Dev to change a widget that level.
I am safe to do so because I have been using the Library in more than 30 apps for almost a year (this was my internal Library before opening opensource), and 2 of them have more than 2 million active users per day. I know that Get is more stable than even the standard Navigator, there are many hotfixes that have dozens of issues open on Flutter (like SafeArea on BottomSheet), but users who find the library may not know it.

This doesn't work on 1.17.1


[ResourceSerializer] use resource value instead of model attribute to get relationship model id

Currently relationship id i.e. "relationships": { data: { "type": "users", id: "ID" } is taken from source model attributes. However, in the same time the id present included model is taken from the relationship resource.
This is fine when I don't override id and use db values , but when I want need override (e..g I want to use uuid which is not a primary/foreign key in terms of db, because the collection was created before we started using uuid).
What needs to be fixed is to always rely on relationship resource to get its id.

@kknapik Thanks!