Proposal to add an average variable bitrate (AVBR) ratecontrol system for x264

Proposal to add an average variable bitrate (AVBR) ratecontrol system for x264
In my never-ending quest to explore video transcoding, I've decided to revisit a disparaged ratecontrol system. In fact, it's the same system that I used in my original Bash-based scripts published back in 2014. So I'm the one who disparaged and then abandoned it. :)
That old ratecontrol system was based on the average bitrate (ABR) system built into the x264 encoder, just like the --abr option in transcode-video.
However, instead of constraining the maximum bitrate to reduce fluctuations like my --abr implementation does, it raised tolerance of missing the average bitrate to the maximum amount, disabling overflow detection completely.
So while the final bitrate would still be somewhat near the target, it allowed ABR much more variability to render complex scenes, making it behave more like a CRF-based encode. Unfortunately, that variability could also starve other quieter passages of needed bitrate, causing blockiness, color banding and other artifacts. Yikes!
But I've now figured out a very simple fix for all those quality problems. And the results are quite stunning.
The bad news is that both this old ratecontrol system and the new fix require the x264 encoder. Which means it's not available for HEVC/H.265 output.
The good news is that it works really well with the --quick or even --target small options and arguments.
Here's how I would describe the option to enable this new ratecontrol system within the built-in --help output of transcode-video:
    --x264-avbr     use average variable bitrate (AVBR) ratecontrol
                      (size near target with different quality than default)
                      (only available with x264 and x264_10bit encoders)

Why --x264-avbr? Well, I had to call it something. :) And I wanted to make sure it's not confused with --abr or the deprecated --vbr and that's it being x264-only is very clear.
But I'm open to a better name! So suggestions are welcome.
Since this new implementation is still a proposal, you can try it now using a wrapper script:
https://gist.github.com/donmelton/faf0fc60932fdcce8338bad7e909788f
Download the script and make sure it's executable and in your $PATH. Then use it like this:
experimental-x264-avbr-transcode-video.sh "/path/to/Movie.mkv"

You can also try it without the script by passing these options and arguments on the command line like this:
transcode-video \
    --abr \
    --encoder-option '_vbv-maxrate' \
    --encoder-option '_vbv-bufsize' \
    --encoder-option '_nal-hrd' \
    --encoder-option 'ratetol=inf' \
    --encoder-option 'mbtree=0' \
    "/path/to/Movie.mkv"

And to document the voodoo that I'm using to make "AVBR" work, here are the option-by-option details:

--abr: Start with the current ABR ratecontrol system.
--encoder-option '_vbv-maxrate' and --encoder-option '_vbv-bufsize': Disable the bitrate constraints.
--encoder-option '_nal-hrd': Disable signaling Hypothetical Reference Decoder (HRD) information in metadata.
--encoder-option 'ratetol=inf': This is the heart of the old ratecontrol system, raising rate tolerance to the maximum and disabling overflow detection.
--encoder-option 'mbtree=0': And this is the new fix, disabling Macroblock-tree ratecontrol built into x264. Basically this reduces compression efficiency but at the same time it prevents bitrates from getting to low, acting like another kind of constraint.

It's crazy, but it works!
Anyway, let me know what you think. Thanks.

I've not had a chance to do more testing since I saw this before, but I thought I'd put that feedback here as well:
I've done some comparisons with Prometheus, specifically looking at the dream sequence and the minute or so just after it. I've been comparing 3 ratecontrol systems: your default special one, --abr, and this new experimental one.
In terms of quality, I think this is somewhere between default and --abr. The dream sequence itself looks pretty damn similar to my eye with all 3 systems, but the dark scene immediately following is where the differences show themselves. The default system handles it well, as expected. This experimental one has a little banding banding, but is fine otherwise. --abr is the worst though, with fairly obvious blocking and banding all over the frame. I think 2 pass is needed in this film for --abr to do an acceptable job.
One of the things I'm conscious of is peak bitrate, because I predominantly target a streaming environment through Plex. With that in mind, I wanted to try and measure the peak bitrate, but I'm not really aware of any tools to do this. My (far from perfect) approach has been to transocde the film using each of the 3 systems in turn, then use ffmpeg to extract the h264 bitstream and split it into 1 second chunks named by their timestamp. I do this with the following command: ffmpeg -i input.mkv -map 0:v -c copy -f segment -segment_time 1 -break_non_keyframes 1 segments\seg%d.264. I can then sort by filesize and get a rough sense of where the bits get allocated. As measured by this approach, the default system has the highest peak bitrate, this experimental one is in second place, and abr has the lowest peak. All as expected really. What I found interesting is where that peak is in the film: for the default system it's about 5 minutes in, as expected. It's also consistently high in that sequence, ie. all the largest chunks are in that sequence. The experimental one is similar, but far less consistent. A lot of bits are also used in the first few seconds of the film, as well as a holographic scene about 30 minutes in. --abr is all over the place, loads of bits are used at the beginning and end, and there's not really much of a peak around 5 minutes.
So far I've not had any problems with using --abr though, and I've got the CPU power and patience to do 2 pass on the sources that need it and it's all worked out fine so far. I think I've reached an "if it ain't broke, don't fix it" stage in my transcoding journey, so I'm unlikely to start using this avbr system. But hey, I'm happy to be conviced anyway. I'll try and analyse at least on more film this week, but I'd say go ahead and put it in

@samhutchins Thanks, Sam! And that is a clever peak bitrate detection scheme!
As I mentioned in our email, "Prometheus (2012)" was one of my test cases for this since it's so problematic with single-pass --abr. And my goal with these ratecontrol schemes is for them to be used in a single pass.
With the new hardware-based transcoders behaving just like --abr and being almost as good (or even better in a few cases), I thought it was time to rethink things and see what could be improved.
For example, the confetti scene in the third chapter of "The Great Gatsby (2013)" is much better with AVBR. As is the beginning of any episode of "Game of Thrones" with that damn HBO logo. Those were also test cases.
But I don't expect every to switch over to it. :)

@donmelton As someone who always does a two-pass --abr this is all fascinating and I look forward to experimenting over the coming days with these settings.
@samhutchins By the way, if you play a file in VLC and click Window > Media Information > Statistics if will you show you the 'Stream bitrate' as it plays. It doesn't seem to be super accurate, but it can give you a rough idea of the peaks and trough.

@samhutchins BTW, since I'm not using the ratetol=inf trick in those single- and two-pass commands, that means the output is HRD compliant. So I could still signal Hypothetical Reference Decoder (HRD) information in metadata. Which makes --encoder-option '_nal-hrd' unnecessary.
Of course, the maximum bitrate will be 25 Mbps because that's the default since transcode-video will pass --encoder-level=4.0 to HandBrakeCLI for all 1080p content. Which means there still is a default VBV of 25000 for maxrate and 31250 for bufsize.

@elliotclowes Great! Let me know what you think. You can spam me, @samhutchins and everyone else here with your results. Seriously, I love this kind of interaction!

Apparently Intel QSV, the hardware encoder on most Macs, has a ratecontrol method called "AVBR" (unfortunately not available through VideoToolbox). But, based on the description, it works damn near identical to what I'm doing with this proposal.
Which means the name I picked is a good choice. :) But I'm seriously thinking about just shortening the option from "--x264-avbr" to "--avbr" because it's possible that the x265 team may one day restore the rate tolerance API that they removed (for no reason that I can determine), thus allowing me to implement this for HEVC output.
So, what does everyone think about "--avbr" as an option name?

@elliotclowes BTW, that "Statistics" feature of VLC is great! Thanks for the tip.

OK, after using the bitrate detection mechanism suggested by @samhutchins and the VLC "Statistic" feature suggested by @elliotclowes, plus a little of my own hacking, I've come to the conclusion that even with strict HRD compliance, the x264 encoder seems to exceed the VBV maximum bitrate on occasion. But in all these cases, the encoded output was still playable on underpowered devices like the Roku. Of course, even non-HRD compliant output from my "AVBR" system is still playable on those devices.
But not applying any VBV at all can make x264 encoded output unplayable or stutter during playback.
The good news is that transcode-video always applies the VBV to x264 output whether maxrate is constrained or not. Again, this is because transcode-video sets the encoder level and HandbrakeCLI applies a default VBV anyway.

@elliotclowes and @samhutchins So, after some testing of my own with other movies besides "Saving Private Ryan (1998)," I've concluded that using two-pass unconstrained ABR ratecontrol with the Macroblock tree disabled... is not a good idea.
For some strange reason, the two-pass algorithm in x264 requires Macroblock-tree ratecontrol to handle certain textures during bitrate spikes.
But, oddly enough, single-pass unconstrained ABR with Macroblock-tree ratecontrol disabled works fine in all those cases where two-pass ABR glitches. Go figure.
What surprised me the most, though, was when I accidentally did a few transcodings using single-pass unconstrained ABR with Macroblock-tree ratecontrol enabled, and they looked fine. WTF!?
In other words, I used a command like this:
transcode-video \
    --abr \
    --encoder-option '_vbv-maxrate' \
    --encoder-option '_vbv-bufsize' \
    --encoder-option '_nal-hrd' \
    "/path/to/Movie.mkv"

It seems the x264 development team has significantly improved the raw ABR algorithm over the last few years. It's not perfect, of course, but it looks damn good for about 90% of what I've tried so far.

I'm sorry I've not tested more films with --avbr, I've been busy all damn week. I'm glad you're able to do all this testing for us.
All this discussion has also shown me that I need to do some reading on vbv and hrd. In any case, as I said above, I'mma stick with 2-pass abr for now, open to switching to --avbr or default if I can convince myself it won't break anything in my streaming environment.
--avbr as an option name seems fine to me, --x264-avbr seems a little long. In any case, it needs more explaining than --abr, I think it's similar to --simple in that respect.

@samhutchins You are forgiven for having a real life. :)
As for my unreal life centered around this particular obsession... I've managed to transcode around 250 Blu-rays and a half dozen DVDs using --avbr so far. And I'm happy with the results. Nothing stands out as problematic yet. But you are wise to stick with ratecontrol methods you like and trust.
There is much to learn about about the VBV and HRD compliance for me, too. After observing what looks like it is doing, I need to spend more time digging into the actual source code of x264 to find out for sure.
And before I add --avbr (or even --raw) I think I may restructure the code to better switch between ratecontrol systems instead of adding another shitload of boolean flags. That needs a little cleanup.

@donmelton We all appreciate your obsessiveness.
My primary transcoding machine has been down for a week, but I expect to have it back running tomorrow. I've got a stack of files ready to run, so I'll start testing the --avbr settings and report back.

@khaosx LOL! :)
But yikes! I hope there's nothing seriously wrong with your hardware.
And thanks for testing!

Nah, it's all in the name of science. I bought a Nvidia Quadro P2000 to start playing with hardware transcoding in Plex. I needed to reconfigure my server to build out the lab, so I had to use the transcoder as a backup. I'm just waiting on the Plex/Linux stars to align on that one, so I can now bring up the transcoder in its proper role.
tl;dr - I'm a big dumb dummy head who is trying to run too many projects in the home lab, and not accomplishing anything :)

@khaosx Then you are not alone with your strategy, sir. I've done similar things many times to my own setup. :)
It's funny you mention hardware transcoding with Plex. I just recently enabled that on one of my Plex servers (a older macOS box) and it worked extremely well. Now I'm kicking myself for not realizing I could have done that months ago.

OK, the changes are in to support this proposal. But first I did that housekeeping I described to @samhutchins earlier:

Simplify and future-proof ratecontrol switching in transcode-video.

Then it was actually implement AVBR:

Add a --avbr ratecontrol option to transcode-video.

And finally a little undocumented testing API for me and people in the know, like all of you:

Add a double-secret --raw ratecontrol option to transcode-video.

I'll probably land all this and Sam's nifty --mixdown option sometime next week after more people get a chance to text AVBR. Let's not be too hasty, after all.

@donmelton Damn hoss...this looks GREAT. I've done a few test runs so far, the most impressive being chapter 13 of Red State. Lots of different action levels, jumpy camera work and cuts. I'll post back if I see anything out of whack (got another batch of 15 to do today), but it looks like a big improvement so far.

@khaosx Thanks for testing and I'm so glad you like it!

Here's the text I plan on appending to the "Explanation" section of the README document:

How my average variable bitrate (AVBR) ratecontrol system works
My average variable bitrate (AVBR) ratecontrol system, selected via the --avbr option, is also based on the ABR algorithm already within x264 which targets a specific bitrate.
But the maximum bitrate is not constrained like my ABR system.
Instead, the tolerance of missing the average bitrate is raised to the maximum amount, disabling overflow detection completely. This makes the ABR algorithm behave much more like a CRF-based encode, so final bitrates can be 10-15% higher or lower than the target.
And to prevent bitrates from getting too low, the Macroblock-tree ratecontrol system built into x264 is disabled. While this does lower compression efficiency somewhat, it significantly reduces blockiness, color banding and other artifacts.
Unfortunately, these modifications to implement AVBR are not possible when using x265.

Let me know what you think.

Although I don't have a copy of "Red State (2011)" like @khaosx, I've now transcoded about 300 Blu-ray rips with AVBR and the --quick option. Including some really difficult videos like:

Daybreakers (2009), which gives my special, or default, ratecontrol system fits dealing with grain and other textures
Young Frankenstein (1974)
War of the Worlds (2005), causing --abr some problems
Army of Darkness (1992)
The Great Gatsby (2013), causing --simple some problems

And I'm not seeing any issues!
But I haven't transcoded many DVD rips yet since I don't keep many around anymore. Has anyone else tried AVBR on DVD-sized content?
Anyway, I'm getting real close to releasing this. Maybe later today or tomorrow.
Last call to @samhutchins, @elliotclowes, @khaosx, @Mattrak, @ttyso or anyone else for additional comments. And thanks for all the feedback so far!

Can't believe I forgot to do this:

Make sure --avbr is only used with the x264 family of encoders.

Plus, transcode-video will now fail with a useful error message when using x265 or its brethren.

@donmelton I haven't tested any DVD's, but for BluRay content, thumbs up from me. I've tested it across my entire workflow - video quality is improved, no unintended consequences with sound or subtitles. Thunderbirds are GO!

@khaosx LOL! I was so hoping one of you would use that exact quote to endorse it. :)

I don't have much in the way of DVD content any more, but what little I have looks good. Thumbs up from me

@samhutchins Thanks! I need to start to ripping some old DVDs again. :)

OK, gang, this feature has been released in version 0.23.0. Thanks again for all the feedback and testing!

Da-da de-de da-da da-da da-HOCUS CADABRA!!!! I've necro'd the thread!
@donmelton and everyone else:
I just re-encoded seasons 1 and 2 of Game of Thrones, and they are flawless with the new system. I've done probably 60 movies so far, and they're great, but as noted before, the opening static fade for all HBO shows is usually a dead giveaway for cluster-fuckery in the system. Not anymore! Nice work, Big Daddy Don!

@khaosx You are very welcome, Kristopher! I'm so glad you like AVBR and thanks for that feedback!!!
I've redone my whole video collection with it so I agree with your evaluation.
 :)
I found a way to actually improve AVBR, specifically for the case of the video immediately following that damn HBO logo (and for that dark scene in "Prometheus (2012)" that @samhutchins loves to test).
And I was in the middle of writing an issue describing that "one weird trick" (my name for it :)  to ask for testing and feedback on it when I got your notification.
Seriously.
I can tell you that technique now or, if you want, you can wait for the whole writeup. Because you were definitely on my list of folks to "cc" when it's ready.

I can tell you that technique now or, if you want, you can wait for the whole writeup. Because you were definitely on my list of folks to "cc" when it's ready.

I'll wait for the whole write up, but only because I have family obligations all weekend. Looking forward to whatever voodoo you've got cooked up!


Old print are added to the new one

Hi, I found this problem printing with this library: when I launch the print the n time, it also print all the past n-1 prints overlapped in the same label. I don't know what could be cause this strange behaviour.

Ok, I found a solution by using "->add(Element::clear())" before any other element, even if it's not documented.


@url import for fonts makes relative requests

I have a piece of code:
@font-face {
  font-family: 'Roboto Slab Light';
  src: url('../fonts/RobotoSlab-Light.ttf');
}

That gets translated to [hash].ttf; now, because I'm using the history-API, the request to the ttf becomes for example accounts/[hash].ttf where hash is a hex-string. Can I make the loader output paths that are absolute? (if I make them absolute in the css, they are ignored like the docs say)

Use:
output: { publicPath: '/' }

To tell webpack not to be relative.


Completion details should have syntax highlighting

This is a big annoyance I've just come to accept in Visual Studio and VS Code and I suspect many other developers have too. The pop-up windows that explain function arguments and various other situations are very difficult to parse because they just wrap text wherever and no keywords are highlighted. In other words, the pop-up windows show code in a way that we would never accept in our source files. Here is an example showing what is expected for javascript array reduce. From this pop-up it is extremely difficult to tell how many arguments the function takes and of what kind. I'd really like to see each argument on its own line. If an argument is a function, then show each of the arguments to that function indented on its own line. Maybe have some highlighting too. I'm not sure what the right solution is, but I do know the current behavior makes it really tough to figure out what is going on.

Here is the image

I also found this a very lacking experience.

The issue is detail is just a string, meant for less-prominent info. We might allow string | MarkupContent in the future for detail to have code blocks.

Also see #34188

Closing as duplicate of #34188.


Provide a high level logging API so that test writers don't have to worry about fmt.Print for logging

Currently test writers have to do something like:
fmt.Fprintln(logrus.StandardLogger().Out, setupErr)
In order to get nice printing out of logrus because it doesn't handle new lines well. If we wrapped that functionality and provided them an api in kurtosis to do it, they wouldn't need to know to do that

Discussed, and decided that we don't need this because:

everything in Kurtosis uses Logrus (by our choice) which doesn't print newlines, but we don't need a wrapper here
everything in Ava should be configurable by the user and is coincidence that we use Logrus


Ubuntu Support

The ansible playbooks only support Redhat(/CentOS) at the moment. Are there any plans to also support Ubuntu (the versions from your support matrix) for the ansible deployment?

Yes, we have plans on the backlog for supporting other OS platforms, after this initial release. Ubuntu is next on the list.


After first run, rebar3 eunit runs all tests twice

Today I started experimenting with switching my project to rebar3, and ran into something interesting running eunit.
$ ./rebar3 eunit
... 8< snip 8< ...
  Failed: 1.  Skipped: 0.  Passed: 67.
$ ./rebar3 eunit
... 8< snip 8< ...
  Failed: 2.  Skipped: 0.  Passed: 135.

The failure is due to one of my tests making assumptions about the directory in which the test would be run - easily fixed. However, unless I clean up the _build directory, every eunit run after the first runs all my tests twice in addition to running a module in test that shouldn't be run since it doesn't end in _tests.

duplicate of https://github.com/rebar/rebar3/issues/568

Apologies for the duplicate issue; when I read #568 before posting this, for some reason I thought it was marked as closed.


How can I manually toggle lsp_signature

I want to be able to toggle the appearance of the lsp_signature window with the keybinding Ctrl+Shift+space, I don't want the window to appear by default unless I press that keybinding.

you can disable the floating windows and enable toggle key
 floating_window = false,
 toggle_key = '<M-x>'

Is there a way I can toggle the window's appearance with Ctrl+Shift+space, for some reason when I set `toggle_key = '', Ctrl+Shift+space still won't toggle the appearance of the signature window.

not sure I understand your requirement. Could you send your minium vimrc?
https://user-images.githubusercontent.com/1681295/216440983-a4e71099-f706-480f-a2a2-c6fea297b83e.mp4

This is the current way I have setup my lsp_signature (basically copied the example from the readme 😅):
 cfg = {
  verbose = false, -- show debug line number
  bind = true, -- This is mandatory, otherwise border config won't get registered.
               -- If you want to hook lspsaga or other signature handler, pls set to false
  doc_lines = 10, -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated);
                 -- set to 0 if you DO NOT want any API comments be shown
                 -- This setting only take effect in insert mode, it does not affect signature help in normal
                 -- mode, 10 by default

  max_height = 12, -- max height of signature floating_window
  max_width = 80, -- max_width of signature floating_window
  noice = false, -- set to true if you using noice to render markdown
  wrap = true, -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long

  floating_window = false, -- show hint in a floating window, set to false for virtual text only mode

  floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note:
  -- will set to true when fully tested, set to false will use whichever side has more space
  -- this setting will be helpful if you do not want the PUM and floating win overlap

  floating_window_off_x = 1, -- adjust float windows x position.
  floating_window_off_y = 0, -- adjust float windows y position. e.g -2 move window up 2 lines; 2 move down 2 lines
                              -- can be either number or function, see examples

  close_timeout = 4000, -- close floating window after ms when laster parameter is entered
  fix_pos = false,  -- set to true, the floating window will not auto-close until finish all parameters
  hint_enable = false, -- virtual hint enable
  hint_prefix = "🐼 ",  -- Panda for parameter, NOTE: for the terminal not support emoji, might crash
  hint_scheme = "String",
  hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight
  handler_opts = {
    border = "rounded"   -- double, rounded, single, shadow, none, or a table of borders
  },

  always_trigger = false, -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58

  auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil.
  extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","}
  zindex = 200, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom

  padding = '', -- character to pad on left and right of signature can be ' ', or '|'  etc

  transparency = nil, -- disabled by default, allow floating win transparent value 1~100
  shadow_blend = 36, -- if you using shadow as border use this set the opacity
  shadow_guibg = 'Black', -- if you using shadow as border use this set the color e.g. 'Green' or '#121315'
  timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency
  toggle_key = '<C-S-space>',

  select_signature_key = nil, -- cycle to next signature, e.g. '<M-n>' function overloading
  move_cursor_key = nil, -- imap, use nvim_set_current_win to move cursor between current win and floating
}

require'lsp_signature'.setup(cfg)

for some reason when I press Ctrl+Shift+space it doesn't toggle the lsp_signature popup.

what is the output of
:imap <C-S-Space>
Also <C-S-Space> will only enable in insert and snippet-insert and x mode

when I run :imap <C-S-Space> it prints out No mapping found, I forgot to mention that I am also using neovide, perhaps this could be causing the problem?

In that case, in your lsp_attach function, you can add a buffer keymap
e.g.
    vim.keymap.set({ 'i', 'v', 's' }, '<C-S-Space>', function()
      require('lsp_signature').toggle_float_win()
    end, { silent = true, noremap = true, buffer = bufnr, desc = 'toggle signature' })

Or for all opened buffers:
    vim.keymap.set({ 'i', 'v', 's' }, _LSP_SIG_CFG.toggle_key, function()
      require('lsp_signature').toggle_float_win()
    end, { silent = true, noremap = true,  desc = 'toggle signature' })

I tried setting the keymaps you suggested in my on_attach function, however this did not solve the issue either. This is probably a problem with neovide and not with the plugin itself since neovide has some issues with recoginising modifier keys in keybindings. For now I've settled with using <C-2> to toggle the appearance of the signature floating window. Thanks for the help!


Printing SQS Write + S3 File Upload

This pull request brings the Printer.js that uploads files to S3, grabs the link to the S3 object, and writes the message to SQS. The VM has an SQS read that will grab this link to download the file locally.


Feature Requests: add script to generate compile_commands.json to do code navigation using clangd

IDE for programming languages like Golang or Java, provides convenient code navigation features, and many programmers heavily rely on it.
Some C/C++ projects like envoy provides scripts to generate compile_commands.json, so that we can use clangd to achieve code navigation like other languages do.
This can help reducing the learning curve of bpf codes in this project, and willing to do further contribution.

Thanks. @tedli


Broken/outdated links in the documentation

The "source code structure" section is not correctly linking to the functions and comments (e.g., the BASTA main functions)

Hmm.. It seems to be a problem with the Sphinx build on ReadTheDocs. It works when I build it locally as shown in the screenshot below. I will investigate!

It it fixed on the devel-branch now. It was a configuration issue in conf.py causing the issues on ReadTheDocs. See: https://basta.readthedocs.io/en/devel/source_mainfuncs.html .
I will close the issue when it is merge into main.

Fixed in version 1.1.6


Randomized is still deterministic or initialize is broken

The following gives 5 identical initial states:
import symsim.examples.concrete.mountaincar.MountainCar
import symsim.concrete.Randomized

Randomized.repeat (MountainCar.initialize).take (3).toList // (A)

val t = MountainCar.initialize // (B)
Randomized.repeat (t).take (3).toList

(A) produces a list with 3 different states. (B) produces a list with 3 identical states

[ ] Create a regression test
[ ] Fix the bug :) It is a bit unclear whether initialize is at fault, or repeat is.

This seems to follow from unsoundness of inlining call-by-name arguments when side effects are possible:
var x = 2
def f (): Int = { x = x + 1; x }
def g (z: =>Int) = (z,z,z)

scala> g(f())
val res6: (Int, Int, Int) = (3,4,5)

scala> val temp = f()
val temp: Int = 6

scala> g(temp)
val res7: (Int, Int, Int) = (6,6,6)

In the end, as brittle as it is, it was a bug in initialize where randomized was forced too fast.  Closing this as fixed. (And hoping we will figure out a better solution one day).


fix: capsule-proxy should proxy users who owns multiple tenants. Remove v1beta1 ingress version

this PR closes #297 and also removes support for v1beta1 ingress version, as it is considered obsolete.

@prometherion, WDYT if I split this PR into 3 parts:

deprecating ingress v1beta1
refactoring error handling
fix for list\get

@prometherion split the commit into 2 separate and rollbacked all changes related to ingressclasses v1beta1 deprication


Creation of dummy content

Hi all, i am using articulate version 5.0.0.
I have migrated this to umbraco cloud version 13.
I have a problem where every time i clone down umbraco cloud project to work on locally and run it for the first time, Articulate creates an Articulate node in the content tree and adds dummy articles.
When this happens it creates new uda files causing schema mismatch untill they are committed and pushed to source control to be deployed on cloud.
Is there anyway to stop the creation of this dummy content in the content tree?
Thanks :)

Hi, would need some investigation into Umbraco for that. The content population is done via the normal Umbraco packaging system. IIRC, the packaging system works by adding a row to the DB to indicate that a package is installed. If that row doesn't exist, then it thinks the package is not installed and will proceed with installation. Perhaps there is a way to turn off auto-package installation and only rely on it to manually be triggered in the back office.

I'm also seeing this.  I clone fresh on a new machine and I get a collision.  When I login to the Umbraco back-office, there is dummy Articulate content and only the Articulate DocTypes.  I believe this creation is happening before the Cloud Restore can happen.
Is there a way to disable the initial dummy data and DocType creation?
I'll see if I can get around this be deleting everything and trying to restore again.

Hi, thanks Shazwazza, sorry I just noticed your comment after I got a notification from the other comment outlining they had the same issue. I haven't worked on Umbraco cloud since, but, I do remember I got round the problem by changing a setting in the Umbraco cloud deploy config. It's been a while and I don't have access to the project unfortunately

Yea, deleting the content, DocTypes, and Data Types added by Articulate, then revert the repo back to align with the "main" branch allowed the initial deploy to finish at the restore could start.


fix: empty imports.exclude array by default

🔗 Linked issue
Fixes a Nuxt related issue: https://github.com/nuxt/framework/issues/9961
I'm not sure this is the best way to fix it but this should at least allow for fully customizing that exclude array.

❓ Type of change

[ ] 📖 Documentation (updates to the documentation or readme)
[x] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

📝 Checklist

[x] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

Enabling auto imports for all node_modules can both impact performance and increase chances of unwanted auto import behavior.
Similar to Nuxt, we shall explicitly enable auto imports for options.dirs (~layers in nuxt 3)

Are folders explicitly set in options.dirs included despite options.exclude? e.g. would this still apply the plugin here:
imports: {
    dirs: ['node_modules/foo/composables']
    exclude: [/node_modules/]
}

Thanks so much for taking the time 💛


后台切换视频程序崩溃

Crash位置 SGVideoRenderer.m
[commandBuffer presentDrawable:drawable];
-[_MTLCommandBuffer presentDrawable:]:400: failed assertion `drawable must not be nil.'

https://github.com/mpv-player/mpv/pull/6903#issue-313095457

#107
Fixed it by checking the size of CAMetalLayer

👍


Document how to send pachd traffic through an HTTP load balancer

Something that is potentially confusing is that, by default, we configure pachd to listen on a LoadBalancer, and auth and dash to listen with an Ingress rule.  I get the feeling that people would like pachd's grpc traffic to go through their HTTP load balancer, so they can just run it on port 443 and multiplex by hostname.  This workflow is well-supported by many Ingress Controller implementations, and by HTTP proxies in general, but it's not how we currently set it up in Helm.
To set this up, we probably have to know the ingress controller by name, and generate a configuration specific to that ingress controller.  Worth looking into are ingress-nginx, nginx-ingress (a different project!), Traefik, Ambassador, Contour, AWS ALB, GCP HTTP Load Balancer, and the Azure Application Gateway.  Obviously writing the same configuration 8 times is a pain, but that's the state of Kubernetes ingress.
(Personally, I don't use or recommend Ingress controllers, but the world ignores my opinion there.  I just have an Envoy configuration that does exactly what I want, and it handles gRPC just fine.  I have heard in the past that Envoy breaks Pachyderm, but I honestly don't believe it.  We don't abuse the protocol in any way, and it's designed to work with gRPC.)

While I'm here, something I've been thinking about is just running all the services (pachd, console) in one pod, and having a sidecar that handles all the URL rewriting and sending requests to the right backend.  I use that pattern a lot when I have a setup that involves a frontend and a backend.  I run the frontend, backend, and envoy in the same k8s pod; envoy accepts requests to both containers on one port and routes them to the right place; then you just have one http port that you expose to the ingress controller or load balancer, and things work without any k8s-Ingress-level configuration.  Example: https://github.com/jrockway/jrock.us/blob/master/production/jsso2/envoy.yaml (and the deployment https://github.com/jrockway/jrock.us/blob/master/production/jsso2/deployment.yaml)

Using a load balancer for GRPC is more of a historical remnant since we've never really gotten grpc to play nicely with any reverse proxy we've thrown at it. IIRC envoy (via istio) cached requests, which is sensible for most http requests, but definitely got real sad with a large put file. This is configurable I imagine, but given the configuration surface of istio/envoy we chose to simply move away from it at the time.
Using two ports (and potentially two load balancers) definitely isn't ideal, but I'd like to collect more data on client setups before making a call here (Do they have an existing ingress controller at all? which one? etc) Using ingress as we are now in a vanilla fashion (host/path based routing) should be compatible with ingress controllers that confirm to the default spec.
I do like the elegance of adding our own proxy solution, but this should be balanced against the complexity of adding another component we need to support. Traditionally this would have gotten built into pach (ie. dex) but that's another discussion entirely.
We also need to consider existing services on a given cluster. ie if Istio exists on a customer cluster (a seemingly popular requirement for other data science products) our bespoke envoy configuration needs to work in concert with that.
Not trying to throw up a ton of roadblocks here, but I hope this context is helpful for the discussion. I agree our ingress (as in getting traffic into pach, not kubernetes ingress) story definitely needs work.


cleanup(libsinsp): add evt.hostname filter option

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area API-version

/area build

/area CI

/area driver-kmod

/area driver-bpf

/area driver-modern-bpf

/area libscap-engine-bpf

/area libscap-engine-gvisor

/area libscap-engine-kmod

/area libscap-engine-modern-bpf

/area libscap-engine-nodriver

/area libscap-engine-noop

/area libscap-engine-source-plugin

/area libscap-engine-savefile

/area libscap-engine-udig

/area libscap

/area libpman

/area libsinsp

/area tests

/area proposals

Does this PR require a change in the driver versions?

/version driver-API-version-major

/version driver-API-version-minor

/version driver-API-version-patch

/version driver-SCHEMA-version-major

/version driver-SCHEMA-version-minor

/version driver-SCHEMA-version-patch

What this PR does / why we need it:
Add evt.hostname filter option.
Which issue(s) this PR fixes:
https://github.com/falcosecurity/falco/issues/2506
https://github.com/falcosecurity/falco/issues/2497
CC @tspearconquest  @ericjulien-okta

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

cleanup(libsinsp): add `evt.hostname` filter option

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: incertum
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [incertum]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

LGTM label has been added.  Git tree hash: 1467fec18369e1cc3d6def3552991ec78b75a98a

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: Andreagit97, incertum
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS [Andreagit97,incertum]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

New changes are detected. LGTM label has been removed.

LGTM label has been added.  Git tree hash: 8a7ad7fa1a7a5ffb621a961e76c6c12f338c7d89


Uninstalling driver bricked my cerbo

Cerbo gx firmware 3.00~32 tried to uninstall the driver following the directions on the wiki. I copy and pasted and got no errors in the console so I'm sure I didn't enter anything wrong. After following all the instructions, several items on the gui were red. I reboot the cerbo hoping it would straighten itself out but it never came back on. Just a flashing red led and no display, no more console, no wifi or Bluetooth. Bricked unit. Great, now I get to go through warranty.

Hello,
did you run this?
DRIVERNAME=dbus-serialbattery

# handle read only mounts
sh /opt/victronenergy/swupdate-scripts/remount-rw.sh

# remove files
rm -rf /data/conf/serial-starter.d
rm -rf /opt/victronenergy/service/$DRIVERNAME
rm -rf /opt/victronenergy/service-templates/$DRIVERNAME
rm -rf /opt/victronenergy/$DRIVERNAME

# kill if running
pkill -f "python .*/$DRIVERNAME.py"

# remove install-script from rc.local
sed -i "/sh \/data\/etc\/$DRIVERNAME\/reinstalllocal.sh/d" /data/rc.local

Probably the line DRIVERNAME=dbus-serialbattery was not executed and now the folder /opt/victronenergy/ was deleted.
Did you try this? https://community.victronenergy.com/questions/66811/cerbo-not-booting-flashing-orange-light.html

Can you still connect over SSH? When this happened to me, this was still possible.
Upload this file via SFTP to /tmp and rename it to check-updates.sh:
check-updates.sh.txt
Connect over SSH and run bash /tmp/check-updates.sh -update -force

Yes those are the commands that I ran. I did come across those threads in my frantic search for a fix. The only serial adapter I have is a rs485 2 wire (rx/tx only). I'm sure I could figure out how to get the serial connection working but beyond that I would be lost without explicit step by step instructions. I'm not really a Linux guy. I know just enough to get myself into trouble, as evidenced by my previous post, lol.

Can you still connect over SSH? When this happened to me, this was still possible.
Execute this to force a firmware update and repair:
wget -O /tmp/check-updates.sh https://raw.githubusercontent.com/mr-manuel/venus-os_helpful-scripts/master/swupdate-scripts/check-updates.sh && bash /tmp/check-updates.sh -update -force

I no longer have access to ssh. I'm assuming running the update through the serial console is not an option since the os does not boot?

If the OS does not boot, than you have to change the boot partition. When you update Venus OS at least once, then the updater creates a second partition as "backup".

If the OS does not boot, than you have to change the boot partition. When you update Venus OS at least once, then the updater creates a second partition as "backup".

Ok 2 questions then...

Can I connect to the serial connection with the 2 wire rs485 adapter and if so, what do I use to access the terminal from within windows?
How do I change the boot partition?

It would be great if Victron could use the onboard button on the cerbo to initiate a boot partition swap for example hold the button while inserting the power connection.

No, you need a USB to serial (RS232) adapter.
Did you try to see, if the device is getting an IP address from DHCP or if you can ping the static IP, if you gave one?
Unfortunately I don't know it yet. I'm trying with my Raspberry to achieve this. Maybe someone other can help with that?

One firmware is on mmcblk0p2 and the other on mmcblk0p3, but I did not found, where it tells which partition is mounted.
firmware 1
root@raspberrypi:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 14.9G  0 disk
├─mmcblk0p1 179:1    0 41.3M  0 part /u-boot
├─mmcblk0p2 179:2    0  4.9G  0 part /
├─mmcblk0p3 179:3    0  4.9G  0 part
└─mmcblk0p4 179:4    0  5.1G  0 part /data

root@raspberrypi:~# cat /etc/fstab
/dev/root / auto defaults 1 0
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0
/dev/mmcblk0p1       /u-boot              vfat       defaults              0  0
/dev/mmcblk0p4       /data                ext4       noatime               0  2

firmware 2
root@raspberrypi:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 14.9G  0 disk
├─mmcblk0p1 179:1    0 41.3M  0 part /u-boot
├─mmcblk0p2 179:2    0  4.9G  0 part
├─mmcblk0p3 179:3    0  4.9G  0 part /
└─mmcblk0p4 179:4    0  5.1G  0 part /data

root@raspberrypi:~# cat /etc/fstab
/dev/root / auto defaults 1 0
proc                 /proc                proc       defaults              0  0
devpts               /dev/pts             devpts     mode=0620,gid=5       0  0
tmpfs                /run                 tmpfs      mode=0755,nodev,nosuid,strictatime 0  0
tmpfs                /var/volatile        tmpfs      defaults              0  0
/dev/mmcblk0p1       /u-boot              vfat       defaults              0  0
/dev/mmcblk0p4       /data                ext4       noatime               0  2

In the meanwhile you could try to establish a serial connection. If you have Windows you can use putty  for that.

It would be great if Victron could use the onboard button on the cerbo to initiate a boot partition swap for example hold the button while inserting the power connection.

Feel free to open a question in the Victron Community for that. Indeed that would be a great idea.

I did open a question on the victron forum for that. We'll see if there is any response. In the meantime, I have ordered a replacement cerbo which should be here day after tomorrow. My distributor has submitted for warranty replacement. I'm a little hesitant to try the driver again for fear of a repeat occurrence. All I was trying to do was get a fresh install of the latest release. The last few days I have been getting disconnects from the Daly after about 24hrs. Worked fine for a few weeks without a single coms failure then all of a sudden it started.

I already changed the uninstall script, so you cannot make any mistake again.
If you altrough are able to delete more than necessary and see several items on the GUI red, then DO NOT reboot the device. If the device is still online you can force a reinstall of the firmware. See https://github.com/Louisvdw/dbus-serialbattery/issues/576#issuecomment-1522807185
Adittionally to have a clean install you also can force a reinstall of the firmware with /opt/victronenergy/swupdate-scripts/check-updates.sh -update -force, but before delete the /data/rc.local file.
Nice to hear, that you got a new device under warranty!

I just ordered a replacement and will have to wait and see if I get the bricked unit replaced under warranty. ESS is down along with many other things that now rely on the cerbo for control. At least I am able to put all the blue stuff in stand alone so I'm not totally dead in the water.

I have already swapped the device but I have ordered a serial adapter and I am going to try to get serial console access and see if I can recover the device.

I'm still waiting for the adapter but I will report back once I have it and have a chance to check it out.

Got the serial adapter today and was able to connect to the console. As stated in a previous post opt/victronenergy had been deleted so there was no way to run any of the update scripts. I was able to copy the scripts from a working system and chmod to set file permissions then I was able to switch to the other partition and successfully boot the cerbo. It is alive again.

Could you describe how you did it? Which adapter did you ordered exactly and how did you copy the files? This will help also others with the same problem.

This link explains how to connect to the serial console https://www.victronenergy.com/live/ccgx:root_access#:~:text=CCGX Serial Console.-,Serial Console on Cerbo GX,are pins 4 and 5.
I used the adapter linked in the instructions
I used putty to connect to the console. Once connected I copied opt/victronenergy/swupdate-scripts (this is where all the update scripts are located) and opt/victronenergy/version onto the cerbo, then chmod a+x to all the files.
Then enter the following in console
/opt/victronenergy/swupdate-scripts/set-version.sh 2
Once the cerbo reboots do not swap back to the other image, force an update so a new image is written to the other partition. I just did an online update from settings.

Perfect, thanks!


OneToOne: extra unique index on primary column

Describe the bug
Schema generator creates unnecessary unique index on primary column in OneToOne relationship.
To Reproduce
Versions

Dependency
Version

node
v12.14.1

typescript
4.0.3

mikro-orm
4.2.4-dev.121

your-driver
postgresql

What do you mean, unnecessary? 1:1 is by definition unique and this needs to be enforces via unique constraint.

@B4nan you are absolutely right, but it is not needed is this column is the only primary column.
Test is here

ORM creates both primary and unique constraints for the same column.
alter table \\"user\\" add constraint \\"user_pkey\\" primary key (\\"app_id\\");
alter table \\"user\\" add constraint \\"user_app_id_unique\\" unique (\\"app_id\\");

I think alter table \\"user\\" add constraint \\"user_app_id_unique\\" unique (\\"app_id\\"); is extra constraint and I removed it in my test snapshot.


Nicole has joined the board

Is it weird if I approve myself? ;-)

No :P

Is 8347 my id number?!

Yep!


Security concern for terminal access, any plan for auth?

I am new to weave scope. Just got introduced to the great tool a day ago.
I was wondering an issue when I saw the terminal access on each container though. Does it mean that anyone who has access to the UI interface will have full access to each of the containers? I think the doc also mention this point somewhere and suggest to use caddy or weave cloud for better protection, but what if I only want to allow certain group of people to be able to access the control of each container, and rest can only view the general status from basic UI. Neither weave cloud nor caddy or any auth layer on top can solve the problem.
Is it possible to write a plugin for permission control? I have looked at the source code and the plugins tutorial. It seems like it is not designed to limit the functionality but only for extension.
I was looking at the react source code and I would say that if there is no such behavior for disabling the terminal expose for plugins, there is no way that a plugin can achieve this goal. Suppose that writing a plugin can possibly achieve this, how hard do you expect it to be? Is there any plan to make a user permission system on top of the weave scope layer? (I did not see it in the milestone on Github)
In a nutshell, there are ways to protect your services from external attack but no implementation on leveling internal user access. I think it is really important especially for any large scale company deploying multiple services and want to use weave scope for monitoring. If it is part of the plan, I am more than willing to help.
Please correct me if I misunderstand any part of the tool, thanks.

We will add fine-grained permissions - allowing control over who gets to use what features - to Weave Cloud at some point. There we already have the notion of users, auth, etc.
We are unlikely to add such functionality to scope.

So it is a no-go for #2814?

So it is a no-go for #2814?

Correct, but we would of course accept a PR to implement such functionality.


Implement brew cask help <command>.

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[ ] Have you successfully run brew tests with your changes locally?

Needed to display the usage information being added in https://github.com/Homebrew/brew/pull/7427.

Would this also be picked up by brew cask [command] --help?

@SMillerDev, now it should.

Does this close https://github.com/Homebrew/homebrew-cask/issues/78491?

No, because

This should be done by using the CLI/Parser logic in Homebrew/brew.


Navigate to repository Github page option in the popup

Right now when we select a repository there is a popup with a button to go to the repository. We can add another button to navigate to the repository Github page which every repository can maintain their own website on gh-pages branch.
Right now scikit-api Github page is on http://opensource.99xtechnology.com/scikit-api/
But for that every repository should maintain a well written website.
Just an idea I got. Open for suggestions

That's a good idea . I think we can use [api:https://developer.github.com/v3/repos/pages/] to enable disable this button based on page availability .
Anyone to take this idea forward ?

Every repo maintaining a website is the issue...

any updates?

Will close this issue for now since there's a lack of pages in most of the repos


can not delete default categories

V251 from droid for android. I am unable to delete default categories or rename then.

Yes, that is by design.

May I ask why? It would be nice to at least hide them if I never plan to use them.
On July 2, 2018 9:14:44 PM UTC, Steve Guidetti<EMAIL_ADDRESS>wrote:

Yes, that is by design.
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/ultramega/flavordex/issues/1#issuecomment-401938542

The details of the default categories are hard coded for historic reasons. They used to be separate apps which were merged with custom categories added.

Well, a hide feature might be a good idea at least in the future. But i like the app over all. Would be nice to have more entry customizations for more uses., less defaults that can't be removed.  But  that's a different subject.
On July 2, 2018 9:24:02 PM UTC, Steve Guidetti<EMAIL_ADDRESS>wrote:

The details of the default categories are hard coded for historic
reasons. They used to be separate apps which were merged with custom
categories added.
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/ultramega/flavordex/issues/1#issuecomment-401940909

Could not agree more.
The aesthetic functionality of not being able to delete the standard ones is worse for any user who does not use a category not ever will.
All in all you've made a pleasant interface and everything, but please sort this.


Bug: Some tests fail with exceptions and illegal instructions on an older CPU

Describe the bug
7 tests fail on Intel(R) Core(TM) i7 CPU 930  @ 2.80GHz:
Test project /usr/ports/devel/stringzilla/work/.build
      Start  1: stringzilla_bench_search
      Start  2: stringzilla_bench_similarity
      Start  3: stringzilla_bench_sort
      Start  4: stringzilla_bench_token
      Start  5: stringzilla_bench_container
      Start  6: stringzilla_bench_memory
      Start  7: stringzilla_test_cpp11
 1/13 Test  #1: stringzilla_bench_search ............Subprocess aborted***Exception:   0.01 sec
 2/13 Test  #3: stringzilla_bench_sort ..............Subprocess aborted***Exception:   0.01 sec
 3/13 Test  #4: stringzilla_bench_token .............   Passed    0.01 sec
 4/13 Test  #5: stringzilla_bench_container .........Subprocess aborted***Exception:   0.01 sec
      Start  8: stringzilla_test_cpp14
      Start  9: stringzilla_test_cpp17
      Start 10: stringzilla_test_cpp20
      Start 11: stringzilla_test_cpp20_x86_serial
 5/13 Test  #6: stringzilla_bench_memory ............Subprocess aborted***Exception:   0.02 sec
 6/13 Test #11: stringzilla_test_cpp20_x86_serial ...***Exception: Illegal  0.01 sec
      Start 12: stringzilla_test_cpp20_x86_avx2
      Start 13: stringzilla_test_cpp20_x86_avx512
 7/13 Test #12: stringzilla_test_cpp20_x86_avx2 .....***Exception: Illegal  0.05 sec
 8/13 Test #13: stringzilla_test_cpp20_x86_avx512 ...***Exception: Illegal  0.01 sec
 9/13 Test  #7: stringzilla_test_cpp11 ..............   Passed   42.42 sec
10/13 Test  #8: stringzilla_test_cpp14 ..............   Passed   43.22 sec
11/13 Test  #9: stringzilla_test_cpp17 ..............   Passed   61.30 sec
12/13 Test #10: stringzilla_test_cpp20 ..............   Passed   61.32 sec
13/13 Test  #2: stringzilla_bench_similarity ........   Passed  151.70 sec

46% tests passed, 7 tests failed out of 13

Total Test time (real) = 151.70 sec

The following tests FAILED:
          1 - stringzilla_bench_search (Subprocess aborted)
          3 - stringzilla_bench_sort (Subprocess aborted)
          5 - stringzilla_bench_container (Subprocess aborted)
          6 - stringzilla_bench_memory (Subprocess aborted)
         11 - stringzilla_test_cpp20_x86_serial (ILLEGAL)
         12 - stringzilla_test_cpp20_x86_avx2 (ILLEGAL)
         13 - stringzilla_test_cpp20_x86_avx512 (ILLEGAL)
Errors while running CTest
Output from these tests are in: /usr/ports/devel/stringzilla/work/.build/Testing/Temporary/LastTest.log
Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
FAILED: CMakeFiles/test.util
cd /usr/ports/devel/stringzilla/work/.build && /usr/local/bin/ctest --force-new-ctest-process
ninja: build stopped: subcommand failed.
*** Error code 1

LastTest.log
It isn't clear from tests whether SiringZilla is actually broken on this CPU, or only tests fail.
IMO you should
(1) use libcpuid to detect CPU capabilities and don't build tests for CPUs that are above the current one, with a meaningful message
(2) maybe be able to build all tests for the currently available CPU
(3) Catch unhandled exceptions
The cpuid utility prints this:
$ cpuid
 eax in    eax      ebx      ecx      edx
00000000 0000000b 756e6547 6c65746e 49656e69
00000001 000106a5 05100800 0098e3bd bfebfbff
00000002 55035a01 00f0b2e4 00000000 09ca212c
00000003 00000000 00000000 00000000 00000000
00000004 1c004121 01c0003f 0000003f 00000000
00000005 00000040 00000040 00000003 00001120
00000006 00000003 00000002 00000001 00000000
00000007 00000000 00000000 00000000 00000000
00000008 00000000 00000000 00000000 00000000
00000009 00000000 00000000 00000000 00000000
0000000a 07300403 00000044 00000000 00000603
0000000b 00000001 00000002 00000100 00000005
80000000 80000008 00000000 00000000 00000000
80000001 00000000 00000000 00000001 28100800
80000002 65746e49 2952286c 726f4320 4d542865
80000003 37692029 55504320 20202020 20202020
80000004 30333920 20402020 30382e32 007a4847
80000005 00000000 00000000 00000000 00000000
80000006 00000000 00000000 01006040 00000000
80000007 00000000 00000000 00000000 00000100
80000008 00003024 00000000 00000000 00000000

Vendor ID: "GenuineIntel"; CPUID level 11

Intel-specific functions:
Version 000106a5:
Type 0 - Original OEM
Family 6 - Pentium Pro
Model 26 -
Stepping 5
Reserved 0

Extended brand string: "Intel(R) Core(TM) i7 CPU         930  @ 2.80GHz"
CLFLUSH instruction cache line size: 8
Initial APIC ID: 5
Hyper threading siblings: 16

Feature flags set 1 (CPUID.01H:EDX): bfebfbff:
FPU    Floating Point Unit
VME    Virtual 8086 Mode Enhancements
DE     Debugging Extensions
PSE    Page Size Extensions
TSC    Time Stamp Counter
MSR    Model Specific Registers
PAE    Physical Address Extension
MCE    Machine Check Exception
CX8    COMPXCHG8B Instruction
APIC   On-chip Advanced Programmable Interrupt Controller present and enabled
SEP    Fast System Call
MTRR   Memory Type Range Registers
PGE    PTE Global Flag
MCA    Machine Check Architecture
CMOV   Conditional Move and Compare Instructions
FGPAT  Page Attribute Table
PSE-36 36-bit Page Size Extension
CLFSH  CFLUSH instruction
DS     Debug store
ACPI   Thermal Monitor and Clock Ctrl
MMX    MMX instruction set
FXSR   Fast FP/MMX Streaming SIMD Extensions save/restore
SSE    Streaming SIMD Extensions instruction set
SSE2   SSE2 extensions
SS     Self Snoop
HT     Hyper Threading
TM     Thermal monitor
31     Pending Break Enable

Feature flags set 2 (CPUID.01H:ECX): 0098e3bd:
SSE3     SSE3 extensions
DTES64   64-bit debug store
MONITOR  MONITOR/MWAIT instructions
DS-CPL   CPL Qualified Debug Store
VMX      Virtual Machine Extensions
EST      Enhanced Intel SpeedStep Technology
TM2      Thermal Monitor 2
SSSE3    Supplemental Streaming SIMD Extension 3
CX16     CMPXCHG16B
xTPR     Send Task Priority messages
PDCM     Perfmon and debug capability
SSE4.1   Streaming SIMD Extension 4.1
SSE4.2   Streaming SIMD Extension 4.2
POPCNT   POPCNT instruction

Extended feature flags set 1 (CPUID.80000001H:EDX): 28100800
SYSCALL   SYSCALL/SYSRET instructions
XD-bit    Execution Disable bit
RDTSCP    RDTSCP and IA32_TSC_AUX are available
EM64T     Intel Extended Memory 64 Technology

Extended feature flags set 2 (CPUID.80000001H:ECX): 00000001
LAHF      LAHF/SAHF available in IA-32e mode

Old-styled TLB and cache info:
5a: Data TLB: 2MB or 4MB pages, 4-way set associative, 32 entries
03: Data TLB: 4KB pages, 4-way set assoc, 64 entries
55: Instruction TLB: 2MB or 4MB pages, fully assoc., 7 entries
e4: 3rd-level cache: 8MB, 16-way set associative, 64-byte line size
b2: Instruction TLB: 4-KB Pages, 4-way set associative, 64 entries
f0: 64-byte prefetching
2c: 1st-level data cache: 32-KB, 8-way set associative, 64-byte line size
21: 256-KB L2 (MLC), 8-way set associative, 64 byte line size
ca: Shared 2nd-level TLB: 4-KB Pages, 4-way set associative, 512 entries
09: 1st-level instruction cache: 32KB, 4-way set assoc, 64 byte line size

Processor serial: 0001-06A5-0000-0000-0000-0000

Deterministic Cache Parameters:
index=0: eax=1c004121 ebx=01c0003f ecx=0000003f edx=00000000
> Data cache, level 1, self initializing
> 64 sets, 8 ways, 1 partitions, line size 64
> full size 32768 bytes
> shared between up to 2 threads
> NB this package has up to 8 threads
index=1: eax=1c004122 ebx=00c0003f ecx=0000007f edx=00000000
> Instruction cache, level 1, self initializing
> 128 sets, 4 ways, 1 partitions, line size 64
> full size 32768 bytes
> shared between up to 2 threads
index=2: eax=1c004143 ebx=01c0003f ecx=000001ff edx=00000000
> Unified cache, level 2, self initializing
> 512 sets, 8 ways, 1 partitions, line size 64
> full size 262144 bytes
> shared between up to 2 threads
index=3: eax=1c03c163 ebx=03c0003f ecx=00001fff edx=00000002
> Unified cache, level 3, self initializing
> 8192 sets, 16 ways, 1 partitions, line size 64
> full size 8388608 bytes
> shared between up to 16 threads

Steps to reproduce
tests
Expected behavior
n/a
StringZilla version
3.11.2
Operating System
FreeBSD 14.2
Hardware architecture
x86
Which interface are you using?
C implementation
Contact Details
No response
Are you open to being tagged as a contributor?

[X] I am open to being mentioned in the project .git history as a contributor

Is there an existing issue for this?

[X] I have searched the existing issues

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Thanks for reporting this, @yurivict! Any chance you could help locate the problem? I'm working on new algos for the next major release 🤗

Here is the location of unconditional use of advanced CPU model: https://github.com/ashvardanian/StringZilla/blob/main/CMakeLists.txt#L279
This should be made conditional on the presence of such CPU features based on libcpuid output.

Oh, you are not supposed to run those tests, even if you build them. Building them is still necessary, to make sure all of the dispatch logic is implemented properly.

cmake automatically runs them.
I there a target that excludes them?
What about uncaught exceptions?


KS-Backend | Fix the review pipeline

Description :sparkles:
Issues :bug:
Testing :alembic:
Screenshots :camera_flash:
Additional notes :spiral_notepad:

Codecov Report

Merging #53 (465c85a) into main (daae24d) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #53   +/-   ##
=======================================
  Coverage   96.20%   96.20%
=======================================
  Files          39       39
  Lines         948      948
=======================================
  Hits          912      912
  Misses         36       36

Continue to review full report at Codecov.

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


some bugs with showdown-ghost

Issue Summary
some bugs with showdown-ghost:

>:

">" always compiled to the quote, even I want to show ">=", it was compiled to

=

I think the ">" may be compiled only when a space behind it, like "> "

- in table syntax

Showdown supports table syntax, but Ghost didnot turn on. So I added the "table" support by myself, but came across a bug:
My code:
| a | a |
| ----- | ----- |
| - | a |

I want to show:

a
a

-
a

But ghost show:

a
a

·
a

"-" was compiled to list item.
Technical details:

Ghost Version: 0.11.7
Node Version: 4.x
Browser/OS: chrome/56
Database: sqlite3

@imzhengfei Thanks for your report 👍

Re the first issue with blockquotes, this is exactly the same as how it works here on github:

= something

As far as I am aware, there's nothing in the markdown spec saying exactly how this should work, however Ghost's showdown markdown is at least consistent with major players.
With regards to table markdown - Ghost does not support this, therefore this is not an issue we would fix. If you really need a table, the expectation is that you would use HTML, e.g. <table>.

@imzhengfei the correct way to fix the quote problem in markdown is to escape the markdown characters, e.g. \>=
>= this works because the quote char is escaped with a \


Use TF Hub without networking?

The module is usually big files and it is unfriendly for slow network. Is it possible to download a module as a file and install it from file?

This download already happens by default (
https://www.tensorflow.org/hub/basics). The module is downloaded into
system's temp directory. You can change the location of the download by
setting TFHUB_CACHED_DIR environment variable.
On Tue, Jun 26, 2018 at 9:34 AM draplater<EMAIL_ADDRESS>wrote:

The module is usually big files and it is unfriendly for slow network. Is
it possible to download a module as a file and install it from file?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/hub/issues/90, or mute the thread
https://github.com/notifications/unsubscribe-auth/AbunTIav7G7RW74Us7_hAFj0YHt1sXgdks5uAePsgaJpZM4U3Y4J
.

Minor typo - should be: TFHUB_CACHE_DIR (not CACHED)


Prow checks are not enforced

This means PRs can be merged into observability without OWNERS approval or passing tests.

This is step 5 in https://github.com/knative/test-infra/blob/master/ci/prow_setup.md#setting-up-prow-for-a-new-repo-reviewers-assignment-and-auto-merge

/close
Based on https://github.com/knative/observability/pull/51#issuecomment-536668071 and its response, https://github.com/knative/observability/pull/51#issuecomment-536668076, I think Prow is working correctly. At least it passes the test suggested by the instructions in https://github.com/knative/observability/issues/25#issuecomment-491398421 and had reviewers added.

/reopen
This issue is not about the presubmits tests being run, but about them being required to pass in order for a PR to be submitted. This is the step 5 mentioned in the comment above. Right now, a PR can be merged even if all the presubmit tests fail.
For example, open any unmerged PR in this repo and check the status of the presubmit tests: they're not required, and even if failing GitHub allows the merge.

Now check how things are in a correctly set repo, like serving, for the same situation:

/assign @mdemirhan
Set tide as a required status check for the master branch. As specified in https://github.com/knative/test-infra/blob/master/ci/prow_setup.md#setting-up-prow-for-a-new-repo-reviewers-assignment-and-auto-merge.


install&run

how can i install and run portus with the Official  images in  https://hub.docker.com/r/opensuse/portus/

Hi @niuhp you can take a look at examples of howto run Portus here https://github.com/SUSE/Portus/tree/master/examples

That being said, the current head version is broken due to #1418. For now you can use a backup that I have at mssola/portus:susecon. It's a bit old, but it works. I'll mark this as a duplicate of #1418, and ping you back once this situation is fixed.

This has already been solved by introducing our examples directory. Moreover, check out our how to deploy page.


Process pure ordering changes with windowing operators

adds a new query build path: DruidQuery#toScanAndSortQuery which:

builds a ScanQuery without considering the current ordering
builds an operator to execute the sort

fixes a null string to "null" literal string conversion in the frame serializer code
fixes some DrillWindowQueryTest cases
fix NPE in NaiveSortOperator in case there was no input
enables back CoreRules.AGGREGATE_REMOVE
adds a processing level OffsetLimit class and uses that instead of just the limit in the rac parts
earlier window expressions on top of a subquery with an offset may have ignored the offset

  SELECT
    FLOOR(__time TO DAY) t,
    COUNT(1) OVER ()
  FROM ( select * from foo offset 3 ) f

But now throws a NPE. Although this is under window functions and need not be investigated as a part of this PR. I'll open an issue to track it.

it was a an issue caused by:

ScanQuery not returning types for columns not being mapped by a VC
so later on some COMPLEX column type was created as a last restort with a null inner type...
which was dereferenced during a lookup in by a ConcurrentHashMap

I've fixed it in this PR as the underlying datasource did know the correct types; it was just not forwarded correctly - but we can remove it if that's preffered
I've added your query to CalciteQueryTest :)

@somu-imply, @abhishekagarwal87, @clintropolis could you please take another look?

@kgyrtkirk - You will also need to change the docs here https://druid.apache.org/docs/latest/querying/scan-query.


Moodle security report - permissions

Hi ! I'm checking moodle's security report (/report/security/index.php) on my installed site and there is an "error" with public paths: vendor, node_modules, .lock, db/install.xml and others.
As I'm nos familiarized with alpine I'm asking for some advice to fix them.
Thanks in advance

If you have a node_modules folder maybe you've installed a custom theme, plugin or something else. You can enter the container to delete that folder and another file marked as security problem. AFAIK the docker image doesn't have this files.
BTW I will check for this files next week when I release a new version with the updated noodle

Other errors also are:

When sh inside container, all files belong to "nobody". Sorry but I'm not sure how to deal with users and permissions since I'm not root.
Could you help me to fix this? Thanks!

The "Check all public / private paths", "Writable config.php" and "Executable paths" warnings are fixed. The .swf one is not possible to fix on install because is needed, but you can manually fix


Fix placeholder account bug

WORK IN PROGRESS

[x] redirect users with credentials for the bad account to a custom support page
[x] confirm support page content with Elise
[x] update tests for ProfileUtils and ValidAccountFilter
[x] log user out and display prompt telling them to log back in
[ ] confirm getting the profile email address will work as expected for an already logged-in user

Doc on the filter feature used in this PR: https://www.playframework.com/documentation/2.8.x/JavaHttpFilters
Screencap of the support page:

Fixes #1764.


chore: add Biome to the suggested formatters

Prerequisites checklist

[x] I have read the contributing guidelines.

What is the purpose of this pull request?
To add another JS formatter to the list

What changes did you make? (Give an overview)
A change to the blog post
Related Issues
None
Is there anything you'd like reviewers to focus on?
The addition of a new tool as alternative

I'm only comfortable suggesting formatters I've actually used.


Use explicit ModuleTemplate .spec.manager info to determine the module manager

Description
We determine the manifest state based on the state of its manager here: https://github.com/kyma-project/lifecycle-manager/blob/main/internal/manifest/statecheck/state_check.go
Right now, we determine the manager implicitly, i.e., the first deployment or stateful set that we find as part of the module resources. With https://github.com/kyma-project/lifecycle-manager/issues/1681 we will introduce explicit information what the manager of the module is. We should use this to refactor this implicit determination of the manager.
Reasons
More explicit code, less prone to errors (not only manager deployment in raw manifest)
Acceptance Criteria

[ ] manager explicitly looked up by the GVK info from the ModuleTemplate

[ ] if not present in the manifest => throw an error (may already be validated long before the state check)
[ ] if not found in the SKR

[ ] within 1 min of creation of the ManifestCR => return state.Processing
[ ] after 1 min of creation of the ManifestCR => return state.Error

Feature Testing
No response
Testing approach
No response
Attachments
No response

Blocked right now until ADR is completed and API change is implemented.

When rolling out the current state check without the explicit manager, we experienced problems with Cloud Manager. The key assumption that every module has a manager deployed to the cluster doesn't hold, as Cloud Manager is a KCP component.
For Cloud Manager, we only deploy the CRD to the SKR. If this fails, we already error out before determining the manager state. We could allow the CRD to be specified as manager (field name is then questionable, but I would say it is okay given that this should be an exceptional case). With that, we would have 3 supported state checks from KLM perspective:
type Manager struct {
	group,
        version,
        kind,
        namespace,
        name
}

type ManagerStateCheck struct {
       // holds
       // "deployment"=>DeploymentStateChecker: checks based on deployment resources
       // "statefulset"=>StatefulSetStateChecker: checks based on statefulset resources
       // "crd"=>CRDStateChecker: directly returns Ready as this is a "non active" resource and we take the fact that the SSA worked as proof that the module is installed
       checkers map[string]StateChecker
}

func (m *ManagerStateCheck) GetState(ctx context.Context, mngr Manager, resources []*resource.Info) (shared.State, error) {
  if checker, hit := m.checkers[mngr.kind]; !hit {
    return shared.StateError, ErrNoCheckForGivenKind
  }
  return checker.GetState(ctx, mngr, resources)
}

For Kyma dashboard / CLI not much changes. They take the manager info and check if the resource is there in the SKR. If so, it is assumed that the module is installed.

Closing this issue as we are not aiming to use this info in lifecycle-manager. We should rather have a follow-up where it is clarified what states the end user needs exactly, and who is responsible for providing what, e.g.:

Manifest.Status => only tells if KLM was able to apply the manifest
DefaultCR.Status => tells if the module is functional
Manager.Status => tells if the module's manager is up and running, affects the DefaultCR.Status


Saving best "test" checkpoint error

The best_test_f1 should be updated with test_f1 instead of dev_f1.

Good catch! Thank you so much for contributing.


No default CARTO attribution on VL apps, especially if using non-OSM basemaps

Speaking with some developers today, it seems that CARTO VL is making it difficult to embed a CARTO attribution by default. I believe typical attribution comes from using an OSM basemap, and would then be included in the (i) icon, but when using non-OSM basemaps, there is no CARTO attribution displayed.
How can we make it simpler for developers to include a CARTO attribution by default, especially if they're required to per their contract?
@makella @jsanz - feel free to add anything to this issue that I've overlooked.

Related to https://github.com/CartoDB/design/issues/1561


Upgrade powerbi-visuals-api to latest version

While using pbiviz, I noticed that the version of powerbi-visuals-ap is set to ^2.6.2 automatically. If I manually upgrade the version to 3.8.2 (latest), running pbiviz will downgrade it to 2.6.2 automatically.
Is there a specific reason why an older version (a year old) is pinned? And is there a way to upgrade this version, without being dependent from an update of the tools.

Hello!
In the pbiviz.json increase the apiVersion to 3.8.2 too. It helped me.

Thanks @dmitryvorono, I will give it a try! Do you know if this is documented somewhere, otherwise I will leave this issue open for tracking purposes.

@dmitryvorono seems that it is not possible to increate the apiVersion with pbiviz 3.2.3.
```error  VALIDATION   Invalid API Version v3.8.2````
 error  VALIDATION   Invalid API Version v3.8.0

set API 3.8.0 in pbiviz.json file and run the following command:
npm i --save<EMAIL_ADDRESS>

Thanks @uve, it seems to work. Running pbiviz start the first time was a bit flaky, but a second time it worked without issues.
For example:

and
.
However, the above workaround is sufficient so I will close this issue.


Create more blocks to interact with tokens

Move token
Rotate token
Change disposition
Change vision settings
Change elevation
Add/Remove status
Change plate name
Change image
Change scale

Following blocks has been introduced in v0.7.0 :

Move token
Rotate token
Change elevation
Change scale


Please check zones are filled

Hi,
When exporting fabrication outputs from KiCad it checks that all zones are filled and issue below warning if that is not the case:

It would be nice if this plugin could do the same. I just noticed because I had a board come back where I had moved a component without refilling the zone :(
-- john

Sounds good, but I not sure how to check if the board if refilled after a change at the moment

This would be nice, but im not sure how you would implement it, perhaps try enabling the auto zone refill in your settings?


Create Posts “testando-essa-pika”

Automatically generated by Netlify CMS

👷 Deploy Preview for compassionate-jennings-382ffe processing.
🔨 Explore the source changes: 89abea06c5267e14e9f1ee7ed0f6d54c8f29bc9d
🔍 Inspect the deploy log: https://app.netlify.com/sites/compassionate-jennings-382ffe/deploys/61a547142a8a8b0007ed225d


CopytoClipboardButton does not work when streaming

Bug description
When I try to copy a response to the clipboard when streaming, at most 1 letter seems to be selected.
It appears to work correctly when using the demo assistants (where there is no streaming).
How to reproduce the bug?
Select an assistant that involves streaming and try to copy the response with the button.
Versions and dependencies used
No response
Anything else?
The logic is contained in central_view.py. A ReactiveHTML component is created for CopyToClipboardButton. I think that when we are streaming, we are not passing the full value to this component.

I don't think we have ever selected a correct behavior here. I think there are two options:

Copy whatever message fragment is already there
Disable the copy button until streaming is done and afterwards copy the whole message

Of those two I would prefer 2. But we should look around how others, i.e. OpenAI / Anthropic / ..., handle this. No need to diverge here if there is an established behavior.

@pmeier OpenAI follow 2. I would also prefer 2 for performance reasons with panel.
I can open a short PR later if 2 is okay.


Possible to find Channel name based on session or user that is outside of consumers?

(Sorry, in advance!)
I've read through the docs but I was not able to find any information about if it is possible to find Channel name based on session or user that is outside of consumers.
Let's say I've got a signal after a model instance is created and I want it to then send a message to that user that the instance was created, but I also want to send it to a session (stored in model instance; someone else's session, not the user).
But these messages should be private since they need to be sent individually.
Using django-websocket-redis I can achieve it doing something like this for user:
RedisPublisher(facility="user", users=[instance.user.username])
or for session:
RedisPublisher(facility="anonymous", sessions=[instance.session])
Is this possible with channels? Or is the best way to add the user and the session client to separate groups and then send message through groups?
I read this beforehand:
https://github.com/andrewgodwin/channels/issues/106

You should use Groups for this, just keyed off of user ID or session key, in a very similar way to the RedisPublisher example. Groups are in general the way to send messages to something other than a specific open websocket connection identified by reply_channel.


[Feature] Tests for transformation plugins

Feature Request
Is your feature request related to a problem? Please describe.
We should have tests for each plugin that ensure it's working as epxected
Describe the solution you'd like
The plugins ultimately add transformations to the Cloudinary Image instance. For each test, we can create a new image instance, apply the plugin, then inspect the transformations on the instance to verify it's working
For instance:
const cldImage = cld.image('test-public-id');
plugin(cldImage)
// expect cldImage to have the transformations

I'd like to take a look at this one.

all yours @funbunch

Heyo @colbyfayock. I've been helping @funbunch with this one, but it looks like this may be an outdated issue. It was made before plugins got added to @cloudinary-util/url-loader. That repo seems to already have tests for the plugins. Are we missing something?

hey @michaeljolley! generally yeah I believe you're right, but it was a bit open ended, I probably could have been more specific. as time went on i tried to be better about adding tests, so it was moreso meant to cover before i was a bit more diligent about it
there are a few missing in there, like the zoompan plugin could use a test or two with the complexity there. the sanitize plugin could have a test making sure it targets SVGs only. and so on
if you'd like i can spend some time going through and identify missing tests, otherwise i'd be happy with whatever you all come up with and can spend that time later on to see if there are any gaps worth filling!
what do you think?

That sounds good @colbyfayock. I think those tests would live in the https://github.com/colbyfayock/cloudinary-util repo rather than this one correct?

oh 🤦 my bad, you're right - would you be interested in adding those tests there? happy to create this issue there


Update Eigen version to commit fd6845384b866b28d336f43ffa70b982f9f3056e

PR #20229 included a change to the Eigen version that failed to
compile on ppc64le. rmlarsen created a pull request in Eigen to
fix the compile failure:
https://bitbucket.org/eigen/eigen/pull-requests/410
This patch is to pick up the Eigen version of that patch.

bzmirror link ready. starting tests.


Site admin functionality missing from web2

Here's a starting point for site admin functionality currently available in Legacy:
https://github.com/joindin/joindin-legacy/search?q=user_is_admin&unscoped_q=user_is_admin
https://github.com/joindin/joindin-legacy/search?q=issiteadmin&unscoped_q=issiteadmin
Let's use this issue to decide what to port, and link other issues/PRs for the actual porting. Some things we don't need to bring over.
Stuff we've looked at:

[x] user_is_admin
[x] ->isSiteAdmin()
[ ] "admin" across the entire codebase

NOTE: Some if this may already be implemented in web2/api
In addition, we need to be able to approve/otherwise deal with pending events

For user_is_admin, we have:
== Definitely Need ==

Delete talk comment
User admin (list, de/activate, set as admin)

== May Need ==

Add new event

== Definitely Don't Need ==

Blog Stuff (@svpernova09 maybe pull posts over into WP?)

From my side, the most important things are

View (and approve/reject) pending events
User-admin (CRUD + make priovileged/admin/superadmin)

That would IMO allow us to turn off legacy.
All the other things can then follow. It would be great to have all the "definitely need" items within 3 months...

As viewing and approving/rejecting events already works with web2 IMO the only thing left to turn off legacy would be User-Admin...


dns data is wrong

LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	AnolisOS
Description:	Anolis OS release 8.8
Release:	8.8
Codename:	n/a
{"starttime":1686893499,"cgroupid":1,"pns":1442590160,"pid":12152,"tid":12122,"uid":0,"gid":0,"ppid":0,"pgid":0,"sessionid":0,"comm":"consul-1.1.1-1","pcomm":"","nodename":"","retval":90,"exe_hash":"-1","username":"root","exe":"-1","syscall":"udp_recvmsg","ppid_argv":"-1","pgid_argv":"-1","pod_name":"-1","opcode":7,"rcode":10,"qtype":0,"atype":0,"dns_data":"M�\u0004AP\u0013#\u0017�//TV$����1)\n�p�f)�М%�\u001c��B� I��r�S�8��L7O�P��\u001d\u0007��F\u0014��g7�|\u0008��)�89��","sip":"<IP_ADDRESS>","sport":8301,"dip":"<IP_ADDRESS>","dport":0}

Can not reproduce the issue, in anolis 8.8

reopen this if problem reproduced


pub build should also produce dart2dart compilation

This issue was originally filed by @butlermatt

Per the discussion on this thread:
https://groups.google.com/a/dartlang.org/d/topic/misc/8O1ABCQqTZY/discussion
It would be nice to have pub build also run dart2dart with minification and place that in the build directory as well. Particularly as we approach 1.0.

This issue has been moved to dart-lang/pub#705.


Profile page needs to link to latest package version

Go to http://preview.nuget.org/profiles/romiller.com and click on the first package. Notice the link includes the version. It should not include the version. It should just link to the package id.

Fixed with changeset 72f1036873f65a938befd3a98c7de28d6c4071c8


fix: huawei clirc region not correct

这个 PR 实现什么功能/修复什么问题:
fix: huawei clirc region not correct

[x] 功能、bugfix描述
[x] 冒烟测试
[ ] 单元测试编写

是否需要 backport 到之前的 release 分支:
None
/area region
/cc @zexi

Codecov Report

Merging #8349 into master will decrease coverage by 2.59%.
The diff coverage is 0.00%.

@@            Coverage Diff            @@
##           master   #8349      +/-   ##
=========================================
- Coverage    6.12%   3.53%   -2.60%
=========================================
  Files         762     304     -458
  Lines      118376   62563   -55813
=========================================
- Hits         7256    2213    -5043
+ Misses     110465   60197   -50268
+ Partials      655     153     -502

Flag
Coverage Δ

#aFlag
3.53% <0.00%> (-2.60%)
:arrow_down:

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

Impacted Files
Coverage Δ

pkg/compute/models/cloudproviders.go
0.86% <0.00%> (ø)

pkg/compute/regiondrivers/kvm.go

pkg/cloudcommon/db/db_joint_dispatcher.go

pkg/cloudcommon/validators/misc.go

pkg/cloudcommon/db/namevalidator.go

pkg/monitor/alerting/conditions/query.go

pkg/keystone/models/roleresource.go

pkg/cloudcommon/db/enabledstatusinfrasresource.go

pkg/multicloud/aws/monitor.go

pkg/apigateway/clientman/totp.go

... and 448 more

Continue to review full report at Codecov.

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

/lgtm
/approve


Update notification can be too big making it impossible to close

Update message cannot be scrolled or closed if message is longer than window height.

Fixed in #6


Some driver samples support register() some do not

It would be nice to have guidance on if drivers should all support register() or if it is optional, and if so, when it should/should not be supported.

Hi, @salamanders
All drivers that can register with the Android framework, using the UserDriver library, should have a UserDriver class and the correspondent register() method(s). For some drivers, there's no possible framework integration. For example, there's no UserDriver API for integrating the apa102 driver with the Android framework. In those cases, we only provide a driver that abstracts the low level interface.
If you see a driver that could have an equivalent UserDriver integration but does not, please open a specific bug and we will take a look.


STS doesnt use service account IAM role

Following the guide here https://docs.aws.amazon.com/eks/latest/userguide/create-service-account-iam-policy-and-role.html
https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html
and https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html
i can verify the PODS get populated with environment variable for service account and role arn
 # env | grep AWS_
AWS_ROLE_ARN=arn:aws:iam::496386341798:role/ROLE_NAME
AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token

the code should use these environment variables to make call like sts.assumeRoleWithWebIdentity(params, function(err, data) { the docs mention IAM role for service account  but the code is void of such functionality.
it would be nice to extend the code to make service account IAM role feature work https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/STS.html#assumeRoleWithWebIdentity-property

I belive the code uses the IRSA role but when using secrets where it should assume a role for the secret as well it is not assuming using the IRSA credentials.

by help of https://github.com/godaddy/kubernetes-external-secrets/issues/161#issuecomment-540591653 i was able to got it working :)

this was the fix
helm install --namespace=default external-secrets external-secrets/kubernetes-external-secrets --set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"=arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME> --set securityContext."fsGroup"=65534

the fsGroup must be set to that to get that working


Add option to display author profile details

Hi, have added an option to display the profile details of author as said in #6
Usage:
devto author sarthology -p
or
devto author sarthology --profile
Demo:

Kindly review and suggest changes if any. Thank you.

Good Job Dude @anto-christo


fix(#18): System dlib build

It seems new versions of dlib use C++14, and require you to set -std=c++14, cpp_build defaults(?) to C++11.
This was tested using DLib 19.24.2 on NixOs, using GCC 12.3.0.

It may affet th windows build too and should be changed there, but I can't test that so...

Duplicate with #24


Remove mob crit states

At least where it was just a dummy mob state. I'm lazy so this will buff mobs where they will remain active until their death state though most mobs feel slightly undertuned for health anyway.
:cl:

fix: Remove dummy crit states for mobs that don't implement it.

mob buff hype


PR: set correct executable of profiler, when using non-default

Description of Changes
I looked into this old community-issue and found that it is still reproducible.
The profiler always uses the sys.executable and not the configured one.
This is fixed by accessing the current executable from the config.

[ ] Wrote at least one-line docstrings (for any new functions)
[ ] Added unit test(s) covering the changes (if testable)

[ ] Included a screenshot or animation (if affecting the UI, see Licecap)

Issue(s) Resolved

Fixes #1884
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.

I certify the above statement is true and correct: Florian Maurer

As it happens, I looked into the same issue with the unittest plugin and came up with this code
if self.get_conf(section='main_interpreter', option='default'):
    executable = get_python_executable()
else:
    executable = self.get_conf(section='main_interpreter',
                               option='custom_interpreter')

My conclusion was that, contrary to what you say in PR #17788, the custom_interpreter config option does work for me and in fact it is always equal to the executable config option. However, if the user chooses the default Python interpreter in the options, then we should not use custom_interpreter or executable but use the function get_python_executable().
I don't know why my experience is different from yours. One thing might be that I used the 5.x branch of Spyder, while you looked at master. Maybe something changed? If it did, it would be good to know.
I did not know that the widget also has .get_conf(), I will use that to simplify my code.

Hi, searching in the spyder code for 'custom_interpreter' only gives get_conf.
The only set_conf access of this config happens in
https://github.com/spyder-ide/spyder/blob/6d8472a75c9516393a94cb2579aa5c2eb155ef7b/spyder/plugins/maininterpreter/confpage.py#L71
Maybe I am missing something, but I just looked into 5.x and did not see something different than on master.
But you are right, that the custom_interpreter is somehow set correctly through the option param of create_file_combobox:
https://github.com/spyder-ide/spyder/blob/6d8472a75c9516393a94cb2579aa5c2eb155ef7b/spyder/plugins/maininterpreter/confpage.py#L108-L113
Somehow it still behaves weird.
Having an entry for a custom interpreter, and the interpreter set to default - I still get the custom_interpreter value when issuing self.get_conf('executable', section='main_interpreter') from a plugin..

Actually I think there should be an API which always returns the actually used interpreter for running code/profiler/unittest/... - I think this would be Plugins.MainInterpreter.get_interpreter():
https://github.com/spyder-ide/spyder/blob/cdab0b3479b18178082233bb6abe8d8ba6724c51/spyder/plugins/maininterpreter/plugin.py#L103
It would be used like this:
        maininterpreter = self.get_plugin(Plugins.MainInterpreter)
        executable = maininterpreter.get_interpreter()

Maybe thats the best way to go here?

Actually I think there should be an API which always returns the actually used interpreter for running code/profiler/unittest/

This suggestion sounds very reasonable to me, so I agree with it.
@dalthviz, what do you think?

Actually I think there should be an API which always returns the actually used interpreter for running code/profiler/unittest/

This suggestion sounds very reasonable to me, so I agree with it.

That sounds good :+1:
Just in case, I think the reason to have the custom_interpreter config value is to save and also be able to see in the preferences page the current selected custom interpreter. So, for example, even if I select the default interpreter option you can see in the custom interpreter dropdown which was the last custom selected value (I will have to check the code but I think that is the logic behind that):

Actually I think there should be an API which always returns the actually used interpreter for running code/profiler/unittest/... - I think this would be Plugins.MainInterpreter.get_interpreter():

It would be nice to have an API like that.
For my case, it would not be enough to have a function like Plugins.MainInterpreter.get_interpreter() because this function can't be called from a widget. There should also be a signal notifying changes in the interpreter, so that other plugins can be notified of any change and then use the get_interpreter() function to get the new interpreter and transmit that information to the plugin's widget.

What is speaking against using
executable = self.get_conf('executable', section='main_interpreter')
as this can be used from "anywhere" - means, it is more flexible than calling the MainInterpreter plugin?
There are also many situations where 'executable' is assumed to always contain the currently used interpreter.
So it would be fitting.
Where should i implement the get_interpreter function otherwise?

Checking, I think the MainInterpreter container has already a signal for that (sig_interpreter_changed):
https://github.com/spyder-ide/spyder/blob/ebc2587fad6d58e24f55e589173a921cbc08b1af/spyder/plugins/maininterpreter/container.py#L30-L33
Probably the MainInterpreter plugin should expose that?
Seems like the Completion plugin is using that signal already to handle the interpreter being updated:
https://github.com/spyder-ide/spyder/blob/ebc2587fad6d58e24f55e589173a921cbc08b1af/spyder/plugins/completion/plugin.py#L296-L306

As far as I understand the code:

maininterpreter executable always contains the current active executable used for code execution
many situations handle edge-cases multiple times and look into custom_executable which is not needed
status widget accesses the current interpreter to show it in the bottom bar (but it uses sys.executable directly, which is not always the used interpreter)
status widget checks updated interpreter and .conda_trash, which is not handled elsewhere?
maininterpreter executable is kept in config and
pythonw and spyder.exe checks occur quite often, even when get_python_executable is used before as fallback
the current "public API" can only be called from a plugin. For now the "official way" is looking into the config, which isn't the best either

I updated my other pull request, as I think that this one only fixes the profiler executable

maininterpreter executable always contains the current active executable used for code execution

I think that when I tested, this is not true when the user uses the default Python; in that case, the executable config variable equals the custom interpreter, not the default one.

Yes exactly, i did fix this, as I think that this should be the behavior and allows to remove the other checks when acxessing the executable

Hello @maurerle! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file spyder/plugins/maininterpreter/confpage.py:

Line 54:80: E501 line too long (89 > 79 characters)

In the file spyder/plugins/maininterpreter/container.py:

Line 56:80: E501 line too long (81 > 79 characters)

Closing this in favor of #17788, which solves this issue and unifies access to the current used interpreter through self.get_conf('executable', section='main_interpreter')