STORM-2792: Remove RAS EvictionPolicy and cleanup

@revans2 interesting work!  Though the formula used for the DefaultSchedulingPriorityStrategy seems to have a bias towards smaller topologies.
For example:
Total amount of Resource R in cluster= 1000
Topology 1 Resource R: Request = 100 Guarantee = 200
Topology 2 Resource R: Request = 10 Guarantee = 20
Topology 1 score = (100 - 0 - 200) / 1000 = 0.1
Topology 2 score = (10 - 0 - 20) / 1000 = 0.01
Topology 2 will be prioritized or topology one correct? Even though the ratio their respective request and guarantee is the same.  This may cause larger topologies to be starved.

@revans2 can you elaborate on why EvictionPolicies are no longer needed?

This is very long and I don't expect everyone to read the whole thing.
@jerrypeng your numbers are off for big vs small topologies.  The scores will be negative for your example.
-0.1 for Topology 1 vs  -0.01 for Topology 2.  The smallest of these scores (-0.1) is the larger topology (Topology 1) so it would be prioritized first.
The algorithm is kind of odd.  It was designed with #2385 (Generic RAS) in mind.  Specifically GPU support.  There were 2 big goals here.  First we wanted something that we could apply in a simple way across all types of resources (No matter how many resources there were), and second we wanted to prioritize requests that needed a rare resource over requests that needed common resources.  We had a lesser goal of trying to be fair between users over their guarantees.
Why do we have these goals? We found a rather large problem with resource fragmentation in our clusters.  Up to 20% of the total resources end up not being usable because a single resource was effectively exhausted on a node before the other one could be.  GPUs are expensive and having one of them sitting idle because we filled the node up with other things is really hard to explain to a customer that needs the GPU.  If you look at #2385 you see that @govind-menon  has adjusted how nodes are selected for an executor.  Each time an executor is scheduled the nodes are sorted again.  The sorting of the nodes has also changed, even though that might be hard to see because of some of the refactoring.  It now tries to avoid nodes that have a "rare" resource on them unless the request needs that resource.
This algorithm tries to help by handing the other algorithm topologies that use rare resources first.  Rare in this case means it uses a higher percentage of what is in the cluster as a whole.  It is not perfect in this, because It has to take into account the user given priority of the topology first along with guaranteed resources.  So it ends up prioritizing larger topologies that fit within a users guarantee.  But once a user goes over their guarantee, it treats all users equally and will prioritize users that have less resources requested (hence smaller topologies likely show up ahead of bigger ones).  We may adjust this over time as we get more experience running with these kinds of topologies, and may end up evicting parts of a topology to make room for another topology that needs a fragmented resource.  But I would really like to avoid this if at all possible.
Now to answer your second question about why I removed the eviction strategy.  On our staging clusters we have been running with a FIFO eviction strategy for the same reasons described in the FIFO prioritization strategy in this patch.  A few times we saw nimbus get stuck in what looked like an infinite loop trying to schedule topologies.  We were never able to come up with a reproducible use case but the way the APIs were written with each strategy returning a single item (the next one to schedule or evict) that you could imagine how they could feed off of each other and cause a loop to happen.  We "fixed" the issue internally by limiting the total number of times a topology will be scheduled before we give up on trying to schedule it.    I kept it for this patch, but I am leaning towards removing it.  Instead if we have a single source of truth for a total ordering of topologies there is no way for it to be inconsistent.  We just try to schedule starting at the most important and evict starting at the least important.  This means there are no unbounded loops in the code, so there is no way to be stuck in one of those loops.  With that change we only needed one plugin to sort all of the topologies into a total order, so that is the new prioritization strategy API.  Hence no need for an eviction strategy.

@revans2 thanks for the explanation! Sorry my math was wrong!  I understand the context a lot better now! Though my intuition tells me that if larger topologies usually get scheduled first, this will likely to result in more fragmentation and less topologies to be scheduled overall if there is a lot of resource contention.

@jerrypeng,
I am not sure your intuition is right, but this is all still theoretical until we roll it out and see what happens in real life.  We have run some simulations that at least for our simulated load it does not appear to be any worse and in cases where there are GPU like resources it is a lot better.
Solving fragmentation should mostly be around matching the ratio of resources in a request to the resources left on a node, which is a lot of what your initial RAS paper was about.  The problem is that when sorting the nodes we prioritize proximity to other parts of the same topology over fixing fragmentation.  So fragmentation really only matters when scheduling the first executor on a node.  Because of this I don't think it is the size of the topology that matters as much as it is the size of the individual components.  To really solve this we need a way to balance the desire to co-locate components with how well does this request fill what is left on the node.  I am hopeful that when we finish https://issues.apache.org/jira/browse/STORM-2684 the scheduler will group parts of a topology that give it the biggest win within a single "super component" and then if we need to we can look at having a config that controls when to switch from sorting by co-locating to sorting to reduce fragmentation.  i.e. when do we move on to the next node in the rack even if this one is not full because we are starting to run low on resource X.
If you have suggestions or want to collaborate on it that would be great, but you know how hard it is to for us to get legal approval to share too much more than just code. So for now we want to try and get this feature rolled out and then monitor it to see how it goes and if we need to adjust anything.
@govind-menon,
Do you have some of the simulation results in a human readable format we can share?  Also if you have the code we used to run the simulation putting an Apache license on it posting it would be great so that others can reproduce what we have done.

@revans2 yup you are right about it being more about the size of the component.  Great work!  Thanks for sharing the detailed information as its a good learning experience for me!  Keep me in to loop on how it goes.  It would be great if yahoo could release info about topology structure so people like me can run the simulation of scheduling over a large number of topologies.

@jerrypeng yes I need to go follow up on my previous ask and see where the lawyers are at with it.


Spandex.update_span unexpectedly resets :service of the current span

Reproduced in v1.6.1 and edge version from Github.
Let's assume the following:
# config/dev.exs
config :my_app, MyApp.Tracer,
  service: :my_app,

# in the module I'm tracing
@tracer_opts [service: :etl, type: :custom, resource: "MyApp.SalesStatsETL"]

Example 1
MyApp.Tracer.trace "trace_name", @tracer_opts do ... end

OUTCOME: in Datadog there's a trace with service="etl", which is expected 👍
Example 2
MyApp.Tracer.trace "trace_name", @tracer_opts do
  MyApp.Tracer.update_span(
     sql_query: [query: "SELECT ..", db: "some_db", rows: "42"]
  )
end

OUTCOME: in Datadog there's a trace with service="my_app" 👎
EXPECTED OUTCOME service should remain "etl" since it was not overridden explicitely
Example 3
MyApp.Tracer.trace "trace_name", @tracer_opts do
  %{service: service} = Core.Tracer.current_span()
  MyApp.Tracer.update_span(
     sql_query: [query: "SELECT ..", db: "some_db", rows: "42"],
     service: service
  )
end

OUTCOME: in Datadog there's a trace with service="etl" 👍

Still a bit too busy to look at this, but from what I can tell this should be a relatively simple bug in Span.update_span/2. I will try and find some time tomorrow to look closer.

This is resolved in version 1.6.2


Add Funkwhale

https://www.funkwhale.audio/

Where? To What? And Why? Are you sure this is the right place for this issue and with an appropriate amount of context?

To this. https://podcastindex.org/apps

Create a PR against https://github.com/Podcastindex-org/web-ui/blob/master/server/data/apps.json

I was SURE this was the correct repo that the link on the apps page took me to.


Allow a PrivacyRequest level encryption key to be supplied on request creation

Fidesops must support the ability to supply a custom encryption key on request creation, that will be used throughout the PrivacyRequest flow. This encryption key should be used to encrypt the access data we return to the user at the end of a request before it is uploaded in either JSON or CSV format.
This encryption key can be ignored for erasure policies for now.

Pieces we still need to settle on:

How will the encryption key be specified in the request? Old planning docs suggest it should be sent as a request header using a custom ethyca header parameter, but this might be outdated.
How do we temporarily store the encryption key? it could be cached in Redis alongside the identities or stored encrypted itself on the PrivacyRequest, I like the latter.
What encryption algorithm do we want to use here? We already have support for AES GCM Encryption, but there's this bit about the nonce, if we are generating it ourselves (in which case, we need to give this to the user somehow), or they are supplying that too.

Updates:

How we will specify encryption key: Via a request header with the custom parameter x-fidesops-encryption-key
Encryption key will be temporarily cached like identities
We will use AES GCM to encrypt, requiring use to supply both nonce and encryption key.


STOR-1311: Implement operator for Secrets Store CSI Driver

https://issues.redhat.com/browse/STOR-1311
This kind of works: it builds, deploys, and starts the driver pods. More work to do still, but after this merges we can at least get CI and tide setup for this repo.
cc @openshift/storage

/lgtm
/approve


currentPage in paging getting reset to 0 even when using ng-model binding to a scope variable

Everything is working fine using the 3.0.4 version. I have a table which uses server-side query and gets displayed properly with paging.
Now, in one of the columns of the table, I have a ui-router link i.e sref attribute clicking on which I navigate to a child state i.e   from parent state "view" to child state "view.{number}"  On each server-side call, I'm caching the search criteria and the page numbers so that I can restore table state.
Now, when I go back to the parent state where the table is defined, in the controller, I'm getting the cached pageNumber and passing it to the server-side query. The server returns correct data as per the pageNumber but the paging starts from 0.
<table tr-ng-grid="" current-page="requestedPageNumber" on-data-required="queryServer(currentPage, pageItems, filterBy, filterByFields, orderBy, orderByReverse)" >  </table>
I can see that the ng-model requestedPageNumber becomes 0 after the call to the server has been made. I can explicitly set the model to an integer and it works but it will do one more server call and its not a solution either.
I think the Issue 28 describes by issue. But, your Test Case is also failing.
Sorry for not being able to create a plunker for this. If you need more details, let me know.

Indeed, the first time around the current page index gets reset to zero, thus blocking you from restoring its state.

I just pushed a fix on master that also fixed the problem on the demo site.
Could you please download the grid from there and give it a try. Thanks.

OK. I tried my max to fix this but couldn't. It works fine only when I comment the below line in the code scope.gridOptions.currentPage = scope.lastPageIndex; and ironically it does exactly what you have commented above the line as this will unfortunately trigger another query if in server side data query mode :smile:
So, if I don't comment it, it'll fire another GET request to server with the currentPage set to 0 making my life hell :expressionless: It would be great if you could fix this.
Also, I did an update via bower and I didn't get the latest src files in to my directory. I had to manually import it. Did I miss something ?

Hahaha that's right. That code will trigger another request, but that check is for something else entirely. It caters for situations where you are setting a page index which isn't in the range of pages computed based on the total items count parameter, which in your case I have a strong suspicion you forgot to set when you restored the state.
Bower wise, this is still a a Release Candidate. I just want to wait a bit longer till advertising that a new version is out.

OK. I admit I had a constant 2 being set in the callback but even when I set it to the correct count say 10 , its executing another request to server with currentPage = 0 overwriting correct request. So, I'll keep this bad boy commented out.
So, as of now I got the restore state to work fine  :sunglasses: but only in non-filter mode. With the filter mode set,  its getting a bit complex.
filter-by-fields="displayTable.filterFields"  I'm using this to restore the filters on navigating back from child state to parent state. It works but the input is not showing the data in it.
If the value of the json was like this "filterFields": { "name": "S" }, the input associated to the name column is blank instead of the having the value S. This makes it difficult to clear the filters. I have to input a dummy value and then clear it manually which is a bad bad workaround.
Can you please have a look ?
I'll get you :coffee: if we can get this one addressed :grin:

Yeah, it turns out the filter-by-fields was not monitored for changes coming from the outside. It should be working now. I've also updated the Server Side section on the demo site with a "live" example, so we can keep an eye on it. Also added it in the Configuration section.
The total-items is a nuisance in server side query mode, and in your case it must be restored as well with the last known value. It doesn't make too much sense I know, as the callback to the server should finally set its value, but for now we'll have to live with it. Otherwise I'll have to put in a bunch of logic to ignore the discrepancy between the restored page index and the number of items, which initially should be ignored.
And the most important thing to remember, if you do not want to get multiple. make sure you've got the data bound variables set up prior to the grid grabbing a hold of their value.

Thanks a lot. Will get the latest code and test. Good to see the documents being updated as well. You've got a very good library and it should be way more popular that it is currently.  When can we expect the next release ? 22nd March ?

Depends on the bugs reported by people till then. And I'm afraid by the looks of things, not well : #167


[openssl] remove no-stdio for iOS

Describe the pull request

What does your PR fix?
Fixes #25990
Remove a configure option, no-stdio, so PEM_read_PrivateKey, PEM_read_PUBKEY and some other PEM related functions shall be compiled.

Which triplets are supported/not supported?

Yes

If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/

/azp run

This seems correct according to https://github.com/openssl/openssl/issues/9037, thanks for the PR! LGTM once the CI is green.


Periodically run one or more reconcilers

From time to time we need to trigger a full sync of all teams across all tenants. This is currently somewhat cumbersome to achieve, so a possible solution would be if the reconcilers ran periodically to achieve eventual consistency. This is probably not needed for all reconcilers.
/cc @jhrv

Will do this once #101 is fixed.

Nais!


cli: move to new versioning API routes

All versioning-related APIs now live under /versions, and the shape of the revision-related APIs has changed somewhat.
This has the nice side-effect of removing an API call when using tagged versions.

Unrelated to the PR, but just curious: any reason why these paths use %v and not %s? Afaik, %v is most generic, wouldn't it be safer to use %s?

%s would let the linters catch cases where we're passing non-strings, yes. But in these cases we also don't really care--if we were writing in TS we'd probably just use string interpolations for these cases, which is morally what we're doing with %v.


new-quickmark

Current coverage is 91.85%

Branch #1170 has no coverage reports uploaded yet.

No diff could be generated. No reports for new-quickstart found.

Powered by Codecov. Updated on successful CI builds.

Looks good.


sisotool - Show only rootlocus

Hi all,
Is there a simple way to use matlab.sisotool but only get the Root locus plot? I think it is kind of annoying to have always all these other 3 plots if I am only interested in looking at the roots.

If not, I could implement this feature (maybe add a boolean variable to the kwargs?) if you think it's worth it...
Best,
Lucas

hi @egidioln sisotool uses root_locus (link) internally. Does just calling root_locus(sys) do what you need?


Fixes accidental parse fail when trace ID is padded right

Padding the right side of the trace ID with zeros is bad practice, but
it should be permitted. This changes the code and tests to ensure we
don't accidentally fail.

this is a more robust version of the first commit on #693 (will rebase that after)


Add setErrorHandler and fatalErrorHandler

exposes setErrorHandler from mlx-c
Adds a fatalErrorHandler which calls fatalError, recording a stack trace and attaching the debugger in Xcode. It would be nice to set this by default in mlx-swift, but I'm not sure if that's possible.

Usage: setErrorHandler(fatalErrorHandler)

Looks nice!  Please apply swift-format as per:

https://github.com/ml-explore/mlx-swift/blob/main/CONTRIBUTING.md#pull-requests

Thanks


How to add "anullsrc" to a video stream prior to concatenation.

I am trying to convert DVD (VOB) files into an MP4. The first 2 files, don't have an audio track.
What is the proper syntax for adding an "anullsrc" audio track to video streams that do not have one, prior to concatenation?
ffmpeg command generate:
ffmpeg -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VIDEO_TS.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_0.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_1.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_2.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_3.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_4.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_02_0.VOB -i /Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_02_1.VOB -filter_complex [0:a]nullsrc=r=480000[s0];[0:v][s0]concat=n=2[s1];[1:a]nullsrc=r=480000[s2];[1:v][s2]concat=n=2[s3];[s1][s3][2][3][4][5][6][7]concat=n=8[s4] -map [s4] /tmp/test.mp4

import os
import ffmpeg
global_args = {
    'vcodec'    : 'h264_videotoolbox',
    'acodec'    : 'aac',
    'vb'        : '7750k',
    'ab'        : '192k',
    }

concat_args = {
    'v' : 1,
    'a' : 1
}

input_args = {
}

nullsrc = {
    'filter_name' : 'nullsrc',
    'r'           : 480000

}

# Path shorted for readability (DIRECTORY is set)
# python.ffmpeg set up this way for debugging purposes.

vob_stream = list()
file1 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VIDEO_TS.VOB'))
file2 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_01_0.VOB'))
file3 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_01_1.VOB'))
file4 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_01_2.VOB'))
file5 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_01_3.VOB'))
file6 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_01_4.VOB'))
file7 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_02_0.VOB'))
file8 = (ffmpeg.input(DIRECTORY + '/VIDEO_TS/VTS_02_1.VOB'))

video1 = file1.video
audio1 = file1.audio.filter(**nullsrc)
media1 = ffmpeg.concat(video1,audio1)

video2 = file2.video
audio2 = file2.audio.filter(**nullsrc)
media2 = ffmpeg.concat(video2,audio2)

merged = ffmpeg.concat(media1,media2,file3,file4,file5,file6,file7,file8)
output = ffmpeg.output(merged,mp4_out)
output.run()

This produces the following errors.
Input #0, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VIDEO_TS.VOB':
  Duration: 00:00:00.03, start: 0.060000, bitrate: 1964 kb/s
    Stream #0:0[0x1bf]: Data: dvd_nav_packet
    Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m, progressive), 720x480 [SAR 8:9 DAR 4:3], 9000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
Input #1, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_0.VOB':
  Duration: 00:00:00.11, start: 0.060000, bitrate: 10443 kb/s
    Stream #1:0[0x1bf]: Data: dvd_nav_packet
    Stream #1:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m, progressive), 720x480 [SAR 8:9 DAR 4:3], 9000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #1:2[0x20]: Subtitle: dvd_subtitle
Input #2, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_1.VOB':
  Duration: 00:17:42.16, start: 0.060000, bitrate: 8086 kb/s
    Stream #2:0[0x1bf]: Data: dvd_nav_packet
    Stream #2:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 [SAR 8:9 DAR 4:3], 7758 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #2:2[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
[mpeg2video @ 0x7fe489829c00] Invalid frame dimensions 0x0.
    Last message repeated 13 times
Input #3, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_2.VOB':
  Duration: 00:17:41.70, start: 1062.172000, bitrate: 8090 kb/s
    Stream #3:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 [SAR 8:9 DAR 4:3], 7758 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #3:1[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #3:2[0x1bf]: Data: dvd_nav_packet
[mpeg2video @ 0x7fe489027e00] Invalid frame dimensions 0x0.
    Last message repeated 7 times
Input #4, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_3.VOB':
  Duration: 00:17:41.91, start: 2123.932000, bitrate: 8088 kb/s
    Stream #4:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 [SAR 8:9 DAR 4:3], 7758 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #4:1[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #4:2[0x1bf]: Data: dvd_nav_packet
[mpeg2video @ 0x7fe48d007c00] Invalid frame dimensions 0x0.
    Last message repeated 13 times
Input #5, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_01_4.VOB':
  Duration: 00:04:08.42, start: 3185.788000, bitrate: 8088 kb/s
    Stream #5:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 [SAR 8:9 DAR 4:3], 7758 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #5:1[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
    Stream #5:2[0x1bf]: Data: dvd_nav_packet
Input #6, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_02_0.VOB':
  Duration: 00:00:00.03, start: 0.060000, bitrate: 1964 kb/s
    Stream #6:0[0x1bf]: Data: dvd_nav_packet
    Stream #6:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m, progressive), 720x480 [SAR 8:9 DAR 4:3], 9000 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
Input #7, mpeg, from '/Volumes/My Passport/Project/DVD_Files/VIDEO_TS/VTS_02_1.VOB':
  Duration: 00:00:32.38, start: 0.060000, bitrate: 8076 kb/s
    Stream #7:0[0x1bf]: Data: dvd_nav_packet
    Stream #7:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, bottom first), 720x480 [SAR 8:9 DAR 4:3], 7758 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #7:2[0x80]: Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
[AVFilterGraph @ 0x7fe488d06900] Too many inputs specified for the "nullsrc" filter.

Hey @kkroening! Any updates on this? Having issues using anullsrc too.

@kkroening @jbitton If you guys just want to add the pause in the start you can use for video set_pts(f"PTS-STARTPTS"+{<time in seconds here>/TB}) and for audio filter_('delay', <time in miliseconds>)

audio_cmd = 'anullsrc=r=16000:cl=mono:d={}'.format(duration)   audio_stream = ffmpeg.input(audio_cmd, f='lavfi')
I add anullsrc in ffmpeg-python like above and works for me, in case anyone is still looking for solution to this in 2022


Custom logger for Redis pool

Is your feature request related to a problem? Please describe.
Currently, if I set LOG_LEVEL to debug for running vapor apps, all redis commands to check the job queue produce 2 log entries and if you consider that it is doing once each second per worker it produces a lot of logs. As a result, it is very hard to find anything usable in the log without grep.
Describe the solution you'd like
It should be possible to set log level/custom logger for redis pool - something like:
app.queues.use(try .redis(url: redisUrl, logger: myCustomLogger))

In general I'm against this. The whole design of swift-log and the ecosystem is a shared central logger and allowing this to be broken is likely to cause confusion. IMO the focus should be on cleaning up the logs so we don't have duplicates and enhancing the metadata provided to the logger to allow logging tools to better filter logs.
Happy to open it up for discussion however


Fixed #2219 - formatting of new Angular control flow syntax

Description

[ ] Source branch in your fork has meaningful name (not main)

Fixes Issue:
Before Merge Checklist
These items can be completed after PR is created.
(Check any items that are not applicable (NA) for this PR)

[ ] JavaScript implementation
[ ] Python implementation (NA if HTML beautifier)
[ ] Added Tests to data file(s)
[ ] Added command-line option(s) (NA if
[ ] README.md documents new feature/option(s)

Hi js-beautify Team,
I started fixing the bug mentioned above, but 3 tests are failing and as I couldn't proceed further, I'd like to have some advice.
Previously, when the algorithm found the {pre{{field1}} {{field2}} {{field3}}post token, it was treated as a word. Because of the new Angular syntax, the single curly brace in my implementation is treated as a new type of token, BRACE_OPEN. Somehow, I'd have to find the curly brace only in case of control flow syntax (e.g. @if(condition) {), but not in other cases (so the {pre... token should remain as a word). I can only make this work if there is already a space before the { character (but it cannot handle cases where there is not (e.g. @if(condition){), or I can handle both with-space and without-space versions (this is the version commited here), but then it makes 3 handlebarsjs test cases fail.

Hi again,
I've come to a better solution which only affects the new control flow syntax and doesn't affect the other cases. I'll commit it today after I've cleaned up the code.

The already existing tests are successfully run, I've yet to write some tests which have the new angular control flow. I'll do it early next week.

Hello,
any updates on this pull request?
More and more developers are migrating to Angular 17 and the new syntax is really counterproductive without correct indentation.
I'm sure you guys have a lot of work, so take this as a gentle reminder 🥇

Hello,
any updates on this pull request?
More and more developers are migrating to Angular 17 and the new syntax is really counterproductive without correct indentation.
I'm sure you guys have a lot of work, so take this as a gentle reminder 🥇

It will sure take some time until this formatting improvement is usable in VSCode. Until then, personally, I decided not to use the new syntax. While I've upgraded to Angular 17, I have postponed the migration of the control flow syntax. Good thing is that until then, the old syntax can be used.

That's what I did as well but the new control flow seems very exciting :-)
I'll be patient, thanks

Will this be merged anytime soon? If not I guess I can look at Prettier.

So, I've written a lot of stuff here, but to summarize:
I've changed the selection of the @-syntax, now it is done partly by a pattern.
Unfortunately, I don't have now enough time to revise the code and change the templating to none by default. Please let me know what else you'd like to be done in this PR.
This modification should not cause conflicts to existing users (I doubt that a lot of users use @something { in the code in a non-angular context) and the indenting of angular files should more-or-less be OK. A lot to be done here when the templating gets set to none by default.

Or to say it another way, {{b}} @if (a > b) {is less than}@else{is greater than or equal to} {{a}}.

For this, I've found a bug in my code: the @if (a > b) { is registered as a control flow opening token, but the } character is not as a closing one (because it is a part of the than}@else{is TK_TEXT token. When we implement the improvement of the templating option, we can improve the selectors and register the tokens in a better way, but for now I'm planning to just check for a } character : if currently a control flow is opened, it's a control flow closing character. Any other way: it's just text. I'm doing it today-tomorrow also.

I've come up with a solution for this: if we have a control flow syntax open token, then we know that the } character, taking into consideration that the handlebars ({{ and }} characters) are already tokenized when we are parsing through words, cannot be anything else but the control flow's closing token. If we don't have an opening control flow token, I'm treating it as just a normal character in the text token.
Just one sidenote to your idea, saying that we should change the indent_handlebars settings:
In Angular, handlebars also function as special characters, so tokenizing them as TAG_OPEN and TAG_CLOSE is necessary for this control flow to work. The good news is that it seems that they doesn't conflict (the handlebars and the angular templating, I mean). As the indent_handlebars setting has to be set to ON for this control flow indentation to work, I suggest just renaming that to something like indent_handlebars_and_angular. This way, it will be more verbose for users to know that it has to be turned on for the indentation to work in Angular.

Thanks for all the hard work.

@gergely-gyorgy-both
Please don't burn yourself out on this.  You've done great work. Let's me take a swing at this and see if I can come up with something.
I do have one request: if you can, try to avoid force pushing.    If I can see the whole commit history, I have a better chance of being able to help.
Thanks again for all your hard work on this.

I couldn't stop thinking why the build fails, because I didn't modify anything except the html beautifier, the tokenizer and the html test file since the last successful build. It seems like that for some reason, when the make creates the js-beautify folder in build/node_modules, the src folder doesn't get created there, but the script looks for files inside it. When copying the src folder there manually, the build succeeds.

I couldn't stop thinking why the build fails, because I didn't modify anything except the html beautifier, the tokenizer and the html test file since the last successful build. It seems like that for some reason, when the make creates the js-beautify folder in build/node_modules, the src folder doesn't get created there, but the script looks for files inside it. When copying the src folder there manually, the build succeeds.

It's the build action for the project itself that's broken down, unrelated to this PR. Same error in all branches if I look at the github "Actions" tab.

I couldn't stop thinking why the build fails, because I didn't modify anything except the html beautifier, the tokenizer and the html test file since the last successful build. It seems like that for some reason, when the make creates the js-beautify folder in build/node_modules, the src folder doesn't get created there, but the script looks for files inside it. When copying the src folder there manually, the build succeeds.

It's the build action for the project itself that's broken down, unrelated to this PR. Same error in all branches if I look at the github "Actions" tab.

Doh.  It looks like anew version of npm broke things.  😭  Fixed now in main.

Hi team,
Many thanks for your hard work on this pull request. I think the entire Angular ecosystem is waiting for this awesome work to be merged.
Does anyone know what the process or timeline would be in getting this into vscode asap.
Regards,
Tarek

@bitwiseman , could you provide some estimation for your review please?

Is this happening?

@liesahead @NachmanBerkowitz @thaoula @antur84
I had concerns about this change (that I've already mentioned to @gergely-gyorgy-both) related to side effects on regular HTML files.  But I see he's made this functionality on turn on if indent_handlebars is enabled.  While a little it is a little odd, it is a reasonable way to ensure people only see this functionality if they opt-in to it.
@gergely-gyorgy-both
I've made one change to the detection regex to limit it to a smaller set of matches - @[a-zA-Z].

@bitwiseman , thanks for finding the time to review this. I understand that it is a risky one (as it targets specific framework), so understandable it takes much time. And thanks @gergely-gyorgy-both for doing so much work on this.

@liesahead @NachmanBerkowitz @thaoula @antur84 I had concerns about this change (that I've already mentioned to @gergely-gyorgy-both) related to side effects on regular HTML files. But I see he's made this functionality on turn on if indent_handlebars is enabled. While a little it is a little odd, it is a reasonable way to ensure people only see this functionality if they opt-in to it.
@gergely-gyorgy-both I've made one change to the detection regex to limit it to a smaller set of matches - @[a-zA-Z].

First of all, thanks for re-reviewing this PR. While indent-handlebars was used before for something else, it gets the job done here, and maybe the naming can also stay as it is (as we are actually indenting content between handlebars).
Your regex change is reasonable, I couldn't find anything official about what characters can an opening token contain.
If I take a look at the VSCode hightlight (if the official Angular extension is installed), I can see that, for example, any number character can be in the token (the token is purple, so it's recognized as one).

There cannot be some characters (e.g. ^)

but there can be other, non-azAZ characters (e.g. japanese, chinese, arabic, etc.).

For now, it seems that no custom token can be made, so only those are in use what Angular predefined (and they only contain normal characters, so all's OK for now), but when(/if) they make it possible to create custom ones, we might have to change back the regex to the one which recognizes non-azAZ characters after the @.
Again, thank you for your efforts in reviewing this PR and helping me.

Whoa, this is finally happening? :D

Was it forgotten again? 😿

Was it forgotten again? 😿

It's not up to me, and I'm pretty sure that @bitwiseman is very busy. If there's anything to do, I'll try to respond quickly, but we should be patient.

Was it forgotten again? 😿

It's not up to me, and I'm pretty sure that @bitwiseman is very busy. If there's anything to do, I'll try to respond quickly, but we should be patient.

I understand both of these points, just keeping this thread alive so this (piece of cake) work wouldn't be abandoned.

Was it forgotten again? 😿

It's not up to me, and I'm pretty sure that @bitwiseman is very busy. If there's anything to do, I'll try to respond quickly, but we should be patient.

Yeah, I meant no pressure, sorry. This is really something that will ease my mind while "angularing" on vs code. 🕺🏼

Sorry for the delay folks.

Hoorayyyyyyyyy
Thanks a lot :-)

Thank you. Is there any config necessary to get it to work?


feat: make NFTs discoverable in home assets page

Description
Experiment: Add the NFT dapp banner on the home assets page and see how users behave with Valora Analytics. This experiment can be controlled by Firebase Remote config.
Current Behavior: Assets page shows only fungible tokens, not NFTs.

Updated behavior: Adding NFT banner on the home assets page.

Other changes
N/A
Tested
Tested in iOS and Android emulator with Firebase remote config.
How others should test
With iOS, Android emulators.
Related issues

Fixes #2173

Backwards compatibility
Yes

close this PR to handle failed tests from scratch with another branch samuel/add-NFT-banner


How do I actually install this thing into Zepplin Wars!?!? You devs never NEVER detail HOW to install these aimbots into ROBLOX!! What console do I need to open? What file do I need to get to in ROBLOX's main files??

This is a module made by a developer for developers and it is not 100% intended for users like yourself. If you do want to use the aimbot refer to AirHub V2 (you can find it on my profile, it also utilizes an ESP module) and to use it you need a script execution engine which you can find one here: whatexpsare.online
Once you find an executor, you need to inject it and paste the script inside the IDE of the application and press execute. If the script doesn't appear then that means that the executor doesn't support it or you got lost somewhere along the installation steps. If I haven't been very clear you can look on YouTube or V3rmillion on how to download and install a working ROBLOX script executor.


Link to specific commit hashes from reference documentation

This is defense against the documentation links getting out-of-date every time
the types get updated in code.
Not 100% sure how to test this with circleci, but I tested the command locally
Testing:
Built with circleci on a devbox (mac OS was having a docker issue) and also changed the build command to this because I wasn't seeing output files saved anywhere on local disk:
DOC_GIT_REVISION="$(git rev-parse HEAD)" make docs && grep types.ts docs/reference/sdk/types/SystemAuthentication.md

This output printed shows that the new code is working (the commit hash is from this PR):
[types.ts:636](https://github.com/coda/packs-sdk/blob/e31687b1ca6b8940422948d7c1ddbf83b4f91ebd/types.ts#L636)

Not sure if we'd want to do this or not, but figured it was worth a discussion

Seems reasonable to me. There are instructions for local testing here. I ran into this issue when trying to use it though.

I was able to test this, kinda sorta, and it did catch a typo. Updated the description

Is it expected that the staged readthedocs site for this PR doesn't seem to reflect the changes? coda-packs-sdk--1919.com.readthedocs.build/en/1919/reference/sdk has links without commit hashes.

What configures this readthedocs build for PRs? I can't find anything about readthedocs in the repo, and it doesn't seem like circleci is involved in deploying them

What configures this readthedocs build for PRs?

It runs the mkdocs tool on it's own, using the mkdocs.yml config file and markdown files present in /docs. In this case the markdown files generated by typedoc are pointing to main, since the Makefile falls back to main when not explicitly specified.

Anyone have concerns about PR readthedocs links still going to main even though circleci builds wouldn't like to specific commit hashes (and/or ideas for how to make the readthedocs links aware of commit hashes)?

I think it's fine. We only use readthedocs for previews of PRs, so it's not something a normal reader would see. Maybe we can figure out something more sophisticated in the future.

Documentation links generated by circleci now seem to be working as expected, but I haven't deployed docs to prod since I think we're holding off on documentation releases until 0.11.0 gets tagged

Documentation links generated by circleci now seem to be working as expected, but I haven't deployed docs to prod since I think we're holding off on documentation releases until 0.11.0 gets tagged

great! yup we can hold off on that until we actually releas


unable to use master.key contents to create spendable wallet in Electrum

Hello,
I'm testing btcpaywall with live (not testnet) bitcoin payments.
I have the watch-only wallet set up with bitcoind, and it shows about $70 over three btcpaywall payments being in the watch-only wallet.
However when I try to spend those BTC by setting up a new Electrum wallet using the contents of master.key as a BIP39 passphrase, electrum shows:

the master.key passphrase passes the checksum for a BIP39 passphrase,
when I use 'Detect Existing Accounts' using that BIP39 passphrase, it says "No existing accounts found"
and when I create the wallet (using any of the three options, "legacy", "p2sh-segwit", or "native segwit" it doesn't see any of the coins I sent the watch-only wallet in bitcoind (it shows balance 0 BTC, and yes electrum shows it is synced with the network)

Has using master.key been tested using Electrum?
And/or what btc wallets is the master.key contents expected to work with?
Edit: or what am I doing wrong?

Hey @artvogel, good news.
Its quite easy to access the funds on a pruned node. Importing the private key immediately associates the previously watched addresses with newly imported private keys, so the funds become spendable and the addresses are no longer watch-only - no rescan needed (which is not available on a pruned node).
I have leveraged that to create a CLI command that immediately imports all private keys that have seen some transactions into the bitcoind wallet and sends a transaction to a given adddress. The usage is: carton exec script/btcpaywall withdraw <address>. Be careful though - it immediately sends the transaction with all available coins to that address. Tested on testnet - works very well. No control over transaction fees though - I've set it to economical.
In your case, you want to run that command from the coins-restore branch. Master is getting changed to make it work well with HD wallets, as this is still the goal. Having only one option to withdraw funds is not exactly a good idea, which is why withdraw command is also going to be available and documented, on top of HD wallet compatibility.

Tested with coinomi. With the latest changes on the master branch, paywall transactions are visible in the wallet. Paywall requests created before are no longer in the same address space. Any coins contained in them should be sent to a safe wallet with withdraw action on the coins-restore branch.
Sadly, full interoperability between BtcPaywall and HD wallets cannot be achieved because of limitations defined in BIP44 document:

HD wallets will only search for new transactions as long as there are less than 20 empty derived addresses in a row. In current setting its impossible to enforce that. The best the paywall system could do is reuse addresses after the requests time out, but that gives no guarantee on the address chain not being broken
HD wallets only search for more accounts if the current account has any transactions. They will not search for transactions in account 1 if account 0 has no transactions. The paywall system lets you freely create and use accounts.

So the initial idea of full compatibility with HD wallets was flawed. As things stand now, it has partial compatibility - it might work in a specific setting, but there can't be any guarantees. However, with the addition of the withdraw action, it is now possible to move funds out of the system with the tooling it already uses, and possibly also automate it.
TODO: document coin withdrawal options

hello, @brtastic
Thank you for your code changes related to this, and for the detailed write-up above.
I tried what you suggested:

changed to the current coins-restore branch
used carton exec script/btcpaywall withdraw {address_here} to try to extract the coins
and I got the error:

error code: -6, error message: Insufficient funds (sendtoaddress)
I do see the coins in the bitcoin wallet using bitcoin-cli (note that I changed the exact amounts a little, but they are close to the actual values)
% bitcoin-cli  getbalances
{
  "mine": {
    "trusted": 0.00097320,
    "untrusted_pending": 0.00000000,
    "immature": 0.00000000
  },
  "watchonly": {
    "trusted": 0.00064200,
    "untrusted_pending": 0.00000000,
    "immature": 0.00000000
  }
}

Also I don't understand why the 'mine' and 'watchonly' 'trusted' values are different.
Advice on how to proceed?

hello, @brtastic
Thank you for your code changes related to this, and for the detailed write-up above.
I tried what you suggested:
changed to the current coins-restore branch
used carton exec script/btcpaywall withdraw {address_here} to try to extract the coins
and I got the error:

error code: -6, error message: Insufficient funds (sendtoaddress)
I do see the coins in the bitcoin wallet using bitcoin-cli (note that I changed the exact amounts a little, but they are close to the actual values)
% bitcoin-cli  getbalances
{
"mine": {
"trusted": 0.00097320,
"untrusted_pending": 0.00000000,
"immature": 0.00000000
},
"watchonly": {
"trusted": 0.00064200,
"untrusted_pending": 0.00000000,
"immature": 0.00000000
}
}
Also I don't understand why the 'mine' and 'watchonly' 'trusted' values are different.
Advice on how to proceed?

 Then all the possible balance is moved into the address you specified.
Since the balance is taken from both watchonly and normal addresses, it can fail like it did in your case, which means that not all watched addresses were imported correctly.
Since you're already on coins_restore branch, this should not have happened... unless you used the master branch with the same master.key after this commit: 241036792a14e29f2d651b8733f069712c9b4123
The thing is, there was a bug which caused trailing newline in master.key to create incorrect (different than expected) private keys / addresses. So basically master and coins_restore branches are using completely different private keys, even though the mnemonic is still the same.
If you were testing after I changed master 12 days ago and generated / paid to new addresses, then you will also have to run the withdraw command on master branch - which will import all the other (new and proper) private keys. It should work out of the box, since you already have private keys from the old address space imported.
Another possibility is that you might've wiped the database of btcpaywall at some point- which would make withdraw command not see all complete addresses. If that's the case, more custom code will be needed, which will search the address space and import all the private keys in a given range - basically much harder than just importing the private keys we know contain funds. If you think that this is your issue, let me know and I'll try to write a proper command that will recover that.

A little correction to the above - current master is using even different address space (bip49 and bip84) so you might also want to use master branch on commit b325d562cc99e3ff646c1422b31a4d55243920da to withdraw. I know that's messed up, so that's understandable that you're having some problems. It all depends on when you were using / updating the code - its either coins_restore, current master, or master on the commit mentioned above

Hello @artvogel, you might want to try the withdraw command on the updated coins_restore branch - I've added commit 8c96d6027eb3dcbb97aa09f58120f9d79d90061c, which uses all types of derivation schemes for the withdraw. It should send all your coins no matter at which point in time you sent them


Update openedx-webhooks from heroku-18 stack to heroku-22

This app is using the Heroku-18 stack which is deprecated.  It will End-of-life in April 2023.  After that it will stop receiving security updates so at some point we should just update to the latest stack.
https://devcenter.heroku.com/articles/upgrading-to-the-latest-stack
https://help.heroku.com/X5OE6BCA/heroku-18-end-of-life-faq
Relatedly, we're currently running python runtime 3.8.12 but 3.8.14 is available, we should also upgrade this.

So Heroku Stack-22 does not support python 3.8 so we'll need to update to a newer version of python as a part of this update.  That makes it a bit more complicated.

This was done along with https://github.com/openedx/openedx-webhooks/pull/213


delete key support

highlighting a region and pressing the delete key (not backspace) doesn't work as expected.
requested by @MehrotraRahul

Failed to reproduce on windows client on master

was able to repro on macOS, the original request was created on macOS


typo fixed (IDFGH-13000)

just a typo fixed

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks for the fix! Luckily, this type was discovered and fixed on the master branch already. See https://github.com/espressif/esp-idf/commit/042b5a0102fb5d4db01239ced23a31b35c730773
We will consider to backport it to release/v5.2

Thanks for contribution again, changes have been merged with https://github.com/espressif/esp-idf/commit/46cf2e0756cd9b85d634d8c51e6339e713964a29.


Fixes error when stop reason missing in response.

Fixes #55, #56.
All integration tests pass.
(base) ➜  aws git:(fix-stop-reason-error) make integration_tests
poetry run pytest tests/integration_tests/
================================================================== test session starts ==================================================================
platform darwin -- Python 3.9.13, pytest-7.4.4, pluggy-1.5.0
rootdir: /Users/pijain/projects/langchain-aws-dev/langchain-aws/libs/aws
configfile: pyproject.toml
plugins: syrupy-4.6.1, anyio-4.3.0, cov-4.1.0, asyncio-0.23.6
asyncio: mode=auto
collected 34 items

tests/integration_tests/test_compile.py .                                                                                [  2%]
tests/integration_tests/chat_models/test_bedrock.py ...................                                                                           [ 58%]
tests/integration_tests/embeddings/test_bedrock_embeddings.py .....s...                                                                           [ 85%]
tests/integration_tests/llms/test_sagemaker_endpoint.py ..                                                                                [ 91%]
tests/integration_tests/retrievers/test_amazon_kendra_retriever.py .                                                                              [ 94%]
tests/integration_tests/retrievers/test_amazon_knowledgebases_retriever.py ..                                                                     [100%]
====================================================== 33 passed, 1 skipped, 2 warnings in 50.68s =======================================================

@arm-diaz @thekrol01 @supreetkt
Can you review and verify this change fixes the issue. Thanks.

This looks good. Thank you @3coins !

Works now. Great work @3coins !

Tried a few models as well. Looks good to me.

Thank you!


fix robots.txt so netlify deployment won't be indexed

Current robots.txt
User-agent: *
Allow: /
Sitemap: https://www.prisma.io/sitemap.xml
Host: https://www.prisma.io

https://www.prisma.io/docs/robots.txt
https://prisma2.netlify.app/robots.txt
This will change it so https://prisma2.netlify.app won't appear in the search results anymore.
https://www.prisma.io/docs/ will still be indexed.
Related to https://github.com/prisma/prisma/issues/1949

Looks like it worked ;-)
https://deploy-preview-288--prisma2.netlify.app/robots.txt

Will this not publish the robots.txt as prisma.io/docs/robots.txt?

@janpio yes but it's ok, the robots.txt is only read by engines if it's at the root level.

The robots.txt will actually not be in prisma.io/docs any more if this repo is repaired so that the docs content actually works on the preview URLs of Netlify etc.

https://github.com/prisma/prisma2-docs/pull/288#issuecomment-620744583
@janpio Not sure I understand 🤔 Also if this repo is repaired?

https://deploy-preview-288--prisma2.netlify.app/ is currently fully broken, you can not follow any of the links.
To fix this, this repo will probably have to be changed to serve https://deploy-preview-288--prisma2.netlify.app/docs/understand-prisma/introduction instead of https://deploy-preview-288--prisma2.netlify.app/understand-prisma/introduction/ - which would put its robots.txt also in a spot where it can not be accessed via prisma.io


Worldview screen goes blank when switching between controlled & uncontrolled camera views

I have an application where I'm trying to switch between having the user control the camera position with the mouse and having the camera automatically follow vehicles in the visualization. However, when I switch out using the property cameraState & defaultCameraState, the screen goes blank. Each of these renders on its own, but when I try to change between the two--going either way from one to the other--Worldview dies without an error. Here is the code from the render method of a React container component:
          {this.props.map.cameraFollow.shouldFollow ?
            <Worldview
              cameraState={this.cameraState}
              hitmapOnMouseMove
              backgroundColor={[0.4, 0.4, 0.4, 1]}
              onMouseDown={this.onContainerMouseDown}
              onMouseUp={this.onContainerMouseUp}
              onMouseMove={this.onContainerMouseMove}
              onClick={this.onContainerClick}
              onDoubleClick={this.onContainerDoubleClick}>
              {this.getWorldviewElements()}
            </Worldview>
            :
            <Worldview
              defaultCameraState={this.cameraState}
              hitmapOnMouseMove
              backgroundColor={[0.4, 0.4, 0.4, 1]}
              onMouseDown={this.onContainerMouseDown}
              onMouseUp={this.onContainerMouseUp}
              onMouseMove={this.onContainerMouseMove}
              onClick={this.onContainerClick}
              onDoubleClick={this.onContainerDoubleClick}>
              {this.getWorldviewElements()}
            </Worldview>
          }

Here I keep all of the values the same except for the shouldFollow boolean, and the screen goes blank. Is there something wrong?

Hi @conrad, when you are using Worldview as controlled component, you'll need to supply a onCameraStateChange handler.  Could you provide more details on the error, e.g. screenshot or codesandbox to reproduce the issue. It's good to refer some examples here https://webviz.io/worldview/#/docs/api/camera

Thank you. Adding that property (currently, just with a no-op function) has solved this.


chore(release): v0.8.2 🎉

:robot: I have created a release beep boop
0.8.2 (2023-09-07)
Bug Fixes

deps: bump to latest whodis-client (126a256)
practs: bump to latest best practs (1792066)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/whodisio/whodis-react/releases/tag/v0.8.2 :sunflower:


batctl: 2018.3 -> 2018.4

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/batctl/versions.
meta.description for batctl is: '"B.A.T.M.A.N. routing protocol in a linux kernel module for layer 2, control tool"'.

Checks done (click to expand)

built on NixOS
/nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/bin/batctl passed the binary check.
1 of 1 passed binary check by having a zero exit code.
0 of 1 passed binary check by having the new version present in output.
found 2018.4 with grep in /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4
directory tree listing: https://gist.github.com/92bcec2e53da7016c51468f82b093487
du listing: https://gist.github.com/e893fe9c373faca2d03d49ae2e3b8e1e

Rebuild report (click to expand)

3 total rebuild path(s)
1 package rebuild(s)
1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
0 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)
First fifty rebuilds by attrpath
batctl

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4 \
  --option binary-caches 'https://cache.nixos.org/ https://r-ryantm.cachix.org/' \
  --option trusted-public-keys '
  r-ryantm.cachix.org-1:gkUbLkouDAyvBdpBX0JOdIiD2/DP1ldF3Z3Y6Gqcc4c=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(r-ryantm's Cachix cache is only trusted for this store-path realization.)
Or, build yourself:
nix-build -A batctl https://github.com/r-ryantm/nixpkgs/archive/1a0c46a7c88a1cfa58be402e2b3780ee2e25c508.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4
ls -la /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/bin

cc @fpletz for testing.

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: batctl
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: batctl
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4
shrinking /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/sbin/batctl
gzipping man pages under /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/share/man/
strip is /nix/store/vcc4svb8gy29g4pam2zja6llkbcwsyiq-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/sbin
patching script interpreter paths in /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4
checking for references to /build in /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4...
moving /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/sbin/* to /nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4/bin
/nix/store/w8idl2dabixfa9cpr6whqybrvbvl6m25-batctl-2018.4

Success on aarch64-linux (full log)
Attempted: batctl
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4
shrinking /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4/sbin/batctl
gzipping man pages under /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4/share/man/
strip is /nix/store/p9akxn2sfy4wkhqdqa3li97pc6jaz3r1-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4/sbin
patching script interpreter paths in /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4
checking for references to /build in /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4...
moving /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4/sbin/* to /nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4/bin
/nix/store/77m74dik7sbn0xilfvlh314k1dfba2kh-batctl-2018.4


modify windows and mac doc

@jlin-nf I may be missing some context. Was there a problem or discussion about needing Windows and macOS installation help? These both seem unnecessary because they're self-explanatory for the average user.

@qrkourier I can confirm, the "average user" doesn't understand how to install nor how to enroll identities in the UI of the OpenZiti Clients.  Something I have to walk through users on a weekly basis for new hires.

Thanks, Edward.  Agree that the enrollment docs/screenshots are warranted (tho the screen shots look dated - no MFA toggle).  The App Store screenshots seem like overkill (and show screens from App Store after ZDE uninstalled, rather than a first-time install with the GET button.  Better to just have a sentence saying install from the Apple App Store (and keep the note that one way to get to the app store is via the provided link)?


Error in routes

When we go to /html-css route it's taking to netlify site. We could easily maintain it adding redirects to projects.

Thanks @bipinparajuli , for the time being we have disable workshop nav item as we are working on completely new site for workshop syllabuses (https://workshops.techsetu.org)


🚧 Add test_e2e Makefile target

What does this PR do?
This PR adds test_e2e Makefile target that allows easily run e2e tests on the cluster set in the current context.
It's 🚧 since I'm playing with PROW and try to get rid of workaround with go mod vendor
What issues does this PR fix or reference?
N/A
Is it tested? How?
make test_e2e
# make sure tests are run and finished with no failure, like:
# Ran 1 of 1 Specs in 71.625 seconds
# SUCCESS! -- 1 Passed | 0 Failed | 0 Pending | 0 Skipped
#PASS

/retest

/test v5-openshift-web-terminal-e2e

/retest


fix get_player_pos (faulty return values)

could not reproduce @MrCyclopede, can you provide more details? I just tried on a fresh world and could not get faulty return value of mc.get_player_pos()


Missing required module 'whisper_cpp' when using the SwiftWhisper code.

How should I fix this problem to include the missing module whisper_cpp in the setup of the library for Swift because the other module is c++-based?  Thanks!

This is usually caused by Xcode being weird. If you pulled from GitHub make sure to initialize submodules. Otherwise try clearing your derived data and build folder.

Thank you!  I will check that out!

Any luck?

Closing for now. Let me know if this comes back up.

It still happens on extensions.


Changes to modular_template.html's navbar

Added a sticky attribute to the navbar so if the canvas is bigger than the screen, you can push the actions in the whole page.
Also the actions have been replaced to hyperlinks(a element) to button in order to avoid reloading the page at each press and not bring the page at the top after each action.

Tested and it worked. And the sticky bar is an improvement.

Merged, thank you @FoFFolo.


Large partitions command

List largest partitions, perhaps include largest disk space wise, cell count
java -jar sstable-tools top

added as describe command in console branch


qv2ray: Make v2ray optional dependency

The software can run without using v2ray at all, so making it a optional dependency.

Can you provide any screenshot, which support this claim?

It's in the docs: https://qv2ray.net/en/plugins/usage.html#what-is-a-plugin


Integrate epubcheck into the build process

Shouldn't be too hard. I can look into it if no one else beats me to it.

This shouldn't be too hard at all, assuming a debian package is available. However, we can't actually do this until we've gotten rid of all the errors.

Once the acknowledgements file is fixed, I plan to integrate epubcheck into the build process, make the resulting EPUB available on the website, and publicise the experimental support for the EPUB format.

Once the acknowledgements file is fixed, I plan to integrate epubcheck into the build process, make the resulting EPUB available on the website, and publicise the experimental support for the EPUB format.

That sounds great! Call me excited :)

Fixed!


Conventions: Add logging

It would be helpful to find out what the conventions did/didn't do

Log warning for ambiguous scenarios:

Determining the principal end of one-to-one relationship where there are FK candidates on both ends
Discovering FK properties of lower priority when the best match is already used (the resulting FKs potentially depend on the order in which the relationships are discovered)
Creating multiple shadow FKs (naming depends on order)
Discovering the primary key when multiple properties match

@abaranch I think this is probably covered by #222, agree?

This would require changing the convention API and would potentially break providers.


Accessibility issues with buttons from the Express Checkout Element

Describe the bug
When focusing the Google Pay button, the outline is not displayed correctly, it only appears at the top & bottom of the component.
To Reproduce
Steps to reproduce the behavior:

Add a Google Pay button from the Express Checkout Element
Tab to focus that element
See that the outline is not showing as expected

Expected behavior

The button should have a clear outline of the specified width
If using the dark button, the outline should have enough contrast

Screenshots

Desktop:

Browser: Google Chrome
Version: 126.0.6478.127

Additional context
This can also be seen in the demo on Stripe site: https://docs.stripe.com/elements/express-checkout-element#try-demo

Hi @fedefunes96 Thanks for the feedback! Looks like you want to report an issue for react Stripe.js, and we manage it in a separate github repo.
I'll close this ticket. Feel free to create a new ticket in react-stripe-js github repo


KAFKA-9533: ValueTransform forwards null values

Fixes a bug where KStream#transformValues would forward null values from the provided ValueTransform#transform operation.
A test was added for verification KStreamTransformValuesTest#shouldEmitNoRecordIfTransformReturnsNull. A parallel test for non-key ValueTransformer was not added, as they share the same code path.
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Ok to test.

I'm not sure why these tests failed.
I think that one is being handled with #8109. The other might be related to #8094.

@bbejeck Is there anything I should do about these failures? I don't think they are related to my change, but that could be my unfamiliarity with the codebase.
Also, should I expect that fixes for these failed tests will need to be merged before this PR can be merged?

Java 11 failed with org.apache.kafka.streams.integration.RegexSourceIntegrationTest > testRegexMatchesTopicsAWhenDeleted test ticket exists.
Java 8 failed with kafka.admin.DescribeConsumerGroupTest.testDescribeGroupMembersWithShortInitializationTimeout
@mviamari, the test failures are unrelated, but we need a green build for merging.  The RegexSourceIntegrationTest test exposes an issue, and once the fix is merged, we can retest this PR.  In the meantime, I'll make time to review this PR soon.

Sounds good. Thanks for clarifying.

retest this please

ping @cadonna for another look before merging

@cadonna Updated. I completely missed those unit tests the first time around, thanks for pointing that out.

Retest this please

Retest this please.

previous test results gone.
retest this please.

Retest this please.

Retest this please.

Java 8 failed with kafka.admin.DescribeConsumerGroupTest.testDescribeGroupWithShortInitializationTimeout
Java 11 passed.

Retest this please.

Ok to test

Retest this please.

Retest this please.

Merged #8108 into trunk

Thank you for the fix, @mviamari !

cherry-picked to branches 2.5, 2.4, 2.3 and 2.2

Hey @mviamari ,
It turns out that this fix causes more problems than it fixes :)
I've made a comment on the ticket explaining the situation. I'm copying it here for visibility:

Since merging this fix into trunk, we've discovered some use cases that actually depend on the prior behavior. In retrospect, I think that we should fix this issue by correcting the docs, not changing the behavior.
I bet this started with a simple copy/paste error from the transform API, in which returning null (as opposed to a KeyValue does mean to drop the record). But in that case, it makes sense, since we cannot process a record with no key. The choice is between throwing an NPE and dropping the record, so we drop the record. But this doesn't apply to transformValues, because the result would have the same key as the input.
Really, it's murky territory either way... Since we have transorm and flatTransform, as well as the xValues overloads, it implies that transform is one-in-to-one-out and flatTransform is one-in-to-zero-or-more-out. In that case, if you did want to drop an input record, you should use a flatTransform and return an empty collection. There should be an invariant for transform and transformValues that you get exactly the same number of output records as input records, whether they are null or otherwise.
Since it seems like the docs, not the behavior, are wrong, and since this is pre-existing behavior going back a long way in Streams (which breaks some users' code to change), we should go ahead and back out the PR. Sorry for the confusion.
As far as the actual fix goes, I'd be in favor of amending the docs to state that:

When KStream#transformValues returns null, there will simply be an output record with a null value.
When KStream#transform returns null, we consider that to be an invalid return, and we will log a warning while dropping the record (similar to other APIs in Streams)
When KStream#transform returns a KeyValue(key, null), there will simply be an output record with a null value.
When KStream#flatTransform and KStream#flatTransformValues return null, we consider that to be equivalent to returning an empty collection, in which case, we don't forward any results, and also do not log a warning. (I'd also be in favor of logging a warning here for consistency, but it seems like overkill).

Accordingly, I'm going to re-open this ticket, and Bill will revert the changes to fix the downstream builds. Sorry again for the trouble.
-John

reverted cherry-picks to 2.5, 2.4, 2.3, and 2.2


HOSTEDCP-965: Add impersonate feature to the CLI and document HC dump procedure

Which issue(s) this PR fixes :
Fixes #HOSTEDCP-965
Checklist

[x] Subject and description added to both, commit and PR.
[x] Relevant issues have been referenced.
[x] This change includes docs.
[x] This change includes unit tests.

/lgtm

/cherry-pick release-4.13


Gate & Access

Have you got a package in mind for this? or are you going to create it as a custom feature?

Access control is in the main package
User
The user has several options for managing roles
// Check if the user has an extension
// Verification carried out both in himself and in his role
Auth:user()->hasAccess($string);

// Get the user's permission
Auth:user()->getPermissionsAttribute($permissions);

// Set the access permissions
Auth:user()->setPermissionsAttribute($permissions)

// Get all the user role
Auth:user()->getRoles();

// Check if the user has a role
Auth:user()->inRole($role)

// Add a user role
Auth:user()->addRole($role)

Roles
Roles also have procedures for:
$role = Role::getRoleSlug($string);

// Returns all users with this role
$role->getUsers();

// Gets the permission roles
$role->getPermissionsAttribute($permissions);

// Set the permissions for the role
$role->setPermissionsAttribute($permissions);

Creating administrator
To create a user with the maximum (at a time of writing) rights
run the following command:
php artisan make:admin nickname<EMAIL_ADDRESS>secretpassword

All functions do not conflict and can be used together with Gate


[Event Modification] codeunit 6620 "Copy Document Mgt."- OnAfterCopySalesHeaderDone

Hi, would it be possible to modify the event OnAfterCopySalesHeaderDone in codeunit 6620 to add an IsHandled, like this :
            OnAfterCopySalesHeaderDone(
                ToSalesHeader, OldSalesHeader, FromSalesHeader, FromSalesShptHeader, FromSalesInvHeader,
                FromReturnRcptHeader, FromSalesCrMemoHeader, FromSalesHeaderArchive, IsHandled);

            if not IsHandled then begin
                Invoice := false;
                Ship := false;
            end;

    [IntegrationEvent(false, false)]
    local procedure OnAfterCopySalesHeaderDone(var ToSalesHeader: Record "Sales Header"; OldSalesHeader: Record "Sales Header"; FromSalesHeader: Record "Sales Header"; FromSalesShipmentHeader: Record "Sales Shipment Header"; FromSalesInvoiceHeader: Record "Sales Invoice Header"; FromReturnReceiptHeader: Record "Return Receipt Header"; FromSalesCrMemoHeader: Record "Sales Cr.Memo Header"; FromSalesHeaderArchive: Record "Sales Header Archive" ; var IsHandled : Boolean )
    begin
    end;

?
Thanks

Why do you need Handled construction for updating fields Invoice and Ship of table ToSalesHeader if this variable is a parameter of event OnAfterCopySalesHeaderDone?

After the event OnAfterCopySalesHeaderDone, the Invoice and Ship variables are set to False, so if I change them before, it will have no effect right ?

In current code version we have this:
OnAfterCopySalesHeaderDone(
ToSalesHeader, OldSalesHeader, FromSalesHeader, FromSalesShptHeader, FromSalesInvHeader,
FromReturnRcptHeader, FromSalesCrMemoHeader, FromSalesHeaderArchive);
        ClearInvoiceAndShip(ToSalesHeader);

        if Status = Status::Released then begin
            Status := Status::Open;
            ReleaseDocument := true;
        end;

local procedure ClearInvoiceAndShip(var ToSalesHeader: Record "Sales Header")
var
    IsHandled: Boolean;
begin
    IsHandled := false;
    OnBeforeClearInvoiceAndShip(ToSalesHeader, IsHandled);
    if IsHandled then
        exit;

    ToSalesHeader.Invoice := false;
    ToSalesHeader.Ship := false;
end;

So, you can control Invoice and Ship by event OnBeforeClearInvoiceAndShip.
Seems this code has not been published yet and will be available for update 18.1

Closing


Error on module.share_memory() for uninitialized parameters.

Uninitialized parameters can't share memory.

/test


Send CameraMode and PointerLocked state as components to scene

Send CameraMode & PointerLocked as components for CAMERA_ENTITY
protocol: https://github.com/decentraland/protocol/pull/18
sdk: https://github.com/decentraland/js-sdk-toolchain/pull/210
renderer: https://github.com/decentraland/unity-renderer/pull/2789

all branches merged


Is this project dead?

Essentially yes. Raising a family won over dev in the end 😜
On Wed, 28 Oct 2020, 22:00 PedroD<EMAIL_ADDRESS>wrote:

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/andrewoma/kwery/issues/35, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABGJ5LL53GIU6JJ62T2TGTSM72TVANCNFSM4TCFDAZA
.

Ahah great!
😃


Connection to VLC 3.0.0 and up

By default, the web interface is completely locked down – it’s restricted to localhost. To allow access from other computers, you’ll have to edit the web interface’s .hosts file.
This link covers how the process is done, at least for now:
https://www.howtogeek.com/117261/how-to-activate-vlcs-web-interface-control-vlc-from-a-browser-use-any-smartphone-as-a-remote/
Key Info File Location:

Windows: C:\Program Files (x86)\VideoLAN\VLC\lua\http (use “Program Files” instead of “Program Files (x86)” on 32-bit versions of Windows.)
Mac OS X: /Applications/VLC.app/Contents/MacOS/share/lua/http/.hosts
Linux: /usr/share/vlc/lua/http/.hosts

This is partially a reminder to write up some info about the process inside the module or link to a page here on GitHub if the other link breaks

@McHauge I've had a good play with this and can confirm Playlist ID does work! It just is not quite straight forward as ID's start @ 3 Not sure why? (This is stated here: https://github.com/bitfocus/companion-module-vlc/issues/3#issuecomment-523689906) so the ID in the playlist 1=3 2=4 etc in my tests.
I would say any issues that users are having with this module are firewall issues.

Lovely, I'll try and make it so the module adds +2 so 1 becomes 3, 2 becomes 4 and so on, would this make it harder or easier to use?

I guess it would be good and makes sense to match ID's in playlist, but I'm unsure what implications it might have if you say changed order and therefore ID in playlist. prob need to know why ID starts @ 3?

Thanks. I tried with a fresh playlist and it worked on the first press. Thanks for an excellent tool.
Cheers,
Andrew

On Jun 10, 2020, at 2:23 PM, EventReplay<EMAIL_ADDRESS>wrote:
@irvtech https://github.com/irvtech I've had a look at this again and done a few more tests, Latest vlc 3.0.10, Current Companion v2. I'm not having any problems getting my 3 clips to play using Clip Nr, I'm using PC to PC.
Give this a try:
Clear your playlist
Add Clips 1 at a time
The First Clip you add Clip Nr =3
The Second Clip you add Clip Nr =4
and so on!
I think Clip Nr is related to the order you add to your playlist! So even if you change order of clips in the playlist the Clip Nr stays atached to the Clip as above. Thats how it worked for me in my brief test. ID seems a bit missleading.
Let me know how you get on.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/bitfocus/companion-module-videolan-vlc/issues/5#issuecomment-642275122, or unsubscribe https://github.com/notifications/unsubscribe-auth/AA2TDGHPU2PS5HSXF5ZXLBDRV72U3ANCNFSM4JHLWCDA.

Thanks
Can I also Seek Help on the same,
as Suggested @irvtech we also tried
The First Clip you add Clip Nr =3
The Second Clip you add Clip Nr =4
and so on!
its working but if we can able to achieve
1=1
2=2
3=3
4=4 and so on will be nicerand easy understood by teach members:
Please help
Thanks


Bundler install issue - Sass-embedded

I've tried to follow the instructions here https://github.com/endoflife-date/endoflife.date/blob/master/HACKING.md, so I can have a local version of the site and start raising pull requests.  However there appears to be an issue with the bundle install step, linked to this: https://github.com/sass-contrib/sass-embedded-host-ruby/issues/176.  Is anything needed to be changed on the endoflife.date side to fix this?

@baggers27, can you provide more information on your environment (OS, Ruby version...) and the exact error message you have ?

So I've done these commands below on a new VM image as I did manage to get it working yesterday by bashing some keys but I wanted to replicate the issue.
┌──(kali㉿kali)-[~]
└─$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux-gnu]
┌──(kali㉿kali)-[~]
└─$ gem -v
3.4.20
┌──(kali㉿kali)-[~]
└─$ uname -a
Linux kali 6.6.9-amd64 #1 SMP PREEMPT_DYNAMIC Kali 6.6.9-1kali1 (2024-01-08) x86_64 GNU/Linux
┌──(kali㉿kali)-[~]
└─$ gem install bundler
Fetching bundler-2.5.10.gem
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/3.1.0 directory.
/usr/lib/ruby/vendor_ruby/rubygems/installer.rb:713:in verify_gem_home'         /usr/lib/ruby/vendor_ruby/rubygems/installer.rb:903:in pre_install_checks'
/usr/lib/ruby/vendor_ruby/rubygems/installer.rb:303:in install'         /usr/lib/ruby/vendor_ruby/rubygems/resolver/specification.rb:105:in install'
/usr/lib/ruby/vendor_ruby/rubygems/request_set.rb:195:in block in install'         /usr/lib/ruby/vendor_ruby/rubygems/request_set.rb:183:in each'
/usr/lib/ruby/vendor_ruby/rubygems/request_set.rb:183:in install'         /usr/lib/ruby/vendor_ruby/rubygems/commands/install_command.rb:215:in install_gem'
/usr/lib/ruby/vendor_ruby/rubygems/commands/install_command.rb:231:in block in install_gems'         /usr/lib/ruby/vendor_ruby/rubygems/commands/install_command.rb:224:in each'
/usr/lib/ruby/vendor_ruby/rubygems/commands/install_command.rb:224:in install_gems'         /usr/lib/ruby/vendor_ruby/rubygems/commands/install_command.rb:170:in execute'
/usr/lib/ruby/vendor_ruby/rubygems/command.rb:328:in invoke_with_build_args'         /usr/lib/ruby/vendor_ruby/rubygems/command_manager.rb:253:in invoke_command'
/usr/lib/ruby/vendor_ruby/rubygems/command_manager.rb:193:in process_args'         /usr/lib/ruby/vendor_ruby/rubygems/command_manager.rb:151:in run'
/usr/lib/ruby/vendor_ruby/rubygems/gem_runner.rb:52:in run'         /usr/bin/gem:12:in '
As the kali user, You don't have write permissions for the /var/lib/gems/3.1.0 directory.  So I did sudo gem install bundler.
┌──(kali㉿kali)-[~]
└─$ sudo gem install bundler
[sudo] password for kali:
Fetching bundler-2.5.10.gem
Successfully installed bundler-2.5.10
Parsing documentation for bundler-2.5.10
Installing ri documentation for bundler-2.5.10
Done installing documentation for bundler after 0 seconds
1 gem installed
But the write issues then also cause problems when doing bundle install
┌──(kali㉿kali)-[~/eol/endoflife.date]
└─$ bundle install
Bundler 2.5.10 is running, but your lockfile was generated with 2.4.1. Installing Bundler 2.4.1 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.1
Retrying download gem from https://rubygems.org/ due to error (2/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/bundler-2.4.1.gem. It is likely that you need to grant write permissions for that path.
Retrying download gem from https://rubygems.org/ due to error (3/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/bundler-2.4.1.gem. It is likely that you need to grant write permissions for that path.
Retrying download gem from https://rubygems.org/ due to error (4/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/bundler-2.4.1.gem. It is likely that you need to grant write permissions for that path.
There was an error installing the locked bundler version (2.4.1), rerun with the --verbose flag for more details. Going on using bundler 2.5.10.
Fetching gem metadata from https://rubygems.org/.........
Fetching rake 13.2.0
Retrying download gem from https://rubygems.org/ due to error (2/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/rake-13.2.0.gem. It is likely that you need to grant write permissions for that path.
Retrying download gem from https://rubygems.org/ due to error (3/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/rake-13.2.0.gem. It is likely that you need to grant write permissions for that path.
Retrying download gem from https://rubygems.org/ due to error (4/4): Bundler::PermissionError There was an error while trying to write to /var/lib/gems/3.1.0/cache/rake-13.2.0.gem. It is likely that you need to grant write permissions for that path.
Fetching base64 0.2.0
Fetching bigdecimal 3.1.6
Fetching concurrent-ruby 1.2.3
Fetching connection_pool 2.4.1

Bundler::PermissionError: There was an error while trying to write to /var/lib/gems/3.1.0/cache/rake-13.2.0.gem. It is likely that you need to grant write permissions for that path.
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/shared_helpers.rb:105:in rescue in filesystem_access'                                                                                /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/shared_helpers.rb:102:in filesystem_access'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/rubygems_integration.rb:445:in block in download_gem'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/retry.rb:40:in run'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/retry.rb:30:in attempt'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/rubygems_integration.rb:437:in download_gem'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/source/rubygems.rb:475:in download_gem'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/source/rubygems.rb:436:in fetch_gem'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/source/rubygems.rb:420:in fetch_gem_if_possible'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/source/rubygems.rb:162:in install'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer/gem_installer.rb:54:in install'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer/gem_installer.rb:16:in install_from_spec'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer/parallel_installer.rb:132:in do_install'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer/parallel_installer.rb:86:in call'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer/parallel_installer.rb:66:in call'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer.rb:244:in install_in_parallel'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer.rb:201:in install'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer.rb:89:in block in run'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/process_lock.rb:19:in rescue in lock'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/process_lock.rb:15:in lock'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer.rb:71:in run'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/installer.rb:23:in install'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/cli/install.rb:63:in run'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/cli.rb:247:in block in install'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/settings.rb:157:in temporary'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/cli.rb:246:in install'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/vendor/thor/lib/thor/command.rb:28:in run'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/vendor/thor/lib/thor.rb:527:in dispatch'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/cli.rb:35:in dispatch'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/vendor/thor/lib/thor/base.rb:584:in start'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/cli.rb:29:in start'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/exe/bundle:28:in block in <top (required)>'   /var/lib/gems/3.1.0/gems/bundler-2.5.10/lib/bundler/friendly_errors.rb:117:in with_friendly_errors'
/var/lib/gems/3.1.0/gems/bundler-2.5.10/exe/bundle:20:in <top (required)>'   /usr/bin/bundle:25:in load'
/usr/bin/bundle:25:in `'
An error occurred while installing rake (13.2.0), and Bundler cannot continue.
In Gemfile:
jekyll-feed was resolved to 0.17.0, which depends on
jekyll was resolved to 4.3.3, which depends on
jekyll-sass-converter was resolved to 3.0.0, which depends on
sass-embedded was resolved to 1.74.1, which depends on
google-protobuf was resolved to 4.26.1, which depends on
rake
So I have to do sudo bundle install, which it does say don't do.
┌──(kali㉿kali)-[~/eol/endoflife.date]
└─$ sudo bundle install
Don't run Bundler as root. Installing your bundle as root will break this application for all non-root users on this machine.
Bundler 2.5.10 is running, but your lockfile was generated with 2.4.1. Installing Bundler 2.4.1 and restarting using that version.
Fetching gem metadata from https://rubygems.org/.
Fetching bundler 2.4.1
Installing bundler 2.4.1
Don't run Bundler as root. Installing your bundle as root will break this application for all non-root users on this machine.
Fetching gem metadata from https://rubygems.org/.........
Fetching rake 13.2.0
Installing rake 13.2.0
Fetching base64 0.2.0
Fetching bigdecimal 3.1.6
Fetching connection_pool 2.4.1
Fetching concurrent-ruby 1.2.3
Installing base64 0.2.0
Fetching drb 2.2.1
Installing connection_pool 2.4.1
Fetching minitest 5.22.2
Installing bigdecimal 3.1.6 with native extensions
Installing concurrent-ruby 1.2.3
Installing drb 2.2.1
Fetching mutex_m 0.2.0
Installing minitest 5.22.2
Fetching public_suffix 5.0.5
Installing mutex_m 0.2.0
Using bundler 2.4.1
Fetching colorator 1.1.0
Fetching date 3.3.4
Installing public_suffix 5.0.5
Installing colorator 1.1.0
Fetching eventmachine 1.2.7
Fetching http_parser.rb 0.8.0
Installing date 3.3.4 with native extensions
Installing http_parser.rb 0.8.0 with native extensions
Installing eventmachine 1.2.7 with native extensions
Using ffi 1.16.3
Fetching forwardable-extended 2.6.0
Installing forwardable-extended 2.6.0
Fetching gemoji 4.1.0
Installing gemoji 4.1.0
Fetching google-protobuf 4.26.1 (x86_64-linux)
Installing google-protobuf 4.26.1 (x86_64-linux)
Fetching racc 1.7.3
Installing racc 1.7.3 with native extensions
Fetching ice_cube 0.16.4
Installing ice_cube 0.16.4
Fetching rb-fsevent 0.11.2
Installing rb-fsevent 0.11.2
Fetching rexml 3.2.6
Installing rexml 3.2.6
Fetching liquid 4.0.4
Installing liquid 4.0.4
Fetching mercenary 0.4.0
Installing mercenary 0.4.0
Fetching rouge 4.2.1
Installing rouge 4.2.1
Fetching safe_yaml 1.0.5
Installing safe_yaml 1.0.5
Fetching unicode-display_width 2.5.0
Installing unicode-display_width 2.5.0
Using webrick 1.8.1
Fetching posix-spawn 0.3.15
Installing posix-spawn 0.3.15 with native extensions
Fetching mini_i18n 0.9.0
Installing mini_i18n 0.9.0
Fetching stringio 3.1.0
Installing stringio 3.1.0 with native extensions
Fetching uri 0.13.0
Installing uri 0.13.0
Fetching i18n 1.14.4
Installing i18n 1.14.4
Using tzinfo 2.0.6
Fetching addressable 2.8.6
Installing addressable 2.8.6
Fetching rb-inotify 0.10.1
Installing rb-inotify 0.10.1
Fetching pathutil 0.16.2
Installing pathutil 0.16.2
Fetching sass-embedded 1.74.1 (x86_64-linux)
Retrying download gem from https://rubygems.org/ due to error (2/4): Gem::RemoteFetcher::FetchError bad response Forbidden 403 (https://rubygems.org/gems/sass-embedded-1.74.1-x86_64-linux.gem)
Retrying download gem from https://rubygems.org/ due to error (3/4): Gem::RemoteFetcher::FetchError bad response Forbidden 403 (https://rubygems.org/gems/sass-embedded-1.74.1-x86_64-linux.gem)
Retrying download gem from https://rubygems.org/ due to error (4/4): Gem::RemoteFetcher::FetchError bad response Forbidden 403 (https://rubygems.org/gems/sass-embedded-1.74.1-x86_64-linux.gem)
Fetching nokogiri 1.16.2 (x86_64-linux)
Fetching icalendar 2.10.1
Installing icalendar 2.10.1
Fetching kramdown 2.4.0
Installing kramdown 2.4.0
Installing nokogiri 1.16.2 (x86_64-linux)
Fetching terminal-table 3.0.2
Fetching jekyll-timeago 0.15.0
Installing terminal-table 3.0.2
Fetching listen 3.9.0
Installing jekyll-timeago 0.15.0
Fetching time 0.3.0
Installing listen 3.9.0
Fetching kramdown-parser-gfm 1.1.0
Installing time 0.3.0
Fetching jekyll-watch 2.2.1
Installing kramdown-parser-gfm 1.1.0
Fetching open-uri 0.4.1
Installing jekyll-watch 2.2.1
Installing open-uri 0.4.1
Fetching activesupport <IP_ADDRESS>
Installing activesupport <IP_ADDRESS>
Fetching html-pipeline 2.14.3
Installing html-pipeline 2.14.3
Fetching em-websocket 0.5.3
Installing em-websocket 0.5.3
Bundler::HTTPError: Could not download gem from https://rubygems.org/ due to underlying error <bad response Forbidden 403 (https://rubygems.org/gems/sass-embedded-1.74.1-x86_64-linux.gem)>
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/rubygems_integration.rb:493:in rescue in download_gem'                                                                                /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/rubygems_integration.rb:465:in download_gem'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/source/rubygems.rb:485:in download_gem'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/source/rubygems.rb:447:in fetch_gem'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/source/rubygems.rb:431:in fetch_gem_if_possible'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/source/rubygems.rb:158:in install'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/installer/gem_installer.rb:54:in install'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/installer/gem_installer.rb:16:in install_from_spec'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/installer/parallel_installer.rb:155:in do_install'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/installer/parallel_installer.rb:146:in block in worker_pool'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/worker.rb:62:in apply_func'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/worker.rb:57:in block in process_queue'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/worker.rb:54:in loop'   /var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/worker.rb:54:in process_queue'
/var/lib/gems/3.1.0/gems/bundler-2.4.1/lib/bundler/worker.rb:90:in `block (2 levels) in create_threads'
An error occurred while installing sass-embedded (1.74.1), and Bundler cannot continue.
In Gemfile:
jekyll-feed was resolved to 0.17.0, which depends on
jekyll was resolved to 4.3.3, which depends on
jekyll-sass-converter was resolved to 3.0.0, which depends on
sass-embedded
I

Thanks @baggers27.
Mmm, don't know what to do here. Closing this issue as it was circumvented and seems to me the issue in more on the Jekyll side than the endoflife.date side.


Fix Issue #2535: validation documentation lacks reset method

Description
Fixes issue #2535:
Documentation / Library Reference / Validation missed the part about reset() method and running multiple validations after one another.
Added description and emphasized significance of reset() in section Working With Validation.
Checklist:

[x] Securely signed commits
[ ] Component(s) with PHPdocs - does not apply
[ ] Unit testing, with >80% coverage - does not apply
[x] User guide updated
[x] Conforms to style guide

@bivanbi You have some commits that were not signed; I cannot merge this until those are updated to verified commits.


option to disable go-runtime library load

because of cgo flags, the nvml symbol just remain undefined for now.
and that doesn't work for me, because I have go plugin dependency , which force all symbols to be resolved when the program starts (before we enter usercode runtime)
compile-time dependency for me is just ok.

Although we can add cgo flag by yourself, I am not sure whether there is still any performance penalty
/*
#cgo LDFLAGS: -lnvidia-ml
*/
import "C"

Try building with:
go build -ldflags="-extldflags=-Wl,-z,lazy" test.go

As pointed out here: https://github.com/NVIDIA/go-nvml/issues/18#issuecomment-809674036
The problem with doing:
/*
#cgo LDFLAGS: -lnvidia-ml
*/
import "C"

is that (1) you have to a specific version of NVML installed on your build machine and this version will then need to match the version of NVML on your deploy machine (whereas go-nvml is designed to work across all versions of NVML independent of build/deploy machine), and (2) you are forced to add this line to your application (it can't be added in the go-nvml library itself or otherwise a build dependency on NVML would be created).

I don't think that work because I have -znow already:
https://github.com/golang/go/blob/c5fee935bbb8f02406eb653cfed550593755a1a4/src/cmd/link/internal/ld/lib.go#L1383