Rendering issues with ligatures

I am using gvim 7.4.865. When using a font with ligatures (such as Pragmata Pro) rendering issues occur in such a way to make gvim practically unusable. This happens even when gvim is started like this: gvim -N -u NONE
To reproduce. simply start gvim and select a font with ligatures. I've only tried with Pragmata Pro but it should do the same on other fonts.  Then enter insert mode and type any text.

Is this related to the issue when rendering Complex Text Layout (CTL) languages (eg: Indic languages)? I see rendering issues when pasting or typing (for example this Hindi sentence)                                                                      रात को ये 6 आसान काम करने से बहुत जल्दी कम हो सकता है पेट

Potentially - if the error is the same. I can't say myself though.

To reproduce. simply start gvim and select a font with ligatures. I've only tried with Pragmata Pro but it should do the same on other fonts. Then enter insert mode and type any text.

Is there a free version available, that shows the issue? I only found a commercial version of Pragmata Pro

This was already discussed in vim_dev some time ago, see [1]
[1] https://groups.google.com/forum/#!topic/vim_dev/0sETSAwe5Wo

Hi Giuseppe!
On Fr, 18 Sep 2015, Giuseppe wrote:

This was already discussed in vim_dev some time ago, see [1]
[1] https://groups.google.com/forum/#!topic/vim_dev/0sETSAwe5Wo

And this makes font rendering work with ligatures? Can you post a
screenshot of a patched Vim and an unpatched Vim?
Best,
Christian
Je mehr der Mensch des ganzen Ernstes fähig ist, desto herzlicher kann
er lachen.
-- Arthur Schopenhauer

Not really, I've briefly tested the patched vim with the PragmataPro font and it's still unusable [1].
I don't use the ligatures myself but I just stumbled across this problem this morning, when I mistakenly set the font to PragmataPro instead of PragmataPro Mono
[1] http://inky.ws/g/3av

Is there a free version available, that shows the issue? I only found a commercial version of Pragmata Pro

The same can be achieved using https://github.com/tonsky/FiraCode/ and yes the mentioned patch works for me with 7.4.160 (and other patches from the RHEL-7 package). There are some problems (e.g., =~ shouldn’t be displayed as ≃), but otherwise it seems to be working.

Now this patch works even with vim 8.0.003:

The patch works! Here's a sample with PragmataPro:

@mcepl
The patch is no longer available via the provided url (http://paste.fedoraproject.org/427667/73785436/), could you put it up again?

@thedward @mcepl I made a public gist from the copy I had: https://gist.github.com/Yabes/942922a058f828a4596fb96f57f0aa7d

OK, couple of links:

the latest updated version of the patch
if you are on Fedora/RHEL there is my COPR with the latest vim8 and the patch included
discussion about this patch, it configuration (which is anything but trivial ATM) is on

@mcepl patched vim from COPR lik above seems to have GUI disabled during compile-time - I couldn't start gvim on fedora 25.

@uentity sorry, I messed up ... due to https://bugzilla.gnome.org/show_bug.cgi?id=773387 (and consequently #1193) I have switched to Gtk2 (it is more or less the same anyway) and forgot to fix BuildRequires. It should be corrected in vim-8.0.0086-1.0.13.

@mcepl thanks! Installed 1.0.13 and everything seems working great, including rendering speed! Fixed rendering is related to Gtk3 -> Gtk2 switch?

I think so.

Just a heads up that to get ligatures to work in Windows, you have to switch to using directx in renderoption. (see https://github.com/tonsky/FiraCode/issues/462).

Just to say that I have refreshed my RHEL/Fedora vim COPR to the latest patch from this repository (1097) and reapplied suggested patch fixing this issue. It is all on https://copr.fedorainfracloud.org/coprs/mcepl/vim8/ .

Can you post an updated patch please?

Can you post an updated patch please?

There is nothing updated about it. It is still https://github.com/manuelschiller/vim/commit/0c8d6a735f1f6452b11c0da039f8c9c9f125475a (you can get source RPM from the website of the COPR which includes all patches).

Everyone rejoice! :smiley:
Here is automated build of ligatures enabled GVim8 deb package from vim/master
You'll need Docker and docker-compose for fully automated experience or just Docker if you don't want to install docker-compose.
If you have a need of RPM package - let me know in issues and I'll try automating it as well.

If you have a need of RPM package - let me know in issues and I'll try automating it as well.

https://github.com/vim/vim/issues/418#issuecomment-328962149 … or take them from my COPR.

@brammool @chrisbra What’s missing from this patch to be merged? Should I make a pull request?

Any updates on this and any chance to get the patch on the next Vim release?

last i know, it had some rendering issues and one needs to press Ctrl-L to fix that. Is that still true?

Is that still true?

No, it is not (at least for me on RHEL-7 with Gtk3). I have been using ligatures in my vim builds for more than a year and I have yet to see a problem with it.

@chrosbra - work for me on Ubuntu 16.04 w/o such problem with FiraCode. vim 8.0.1207, libgtk3 - 3.18.9

Same as @gasparch. I had to add --enable-gui=gtk3 to the ./configure command (GTK2 didn't seem to work) and let g:gtk_nocache=[0x00000000, 0xfc00ffff, 0xf8000001, 0x78000001] to my .vimrc.

so it only works with the gtk3 build? I suppose it also does not work with a terminal build, right? How hard would it be to make it work with different guis?

@chrisbra for terminal build to work - terminal emulator should support it, there is nothing to be done on vim side. Konsole works fine  even with unpatched vim :)
About gtk2 - seems people above reported it working with gtk2 as well.

I am confused. Can we please have some documentation, that describes how the patch is used and where it actually works? I suppose it won't work at least for the old athena and motif guis (which is probably okay), but I wonder if this really works in both gtk2 and gtk3 guis. It should also mention, that setting the g:gtk_nocache won't be needed for terminal vim and describe how to get ligatures working on terminal vim (and of course gtk2 and gtk3). I suppose a test would be nice, as well.

Also the linked patch mentions that rendering artifacts still occur even with this patch. But this comment says it works flawlessly?

Works without problems for me too for half a year of daily use :)
So I see that missing part now is the user-facing documentation, what should be mentioned in documentation?

list of supported frontends? gtk2/gtk3?
what setting to set in .vimrc to enable ligatures - g:gtk_nocache (it does not affect terminal version at all, so may be set in .vimrc and not only in .gvimrc)
references/links to fonts supporting ligatures?
link to supported terminals from FiraCode site (most probably it does not make sense to put list in vim documentation, because then it needs to be maintained :)

In which doc files these should go / in which sections?

I would say, somewhere in gui_x11.txt somewhere below the gui-gtk tag. Add a new tag like gui-gtk-ligatures and then a proper description of the feature and all your points you mentioned. A link to the README from the FiraCode site for the supported terminals is probably okay.
Note, I am only pointing out things that needs to be addressed before this can be merged, however I do not have the power to have this merged, so I cannot promise it will be merged once this has been added. That is Brams responsibility, but showing dedication to have this improved should help :)

Well, it makes sense to have functionality documented :) In worst case scenario - we as community can put more effort in having separate builds available for all major platforms ;)

I am confused. Can we please have some documentation, that describes how the patch is used and where it actually works?

Tested only on RHEL-7 and Fedora 26 (I believe) with builds from https://copr.fedorainfracloud.org/coprs/mcepl/vim8/ (COPR is something like PPA but for Fedora/RHEL). The process of applying is shown in the SPEC file.

I suppose it won't work at least for the old athena and motif guis (which is probably okay), but I wonder if this really works in both gtk2 and gtk3 guis. It should also mention, that setting the g:gtk_nocache won't be needed for terminal vim and describe how to get ligatures working on terminal vim (and of course gtk2 and gtk3). I suppose a test would be nice, as well.

I think terminal is completely orthogonal to vim, isn't it? It just depends on the terminal used (and unfortunately my gnome-terminal doesn’t support it.
Status of Gtk2 is weird … how much is further development of it even supported? Isn’t it bugfixes only at this time? BTW, just a off-topic question, why does vim supports gtk2 still? What are the platforms having gtk2 and not gtk3?

I think terminal is completely orthogonal to vim, isn't it? It just depends on the terminal used (and unfortunately my gnome-terminal doesn’t support it.

Yes, but it should be mentioned that this feature only works in the Gui and terminal vim depends entirely on the terminal emulator used.

Status of Gtk2 is weird … how much is further development of it even supported? Isn’t it bugfixes only at this time? BTW, just a off-topic question, why does vim supports gtk2 still? What are the platforms having gtk2 and not gtk3?

Some people still like to use gtk2 gui (for performance or smoothness reasons or whatever else) and nobody has yet requested to remove it. So unless the gtk2 libraries are not available anymore, we still like to give the users the chance to use whatever they like.

I personally don't use latest reincarnation of this patch, especially with
GTK3.  Even cursor movement delays heavily.
Instead I build my own vim with GTK2 and prev unconditional version of
patch (without defining variables in .vimrc). And that way it works, but
occasional rendering corruption becomes very noticable. Anyway that's
better that strong lag.
IMHO this patch implements some kind of imroper/not effective way to do
ligatures rendering. Maybe some more deep changes are needed? BTW I'm NOT a
vim expert and can't suggest anything. This is just my feelings about this
patch.
2017-11-13 19:59 GMT+05:00 Christian Brabandt<EMAIL_ADDRESS>
I think terminal is completely orthogonal to vim, isn't it? It just
depends on the terminal used (and unfortunately my gnome-terminal doesn’t
support it.
Yes, but it should be mentioned that this feature only works in the Gui
and terminal vim depends entirely on the terminal emulator used.
Status of Gtk2 is weird … how much is further development of it even
supported? Isn’t it bugfixes only at this time? BTW, just a off-topic
question, why does vim supports gtk2 still? What are the platforms having
gtk2 and not gtk3?
Some people still like to use gtk2 gui (for performance or smoothness
reasons or whatever else) and nobody has yet requested to remove it. So
unless the gtk2 libraries are not available anymore, we still like to give
the users the chance to use whatever they like.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/vim/vim/issues/418#issuecomment-343944888, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAEWuPu7tJENhTDhP5t8-yGbfjn1YXazks5s2FlpgaJpZM4F8eg0
.

--
С уважением,
Александр Гагарин.

sounds like the patch is not quite ready to be included...

@uentity https://github.com/manuelschiller/vim/commit/0c8d6a735f1f6452b11c0da039f8c9c9f125475a#commitcomment-25592492

@mcepl The COPR repo doesn't exist anymore. Does it live somewhere else?

The COPR repo doesn't exist anymore. Does it live somewhere else?

@iweiss Sorry, I stopped using vim at all and switched to neovim. https://github.com/daa84/neovim-gtk supports ligatures, although https://github.com/daa84/neovim-gtk/issues/143 makes thing complicated.

Any chance we can see this getting done? I mean, I'm aware it's not a critical thing - after all we can still do our jobs without it - but it would be really nice to see ligatures working on vim/gVim.

@galvao https://github.com/daa84/neovim-gtk/ works just fine. Sorry for advertising.

latest version of the patch seems to be: https://github.com/manuelschiller/vim/commit/81ca0b478e7e2e03d2d5f951e9278bc0fe826c2f

latest version of the patch seems to be: https://github.com/manuelschiller/vim/commit/81ca0b478e7e2e03d2d5f951e9278bc0fe826c2f

I can confirm, building gvim on Arch linux with patch manuelschiller@81ca0b4 works flawlessly. I don't see any performance losses.
Only thing that could possibly optimize things further is extracting
static char_u* vname = (char_u*) "g:gtk_nocache";
	dictitem_T *di = find_var(vname, NULL, FALSE);
	list_T* l = (NULL == di || VAR_LIST != di->di_tv.v_type) ?
	    NULL : di->di_tv.vval.v_list;

somewhere more global, so it doesn't happen on every gui_gtk2_draw_string().
For what it's worth, I cast my vote to get this merged into stock production code. Ty.

Reading some more of that patch, it can be affected by processor endianness, big-endian (BE) and little-endian (LE) processors can interpret mask differently. While we stay on Intel/AMD it will work but on ARM it can fail because of hardcoded bit positions.
Give me few days, I think I can optimize this and get it ready for production.

Reading some more of that patch, it can be affected by processor endianness, big-endian (BE) and little-endian (LE) processors can interpret mask differently.

Unless I misread my own code which I admittedly wrote a number of years ago, I do not think that can happen. I tried this patch in house on both x86_64 (LE) and ultrasparc (BE) when I wrote it, and I didn't see different behaviour. Are you sure you're not misreading what happens? To have endianness issues, the code would need to interpret some kind of multi-byte integer at the level of bytes in memory (i.e. to do some form of type punning, either through byte-wise memory access, changing the type of a pointer, or through a union) which it does not do. The code just stays with the integers it gets from the list, and works with those. I think if there are portability issues, they're not due to processor endianness. OTOH, it's late, so let me know if I'm mistaken. :)
By the way, I'm working (when I can find a moment) on some docs as well, see 808515e9773264c0a7008dabc519742b154a72e2 and 7f85e322dee20244478def27806a6b61cfd7e596. Unfortunately, I don't have much time due to constraints at work, so if you want to run with these two newer pointers, be my guest.

Maybe I misread, sorry if I did -- if you tested in both variants and it works then it works.
Thing that raised concern for me is shifting
if (*p & 0x80 || (1 & (bmap[*p >> 5] >> (*p & 31))))
and hex definitions of four unsigned 32bit integers --  possible cause of problems if you shift and mask in the wrong direction on wrong architecture.
I am using your patch for quite some time and it is working without any problems. What I would love to do is to avoid reading g: variable in each pass and to avoid falling back to goto not_ascii; too often. Altrough I just learned gvim is not caching bold and italic so anything but plain ascii falls back there anyway.
I am just testing what *s in gui_gtk2_draw_string holds and we could as well just disable normal cached glyph output alltogether:
    if (!(flags & DRAW_ITALIC)
	    && !((flags & DRAW_BOLD) && gui.font_can_bold)
	    && gui.ascii_glyphs != NULL
	    && 0)

So I would reuse some of your logic but not code, will try to fall back to 'quick' output more often. Give me few days to see what I can come up with. Oh and certainly sometime in the future we have to cache bold and (maybe)italic -- current output just flushes bold to not_ascii which is very not quick with any theme that uses bold (like gruvbox I am using, all function names are bold so they fall to pango.

Work in progress. Just a short question to someone more experienced with gvim: is there a reason we don't cache bold and itailc same way as we do for normal text, in ascii_glyph_table_init? If no reason I would like to add those two (can gvim do bold+italic?) so we don't fall to not_ascii that often.

First mail needs to be approved. I did so now, because I haven't received a notification yet about a pending mail :/

nit: looks like there are some white space issues (tabs and non tabs mixed). Also I think the coding style can be improved (e.g. one statement per line), check :h coding-style (or have a look around other code)

Comments, help and contributors welcome -- main issue being I'll need to spend another day to figure out how to expose global set variable, something in the spirit of guifont or isfname.

I suppose a global-option is fine here? I think you need to define it in option.h and optionsdefs.h like all the other ones. The add a check around optionstr.c for doing the error checking of that option. And then you can use it instead of the hard-coded value. Add a section to the help option.txt.
I usually just use one similar option and copy and paste and adjust it then where needed :)

Thanks about mail. Yes. I will fix indentation of course, tabs/spaces always cause trouble. Tbh looking at code I couldn't figure out what the standard is -> will format everything properly of course.
Thanks for the hints about global option, that's exactly the pointer I need to avoid looking where is what. I'll have variable handling soon.

I'll test-drive your patch later in the evening. One thing I think I can see already is that some fonts have really funny ligatures like "[INFO]" or "[DEBUG]" (yes, that's a multi-character ligature beast). Your code seems to assume that you'll only ever have a handful characters that can occur in a ligature, so memchr is a viable solution. But if that's not true (and I think you cannot assume it is if you make the list of potentially ligatured characters user-tunable), I'm not sure that memchr is a good solution. You may have to go back to the mask idea. (I'd be happy to provide some code tonight that would only replace your memchr call with something else, if you think it useful.)

:h coding-style

Super useful, thanks.

funny ligatures like "[INFO]" or "[DEBUG]"

I am using all kinds of ligature capable fonts for quite some time and never seen this. Can you please share few of the funny fonts (names/links), I'd like to take a look? Do we really want to index something very niche (since Victor Mono, Cascadia or Fira Code don't have [INFO]) that will slow down output significantly?
https://github.com/tonsky/FiraCode is pretty much gold standard of what is expected of ligatures, please show links.
I would certainly avoid to fall down to Pango in 99% of cases just to catch [DEBUG] ligature.

Well, my daily driver is Pragmata Pro (just search the web), which is admittedly a bit crazy, but really nice to work with... And I'd like to keep working with it in vim.

Depending on community thoughts, furthest I am willing to risk speed and performance is to add something like
set ligature_start = '['
ret ligature_end = ']'
and to process anything in between with Pango -- which would solve Pragmata Pro exceptions.
However this two would be optional since other fonts don't have such ligatures.
Anything more than that and we could as well disable glyphs and render everything trough not_ascii/Pango, which is not very optimal.

It would not be sufficient - it also does special things like ligatures for some C/C++ keywords, and some other crazy things. I think if you let people choose the ligature string, you're fine. Most people won't need it, and the ones that think they do also go away happy.

Is this list up to date?
https://gist.github.com/fabrizioschiavi/f40a54c8211833c75c81ec82f0c0dd1c
If not can you please provide link to current list for Pragmata Pro?

I believe it is, but that's a bit beside the point. One cannot make assumptions on what people will use in their ligatures. If you do, sooner or later somebody will come up with a font that breaks those assumptions, and you'll get a bug report. That's why this list needs to be user settable, and why it would be desirable to have an algorithm that will give people the freedom to either not pay the ligature penalty, or as much of it as they want.

I believe it is, but that's a bit beside the point
it also does special things like ligatures for some C/C++ keywords, and some other crazy things

I don't see ligatures for C/C++ keywords in the list, everything besides [something] is very much standard.
I am not sure what are we discussing here. I was happily using your patch  https://github.com/vim/vim/commit/808515e9773264c0a7008dabc519742b154a72e2 but after examination it is rendering nearly everything in Pango. With standard space ' ' being marked as ligature character in the default let g:gtk_nocache=[0x00000000, 0xfc00ffff, 0xf8000001, 0x78000001] and with code that falls down to Pango as soon as single character in the entire string fits the criteria, all the lines that contain space or any of the other characters from gtk_nocache are rendered with Pango. Having [INFO] working with your patch is only because string already contains [, falls back to Pango and renders entire line with it. Run simple printf and see how much content is Pango and how much is trough glyphs, I did. Do we at least agree that using Pango for 99% of screen drawings is bad? As I said before drawing everything trough Pango is valid but away from optimal, we could make switch for that.
If you don't mind I'd like to take a break and see what anybody else in the community has to say,

We agree, and I'm about to hack your propose ligature string to see if I can get things to work for me. In the meantime, I ran with your code, but reinstated the bitmap - memchr is a bit wasteful for long ligature strings. See 1299ec12da82767326aa1b215a50400156412018 for details. NB: this patch to your patch leaves your algorithm in place, but should be quite a bit faster because memchr has to search the entire ligature string for each character you want to print that's not in the ligature string. The bitmap does that in a single probe. :) Oh, and I also fixed a couple of compiler warning I got.

Okay, with user-tunable ligature string (and the bitmap thing I proposed), I'm happy with your patch. I can run with my stuff and have pango render much on fast machines, and switch to a much abbreviated ligature string on slow machines. Nice work, and your code is much clearer than what I found before I put in my hack! :)

Thanks for the packing algorithm, I'll need something like that after I add global option -- parsing/packing has to go somewhere global too. Just give me couple of days to prepare next commit.

Okay, with user-tunable ligature string (and the bitmap thing I proposed)

Please show that somewhere when you get time. I am very cautious about searching trough lists in tight screen drawing loop. Bit compare trough array or bitmap equivalent is quick, comparing two strings is very CPU intensive.

No worries, it's my pleasure. :) Tonight, I'm not too tired to some coding up the sharp end, and have a bit of time to listen to the White Album, so the thing about pleasure is actually more than just words. Thanks for picking this stuff up - I was kind of despairing because I never found the time to polish my original patch. Part of it was likely also the impression that not many people would be interested in a solution, but it appears time has changed that. :+1:

Okay, with user-tunable ligature string (and the bitmap thing I proposed)

Please show that somewhere when you get time. I am very cautious about searching trough lists in tight screen drawing loop. Bit compare trough array or bitmap equivalent is quick, comparing two strings is very CPU intensive.

Show what exactly? If you are wondering about memchr vs the bitmap approach, I can run a quick valgrind or something, if that helps. But for anything but a very short ligature string (I guess 2-4 characters), the bitmap is going to beat the memchr version because memchr contains a loop.
Well, in any case, your new code is certainly no worse than the code I originally proposed. I don't think we can prevent people to shoot themselves in the foot on slow machines unless we go for something that's a bit heavier on data structures, e.g. something that goes through the font, extracts the ligatures, or takes a list from the user, and then uses some kind of hash trick to check if there's a match in the current string to be printed. I'd be hesitant to stick such a monster in the drawing code. But that's what would be needed to do a proper job in all cases.
That said, I think your algorithm is good enough, and fast enough for the use case you have in mind (and I've just verified that on my machine with my strange fonts, it's also very usable).

You said

Okay, with user-tunable ligature string (and the bitmap thing I proposed), I'm happy with your patch. I can run with my stuff and have pango render much on fast machines,

So I was assuming you made searchable dictionary of chars + stuff like [INFO]. If I misunderstood my bad, if you made it it is not public so I can't take a look. Of course bitmap or packed record is needed for quick indexing and I will use that certainly, with help of your code but I am curious if we can efficient [INFO] search / I am skeptical however that it can be efficient. Or you just added 'INFO' at the end of the ligatures string, which would result of rendering [INFO] as intended? That could work.

No, sorry, I did not express myself clearly. I just set the ligature string back to something equivalent to my old default mask. My bad for not being clearer. No new code is involved, just a different string.
In any case, once you've got the option thing for the string implemented (and you can potentially hook the bitmap generation code into changes to that string), I think you've solved this for at least the next five years...

and you can potentially hook the bitmap generation code into changes to that string

Yes, exactly the plan, global option, then moving bitmap generation somewhere global so it doesn't calculate with every string and we are done (+ some documentation).

Update in https://github.com/dusanx/vim/tree/gvim-ligatures

Production ready code, not ready for PR.
Optimized to push bare minimum trough slower Pango pipe, everything else as ascii.
Even single ligature char between two ascii chars is not actual ligature and goes trough ascii pipe.
Missing global option.
Missing documentation.
Using 128 bytes to map ligatures, still undecided if we should use that or tighter packed bitmap. Bitmap is shorter but requires more CPU and code is more complicated to read, byte array is 112 bytes longer than bitmap but simpler to read and quicker to access.

Work in progress but ready to test in production, testers welcome.

https://github.com/dusanx/vim/tree/gvim-ligatures-global-option
Enable:
:set guiligatures=!\"#$%&()*+-./:<=>?@[]^_{\|~

Disable:
:set guiligatures=

Assuming that I didn't mess anything with P_* flags in optiondefs.h this only needs documentation.
Some kind experienced sould should take a look at this commit and check flags:
https://github.com/dusanx/vim/commit/83518196c1037deb44d7ad2f6fbe2c4338987107
Anybody volunteering to add option documentation for this beauty? PR welcome.
That's it, :set guiligatures= work well, gtk output is optimized even when not using ligatures, let's wrap this

@chrisbra I am not sure where help info for global options should be edited, spent 20 minutes last night typing most beautiful explanation for :set guiligatures only to find that make overwrites that file :/ Can you point me in the right direction please?

just put it into options.txt
Options are sorted by alphabet. Should look like this template:
			*'guiligatures'* *'<shortname>'* *'noguiligatures'* *'no<shortname>'*
'guiligatures' '<shortname>'	string (default "something")
			global
	<Paragraph describing the option values and effects, mention it only works on GTK Gui>

Note: the shortname is usually the name of the option in the source code minus the prefix p_

PR done and ready,  will amend if needed but in general that's it.
https://github.com/vim/vim/pull/8933

Update in https://github.com/dusanx/vim/tree/gvim-ligatures

Thanks for working on this.

Production ready code, not ready for PR.
Optimized to push bare minimum trough slower Pango pipe, everything else as ascii.
Even single ligature char between two ascii chars is not actual ligature and goes trough ascii pipe.
Missing global option.
Missing documentation.
Using 128 bytes to map ligatures, still undecided if we should use
that or tighter packed bitmap. Bitmap is shorter but requires more CPU
and code is more complicated to read, byte array is 112 bytes longer
than bitmap but simpler to read and quicker to access.

128 bytes is nothing these days, optimize for speed.
--
From "know your smileys":
:^[/   mean-smiley-with-cigarette
/// Bram Moolenaar -- @.*** -- http://www.Moolenaar.net   \
///                                                                      \
\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

@dusanx @manuelschiller big thanks for resurrecting this work!
@manuelschiller I'm also using PragmataPro everywhere, so please share your settings with this latest patch revision =)

Pragmata Pro, full set is this (with space at the beginning!):
 !"#$%&()*+-./:<=>?@ABCDEFGHIKLMNOPRSTUVWX[]^_{|~

but I am really cringing at so many normal ascii chars used, however not a problem on a quick machine -- pick your setup.

JS gist is for Pragmata Pro but really works for any set of ligatures, just save the file, edit the list then node ligatures-test.js to see the final result to be fed to :set guiligatures. Please make sure to backslash escape things in JS and also escape what's needed in final result in vim.
https://gist.github.com/dusanx/10aec304ba2bdabdb1c552d9031138a3

Pragmata Pro, full set is this (with space at the beginning!):
 !"#$%&()*+-./:<=>?@ABCDEFGHIKLMNOPRSTUVWX[]^_{|~

but I am really cringing at so many normal ascii chars used, however not a problem on a quick machine -- pick your setup.

Seems that I can't install string with space in the beginning. You default value works though and make ligatures enabled, but maybe not all.

Space ( ), double quotes (") and bar (|) need to be escaped by putting backslash () in front of such character. So if you try backslash then space it will work.
When you set string and you are happy with it, check if all characters made it with set giligatures? -- it will print string as vim sees it. Escaping with backslash is standard vim syntax.

maybe not all

If you spot something not working that means some character is missing from guiligatures, most probably space in your case.
Try
\ !\"#$%&()*+-./:<=>?@ABCDEFGHIKLMNOPRSTUVWX[]^_{\|~

and let me know, that is escaped string.

Space ( ), double quotes (") and bar (|) need to be escaped by putting backslash () in front of such character. So if you try backslash then space it will work.
When you set string and you are happy with it, check if all characters made it with set giligatures? -- it will print string as vim sees it. Escaping with backslash is standard vim syntax.

Sorry I meant check with set guiligatures? - typing without my glasses on wasn't good idea.

Gist updated to output escaped string ready for vim, so now final output looks like:
Final command, with escaped characters:
:set guiligatures=\ !\"#$%&()*+-./:<=>?@ABCDEFGHIKLMNOPRSTUVWX[]^_{\|~

As a general rule, I would always try minimizing number of characters used. Of course faster computers will be quicker to output everything trough Pango but, for example, C++ syntax doesn't need two thirds of the ligatures listed in gist.

maybe not all

If you spot something not working that means some character is missing from guiligatures, most probably space in your case. Try
\ !\"#$%&()*+-./:<=>?@ABCDEFGHIKLMNOPRSTUVWX[]^_{\|~

and let me know, that is escaped string.

Thanks, works perfectly. I rarely change smth in .vimrc so already stared to forget Vim basics =)
Also checked ligatures from your gist -- seems that everything is OK.
BTW you should start using PragmataPro -- it's really great.

I'm also using PragmataPro everywhere, so please share your settings with this latest patch revision =)

Here's what I use at the moment (now that I finally have a chance to revisit it):
set guiligatures=!\"$%&\'()*+,-./:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~

I think that's roughly what my old version did, minus all the numbers (there's nothing happening to numbers in PragmataPro AFAICT). It has all the lowercase letters, so you get the improvements in kerning for certain keywords (try typing "virtual" or "public" with these settings and PragmataPro, and watch the word while typing the last letter, and be amazed...).
Thanks everybody for the hard work, especially @dusanx.

@dusanx @manuelschiller do this patch with ligatures support already in upstream?

Yes, it is. Have fun with it!

included as of 4eeedc09fed0cbbb3ba48317


Canvas on Video Streaming dont match correctly on the face in mobile phone cam

The canvas draw it on the face, change dimentions (width and height sizes) when I use it on mobile phone cam (for example `iphone).

You need to set the canvas size the same as the size of the video element.
const videoEl = document.getElementById('video');
document.getElementById('overlay').style.display = "block";
const dims = faceapi.matchDimensions(canvas, videoEl, true);
dims.height = videoEl.offsetHeight;
dims.width = videoEl.offsetWidth;
canvas.height = videoEl.offsetHeight;
canvas.width = videoEl.offsetWidth;
const resizedResult = faceapi.resizeResults(result, dims);
faceapi.draw.drawDetections(canvas, resizedResult);

Mactas, thanks! , but did´t fix the problem
I think, the function of the api named "matchDimensions" do the same that you approach. In the web browser when I test the responsiveness of the app, it´´s Ok, but when a I Test on mobile, the face landmarks and the bounding box the size changes exceeding the face limits.
video.addEventListener('play', () => {     const canvas = faceapi.createCanvasFromMedia(video);     const displaySize = { width: video.width, height: video.height }     document.body.append(canvas)     faceapi.matchDimensions(canvas, displaySize)     setInterval(async () => {         const detections = await faceapi.detectAllFaces(video, new faceapi.TinyFaceDetectorOptions()).withFaceLandmarks().withFaceExpressions()         const resizeDetections = faceapi.resizeResults(detections, displaySize)         canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height)         faceapi.draw.drawDetections(canvas, resizeDetections)          faceapi.draw.drawFaceLandmarks(canvas, resizeDetections)         faceapi.draw.drawFaceExpressions(canvas, resizeDetections)     }, 100)

I solved this issue by adding css style:
<video id="video" width="960" height="1280" style="width: 960px;height: 1280px;" autoplay muted></video>


Update README.md

Codecov Report

Merging #518 (a3e4de1) into master (26ef38c) will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #518      +/-   ##
==========================================
- Coverage   81.16%   81.14%   -0.02%
==========================================
  Files         151      151
  Lines       13304    13304
  Branches     1838     1838
==========================================
- Hits        10798    10796       -2
- Misses       1944     1945       +1
- Partials      562      563       +1

Impacted Files
Coverage Δ

...ouriMath/Functions/ExpressionNumerical.Equality.cs
93.33% <0.00%> (-6.67%)
:arrow_down:

Continue to review full report at Codecov.

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


IPv6 literal emails are not accepted - even when using Cjdns

E.g. stuart@[IPv6:fcbc:b27:be6f:94dd:4225:792:c988:8ace]
Also, for domain emails, Cjdns MX servers are not used for the verification email - even when they are the highest priority.

 However perhaps anyone visiting from cjdns should not need to even use an email to reg at all....

If you accept emails only on Cjdns, then you don't need to deal with spam filtering for many years at least.  And if the spam appears sooner, that would actually be a good thing in many respects.


throttle fix and fix of backwards assertEquals

I think the throttle test was failing b/c it was looking for this.authenticationFailureCode but it was recording the failures as hard coded FAILED_LOGIN_ATTEMPT. The authenticationFailureCode was defaulting to AUTHENTICATION_FAILED but I am setting it to that same value in the casthrottle.properties which is probably not necessary.  I am also setting the request uri in the mock request which I did when I saw it logged in debug with a blank value.

Changes Unknown when pulling 8093b1a2c96f80cc9fd7727f48c74e39a583cce2 on hdeadman:throttle-test into ** on apereo:master**.


Enable MTE

https://developer.android.com/ndk/guides/arm-mte#production
There needs to be a known way to test this in an emulator before it is implemented since we don't have a test device with MTE support.

Someone tested it for @soupslurpr when he added it to BeauTyXT but I forget who. Maybe he can get it tested for Accrescent also.

I would need a way to test it myself since it would need testing more than once, e.g., when a dependency with native code is updated (we don't currently have any, but we need to have a plan for when we do).

I can test too if needed.

Tested every functionality with MTE enabled and everything works.

Can't you test with HWAddress Sanitizer? But that does not detect stack allocation memory safety I think. Well I don't see it mentioned in https://developer.android.com/ndk/guides/hwasan and for MTE detecting stack allocation memory safety needs you to compile the code with the -fsanitize=memtag compiler flag.

The point of testing MTE is to ensure that something critical (specifically automatic updates) isn't broken by enabling it, so using other tools to detect memory safety issues doesn't fully accomplish that. However, since we aren't currently using any native code, I've changed my mind on this and am enabling MTE now. We'll just have to rigorously test critical code paths such as the update system when we eventually do add native code.


Building unicode-property-aliases-ecmascript... requires unicode-property-aliasas-ecmascript!?

Would it be possible to provide a bootstrapping version?
I wanted to package this for Debian, but of course having a package depend on itself is a problem. If I remove all mention of canonicalProperties in scripts/build.js, I do get an index.js, but it has everything in data/PropertyAliases.txt, which isn't the case of the index.js you ship.
I guess there is a reason for not going the most direct way, but the fact that it makes things non-bootstrapping is quite annoying.
Thanks,
Snark on #debian-js

Oh, sorry, there's alias and there's names -- I hadn't seen!

No worries :)


Add endpoints as arguments

add endpoints as arguments (workflow_monitoring)
add all table initialization process (cdp_monitoring)

@o-mura -san
When I ran workflow_monitoring workflow in the JP environment, some tasks failed because the endpoints did not reflected as arguments, so I added the endpoints as arguments to those tasks.
And when journey did not exist, the initialization job did not create tables associated with journey, which caused errors when I ran the scheduled one.
So I added a process to the initialization job to create all empty tables.
It could be happy if you review these changes and approve the request. Thanks.

@takuya-obata
Thanks!


Introduce noms version 8. Use it to guard type simplification.

Main change is in version.go (factored out from constants.go). Most of the remaining changes are fallout.
One notable exception to above is that I had to dork around with util/command.go and friends to get this flag to show up in all the noms subcommands without having to modify them all individually.

Working on js... will add to this patch.

LGTM


ValueError: Mountpoint must not already contain files

I trained the model and now I see the .ckpt file in my named session directory in my G drive as this tutorial says should happen.
Now when I reload the page run Step 1:
from google.colab import drive
drive.mount('/content/gdrive')

I get:
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
[<ipython-input-19-4996ee3d8d09>](https://localhost:8080/#) in <module>
     1 from google.colab import drive
----> 2 drive.mount('/content/gdrive')

1 frames
[/usr/local/lib/python3.7/dist-packages/google/colab/drive.py](https://localhost:8080/#) in _mount(mountpoint, force_remount, timeout_ms, ephemeral, readonly)
   182       raise ValueError('Mountpoint must not be a symlink')
   183     if _os.path.isdir(mountpoint) and _os.listdir(mountpoint):
--> 184       raise ValueError('Mountpoint must not already contain files')
   185     if not _os.path.isdir(mountpoint) and _os.path.exists(mountpoint):
   186       raise ValueError('Mountpoint must either be a directory or not exist')

ValueError: Mountpoint must not already contain files

That cell should connect your gdrive to colab, and it is already connected, no need to run it again

Thanks


[UI] Make the eventActors avatar overlapping stack

Notes for Reviewers
This PR fixes #

Signed commits

[ ] Yes, I signed my commits.

Thank you. And each continue to have a tooltip on hover, I assume. Good.


Add to the Typst package repos

See here.

I have been away from this project for quite a while, and seem to have missed a lot of new features!
I believe that lemmify is much more up to date. ctheorems looks like an attempt to build on this system if that's what you're looking for.

Update: This package is now aligned with ctheorems. Further updates will eventually appear there.


chore(observability): only expose vmselect/vmsingle and vmagent

PR Type
enhancement, configuration changes

Description

Updated DNS and HTTPRoute configurations to consolidate and simplify the setup for VictoriaMetrics components.
Added a new HTTPRoute for vmagent to improve observability.
Configured alertmanager with a replica count of 2 for better reliability.
Updated Vault roleId for cert-manager to reflect changes in platform recreation.

Changes walkthrough 📝
Relevant filesConfiguration changes

platform-private-gateway-certificate.yamlUpdate DNS entries for VictoriaMetrics components

infrastructure/base/gapi/platform-private-gateway-certificate.yaml
Removed specific DNS entries for vmui, vminsert, vmselect, and vmstorage.  Added a generalized DNS entry for vm.  Added a DNS entry for vmagent.

+2/-4

platform-private-gateway.yamlSimplify and update DNS hostnames for VictoriaMetrics

infrastructure/base/gapi/platform-private-gateway.yaml
Simplified DNS hostname configuration for VictoriaMetrics components.  Added vmagent to the DNS hostname list.

+1/-1

httproute-vmsingle.yamlUpdate HTTPRoute for vmsingle to generalized hostname

observability/base/victoria-metrics-k8s-stack/httproute-vmsingle.yaml

Updated HTTPRoute to use a generalized vm hostname.

+2/-2

kustomization.yamlInclude vmagent HTTPRoute in kustomization

observability/base/victoria-metrics-k8s-stack/kustomization.yaml

Added httproute-vmagent.yaml to resources.

+1/-0

vault-clusterissuer.yamlUpdate Vault roleId for cert-manager

security/base/cert-manager/vault-clusterissuer.yaml

Updated roleId for Vault authentication.

+1/-1

Enhancement

helmrelease-vmcluster.yamlConfigure alertmanager and disable vmsingle

observability/base/victoria-metrics-k8s-stack/helmrelease-vmcluster.yaml
Disabled vmsingle.  Configured alertmanager with a replica count of 2.

+4/-0

httproute-vmagent.yamlAdd HTTPRoute for vmagent

observability/base/victoria-metrics-k8s-stack/httproute-vmagent.yaml

Added a new HTTPRoute for vmagent.

+15/-0

httproute-vmcluster.yamlConsolidate HTTPRoutes for VictoriaMetrics components

observability/base/victoria-metrics-k8s-stack/httproute-vmcluster.yaml
Consolidated HTTPRoutes for VictoriaMetrics components.  Updated hostname to a generalized vm entry.

+2/-35

💡 PR-Agent usage:
Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

/describe


Command failed: Fatal Error: The application cannot be started

Steps to reproduce :
Dockerfile
FROM public.ecr.aws/shelf/lambda-libreoffice-base:7.3-node16-x86_64
COPY ./ ${LAMBDA_TASK_ROOT}/
CMD [ "index.handler" ]

index.js
const {execSync} = require('child_process');
exports.handler = async function (event, context) {
    execSync(`
  cd /tmp
  libreoffice7.3 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./test.docx
  `);
};

Output of lambda after execution
{
  "errorType": "Error",
  "errorMessage": "Command failed: \n  cd /tmp\n  libreoffice7.3 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./test.docx\n  \njavaldx failed!\nWarning: failed to read path from javaldx\nLibreOffice 7.3 - Fatal Error: The application cannot be started. \nUser installation could not be completed. \n",
  "trace": [
    "Error: Command failed: ",
    "  cd /tmp",
    "  libreoffice7.3 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./test.docx",
    "  ",
    "javaldx failed!",
    "Warning: failed to read path from javaldx",
    "LibreOffice 7.3 - Fatal Error: The application cannot be started. ",
    "User installation could not be completed. ",
    "",
    "    at checkExecSyncError (node:child_process:828:11)",
    "    at execSync (node:child_process:899:15)",
    "    at Runtime.exports.handler (/var/task/index.js:10:5)",
    "    at Runtime.handleOnce (file:///var/runtime/index.mjs:548:29)"
  ]
}

Expected behaviour
Lambda created built based on this docker image should not fail and be able to do the conversion

building the docker image with the following command, fails inside lambda as well after invoke
 docker build -t test-lambda-base-image .

Wanted to create a pull request, but was not able to, cannot push to the repository. However, here is the version of docker image which works ok, added java-1.8.0-openjdk
Dockerfile
FROM public.ecr.aws/lambda/nodejs:16-x86_64

# binutils is needed for "strip" command
RUN yum install \
    java-1.8.0-openjdk \
    tar \
    gzip \
    libdbusmenu.x86_64 \
    libdbusmenu-gtk2.x86_64 \
    libSM.x86_64 \
    xorg-x11-fonts-* \
    google-noto-sans-cjk-fonts.noarch \
    binutils.x86_64 \
    -y && \
    yum clean all

RUN set -xo pipefail && \
    curl "https://ftp.halifax.rwth-aachen.de/tdf/libreoffice/stable/7.3.4/rpm/x86_64/LibreOffice_7.3.4_Linux_x86-64_rpm.tar.gz" | tar -xz

RUN cd LibreOffice_<IP_ADDRESS>_Linux_x86-64_rpm/RPMS && \
    yum install *.rpm -y && \
    rm -rf /var/task/LibreOffice_7.3.4* && \
    cd /opt/libreoffice7.3/ && \
    strip ./**/* || true

@scorobogaci it worked for me when I set the env var HOME=/tmp without installing Java
Could you please try does it work w/o Java?

@scorobogaci it worked for me when I set the env var HOME=/tmp without installing Java
Could you please try does it work w/o Java?

sure, let me give it a try this option as well

@vladgolubev , you mean setting environment for lambda, not inside Dockerfile ? Thanks

@scorobogaci I tried in Lambda, but probably setting this in Dockerfile will yield the same effect?

@vladgolubev , tried with both options, setting ENV HOME=/tmp inside Dockerfile as well as setting lambda environment variable, getting this error in both cases
{
  "errorMessage": "RequestId: 3fd15b21-394d-4feb-97e8-dffffe7b9b2c Error: Runtime exited with error: exit status 142",
  "errorType": "Runtime.ExitError"
}

@scorobogaci could you please try a full handler file like this?
The handler sample in README was previously stripped down to show only the handle content. Here is a full handler
const {execSync} = require('child_process');
const {writeFileSync} = require('fs');

module.exports.handler = () => {
  writeFileSync('/tmp/hello.txt', Buffer.from('Hello World!'));

  execSync(`
  cd /tmp
  libreoffice7.3 --headless --invisible --nodefault --view --nolockcheck --nologo --norestore --convert-to pdf --outdir /tmp ./hello.txt
  `);
};

const {writeFileSync} = require('fs');

this worded, having HOME=/tmp set as lambda environment variable . However, Billed Duration: 33073 ms , this is crazy... how come on cold start there is such enormous  delay ?

@vladgolubev , performs really well when lambda is in WARM state, however on COLD state, is taking 30 seconds, how come? Why this would be the case ?

@scorobogaci libreoffice when first booted, writes some files to disk. Maybe it's worth exploring adding a "smoke startup" for LibreOffice during docker image build so those files will be bundled in the docker image. You can try that and see does it help with a cold start

@vladgolubev , alright thanks for suggestion ! this is crucial i think, otherwise the solution cannot be used in a serverless model, cause on COLD starts 30 seconds is not acceptable at all :( Feel free to close the issue, adding HOME=/tmp as lambda environment variable solves the issue.
Would be nice to check if adding ENV HOME=/tmp in Dockerfile solves also the issue, having this config in Dockerfile removes the need for developers to take care of setting lambda environment variable
Thanks a lot !


Add prevent destroy to cosmos and firewall

Issue #916
Add prevent destroy to firewall and cosmos resources to ensure are not accidently deleted by terraform.

Will the make tre-destroy still work?

@Lybecker good point. Could wrap them with a condition of based on an ENV var maybe? We need to block them being destroyed accidentally somehow.

Can't do conditions - https://www.terraform.io/docs/language/meta-arguments/lifecycle.html#literal-values-only so you are correct would block a destroy. Should look at Azure management locks instead.

Can the make tre-destroy modify the prevent_destroy before the actual TF destroy?

Nope, I'll give this another go with azure locks.


Stm Refresh based on Daniel Robinson's fork

I made a few additional adjustments. All sample apps appear to run normally. I didn't do any profiling.

While the C# Stm.Core is no longer in the solution, the project and related files are still in git.

Closing this and will resubmit with a rebased version.


Fix the import path

Part of https://github.com/kubernetes/kubernetes/pull/39475, k8s.io/kubernetes/pkg/util/sets moved to k8s.io/apimachinery/pkg/util/sets so here import path needs to be fixed.

This change is

/cc @deads2k @bprashanth

lgtm

/cc @mwielgus

@bprashanth @mwielgus can someone merge this PR?

ping @bprashanth

@deads2k can you please help me to merge this PR?

/lgtm


Optimize loading time of CirceAkkaSerializer

As noticed on Hydra (the commercial project), disabling HydraCirceAkkaSerializer (by commenting out the serializers and serialization-bindings piece of config) significantly decreases the loading time for ActorTestKit.
Some ideas for what could be sped up (subject to the exact measurements first, ofc):

Does CirceTraitCodec need checkSerializableTypesForMissingCodec call, esp. given that this should be enforced by codec-registration-checker in compile time? Is there any known scenario where the code (assuming CRC is enabled) compiles but checkSerializableTypesForMissingCodec throws an error?
Maybe parentsUpToRegisteredTypeMap takes a long time? but hard to get rid of that completely, what could be done is to lazify evaluation of individual map entries (so make parentsUpToRegisteredTypeMap a mutable, concurrent Map with keys computed on demand)

In my opinion such checks like checkSerializableTypesForMissingCodec should not be part of initialization - all such things should be checked on compilation


change accessibility for getStepWidth to public

In line 459 the method is used from outside (a closure that gets any object of class ProgressBar or a subclass of it). So the method has to be public. It's magic that it is working and not good coding style.

created PR against symfony/symfony branch 3.0


Full cross scala version for runtime

It depends on interp-api, that is fully cross-versioned, so it should be fully cross-versioned itself too.
Without this, com.lihaoy:ammonite-runtime_2.12 depends on com.lihaoyi:ammonite-repl-api_2.12.9, which makes com.lihaoyi:ammonite_2.12.8 pulls both com.lihaoy:ammonite-repl-api_2.12.8 and com.lihaoy:ammonite-repl-api_2.12.9.

+1
On Fri, 16 Aug 2019 at 4:22 PM, Alexandre Archambault <
<EMAIL_ADDRESS>wrote:

It depends on interp-api, that is fully cross-versioned, so it should be
fully cross-versioned itself too.
Without this, com.lihaoy:ammonite-runtime_2.12 depends on
com.lihaoyi:ammonite-repl-api_2.12.9, which makes
com.lihaoyi:ammonite_2.12.8 pulls both com.lihaoy:ammonite-repl-api_2.12.8
and com.lihaoy:ammonite-repl-api_2.12.9.
You can view, comment on, or merge this pull request online at:
https://github.com/lihaoyi/Ammonite/pull/1001
Commit Summary

Full cross scala version for runtime

File Changes

M build.sc
https://github.com/lihaoyi/Ammonite/pull/1001/files#diff-0 (3)

Patch Links:

https://github.com/lihaoyi/Ammonite/pull/1001.patch
https://github.com/lihaoyi/Ammonite/pull/1001.diff

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/lihaoyi/Ammonite/pull/1001?email_source=notifications&email_token=AAHEB7EL642BNOU6PZLOZQTQEZPVRA5CNFSM4IMFHK52YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HFTDFCA,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAHEB7GMNNSHUX2GSBXD3RDQEZPVRANCNFSM4IMFHK5Q
.

Alternatively, interp-api and repl-api could be binary cross-versioned. They'll still depend on particular versions of scala-{library,compiler,reflect}, but these are usually forced down the line (even in mill it seems).


Systemd service file update

A little bit updates, inspired from redis, nginx and mysql service unit definition.

KVRocks start requirement network-online instead of simple network policy
Starting a server only after network are fully up
Change maximum threads allowed (LimitNPROC) to 4096
Add timeout by 300 sec for start/stop service
Addition security setup with flag NoNewPrivileges

Random thoughts - such service config can work better if integrated with package manager like AUR (pacman) or Homebrew.

Merging...


zsh global completion should not be "-default-"

Hi.
The so called "global completion mode" for zsh implementation as a -default- completer is harmful. Setting a -default- completer is a prerogative of the user, and not any application or library (only one completer can exist per service name). The current implementation unnecessarily interferes with the user's ability to customize the zsh completion system.
Perhaps consider using #autoload instead, then applications can re-use your library code by installing their own (possibly trivial) zsh completers that invoke your function, similar to how python code might invoke your library.

to provide a little more context, the zsh community have recently received a number of reports[0] of completion not behaving how they expect and it results from this package being pulled in, seemingly unknowingly, causing the changed behavior.
[0] https://www.zsh.org/mla/workers/2024/msg00503.html

Thanks for your interest in argcomplete.

The so called "global completion mode" for zsh implementation as a -default- completer is harmful.

Harmful to whom?

Setting a -default- completer is a prerogative of the user, and not any application or library (only one completer can exist per service name). The current implementation unnecessarily interferes with the user's ability to customize the zsh completion system.

In the context of your classification of "application or library", argcomplete is neither - it's a framework for enabling individual applications to connect to the shell to provide dynamic completions, creating a class of completers.
I agree that setting the default completer is a prerogative of the user, which is why argcomplete does not install this completer by default. If a Linux distribution installs the global completion hook by default, that's a problem to be addressed with that distribution. It should probably not be doing that, leaving that choice to the user.

Perhaps consider using #autoload instead, then applications can re-use your library code by installing their own (possibly trivial) zsh completers that invoke your function, similar to how python code might invoke your library.

I'd love to use a more specific completion hook directive, but I've searched extensively and experimented with the zsh completion engine, and nothing seems to work short of #compdef -default- (including #autoload). The only alternative that I've found to work is #compdef -P *, and that is even more invasive than #compdef -default-. By design, the argcomplete global completion hook is expected to fire for any command, regardless of name; it is not limited to specific command names.
I would love to use a more specific hook that has as few side effects as possible, and I'd love to be proven wrong about #compdef -default- being the only option; PRs are welcome. For more context, you can take a look at the discussions in this PR: https://github.com/kislyuk/argcomplete/pull/463

I agree that this is an issue with Arch Linux. Maybe you as the project owner could communicate to the packagers more explicitly that the completion file shouldn't be enabled by default?

nothing seems to work short of #compdef -default- (including #autoload).

For more context, you can take a look at the discussions in this PR: https://github.com/kislyuk/argcomplete/pull/463

I can't find any mention of #autoload in this discussion.

I agree that this is an issue with Arch Linux. Maybe you as the project owner could communicate to the packagers more explicitly that the completion file shouldn't be enabled by default?

Sure, I can do that.

@lilydjwg sorry I'm actually not going to be able to do that because I'm not going to post in that thread following the inflammatory comment by @rpigott. While @rpigott has stayed civil here in this thread, the comment in the Arch Linux gitlab issue is objectionable to me and I won't participate there. All argcomplete contributors or commenters are expected to abide by the code of conduct.
To reiterate, I support the idea of Arch not activating argcomplete global completion by default (and also pulling in the latest argcomplete release, which incorporates the fix for overly broad completer registration (fixed in 3.1.2)). Thanks for filing the issue with Arch.

OK. Arch has removed the file from the package anyway (though I expected the file to be put somewhere not loaded by default, but I don't know that "somewhere").


compile error

you forgot semicolon after free(pixelBuffer2)

Right there to be exact ->  https://github.com/rnystrom/RNBlurModalView/blob/master/RNBlurModalView.m#L700


how to reset column selection for query?

IIRC, previously it was possible to call something like q.select(null) to reset previously added column names.
Currently it seems that you can only append new columns to the selections but no way to clear/replace them

+1

That has never been documented feature, at least I wouldn't like that clearing columns of select would be done by overloading the same call with magic value like .select() e.g. .clearSelect() would be a lot more robust API...
But knex doesn't really support of taking out parts of query and I don't think it should go to that road right now since it will add bunch of more surface for errors (there is already very small amount of people maintaining the current code base).
Having possibility to clear only select won't add much value to library without having possibility to modify all parts of the query.

.clearSelect() exists, closing.


fix: update speed calculate when sendpackage

Signed-off-by: lixd<EMAIL_ADDRESS>
What type of PR is this?
/kind bug

What this PR does / why we need it:
fix: update speed calculate when sendpackage,fix https://github.com/kubeclipper/kubectl/issues/1
Which issue(s) this PR fixes:

Fixes #
Special notes for reviewers:

Does this PR introduced a user-facing change?

None

Additional documentation, usage docs, etc.:

/assign @x893675

/lgtm
/approve

/cherry-pick release-1.3


Update version number, SHA256 for release 1.7.2

This version number is ahead of Tracktable proper.  We're not going to worry about it too much.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender


A comprehensive tutorial of building apps with bareasgi

I am going to create a monitoring app using either bareasgi or starlette. It would be greate to have a good tutorial on the internet for this new framework

Hi @auvipy. This is long overdue. I'll write something up at the weekend.

please do! that would be great

Hi @auvipy. I've made a start. See here.
So much still to do. I won't close this until I've covered the majority of the functionality.
Let me know if there's something you'd like me to prioritise.

thanks! not so bad as starter! can you add some more beyond basic REST and websocket API?

I will use this to rewrite an open source app


Output typo replication_group_coniguration_endpoint_address

Description
There is a writing error in one of the outputs:

replication_group_coniguration_endpoint_address => replication_group_configuration_endpoint_address

Versions

Module version [Required]: v1.2.3

@fmidaglia-gocloud I have fixed the above issue in this PR.

This issue has been resolved in version 1.2.4 :tada:


Check CPU usage

E.g. with the ´ipsuite.calculators.CP2KSingelPoint´ it seems the Node is only using a single core in a LocalCluster

That was caused by not setting env correctly


keymapping has error

I want to remap the keys like below
vim.keymap.set({'n', 'i'}, '<f3>', '<esc><cmd>call jukit#send#section(0)<cr><esc><cmd>call jukit#convert#notebook_convert("jupyter-notebook")<cr>')
but there's error:
Error detected while processing function jukit#send#section[10]..<SNR>63_send_single_section[21]..<SNR>63_send_to_split[14]..<SNR>63_send[20]..jukit#convert#notebook_convert:
line 3
but the code seems can run.
Thanks for your time!

Hi! I tried out your key mapping and it works fine for me. The error suggests that the problem occurs in the third line of jukit#convert#notebook_convert function, when it tries to save the file before converting to a notebook. Did you by chance somehow try the mapping on a readonly file? Does the jukit#convert#notebook_convert function work on its own?


i18n without Sub-path Routing and Domain Routing

Is your feature request related to a problem? Please describe.
I'm developing an application that doesn't care about SEO, so I would like to use another strategy (Cookies for example) and don't use the i18n options that NextJs provide.
Describe the solution you'd like
Manage translations without the use of sub-path routing or domain routing, just change the language with changeLanguage and use browser language detection.
Describe alternatives you've considered
Use cookies to store in the browser the desired language

Localised routing is handled entirely by the NextJs framework, so you will need to contribute to an issue/discussion on the main repo. Thanks!

https://github.com/vercel/next.js/discussions/29932#discussioncomment-5220871


joern server responded 404

how can i solve it?

@NicK2oo3 can you post the contents of main.py so it's clear what the request looks like?

@NicK2oo3 can you post the contents of main.py so it's clear what the request looks like?

you can see it in https://github.com/epicosy/devign.

if i'm looking at the correct spot in your code, it looks like you're trying to fetch query results from the incorrect HTTP endpoint provided by the Joern server https://github.com/epicosy/devign/blob/master/src/prepare/cpg_client_wrapper.py#L24
you can either use the cpgqls client logic directly to send the query or implement your own following what's in there + the test suite
https://github.com/joernio/cpgqls-client-python/blob/master/cpgqls_client/client.py#L61
here is where the routes are defined:
https://github.com/ShiftLeftSecurity/codepropertygraph/blob/ca3834850eb84babd41c6e530593950252233289/console/src/main/scala/io/shiftleft/console/cpgqlserver/CPGQLServer.scala#L111-L122
and the general API for the HTTP framework used https://com-lihaoyi.github.io/cask/#minimal-example
does this answer your question?

could you provide more detail?i don't know how to do

@NicK2oo3 you should have all the info necessary in the links I posted in my previous comment. You could start by getting the examples from cpgqls-client-python to run, and then slowly adapt them to your needs


Generation of JSON Schema for Models using DateTimeUTC

DateTimeUTC now mimics DateTime for schema generation.

Bumps version to 1.0.1.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage remained the same at 89.729%

Files with Coverage Reduction
New Missed Lines
%

/opt/hostedtoolcache/Python/3.9.18/x64/lib/python3.9/site-packages/ghga_service_commons/utils/utc_dates.py
2
93.75%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
629

Relevant Lines:
701

💛  - Coveralls


Version 4.0 released

Version 4.0 🆕
I've updated current project and forked to a new repository, because that repository is not maintained anymore 🙁 (great work, glenyi, thank you for creating that project).
New version is located here: https://github.com/Sorix/RatingControl.
Changelog
UIControl
FloatingRatingView renamed to RatingControl. Also now it is a subclass of UIControl instead of UIView, because that RatingView is closer to control type than view type.
Now control supports default UIControl methods, like isEnabled, addAction, @IBAction outlets and so on. Please use it instead of delegate methods, because it's a more native way.
Storyboard
You can add storyboard's @IBAction outlets in Interface Builder without writing a code for delegate methods. Less code for you.
Also I've added support for intrinsicContentSize, so view know about own's desired size (like labels or buttons) and you will need to define less constraints and it will be easier to configure it in Interface Builder.
Haptic
Support of haptic feedback was added, try that magic on devices with appropriate hardware.
Compatibility
RatingControl (4.0) is almost compatible with previous version of FloatingRatingView.

You need to find and replace import statements because of library renaming:

import FloatingRatingView // search that
import RatingControl // replace to that

Minimum required iOS version now is 10.0.

Because of that 2 breaking changes, version was changed to 4.0.
RatingControl is now a subclass of UIControl that's why a lot of old methods was deprecated, you still can use it. XCode will warn you about outdated methods with help messages with fix proposals.
Other changes

Support Swift 4.2
Objective-C support
Update Example application
Tidy folder structure

Thanks for the fork. Will be looking at new issues and PRs going forward.


502 error while handshake

Hello. I created mvc project with signalR hub. Mapped it to 'chat' and created a angular4 application with angular cli installed npm packages and when i trying to make hub connection
  let connection = new HubConnection('http://localhost:51837/chat');   connection.start();
it makes a http error 502
WebSocket connection failed: Error during WebSocket handshake: Unexpected response code: 502
Alhtougt if i create connection with that lib in javascript like signalR.HubConnection.... it works.

it work if angular app and mvc project with signalR hub run on same port.

I think it maybe many headers that sended in angular http to hub for hadshake...

Can we get more info. Or even better, put your repro app on github

It's Simple default project with chathub like in tutorials. and the same connection

How are you running the server? Is it behind a proxy? What OS are you on?

OS - windows 10 fall creators Update(local machine). backend running in vs2017 15.4 debug mode and angular app on vs code (ng serve)

also tried with angular4 and angular2

@kirexp Are you running behind IIS Express on VS or full IIS?   Also, is there a chance you can create a simple repro app and share on GitHub?

Also, are there any logs on the server when this error occurs? You can view the logs in Visual Studio in the Output Window under "ASP.NET Core Web Server", while the app is running:


Make sure lack of match in gene/drug key is not reported as 'Sensitive'

Done in https://github.com/phac-nml/staramr/pull/16


if set max-growth-age, plants may not grow

Timings link
No response
Expected behavior
Cave vines and kelp can grow normally
Observed/Actual behavior
Cave vines and kelp cannot grow after repeated destroy
Steps/models to reproduce
1、set cave vines (or kelp) max-growth-age to 10
2、place some
3、/gamerule randomTickSpeed 1000
4、when cave vines grows up, destroy its newly grown parts, until all cave vines stops growing
Purpur version
[19:22:47 INFO]: This server is running Purpur version git-Purpur-1434 (MC: 1.18.1) (Implementing API version 1.18.1-R0.1-SNAPSHOT) (Git: 1fd37bd on HEAD)
Agreements

[ ] I am running the latest version of Purpur available from https://purpur.pl3x.net/downloads.
[X] I have searched for and ensured there isn't already an open issue regarding this.
[X] My version of Minecraft is supported by Purpur.

Other
Placed and destroyed cave vines will have a random age(0-25), It will not change according to the max-growth-age.
This leads to the age of cave vines after multiple destruction is greater than max-growth-age.

Confirmed.
Looks like there have been a lot of changes to the GrowingPlantHeadBlock class. To fix this we will need to move the max-growth-age world settings to the global config since most of the new methods only expose the BlockState and not the ServerLevel

any update rn? @BillyGalbreath

Looks like its still an open issue to me.


Docker Builds Failing

https://hub.docker.com/r/begriffs/postgrest/builds/
Updating ENV POSTGREST_VERSION <IP_ADDRESS> in Dockerfile caused the builds to fail, because there isn't a 0.4 release on github.

That's true. Waiting to release the 0.4 binaries after the new docs are ready. The docs in progress are at https://postgrest.readthedocs.io/en/v0.4/ and when they're ready I'll point postgrest.com at it and build the binaries.

What are your thoughts about having a docker tag, latest that tracks the master branch?
For posterity, this is the Dockerfile I used to build from the master branch. It made a 5Gb docker image, so don't use it in production. Note that I'm using the fpco/stack-build image so stack & haskell would already be there.
#Dockerfile.development
FROM fpco/stack-build

ENV POSTGREST_REPO_URI https://github.com/begriffs/postgrest.git

RUN apt-get install -y  libpq-dev && \
    cd /srv/ && \
    git clone ${POSTGREST_REPO_URI}

RUN cd /srv/postgrest && \
    stack install --allow-different-user --local-bin-path /usr/local/bin

CMD exec postgrest -c /etc/postgrest/postgrest.conf

EXPOSE 3000

I've wanted that for a while – a fully up-to-date image on the latest tag built off master. I didn't know how to create a reasonably sized image though. That's why it currently downloads pre-built binary releases rather than including the whole Haskell build environment.
Is there a way to run different commands in the Dockerfile depending on a chosen "environment?" We could have a special development image that is big but up to date, and a small production image for each release. Any idea of the best way to do that?
Alternately we could find a way to always build from source in the Dockerfile but do a better job cleaning up all the build artifacts so that the resulting image is small.

You can use the split image approach where you have two docker images - one that compiles a binary during image build and puts the binary into a volume when run, and another that simply takes a pre-built binary and sticks it into a tiny base image.
If you take this approach, I'd recommend not doing a git clone in the docker build and using the COPY instruction assuming you're building from the repo root.  The docs there talk about stack support as well for stack image container.

Do you want to target a CI improvement for the .4 release?
For reference...
CircleCI has docker support as well.
Stack's Base Docker Images
Docker build docs
Should I go ahead and create a PR to add -c /etc/postgrest/postgrest.conf to the Dockerfile?

I've got CircleCI  building Dockerfile.development with dependencies built inside. That docker image is then used to build postgrest so it can be added to the simpler Dockerfile image and pushed to Docker Hub.
It's more of spike than a work in progress...
I now understand why I've seen some use a Makefile to manage various docker build/run commands.
A lot of the circle.yml's shell commands could be broken out into actual shell scripts or even a Makefile.
I didn't grok stack docker deep enough to answer: Could stack manage the docker image & circleci's caches better? Any conflict w/ CircleCI's docker limits to work around?
DockerHub - Note 'latest' in 'tags' is deployed on master commit
CircleCI - builds
io.PostgREST - My fork, soon to be known as io.PostgREST :smile:

Stack's docker images are more for running the stack build process inside a container than for actually producing docker images.
Instead of a makefile, I recommend using docker compose. You setup a split image build somewhat like this:
version: "2"

services:
  builder:
    build: /path/to/builder
    volumes:
    - ./runtime/bin:/output-bin
  runtime:
    build: /runtime

Instead of the first image building a dockerfile, it builds a binary and sticks it into a volume which maps to the host directory ./runtime/bin. Then, ./runtime/Dockerfile would specify to use the binary in ./runtime/bin. So building your image is docker-compose run builder && docker-compose build runtime.

PR : #737

The all Docker build is no more...

Couldn't get PostgreSQL db into docker image's tests without adding env var to Tests
Back to CircleCi's ghc image, can use a git branch to test newer versions from https://circleci.com/docs/build-image-precise/#haskell
Moving test commands into a scripts led to false positives in build, script exited correctly, but commands inside failed, so I didn't trust my bashfu to trust it would halt

Plus it ended up a single cluttered entry on the circle build, made determining which command in script is causing errors harder

There's some repeated code between circle.yml, scripts/, Dockerfile.development
Ignore these errors during docker build image, all docker images made on CircleCI are immutable:

Error removing intermediate container 2d199a8e8ec1: rmdriverfs: Driver btrfs failed to remove root filesystem 2d199a8e8ec13d0d8f5b48e555d04c6c677e3024acfef61f4b7ddd83c9c6483e: Failed to destroy btrfs snapshot /var/lib/docker/btrfs/subvolumes for e8505114d839823bb265bb5cc0e15cc141293a42307843bff69f6bce935399b9: operation not permitted

Dockerfile.Development
- Work in process
- Fell out of scope after switching back to all CircleCI build...
- I'll revisit during v4 documentation for Docker
- !DRY, Repeats the build code in scripts/ and circle.yml
- Could use volumes into container to import stack/cabal deps, it'd make cached builds somewhat faster
- Document:
ENV vars from Dockerfile.development:
POSTGREST_SRC
RELEASE_DIR

Post Mortem of Builds-in-Docker circle.yml, branch jhr_circleci_docker

Builds everything in Docker image, circle build container doesn't even install ghc
build times: 1 Hour 15 minute to build image, 7-10 mins after image cached, not caching anything outside docker image
5Gb Docker Development image (4Gb base image) cached, find a smaller docker image?
Single file cache restore(but 5gb) -vs- multiple cabal deps
Cache busting is hard... :) scripts/init_docker.sh helps manages a cached docker image

we now have automated release build (in docker :) )


Allow to inhibit rss creation

I'd like to be able to prevent creation of RSS files for specific taxonomies. Right now, the files are always there - even if I provide an empty template for it, I end up with an XML file containing just
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>

Note/Update: This issue is marked as stale, and I may have said something earlier about "opening a thread on the discussion forum". Please don't.
If this is a bug and you can still reproduce this error on the latest release or the master branch, please reply with all of the information you have about it in order to keep the issue open.
If this is a feature request, and you feel that it is still relevant and valuable, please tell us why.


Unable to compile on Galactic

Hi, attempting colcon build --symlink-install returns:
pcl_localization_ros2/src/pcl_localization_component.cpp: In member function ‘virtual CallbackReturn PCLLocalization::on_activate(const rclcpp_lifecycle::State&)’:
pcl_localization_ros2/src/pcl_localization_component.cpp:80:42: error: no matching function for call to ‘rclcpp_lifecycle::LifecyclePublisher<sensor_msgs::msg::PointCloud2_<std::allocator<void> > >::publish(sensor_msgs::msg::PointCloud2_<std::allocator<void> >::SharedPtr&)’
   80 |     initial_map_pub_->publish(map_msg_ptr);

This package is only tested and supported up to ros2 foxy. (I do hope to get ros2 humble support eventually.)
Perhaps ros2 galctic has had a major change in the rclcpp API.

I also met the same issue when trying to compile on Foxy. do you have any idea now? @MrOCW

@Markurt I made some minor edits to load a pcd, it is working for me now.

Sorry, I only tested this package with dashing...

@Markurt I made some minor edits to load a pcd, it is working for me now.

I modified the pcl_localization_component.cpp:80 from initial_map_pub_->publish(map_msg_ptr); to initial_map_pub_->publish(*map_msg_ptr); and now I can successfully build, but when I try to launch, I cannot visualize the PCD map in Rviz until I launch again. May I know that if you meet the similiar problem before?

Added support for foxy.
The problem with pcd not being visible was because param was not being read correctly and pcd was not being published.
PR
https://github.com/rsasaki0109/pcl_localization_ros2/pull/10

The issue has been resolved, so close this issue.


Override Firespitter 7.13's max KSP version to 1.7

@sarbian reports on Discord that Firespitter 7.13 is not built for KSP 1.8 (which includes a Unity upgrade and therefore mostly breaks compatibility across the board), but this commit marked the max KSP version as 1.8.9 back in August:
https://github.com/snjo/Firespitter/commit/d6ec90eb76f09a03a1858db85f745a1ad789018f
If we can confirm this, these overrides will set it back to 1.7.

See MuMech/MechJeb2#1188
Also check https://github.com/snjo/Firespitter/releases, "Firespitter 7.13.0 for KSP 1.7.x"


Database size huge after importing dump from another instance

Describe the bug
Importing a dump from another instance has increased the on disk database size from 54GB to 388GB
To Reproduce
Steps to reproduce the behavior:

Dump database on meilisearch
Delete data directory
Import dump
Database is no 6 times bigger

Expected behavior
Database should stay roughly the same size
Screenshots
Index on old server

Index on new server
[e.g. architecture, device, OS, browser]

Meilisearch version:
1.4.0
Additional context
OS Version
Ubuntu Linux 22.04

Hello @cavnit
Are you migrating from a version to v1.4.0? Or just from one server to another?
In which version were you originally from?
I made some tests on v1.4.0 (not coming from other v1.X) and I get exactly the same size of data.ms
Is it possible to provide the datasets or part of it to reproduce the bug?

Thank you @cavnit for your answer.
@meilisearch/engine-team do you have an idea about what could happen here?

I don't, the dump is simply re-indexing the documents, so that's really strange 🤔
@cavnit if you can't share your dump, could you maybe try to start a new empty instance and re-index all your documents at once and see the size of the database?
Also, could you share with us the size of everything in your data.ms?
You can run tree -h data.ms if you have the tree command.
What is the data.mdb you shared?
Could you share your logs as well?


Measured BW of the filter differs from the programmed settings.

I assembled the circuit following the instructions and measured the characteristics of the filter with audio spectrum analyzer.
As a result, I found that the measured filter characteristics differed from the programmed settings.

We can see that the attenuation of the filter (about -40dB) is correct and differs only in frequency.
Why are the filter frequencies different between settings and measurements?

Fine ! Thanks for the tests.
I think that the delay to performs the  calculatuon at the sample rate of 48 kHz Is the cause of the error, I think,  of you check the last filter, the cw the error Is less than the other.
Then a First test Is to decrease the taps Number of the am and ssb filters , but ... Better approach, It ti decimate more before filter.
Please could performs the same testa with the First version? The version that use the 8 bit in ADC? Because in that version I used more decimation in filtering session.
Please take the same measure, to understood if using a decimation factor by 4 or more helps the filtering.
Another try Is to esclude the pre /post DNR filter , because when we concatenate two fir filters in cascade the results Is not overrides but It Will be changed.
Make this two experiments

Check the measurements with the First vetsion
Check the measurements with the second version, but excludes the DNR filter (the AVG) .

I cannot make testa at the moment, mybe the next weekend.
Thanks.
G.
Inviato da Libero Mail

Thanks. I made additional experiments.
Result of first version
I think the measurements are more closer to settings, but the difference remains.

Result of second version without AVG filter
I think there is almost no difference compared to with AVG filter.

Ok thanks, It Is more clear.
In the First version I did some experiments to compensate a bit the filter, and you can see Better results.
The idea was to evaluate the filter using a base sample rate smaller than the original One. I can explain Better : evaluate the filter using a sample rate of 44 (or less) instead of 48 for am and ssb.  For the Cw use 10 (or less) kHz instead of 12 kHz , in this way we can compensate a bit the error in the eleboration chain.
The challenge here Is to gain the Better results with this small processor, ofcorse using Cortex m4 of h7 It  Is simple,  but here we have a small Cortex m0 processor but I'm sure that we can obtains also acceptable results. The next steps Will be to move the output to I2S to decrease the PWM Noise.
What program do you use to performs the spectral analisys ?
It Is interesting , normally I used the spectroid for android but It Is not extremaly efficient.
Thanks to interesting in the project.
Best 73 de Giuseppe.
Inviato da Libero Mail

Thanks. I will try adjusting sampling rate to correct filter.
I use WeveGane as sweep signal generator,
http://web.archive.org/web/20171102031127/http://efu.jp.net/soft/wg/wg.html
and

I tried overclocking the pico to 250MHz with earlephilhower/arduino-pico Arduino core.
https://github.com/earlephilhower/arduino-pico
Then, I achieved 0-4kHz filter BW with 0-6kHz AM/SSB filter mode, it was 0-2kHz BW before.

The overclocked frequency (250MHz) is 2 times higher than default (125 or 133MHz).
So I think that the sampling frequency is lowering due to the processing time.
I will make another pull request to migrate the Earlephilhower's Arduino core.

Yes that was the problem.
Now and idea also could be to move the project to the original Pico SDK and try to compensate the sampling frequency with a small o different kind of filter.
But your experimentation was really usefull.
Thanks .
Inviato da Libero Mail

Please, check the filters now, I;ve updated the sample rate, from 48 to 24 khz and recalculate all filters, now the AM works at sample rate of 24 khz, the ssb works at sample rate of  12 khz (decimation by 2) and the CW works at sample rate of  6khz (decimation by 4 ), this is a starting point but I think that it works better.
If possible check the bandwidt now.
NOTE: I use the MBED updated at the new version 3.5.4.

I measured your updated Filter and we can see that AM Filter has 6kHz BW.

Also, SSB filter has 4 kHz BW.

And, CW filter has about 300 to 1,500 Hz BW.

The frequency is quite similar, but it is seen that the performance of filter has degraded.  I think it is due to reduced number of taps.

I added the feature to measure the sample rate. please see new pull request.

Ok, I can see that the BW Is like the specification of filter, and this Is good, and now we have a real limit of elaboration.
The filter performance could be optimized , also, I think moving the output from PWM to I2S Digital output, I got a small max I2S amplifier and I Will try to change the output.
Also the filter could be optimized using more taps ofcorse.
Let's try with the overclocked processor.
Thanks for the test and support.
Ik8yfw.
Note:
For the I2S output I Will add a new project the SimpleFilter03 .
Inviato da Libero Mail

Close current sub project.
Starting new experiments on SimpleAudioFilter06.


Data loss on database modification by concurrent async execution

If several asynchronous methods, say, for several async callbacks installed for multiple libraries used in a single project, all attempt to concurrently update a single node-json-db instance, data loss will happen.
Consider the following example (nodejs v16.14.0 on Fedora 36 x86_64):
#!/usr/bin/env node
'use strict';

import { JsonDB, Config } from 'node-json-db';

let counter = 0;

const db = new JsonDB(new Config('test1-db'));

async function add_data()
{
    let k = `/record/key${counter}`;
    let record = {
        strval: `value ${counter}`,
        intval: counter
    };
    counter++;

    return await db.push(k, record, false);
}

async function main()
{
    let promiseList = [];
    for (let i = 0; i < 10; i++) {
        // NOTE: pushing the promise without awaiting for it!
        promiseList.push(add_data());
    }

    // Represent multiple async contexts, all running concurrently
    await Promise.all(promiseList);

    console.log(await db.getData('/'));
}

main()
.catch(err => console.error('Uncaught exception', err));

Expected output:
{
  record: {
    key0: { strval: 'value 0', intval: 0 },
    key1: { strval: 'value 1', intval: 1 },
    key2: { strval: 'value 2', intval: 2 },
    key3: { strval: 'value 3', intval: 3 },
    key4: { strval: 'value 4', intval: 4 },
    key5: { strval: 'value 5', intval: 5 },
    key6: { strval: 'value 6', intval: 6 },
    key7: { strval: 'value 7', intval: 7 },
    key8: { strval: 'value 8', intval: 8 },
    key9: { strval: 'value 9', intval: 9 }
  }
}

Actual output:
{ record: { key9: { strval: 'value 9', intval: 9 } } }

From a superficial examination of the code, it appears that, when attempting to fetch the previous version of the data, to merge with the new data and replace it into the internal data structure, the fetch of concurrent instance A gets suspended at the await keyword because concurrent instance B (C, D, ...) can now run. Which they do until they return control. By the time instance A gets to run again, its fetched data is obsolete. Therefore, when replacing it, data placed by other instances gets overwritten.
The use of Promise.all() is a synthetic test to expose the bug. Actual instances of this bug will happen when multiple async contexts interrupt each other when trying to update the same database, when invoked from multiple unrelated APIs in a project.

Freat catch and thank you for the code.
I'll make a test for it. I'll surely have to add a new dependency to have proper locking to be sure that we can't have multiple concurrent push without waiting for previous push to finish.


[6.0][Concurrency] Fix missing return in legacy isSameExecutor mode detection

Description: Fixes a missing return inside the #if !SWIFT_CONCURRENCY_EMBEDDED region which caused the entire dyld sdk detection not to work in practice.
Scope/Impact: dyld detection of "compiled against old sdk" was rendered useless by this typo; which may cause old applications to start crashing without recompiling.
Risk: Low; fixes trivial missing return statement.
Testing: CI testing
Reviewed by: @mikeash
Original PR:
Radar: rdar://128425368 rdar://127400013

@swift-ci please test

Will be replaced by https://github.com/apple/swift/pull/73813 when we pick it to 6.0


[Snyk] Security upgrade @aws-sdk/client-sns from 3.309.0 to 3.347.1

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `npm` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

package.json
package-lock.json

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Breaking Change
Exploit Maturity

589/1000  Why? Has a fix available, CVSS 7.5
Regular Expression Denial of Service (ReDoS) SNYK-JS-FASTXMLPARSER-5668858
No
No Known Exploit

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Regular Expression Denial of Service (ReDoS)

Codecov Report

Merging #1 (423e7ba) into main (53bd3b7) will not change coverage.
The diff coverage is n/a.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff            @@
##              main        #1   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            2         2
  Lines           37        37
=========================================
  Hits            37        37


Arrangement and execution of the meeting (issue #388 related)

The goal is to arrange and execute a meeting about usage of Pandas library and numerical results reporting.

Meeting has been executed


gitlab: 17.3.7 -> 17.6.1

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

I think we should update gitlab-runner also soon, but it currently still compatible. See #356040

Can you rebase this on master, then it should be ready to merge from my side.


New Uniswap connector

Take slippage in 2 ways for deposits.
Current version:-
tokenA has fixed amount but tokenB is variable according to price change in the meantime.
New version:- (Use try catch, no unitAmt needed only slippage)

First try with tokenA fixed amount and tokenB variable. Let's take 1 ETH | 500 DAI with a slippage of 1%. So that makes the range at 1 ETH & 495 to 505 DAI. Now if ETH price increase meaning DAI between 500 to 505. The user might have a shortage of DAI in this scenario. If user has DAI shortage than next one.
Take tokenB as fixed at 500 DAI & ETH will range from 0.99 to 1.01. So if above fails it'll succeed on this for sure.

Also, I'm thinking to have one more functionality of add single token. We'll swap into subsequent other but this won't go well with big deposit. What would you suggest?

@thrilok209 @mubaris

This makes sense, for most pairs first step won't fail.
As for single side liquidity is also possible irrespective of the amount. We can always calculate the amount of token B given the amount of token A, if we only consider Pool A-B.
For example Alpha Finance does this. They calculate the pool parameters after you do the swap on the same pool, then you can get amount of token B if you only provide token A. You can see this here


chore Update CI permissions.

ref https://github.com/silverstripe/gha-ci/issues/137

CI failure is unrelated


Create a new release

@ndevilla A few patches fixing buffer overflow vulnerabilities were fixed recently; could you consider making a new release?

As a downstream packager I add +1 to the request. A new release would be great.

I second that. It would be great to have the .pc in a release.

See https://github.com/ndevilla/iniparser/issues/125#issuecomment-2016557686

Here it is: https://github.com/ndevilla/iniparser/releases/tag/v4.2


Compacting fake fields fails when a fake field has the same value for 'name' and 'store_in'

The CrudPanel compactFakeFields method fails when given fields that have the same value for the 'name' and 'store_in' attributes:
Example:
[
    'name' => 'tags',
    'label' => 'Tags',
    'fake' => true,
    'store_in' => 'tags',
]

Completely agree. It should be stored as tags.tags in that case. Just merged your PR into dev, thanks!


liquibase diff Informix db

Environment
IBM Java 1.8
Liquibase Version: liquibase-3.10.1
Liquibase Integration & Version: <Pick one: CLI, maven, gradle, spring boot, servlet, etc.>
CLI CE
Liquibase Extension(s) & Version:
Database Vendor & Version:
Informix Db v.11.7
Operating System Type & Version:
AIX 7.1,
Description
A clear and concise description of the issue being addressed.

Describe the actual problematic behavior.
Ensure private information is redacted.
liquibase diff two Informix databases ending after a few minutes - see debug log
I think the error occurred at the end of the comparison when sstem catalog of db enginy was examined
debug.txt

Steps To Reproduce
List the steps to reproduce the behavior.

Please be precise and ensure private information is redacted
Include things like

Files used - sql scripts, changelog file(s), property file(s), config files, POM Files
Exact commands used - CLI, maven, gradle, spring boot, servlet, etc.

Actual Behavior
A clear and concise description of what happens in the software before this pull request.

Include console output if relevant
Include log files if available.

Expected/Desired Behavior
A clear and concise description of what happens in the software after this pull request.
Screenshots (if appropriate)
If applicable, add screenshots to help explain your problem.
Additional Context
Add any other context about the problem here.
┆Issue is synchronized with this Jira Bug by Unito

Hi @arozehnal Thanks for writing up this issue.  Can you try a couple of other things since I don't have an AIX Informix DB system readily available?  Can you run a liquibase snapshot on each one of the databases independently of each other to see if one of the snapshot commands is failing?
Can you also run liquibase generateChangeLog to see if problem is with liquibase generating information about one of the databases?

I'm newbie to liquibase - I will provide the required files / information, but it will take me a while  :-(

I have only one database filled.
I tried to run snapshot and generateChangeLog - both end in error.
For an empty database, the snapshot passes.
crash_snapshot.txt
crash_generateChangeLog.txt

In the previous post, I inserted logs with only ERROR level.
I enclose another with logLevel=all.
Last run of liquibase (started 14:18:26.183 DEBUG) ends OK:
According to the log the liquibase crach on the column named 'case' in the syscolformats and syssvwformats tables.
These tables are not part of the Informix db system catalog, They were created using an IBM tool called NewEra a few years ago.
After removing these tables, the liquibase no longer crashes. Since we no longer use NewEra, I suggest to the project manager  permanently removed from the schema.
I don't know if you want to deal with this case further, but I say the issue can be closed.
liquibase.zip

Closing per above.


Missing information on Airflow Diagnostic settings

https://learn.microsoft.com/en-us/azure/data-factory/monitor-configure-diagnostics
The above MSFT doc is outdated and missing info w.r.t Airflow

Details and images are outdated

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: b37585d7-5a95-2e98-cfc3-60c5245daa9f
Version Independent ID: 0a0f21cb-dfd9-2cdc-5afa-bb745b059da6
Content: Configure diagnostic settings and a workspace - Azure Data Factory
Content Source: articles/data-factory/monitor-configure-diagnostics.md
Service: data-factory
Sub-service: monitoring
GitHub Login: @ukchrist
Microsoft Alias: ulrichchrist

@NandanHegde15
Thank you for bringing this to our attention.
I've delegated this to content author @ukchrist, who will review it and offer their insightful opinions.

@ukchrist
Please review it and update as appropriate