New post: Unsucking your project onboarding

I personally feel you're all over the place with this one.

I know this is your feedback, but I respectfully disagree. I actually took my time to review how I wanted a more "declarative" post (as opposed to the storytelling style I usually go for). The format is meant to serve as a page to consult repeatedly and I'm quite happy with the outcome.

When you describe bin/setup, why comment each section of the script individually, only to repeat the whole script later?

Because I've genuinely grown to hate when people breakdown a script and don't make it available in full afterwards. I also dislike when a giant script is posted and then described without visual references. I hate breaking my reading flow having to scroll up and down and I don't want to impose that on people. Unlike me, if they're comfortable with scrolling up and down, they're comfortable with scrolling past the full script.

Why link your ASCII cinemas to another page instead of embedding? Less jumps make happier readers.

They're embedded through JS, they're not videos. I tried to embed but it's not that simple. Are we scrubbing script tags?

(not a question) I would drop all the alternative language examples. The message is language agnostic, the examples are not, but any intermediate user should be able to know what commands to use for their language/framework if you tell them what we aim to accomplish there. That way you can simply use Elixir or Javascript examples, and leave Python/Ruby/whatever out of the speech.

Yeah, I'm comfortable with dropping those.

(also not a question) You already do a good job of explaining why these scripts are useful, I don't think the list of examples at the end has any value. I also don't think bin/lint is a good example to feature. bin/console or bin/test or bin/deploy all have would have more value for me as the reader.

I don't have access to a valuable bin/console anymore, unfortunately. Why wouldn't bin/lint be a good example?

(again, not a question) I recommend completely removing your bin/functions of these examples. Maybe quickly refer in the end we sometimes extract common functionality. But for anyone learning about these scripts, make their lives easier and just stick to simple and short things. If you want to showcase bigger things like your Phoenix over Ngrok script, put it in a Gist and link to it, don't force readers who are not as advanced (or who don't care about Ngrok) to have to go through it.

I disagree as they have cute little touches that readers might find in the asciinema. As for "force readers who are not as advanced", I quote "Readers can scroll both ways 😉"

Why mention our dotfiles and install scripts? Not that I didn't enjoy the compliment, I'm always eager to boast about my oneliner-setup-that-never-works-when-I-actually-need-but-its-still-awesome. I just feel you dilluted the message there of preparing a project to make everyone's lives easier by automating simple boring tasks.

Because the philosophy that applies to the projects applies to computers. This is the point of the blog post. Languages are tools, frameworks are tools, they change over time, we should make onboarding as simple as possible. We take this a whole new level. Computers are also tools and also expendable, we should make onboarding as simple as possible.

I know this is your feedback, but I respectfully disagree. I actually took my time to review how I wanted a more "declarative" post (as opposed to the storytelling style I usually go for). The format is meant to serve as a page to consult repeatedly and I'm quite happy with the outcome.

It is just my opinion, please feel free to dismiss it :smile:. A lot of my feedback here is precisely because I understood you wanted this to be a reference article for future apprentices/summer campers/learners to refer to and understand the value of automating these tasks, and how to do it. That's why I went to the trouble of commenting so many things on how to make it simpler and more generic.
Of course, you're free to disagree and do whatever you want, it's your article after all. I would just ask you to think what's your opinion and what's something we do collectively as a team, and make it clear when its one or the other. Otherwise you might be misleading the reader, which might not be working directly with you. :peace_symbol:

Because I've genuinely grown to hate when people breakdown a script and don't make it available in full afterwards. I also dislike when a giant script is posted and then described without visual references. I hate breaking my reading flow having to scroll up and down and I don't want to impose that on people. Unlike me, if they're comfortable with scrolling up and down, they're comfortable with scrolling past the full script.

Ok, we simply have different opinions on this. Nothing wrong with that. I suggest then just moving the entire script to a gist, to remove the repetition. One thing I appreciate in posts like this is having the scripts quickly accessible at the top, so I can revisit them quickly through the post. Maybe gather all the examples you use here in a single gist and link the reader at the top?

They're embedded through JS, they're not videos. I tried to embed but it's not that simple. Are we scrubbing script tags?

We're not. You can see how I embedded it when migrating your Jobs and Timers post from Medium here: https://github.com/subvisual/subvisual.com/blame/master/src/posts/2019-06-07-jobs-and-timers-in-neovim-how-to-watch-your-builds-fail.md#L58

I don't have access to a valuable bin/console anymore, unfortunately. Why wouldn't bin/lint be a good example?

Just because it is very common to simply do it with each language's task runner. The most value I've seen in it is to automatically go through all the linters in the project, which is very commonly just a couple commands. In fact when the linters have auto-fix capabilities you often use the command directly to enable such things.
bin/console is added by default on any new gem created with Bundler, for instance. I've seen more value in it because it allows you to not only configure things like the prompt, but it also allows you to prepare some things automatically. For instance, in development you can use to automatically prepare some data to make it easier for you to test things out.
bin/deploy in my opinion would probably be an even better example, if you don't mind touching a bit of its own quirks. It can be as simple as ensuring the Git branches are set up and pushing to Heroku. It has the advantage that this script can actually hide from a regular developer details about the running machines they might not care or not be aware.
Again, this is just food for thought. I just found odd the use of bin/lint because I rarely see it. You do you. :heart:

I disagree as they have cute little touches that readers might find in the asciinema. As for "force readers who are not as advanced", I quote "Readers can scroll both ways wink"

I honestly didn't understand what you mean with the quote. My point was just that you use things like pp which are not standard shell commands, and while they have some value in a project, they don't bring anything to the message you want to convey here. I'm just suggesting keeping things simple(r).

Because the philosophy that applies to the projects applies to computers. This is the point of the blog post. Languages are tools, frameworks are tools, they change over time, we should make onboarding as simple as possible. We take this a whole new level. Computers are also tools and also expendable, we should make onboarding as simple as possible.

This one caught me off guard. I thought the point of the blog post was to teach and showcase the value of utility scripts in a project, not automation in general. I don't think the message is that broad. But again, that's my opinion. :peace_symbol: :v:


Return Explain Plan in json mode via http explain api call

Very important for Nebius!
need to see how explain is done in the hierarchy format in YDB CLI and do the same in the json_query handle (add a field)
can discuss the response format with Pasha

exsits in current explain plan result


DOCS-1370: OSS 3.26 publishing

Product Version(s):
Calico 3.16
Issue:
(https://tigera.atlassian.net/browse/DOCS-1370)
Link to docs preview:

SME review:

[ ] An SME has approved this change.

DOCS review:

[ ] A member of the docs team has approved this change.

Additional information:

Merge checklist:

[ ] Deploy preview inspected wherever changes were made
[ ] Build completed successfully
[ ] Test have passed

@danudey @mgleung @bmckercher123


improve development mode

Just add devMode option to hooks.
So NODE_ENV="development" is still available to use. But new feature makes possible to clean cache without NODE_ENV
hooks({
    // ... some initial options
    devMode: true // <------
})

Looks, thanks!


Scroll Bar Fixed

Fixed #901

Please add tag LGMSOC21

My bad. Done!

My bad. Done!

Thank you.


Provide onWill/DidSaveAsTextDocument events

I need to know when a user saves an existing file using the Save As command, instead of renaming it. I found onWillSaveTextDocument and onDidSaveTextDocument events, but none of them gives me the information that a new file is being created.
The onDidRenameFiles event is not fired in this case, because in fact, no file is being renamed. Instead, a new file is being created (a copy of the selected/previous file).
The reason for this request is to be able to move content associated from one file to another. In this case, it’s for my Bookmarks extension. That’s why this new event should provide the oldUri and newUri, just like the files array available in onDidRenameFiles event.
Thank you

pinging @isc-bsaviano who may wish to upvote this.

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!


How does sending a list of unique vertices vs sending a list of vertices change hull calculation

Hello
I was comparing the output from two cases

sending the list of mesh vertices (extracted from each mesh facet, so that N facets give 3N vertices) to createHull method
extract the uniqueVertices list from the mesh vertices so that each vertex only appears once as below
var uniquePoints = points.GroupBy(point => new { point.x, point.y, point.z }).Select(g => g.First()).ToList();
and use the uniqueVertices as input to createHull method

I see that the hull created in cases I and II are different with slightly different number of points. Is this expected from the quickHull algortihm ?

Without digging into too deep, I believe that the algorithm will return the points on the convex hull. It does not look for duplicates internally, so if you put more points on the convex hull, it will return more points.


wrapperClass

Hi,
I'm adding some wrapperClasses from TailwindCSS, such as outline-none, border-none.
However, since vue-tel-input class is also applied, they are still being applied from that class.
Any idea what the most elegant way of overriding these css rules might be?

Maybe something like (these are all border and outline of vue-tel-input):
.vue-tel-input {
  border: unset !important;
}
.vue-tel-input:focus-within {
  box-shadow: unset !important;
}

It is not working - did you check it? You cant use !important on focus-within selector and also on element selector, beacause it will choose the second selector and focus-within styles wont be applied. You have custom options: wrapperClasses and InputClasses but even if you set it, they will be overwritten by default. I think there must be same improvement here. E.g. change the selectors for those with lower specificity.


bugfix: add null check on output gbm on pageflip

The gbm for the output might be null for the pageflip in the case that
the output has been disconnected. The gbm might be set to null by
wlr_drm_output_cleanup() in this case.
If the output is cleaned up before the pageflip, then a double free
will crash the compositor on the call to gbm_surface_release_buffer()
in the pageflip handler. The outputs buffer object bo[1] will point to
invalid memory.

#9 told me to check drm hotplugging, so I did and noticed that it crashed most of the time so I decided to investigate.
I don't know exactly what's going on with the code because I'm not familiar with wayland or gbm, but this seems to fix the issue.
I tried a guard on the pageflip handler to return early when the state is DRM_OUTPUT_DISCONECTED but that led to a nasty hang and I had to restart my computer, so this is the solution I landed on.
I did indeed observe the case where the output->gbm is null in the pageflip handler after the output cleanup function ran.
Here is a log (with valgrind output):
==8738== Memcheck, a memory error detector
==8738== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==8738== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==8738== Command: ./bin/simple
==8738==
2017-07-24 17:38:00 - [session/logind.c:350] Successfully loaded logind session
2017-07-24 17:38:00 - [backend/udev.c:195] Successfully initialized udev
2017-07-24 17:38:01 - [backend/drm/backend.c:84] Initalizing DRM backend for /dev/dri/card0 (i915)
2017-07-24 17:38:01 - [backend/egl.c:150] Using EGL 1.4
2017-07-24 17:38:01 - [backend/egl.c:152] Supported EGL extensions: EGL_EXT_buffer_age EGL_EXT_image_dma_buf_import EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_WL_bind_wayland_display
2017-07-24 17:38:01 - [backend/egl.c:153] Using OpenGL ES 3.2 Mesa 17.1.5
2017-07-24 17:38:01 - [backend/egl.c:154] Supported OpenGL ES extensions: GL_EXT_blend_minmax GL_EXT_multi_draw_arrays GL_EXT_texture_filter_anisotropic GL_EXT_texture_compression_dxt1 GL_EXT_texture_format_BGRA8888 GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_stencil8 GL_OES_texture_3D GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_half_float GL_EXT_texture_sRGB_decode GL_OES_EGL_image GL_OES_depth_texture GL_OES_packed_depth_stencil GL_EXT_texture_type_2_10_10_10_REV GL_OES_get_program_binary GL_APPLE_texture_max_level GL_EXT_discard_framebuffer GL_EXT_read_format_bgra GL_EXT_frag_depth GL_NV_fbo_color_attachments GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_array_object GL_OES_viewport_array GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_EXT_robustness GL_EXT_texture_rg GL_EXT_unpack_subimage GL_NV_draw_buffers GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_EXT_draw_buffers GL_EXT_map_buffer_range GL_KHR_debug GL_KHR_robustness GL_KHR_texture_compression_astc_ldr GL_OES_depth_texture_cube_map GL_OES_surfaceless_context GL_EXT_color_buffer_float GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_integer_mix GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_INTEL_conservative_rasterization GL_INTEL_performance_query GL_ANDROID_extension_pack_es31a GL_EXT_compressed_ETC1_RGB8_sub_texture GL_EXT_copy_image GL_EXT_draw_buffers_indexed GL_EXT_draw_elements_base_vertex GL_EXT_gpu_shader5 GL_EXT_polygon_offset_clamp GL_EXT_primitive_bounding_box GL_EXT_shader_io_blocks GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_cube_map_array GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_KHR_context_flush_control GL_KHR_robust_buffer_access_behavior GL_NV_image_formats GL_OES_copy_image GL_OES_draw_buffers_indexed GL_OES_draw_elements_base_vertex GL_OES_gpu_shader5 GL_OES_primitive_bounding_box GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_io_blocks GL_OES_shader_multisample_interpolation GL_OES_tessellation_point_size GL_OES_tessellation_shader GL_OES_texture_border_clamp GL_OES_texture_buffer GL_OES_texture_cube_map_array GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_EXT_blend_func_extended GL_EXT_buffer_storage GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_shader_samples_identical GL_KHR_texture_compression_astc_sliced_3d GL_OES_geometry_point_size GL_OES_geometry_shader GL_OES_shader_image_atomic GL_EXT_clip_cull_distance GL_MESA_shader_integer_functions
2017-07-24 17:38:01 - [examples/shared.c:488] Running compositor on wayland display 'wayland-0'
2017-07-24 17:38:01 - [backend/libinput/backend.c:46] Initializing libinput
2017-07-24 17:38:01 - [backend/libinput/backend.c:76] libinput sucessfully initialized
2017-07-24 17:38:01 - [backend/drm/drm.c:506] Scanning DRM connectors
2017-07-24 17:38:01 - [backend/drm/drm.c:583] Found display 'eDP-1'
2017-07-24 17:38:01 - [backend/drm/drm.c:593] 'eDP-1' connected
2017-07-24 17:38:01 - [backend/drm/drm.c:594] Detected modes:
2017-07-24 17:38:01 - [backend/drm/drm.c:608]   3840@2160@60000
2017-07-24 17:38:01 - [backend/drm/drm.c:608]   3840@2160@47999
2017-07-24 17:38:01 - [backend/drm/drm.c:614] Sending modesetting signal for 'eDP-1'
2017-07-24 17:38:01 - [examples/shared.c:401] Output 'eDP-1' added
2017-07-24 17:38:01 - [examples/shared.c:403] Unknown  344mm x 194mm
2017-07-24 17:38:01 - [backend/drm/drm.c:227] Modesetting 'eDP-1' with '3840x2160@60000 mHz'
2017-07-24 17:38:02 - [backend/drm/drm.c:583] Found display 'HDMI-A-1'
2017-07-24 17:38:02 - [backend/drm/drm.c:593] 'HDMI-A-1' connected
2017-07-24 17:38:02 - [backend/drm/drm.c:594] Detected modes:
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1920@1080@59934
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1600@1200@60000
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1680@1050@59883
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1280@1024@60020
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1440@900@59901
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1280@960@60000
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1280@800@59910
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   1024@768@60004
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   800@600@60317
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   800@600@56250
2017-07-24 17:38:02 - [backend/drm/drm.c:608]   640@480@59940
2017-07-24 17:38:02 - [backend/drm/drm.c:614] Sending modesetting signal for 'HDMI-A-1'
2017-07-24 17:38:02 - [examples/shared.c:401] Output 'HDMI-A-1' added
2017-07-24 17:38:02 - [examples/shared.c:403] Samsung Electric Company SyncMaster 477mm x 268mm
2017-07-24 17:38:02 - [backend/drm/drm.c:227] Modesetting 'HDMI-A-1' with '1920x1080@59934 mHz'
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Power Button [0:1]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Video Bus [0:6]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Video Bus [0:6]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Power Button [0:1]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Lid Switch [0:5]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Sleep Button [0:3]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added CM Storm Coolermaster Novatouch TKL [9494:39]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added CM Storm Coolermaster Novatouch TKL [9494:39]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Razer Razer DeathAdder 2013 [5426:55]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Razer Razer DeathAdder 2013 [5426:55]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Razer Razer DeathAdder 2013 [5426:55]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Integrated_Webcam_HD [7119:11146]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added G2Touch Multi-Touch by G2TSP [10900:21217]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added ELAN1010:00 04F3:3012 Touchpad [1267:12306]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH Headphone Mic [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH HDMI/DP,pcm=3 [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH HDMI/DP,pcm=7 [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH HDMI/DP,pcm=8 [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH HDMI/DP,pcm=9 [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added HDA Intel PCH HDMI/DP,pcm=10 [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added AT Translated Set 2 keyboard [1:1]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added ETPS/2 Elantech Touchpad [2:14]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added DELL Wireless hotkeys [0:0]
2017-07-24 17:38:03 - [backend/libinput/events.c:66] Added Dell WMI hotkeys [0:0]
2017-07-24 17:38:06 - [backend/udev.c:142] udev event for card0 (change)
2017-07-24 17:38:06 - [backend/drm/backend.c:71] /dev/dri/card0 invalidated
2017-07-24 17:38:06 - [backend/drm/drm.c:506] Scanning DRM connectors
2017-07-24 17:38:06 - [backend/drm/drm.c:619] 'HDMI-A-1' disconnected
2017-07-24 17:38:06 - [backend/drm/drm.c:697] Emmiting destruction signal for 'HDMI-A-1'
==8738== Invalid read of size 8
==8738==    at 0x528EF40: gbm_surface_release_buffer (in /usr/lib64/libgbm.so.1.0.0)
==8738==    by 0x4103EE: page_flip_handler (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x508654D: drmHandleEvent (in /usr/lib64/libdrm.so.2.4.0)
==8738==    by 0x410499: wlr_drm_event (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x601EC51: wl_event_loop_dispatch (in /usr/lib64/libwayland-server.so.0.1.0)
==8738==    by 0x601D499: wl_display_run (in /usr/lib64/libwayland-server.so.0.1.0)
==8738==    by 0x40AF13: compositor_run (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x4095E2: main (in /home/tony/projects/wlroots/build/bin/simple)
==8738==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==8738==
==8738==
==8738== Process terminating with default action of signal 11 (SIGSEGV)
==8738==  Access not within mapped region at address 0x0
==8738==    at 0x528EF40: gbm_surface_release_buffer (in /usr/lib64/libgbm.so.1.0.0)
==8738==    by 0x4103EE: page_flip_handler (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x508654D: drmHandleEvent (in /usr/lib64/libdrm.so.2.4.0)
==8738==    by 0x410499: wlr_drm_event (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x601EC51: wl_event_loop_dispatch (in /usr/lib64/libwayland-server.so.0.1.0)
==8738==    by 0x601D499: wl_display_run (in /usr/lib64/libwayland-server.so.0.1.0)
==8738==    by 0x40AF13: compositor_run (in /home/tony/projects/wlroots/build/bin/simple)
==8738==    by 0x4095E2: main (in /home/tony/projects/wlroots/build/bin/simple)
==8738==  If you believe this happened as a result of a stack
==8738==  overflow in your program's main thread (unlikely but
==8738==  possible), you can try to increase the size of the
==8738==  main thread stack using the --main-stacksize= flag.
==8738==  The main thread stack size used in this run was 8388608.
==8738==
==8738== HEAP SUMMARY:
==8738==     in use at exit: 3,623,266 bytes in 22,020 blocks
==8738==   total heap usage: 172,911 allocs, 150,891 frees, 15,286,383 bytes allocated
==8738==
==8738== LEAK SUMMARY:
==8738==    definitely lost: 98,864 bytes in 9 blocks
==8738==    indirectly lost: 0 bytes in 0 blocks
==8738==      possibly lost: 2,576,729 bytes in 18,451 blocks
==8738==    still reachable: 947,673 bytes in 3,560 blocks
==8738==                       of which reachable via heuristic:
==8738==                         newarray           : 1,536 bytes in 16 blocks
==8738==         suppressed: 0 bytes in 0 blocks
==8738== Rerun with --leak-check=full to see details of leaked memory
==8738==
==8738== For counts of detected and suppressed errors, rerun with: -v
==8738== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

Thanks!


HHH-9291

This changes the order of the parameter values for a with clause as they are added to the query so that they match the order of the joins that were previously generated.

This looks like a merge commit
Thanks for the Pull Request. Did you sign the CLA?

I submitted this PR while at a former employer, so I need to get permission.  I'll see what I can do.

I received the necessary permissions and signed the CLA, but it is awaiting official approval by said employer.

@moriarty-s3a What happened to this PR that it now has 250+ commits. Can you isolate the changes? Otherwise, we will have to close it.

Applied upstream, thanks


Document solution to "docs last update" date being rendered incorrectly when published through Vercel

Have you read the Contributing Guidelines on issues?

[X] I have read the Contributing Guidelines on issues.

Description
Setting the VERCEL_DEEP_CLONE environment variable to true through vercel's Project Settings page will fix the "docs last update" date being rendered incorrectly when published through Vercel.
It should be documented in the field description of showLastUpdateTime.
It should also be documented under Deploying to Vercel. (I understand the decision to keep the "deployment" section mostly as-is.)
An aside:
A broader approach/solution would involve outputting a warning in the console if the repository is shallow and the showLastUpdateTime field is enabled. The warning would include the relevant solution for GitHub Actions or Vercel, depending on which one is being used.
Self-service

[ ] I'd be willing to address this documentation request myself.

Disagree to document it in the options docs or error message, agree to document it in deployment docs. Each CI has its own configuration for clone depth and we can't exhaustively document all, and the deployment docs is one of the few places where we give a nod to the exact options of each platform.

This doesn't seem to work for us. I tried adding the VERCEL_DEEP_CLONE env variable in Vercel, and the build failed with the error message: There was a permanent problem cloning the repo. Error: Cloning failed. I believe our repo is too large to perform a deep clone each time. Although I am unfamiliar with this env var, and can't really find good documentation on it.
Would be ideal if there was a fix for this that didn't require changing any settings in Vercel.

Would be ideal if there was a fix for this that didn't require changing any settings in Vercel.

The logic behind "docs last update" is that a search through the git commit history is performed to identify the latest commit that changed the file.
If the git repo is cloned with depth 1, the entire history has only one level, and all files appear to be updated at the same date.
There is no fix for this in Docusaurus, you need to ensure that the environment where you run the build is able to do a deep clone of the repo.
I think that this should be explicitly explained in the Deployment page.

Documentation is great but people will still skip it and report issues over time.
I think we should focus on improving the DX.
We could fail fast in the CI with a good error message so that users are immediately aware of the problem.
Apparently we can know if a repository is a shallow clone:
git rev-parse --is-shallow-repository:
https://git-scm.com/docs/git-rev-parse#Documentation/git-rev-parse.txt---is-shallow-repository
So I get if we are trying to read the git commit date anywhere (docs, blog, sitemap...), and the repository is shallow (checked at most once / memoized), then we can throw with a link to some github discussion or documentation page, eventually providing an escape hatch (env variable) for those what want to failsafe.

Hey, I tried to analyze the problem better, here's what I found out.

Different clone methods
There are various ways to clone a repository according to this GitHub blog post:
https://github.blog/open-source/git/get-up-to-speed-with-partial-clone-and-shallow-clone/

Deep (default)
Shallow (--depth=1)
Treeless (--filter=tree:0)
Blobless (--filter=blob:none)

Benchmark
I ran a benchmark in the cloud to see the clone performance impact of each alternative on our own repo:
hyperfine --runs 5 \
"rm -rf default && git clone https://github.com/facebook/docusaurus.git default" \
"rm -rf shallow && git clone --depth=1 https://github.com/facebook/docusaurus.git shallow" \
"rm -rf treeless && git clone --filter=tree:0 https://github.com/facebook/docusaurus.git treeless" \
"rm -rf blobless && git clone --filter=blob:none https://github.com/facebook/docusaurus.git blobless"

Benchmark 1: rm -rf default && git clone https://github.com/facebook/docusaurus.git default
  Time (mean ± σ):     36.956 s ±  3.152 s    [User: 41.199 s, System: 4.402 s]
  Range (min … max):   34.624 s … 41.291 s    5 runs

Benchmark 2: rm -rf shallow && git clone --depth=1 https://github.com/facebook/docusaurus.git shallow
  Time (mean ± σ):      2.424 s ±  0.241 s    [User: 0.988 s, System: 0.548 s]
  Range (min … max):    2.219 s …  2.809 s    5 runs

Benchmark 3: rm -rf treeless && git clone --filter=tree:0 https://github.com/facebook/docusaurus.git treeless
  Time (mean ± σ):      3.359 s ±  0.214 s    [User: 1.198 s, System: 0.596 s]
  Range (min … max):    3.120 s …  3.672 s    5 runs

Benchmark 4: rm -rf blobless && git clone --filter=blob:none https://github.com/facebook/docusaurus.git blobless
  Time (mean ± σ):      4.785 s ±  0.710 s    [User: 2.188 s, System: 0.800 s]
  Range (min … max):    4.294 s …  5.934 s    5 runs

Summary
  rm -rf shallow && git clone --depth=1 https://github.com/facebook/docusaurus.git shallow ran
    1.39 ± 0.16 times faster than rm -rf treeless && git clone --filter=tree:0 https://github.com/facebook/docusaurus.git treeless
    1.97 ± 0.35 times faster than rm -rf blobless && git clone --filter=blob:none https://github.com/facebook/docusaurus.git blobless
   15.25 ± 2.00 times faster than rm -rf default && git clone https://github.com/facebook/docusaurus.git default

As we can see:

the default deep clone is much slower than all the others
shallow is the fastest, and treeless/blobless can be up to 2x slower, but the clone time remains reasonable and only adds a few seconds for repo with a large history

Hosting platforms
Netlify
Apparently, Netlify does a blobless clone by default: https://answers.netlify.com/t/please-confirm-repo-clones-are-not-shallow/86587
It's great because it's relatively fast and we still have access to the git history to compute the last update date.
Vercel
Vercel does not give us the full git history by default so I think it's safe to assume they use a shallow clone.
There's a VERCEL_DEEP_CLONE=true env variable that gives us access to the full history. Not sure where it's documented but I believe it uses a deep clone and thus the cloning becomes slower.
I'm trying to figure out if we can do blobless clones on Vercel, which would be better for us and other docs framework like Nextra, Fumadocs and others that read the git file history.
GitHub Actions
Users will usually use the checkout action: https://github.com/actions/checkout
There are both a depth: 0 (deep) or depth: 1 (shallow) options.
I also saw a filter option, and plan to see if it works for blobless/treeless clones before writing some docs.

That's all for now, I plan to edit this comment with new findings.

Note: I also ran tests on Vercel using our own repo, which is quite large.
It works with the default: https://vercel.com/lorbersebastiens-projects/docusaurus-clone-deep/DcQ2Td96mPGgLD61tHtQzwd9gVAU
But not when using VERCEL_DEEP_CLONE=true: https://vercel.com/lorbersebastiens-projects/docusaurus-clone-deep/Gr9VW3EpgdWARD4mdDqTVkFKZKMP
Similar to @JKarlavige I get the following errors:

Any idea @leerob how to clone large repositories on Vercel and still be able to access git history?


chore(release): v0.6.0

Version bump in package.json for release v0.6.0

:tada: This PR is included in version 0.6.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Event Handlers - Support Capture, Passive, Once

Provide a way to support Capture, Passive, and Once in the event handlers
We will allow the event handler types to be defined after a ., the event name, a : and then one or more of the following codes:
c = capture vs. bubble
1 = once vs. until removed
p = passive
c, 1, and p are all optional and can be in any order
<button .click:c1p="clickHandler"></button>

We must properly handle removeEventListener for capture vs. non-capture events.

If we have Capture and Bubble mode then both versions of the handler need to exist.

Also: https://stackoverflow.com/questions/77607616/react-and-js-web-component-onchange-event-gets-lost-when-cloning-html-from-tem
Check for different case event names.

This will be in the next release


Empty fragment results when calculating DMET energy with democratic partitioning from multiple MPI ranks

I'm trying to use the callback solver with MPI to solve multiple fragments simultaneously, but I'm running into the issue where the fragment results are not being properly communicated between MPI ranks when calculating the DMET energy with democratic partitioning. The minimal example belowe reproduces the error when executed on 4 MPI rank with mpirun -n 4.
The problem appears on L39 of vayesta/core/qemb/rdm.py, where the fragment wavefunction is bein accessed to calculate the 1-RDM of the cluster. Since each fragment is on a separate MPI rank, not all results are available, leading to the following AttributeError: 'NoneType' object has no attribute 'wf'.
import numpy as np
import pyscf
import pyscf.gto
import pyscf.scf
import pyscf.fci
import vayesta
import vayesta.ewf
from vayesta.misc.molecules import ring
from vayesta import mpi

# User defined FCI solver - takes pyscf mf as input and returns RDMs
# The mf argment contains the hamiltonain in the orthonormal cluster basis
# Pyscf or other solvers may be used to solve the cluster problem and may return RDMs, CISD amplitudes or CCSD amplitudes
def solver(mf):
    h1e = mf.get_hcore()
    h2e = mf._eri
    norb = mf.mo_coeff.shape[-1]
    nelec = mf.mol.nelec
    energy, civec = pyscf.fci.direct_spin0.kernel(h1e, h2e, norb, nelec, conv_tol=1.e-14)
    dm1, dm2 = pyscf.fci.direct_spin0.make_rdm12(civec, norb, nelec)
    results = dict(dm1=dm1, dm2=dm2, converged=True)
    return results

natom = 4
mol = pyscf.gto.Mole()
mol.atom = ring("H", natom, 1.5)
mol.basis = "sto-3g"
mol.output = "pyscf.out"
mol.verbose = 5
mol.symmetry = True
mol.build()

# Hartree-Fock
mf = pyscf.scf.RHF(mol)
mf = mpi.scf(mf)
mf.kernel()

# Vayesta options
nfrag = 4
bath_opts = dict(bathtype="dmet")

# Run vayesta with user defined solver
emb = vayesta.ewf.EWF(mf, solver="CALLBACK",  energy_functional='dm', bath_options=bath_opts, solver_options=dict(callback=solver))
# Set up fragments
with emb.iao_fragmentation() as f:
    # Add all atoms as separate fragments
    f.add_all_atomic_fragments()
emb.kernel()

for x in emb.fragments:
    print(x.results)

# Calculate DMET energies
dmet_energy = emb.get_dmet_energy(part_cumulant=False, approx_cumulant=False)
dmet_energy_part_cumulant = emb.get_dmet_energy(part_cumulant=True, approx_cumulant=False)
dmet_energy_approx_cumulant = emb.get_dmet_energy(part_cumulant=True, approx_cumulant=True)

if mpi.is_master:
    print("Hartree-Fock energy          : %s"%mf.e_tot)
    print("DMET energy                  : %s"%dmet_energy)
    print("DMET energy   (part-cumulant): %s"%dmet_energy_part_cumulant)
    print("DMET energy (approx-cumulant): %s"%dmet_energy_approx_cumulant)

Probably something to add would be a function that broadcasts the fragment results across all MPI ranks, e.g.:
def communicate_results(self):
    for x in emb.get_fragments(contributes=True):
        source = x.mpi_rank
        if source != mpi.rank:
            results = None
        else:
            results = x.results
        results = mpi.world.bcast(results, root=source)
        x.results = results

I had a look and it seems as though MPI is not implemented for democratically partitioned RDMs. I've implemented this in #166, now your example should be working and give correct results. I'll merge this soon but I need to make some additional changes for the global 2DM which isn't required for the energy.

Now merged into master.


Related content duplicated if viewing channel URL

The Issue
If accessing a URL via a channel path like lbry://@LBRYesp#45583d0337accea5407cffd064f2050bbb2e2c9e/tardesanmiguel, you also see lbry://tardesanmiguel#290bda3815a6675020ae39b768131faea4d1587a as the top related content.
System Configuration

LBRY Daemon version:
LBRY App version:
LBRY Installation ID:
Operating system:

Anything Else

Screenshots

This was fixed in 0.35.2


Type Mismatching while Serializing Dataclass with Union

Tracking issue
Closes flyteorg/flyte#5910
Why are the changes needed?
While converting dataclasses from Python types to literal types through the to_literal function, the dataclass will pass through the _make_dataclass_serializable function to ensure it can be serialized later. For dataclasses with Union properties, under the if UnionTransformer.is_optional_type(python_type): statement, it uses get_args(python_type)[0] as the type of the property without verifying its compatibility. This will cause an error if the first argument is not the expected type.

What changes were proposed in this pull request?

Do typing matching instead of using the first type from get_args(python_type)
Add unit tests for more possible union types

How was this patch tested?

Run on local and remote execution

Union[None, FlyteFile]
flytefile_serialize.py

from dataclasses import dataclass
from flytekit import task
from flytekit.types.file import FlyteFile
from typing import Union
from flytekit.image_spec import ImageSpec

flytekit_hash = "f647bd3a1b727082210454c3f5d1e652a29b1083"
flytekit = f"git+https://github.com/mao3267/flytekit.git@{flytekit_hash}"

image_spec = ImageSpec(
    name="serialize-union-1",
    packages=[flytekit],
    builder="default",
    registry="localhost:30000",
    apt_packages=["git", "gh"],
)

@dataclass
class InnerDC:
    ff: Union[None, FlyteFile]

@dataclass
class DC:
    inner_dc: InnerDC

@task(container_image=image_spec)
def t_dc() -> DC:
    return DC(inner_dc=InnerDC(ff="s3://path"))

Union[None, int, str]
serialize_union.py

from dataclasses import dataclass
from flytekit import task
from typing import Union
from flytekit.image_spec import ImageSpec

flytekit_hash = "f647bd3a1b727082210454c3f5d1e652a29b1083"
flytekit = f"git+https://github.com/mao3267/flytekit.git@{flytekit_hash}"

image_spec = ImageSpec(
    name="serialize-union-1",
    packages=[flytekit],
    builder="default",
    registry="localhost:30000",
    apt_packages=["git", "gh"],
)

@dataclass
class InnerDC:
    ff: Union[None, int, str]

@dataclass
class DC:
    inner_dc: InnerDC

@task(container_image=image_spec)
def t_dc() -> DC:
    return DC(inner_dc=InnerDC(ff="string"))

Add unit tests in test_type_engine.py

Setup process
git clone https://github.com/flyteorg/flytekit.git
gh pr checkout 2859
pip install -e .

Screenshots

Local

Union[None, FlyteFile]

Union[None, int, str]

Remote

Union[None, int, str]

Union[None, int, str]

Check all the applicable boxes

[ ] I updated the documentation accordingly.
[x] All new and existing tests passed.
[x] All commits are signed-off.

Related PRs
None

Docs link
None

I have raised an issue at https://github.com/Fatal1ty/mashumaro/issues/255 describing the bugs we faced. Hope that it will be fixed in a couple of weeks.

I have raised an issue at Fatal1ty/mashumaro#255 describing the bugs we faced. Hope that it will be fixed in a couple of weeks.

Can you also create an issue in flyte and link this PR and mashumaro's issue?


TimeoutError: Could not locate the name server!

Hi guys,
I need some help here... :(
I have been trying to input the first of the codes shown in https://osbrain.readthedocs.io/en/stable/introduction.html
from osbrain import run_nameserver
from osbrain import run_agent
if __name__ == '__main__':
    # System deployment
    run_nameserver()
    agent = run_agent('Example')
    # Log a message
    agent.log_info('Hello world!')

I've also tried to try with the following code,
from osbrain.nameserver impor random_nameserver_process
from osbrain.proxy import NSProxy
addr = random_nameserver_process(timeout=10).addr
ns = NSProxy(addr)
ns.shutdown()

On both of the attempts, spyder keeps on poping the following error:
TimeoutError: Could not locate the name server!
Environment:

OS: Windows 7 Enterprise.
osBrain version 0.4.4.

Is there anyone who could help me? Many thanks in advance guys!

Hello, @aleixg . I have updated your message to include the information about your environment you sent me. Did you get a chance to try to reproduce it on another computer? It would be great if you could try under the exact same environment.

Hey @Flood1993! Thanks for the heads up, not yet.
I tried with the same environment but with another wifi (in order to check if there was something related to firewall or network issues) but it kept me showing the same error.
This afternoon I will try with another completely different environment and I will keep you posted about it, hope it works!
Thanks!!

Hey guys,
I tried with Windows 10 Home edition, osBrain 0.4.4 version.
:'''(

That's unfortunate... Did you get the same TimeOutError? Was it running on a virtual machine or in a different PC? Are you installing via pip?

Yeap :(  absolutely same error... Nope, different PC completely, different network.
I did pip install osbrain from the Anaconda Prompt. Is that correct? I also updated on both attempts updating Spyder and Anaconda...

I guess it shouldn't matter. Normally what I do for installing on a new computer is install Miniconda, and then from a command prompt create a new environment with conda create --name osbrain python=3. Then activate that environment with activate osbrain and finally install osBrain: pip install osbrain.
What Python version are you using when getting the error? Also, could you try running the script from a command prompt directly? I'm not sure what the issue might be, though...

Ok @Flood1993 I did the following,

Then, got the same error,

For the packages version I am using,
Python 3.6.2
Conda 4.3.24
Is it correct what I am doing?

Yes, it seems right. As a desperate attempt, could you try opening the Python interpreter in the Anaconda Prompt  and try to run the code there?

Thanks for your help @Flood1993!! Could you please guide me through? I mean, what I have to input is:
conda create --name osbrain python=3
activate osbrain
pip install osbrain

in the IPyhton console in Spyder?

No problem, hopefully we can solve this 😄 Please follow this steps:

Press Windows Key + R on your keyboard.
A window will come up. Type cmd in the text field and hit Enter. This will open a command prompt.
In the command prompt, type activate osbrain.
Save the code snippet in a file, i.e.: example.py (make sure the file and the command prompt are in the same directory, for example, your desktop).
Run the code with python example.py.

Probably it will crash, too, but just to check...

:(

Seems like the Anaconda installation wasn't added to your PATH. I have just checked and by default the option seems to be not checked during installation. No problem though, could you try the same steps but from the Anaconda Prompt?

You made my day @Flood1993!! Thank you very much, but the question is how can I now run the code and work with Spyder without doing all this?
Thank you very much!!

No problem, glad it worked! ^^ This means the problem is related to Spyder, somehow, and that would be a different issue... Last time I worked with Spyder was years ago and I don't have much experience with it, so I'm not exactly sure what can be the problem... Maybe Spyder isn't handling the installation correctly for some reason.
I will create a new issue referencing this one about things not working OK on Spyder. I will leave this one open in case you want to add something more!


Properties/methods of type becomes undefined after compile

I was just testing TypeScript, and something came up like this: TypeError: Cannot read property 'forEach' of undefined. What I did is this: let x: number[]; x.forEach((el) => { ... }), and I know how to fix this- by assigning [] to x. But I think it would be better to be compiled like this:
let n: number; // compiles into `let n = 0;` or sth else
let s: string; // compiles into `let n = ''`
let a: number[] // compiles into `let a = []`
// and so on

Please respect the issue templates for bug reports and feature requests. :-) That'll make it much easier for the TypeScript team.
What you propose would go against the TypeScript Design Goals.

Sorry, I didn't checked it out!


[5.5][SymbolGraph] Fix a crash for member in invalid extension

Cherry-picks https://github.com/apple/swift/pull/37128.

Don’t record a memberOf relationship if we couldn’t look up the target, e.g. because the member is declared in an extension whose extended type doesn’t exist.
Resolves rdar://74063899

@swift-ci Please test

@swift-ci Please build toolchain macOS

Build failed
Swift Test OS X Platform
Git Sha - 275d47076e6d2000fb4cf3a7b6f380a57a10ca5d

@swift-ci Please test macOS

macOS Toolchain
Download Toolchain
Git Sha - 275d47076e6d2000fb4cf3a7b6f380a57a10ca5d
Install command
tar -zxf  swift-PR-37129-957-osx.tar.gz --directory ~/

Build failed
Swift Test OS X Platform
Git Sha - 275d47076e6d2000fb4cf3a7b6f380a57a10ca5d


Fix and actually add the recipes to the crafter and not just to the book

This should make the Crucible actually able to craft with the raw ore items instead of just showing it as craftable in the book.

Works as intended.


Update Snackbar colors (#173)

A suggested solution for the new Snackbar theme.

Can you show the screenshot of what it looks like after the change?

Can you show the screenshot of what it looks like after the change?

Hmm, it seems to look exactly the same as it does now, doesn't it?

Hmm, it seems to look exactly the same as it does now, doesn't it?

Not exactly. Currently the contrast between the button and the background is terrible:

Oh, it's on dark mode that it changed. Understood.
Thanks!


Have the trained inception v3 model been released?

We have trained an Inception v3 model based on Open Images annotations alone, and the model is good enough to be used for fine-tuning applications as well as for other things, like DeepDream or artistic style transfer which require a well developed hierarchy of filters.
Have this model been released now ?

Not yet. See #3.
Technically, everything is ready, so it's definitely coming.


Redirect lxc tx packets directly to the host device

Signed-off-by: Nate Sweet<EMAIL_ADDRESS>Please ensure your pull request adheres to the following guidelines:

[x] For first time contributors, read Submitting a pull request
[x] All code is covered by unit and/or runtime tests where feasible.
[x] All commits contain a well written commit description including a title,
description and a Fixes: #XXX line if the commit addresses a particular
GitHub issue.
[x] All commits are signed off. See the section Developer’s Certificate of Origin
[x] Provide a title or release-note blurb suitable for the release notes.
[x] Thanks for contributing!

Redirect packets that are egressing from a container directly to the host network device so that they can skip most of the network stack.
Added fib lookups to egressing container traffic to route it to the correct device more quickly than traversing the Linux network datapath would by default.

Coverage increased (+0.008%) to 46.652% when pulling 3387b48ea06bd19e7df90366ad91bea8e827313f on pr/nathanjsweet/fib_lookup into 2845ccdfcdbb53a80998a9ea06ddb5f8ff1134ca on master.

test-me-please

test-me-please


Meta 📖  Add contact information management

Motivation

This is a summry of To-Do items for #2073
The order and sequence is recommendation.
---- Essential implementation

[x] #2951
[x] #2952
[x] #2953
[ ] #3013
[x] #2954
[x] #3015
[ ] #2959
[ ] #2958
[x] #3010
[x] #3033
[ ] #3086
[ ] #3087
[ ] #3088

---- Nice to have, not urgent

[ ] #2972

--- those are still just an idea...

[ ] #2957

Two notes:

We should hide the contacts menu entry until the contacts feature is completed
We should test the visual rendering of contacts in the app (there might be differences to how common browsers display it)


v0.2.2

refactor: update models to make API more concise
change: remove mkdocs, move to repo

Codecov Report

Merging #34 (b78a753) into main (827f934) will decrease coverage by 0.33%.
The diff coverage is 61.36%.

@@            Coverage Diff             @@
##             main      #34      +/-   ##
==========================================
- Coverage   62.06%   61.72%   -0.34%
==========================================
  Files          16       16
  Lines        1521     1539      +18
==========================================
+ Hits          944      950       +6
- Misses        490      502      +12
  Partials       87       87

Flag
Coverage Δ

unittests
61.72% <61.36%> (-0.34%)
:arrow_down:

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

Impacted Files
Coverage Δ

convert.go
31.45% <0.00%> (ø)

extract.go
0.00% <0.00%> (ø)

models.go
100.00% <ø> (ø)

validate.go
37.77% <45.45%> (ø)

step.go
43.67% <47.05%> (-0.13%)
:arrow_down:

boomer.go
82.60% <66.66%> (ø)

runner.go
65.64% <87.50%> (ø)

har2case/core.go
69.07% <100.00%> (-0.37%)
:arrow_down:

response.go
74.19% <100.00%> (ø)

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 827f934...b78a753. Read the comment docs.


Remove now unused shapely._buildcfg module

The shapely/_buildcfg.py is not actually used at the moment (AFAIK), so we can remove that.

Coverage increased (+3.8%) to 89.122% when pulling 30b6825dee6038936c9de16f735dce6ae7843af4 on jorisvandenbossche:clean-up-buildcfg into 1f6044126ea98167ac89361b4cc3a26a94e28ccb on Toblerity:main.


Add a GitHub action to lint the Markdown

Also add a MIT badge.

Hi,
Merged.
Can you explain the benefits of Lint the MD? @jbampton
Thanks,
Max


queryKey is not inferred when using queryOptions

Describe the bug
v5.61.0 breaks queryKey inference, I think as a result of this change https://github.com/TanStack/query/commit/3fa4b7cce3ddd81326f5907d532c015fd335b56e
Example
import { queryOptions as queryOptions1 } from "react-query-5-60-6";
import { queryOptions as queryOptions2 } from "react-query-5-61-0";

queryOptions1({
  queryKey: ["test"] as const,
  queryFn: () => fetch("https://example.com"),
}).queryKey;
// ^? (property) queryKey: readonly ["test"] & { [dataTag...

queryOptions2({
  queryKey: ["test"] as const,
  queryFn: () => fetch("https://example.com"),
}).queryKey;
// ^? (property) queryKey: QueryKey & { [dataTag...

We use queryOptions to create query factories and have invalidation helpers that rely on the queryKey type.
Failing test: https://github.com/TanStack/query/commit/a77db3ed0cc54bf0b35415abd90e222a545198c3
Your minimal, reproducible example
https://stackblitz.com/edit/rq-querykey-infer?file=index.ts&view=editor
Steps to reproduce
/
Expected behavior
queryKey should be inferred when using queryOptions
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
macOS
Chrome
Tanstack Query adapter
react-query
TanStack Query version
5.61.0
TypeScript version
5.5.4
Additional context
No response

Thanks, I think I broke this with:

https://github.com/TanStack/query/pull/8317

If you want, you can take a stab at fixing it while retaining the functionality of that PR ?

Is the goal of #8317 to avoid having to specify all the generics?
This works on v5.60.6:
function somethingWithQueryOptions<
  TQueryFnData extends unknown,
  TError,
  TData,
  TQueryKey extends QueryKey,
>(options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>) {
  return options.queryKey
}

const options = queryOptions({
  queryKey: ['key'] as const,
  queryFn: () => Promise.resolve({ a: 1 }),
  select: (v) => v.a,
})

somethingWithQueryOptions(options)

or
function somethingWithQueryOptions<TError, TQueryKey extends QueryKey>(
  options: UseQueryOptions<number, TError, number, TQueryKey>,
) {
  return options.queryKey
}

const options = queryOptions({
  queryKey: ['key'],
  queryFn: () => Promise.resolve(1),
})

somethingWithQueryOptions(options)

This look like it will be fixed by: https://github.com/TanStack/query/pull/8394


Fix #629: add a shim for tini under /bin/tini

Follow up of the discussion/proposal on https://github.com/jenkinsci/docker/issues/629#issuecomment-366198079
$  docker run -ti local-test-image /bin/tini
Please update your scripts to use /sbin/tini going forward.
Previous path has been preserved for backwards compatibility in Alpine 3.4,
but WILL BE REMOVED in Alpine 3.5. (or Jenkins 2.107.1 or something like this for our case)

Now sleeping 2 minutes...
tini (tini version 0.16.1)
Usage: tini [OPTIONS] PROGRAM -- [ARGS] | --version

Execute a program under the supervision of a valid init process (tini)

Command line options:

  --version: Show version and exit.
  -h: Show this help message and exit.
  -s: Register as a process subreaper (requires Linux >= 3.4).
  -v: Generate more verbose output. Repeat up to 3 times.
  -g: Send signals to the child's process group.
  -l: Show license and exit.

Environment variables:

  TINI_SUBREAPER: Register as a process subreaper (requires Linux >= 3.4)
  TINI_VERBOSITY: Set the verbosity level (default: 1)

@carlossg should we merge to get it used in the next weekly? Gracias.

sorry, what about Dockerfile and Dockerfile-slim

@carlossg I thought it was a specific thing to alpine isn't it? Can double check.

all of them use tini

Sorry, OTP, but possibly assumed it was Alpine specific because of Previous path has been preserved for backwards compatibility in Alpine 3.4. Will check and file PRs against other flavours asap if confirmed.

@carlossg Adjusted PR to use the shim on the 3 flavours.
My local testing, on master:
./build.sh /bin/tini --version
Running with Dockerfile Dockerfile
/usr/local/bin/jenkins.sh: line 27: /bin/tini: No such file or directory
Running with Dockerfile-alpine Dockerfile
/usr/local/bin/jenkins.sh: line 27: /bin/tini: No such file or directory
Running with Dockerfile-slim Dockerfile
/usr/local/bin/jenkins.sh: line 27: /bin/tini: No such file or directory

/build.sh which tini
Running with Dockerfile Dockerfile
/sbin/tini
Running with Dockerfile-alpine Dockerfile
/sbin/tini
Running with Dockerfile-slim Dockerfile
/sbin/tini

With the shim on the current PR branch:
./build.sh /bin/tini --version
Running with Dockerfile Dockerfile
***************************************************************************
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING *
***************************************************************************
Please update your scripts to use /sbin/tini or simply tini going forward.
Previous path has been preserved for backwards compatibility,
but WILL BE REMOVED in the future. (around Jenkins >= 2.107.2+)

Now sleeping 2 minutes...
tini version 0.16.1 - git.0effd37
Running with Dockerfile-alpine Dockerfile
***************************************************************************
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING *
***************************************************************************
Please update your scripts to use /sbin/tini or simply tini going forward.
Previous path has been preserved for backwards compatibility,
but WILL BE REMOVED in the future. (around Jenkins >= 2.107.2+)

Now sleeping 2 minutes...
tini version 0.16.1
Running with Dockerfile-slim Dockerfile
***************************************************************************
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING *
***************************************************************************
Please update your scripts to use /sbin/tini or simply tini going forward.
Previous path has been preserved for backwards compatibility,
but WILL BE REMOVED in the future. (around Jenkins >= 2.107.2+)

Now sleeping 2 minutes...
tini version 0.16.1 - git.0effd37

./build.sh which tini
Running with Dockerfile Dockerfile
/sbin/tini
Running with Dockerfile-alpine Dockerfile
/sbin/tini
Running with Dockerfile-slim Dockerfile
/sbin/tini


assemble-image.sh fails

assemble-image.sh seems to fail for me. I noticed this because I was trying to build for the non-hdmiusb image (v2-hdmi-rpi4-latest), but then I noticed it fails unmodified as well.
I then tried modifying it to retrieve the PiKVM image that was available at last push, rather than latest, to no avail. Lastly, I commented-out each block in Dockerfile:13, one at a time, and assemble-image.sh still failed on that line each time.
sudo ./assemble-image.sh
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian-security bookworm-security InRelease
Hit:3 https://download.docker.com/linux/debian bookworm InRelease
Hit:4 http://deb.debian.org/debian bookworm-updates InRelease
Hit:5 http://archive.raspberrypi.com/debian bookworm InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
22 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  lbzip2
0 upgraded, 1 newly installed, 0 to remove and 22 not upgraded.
Need to get 69.6 kB of archives.
After this operation, 164 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main arm64 lbzip2 arm64 2.5-2.3 [69.6 kB]
Fetched 69.6 kB in 0s (290 kB/s)
Selecting previously unselected package lbzip2.
(Reading database ... 60078 files and directories currently installed.)
Preparing to unpack .../lbzip2_2.5-2.3_arm64.deb ...
Unpacking lbzip2 (2.5-2.3) ...
Setting up lbzip2 (2.5-2.3) ...
Processing triggers for man-db (2.11.2-2) ...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  490M  100  490M    0     0  17.3M      0  0:00:28  0:00:28 --:--:-- 18.3M

[+] Building 425.3s (9/9) FINISHED                                                                            docker:default
 => [internal] load build definition from Dockerfile                                                                    0.1s
 => => transferring dockerfile: 1.62kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.1s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load build context                                                                                46.6s
 => => transferring context: 748.89MB                                                                                46.5s
 => [1/6] ADD pikvm-os.tar.bz2 /                                                                                372.6s
 => [2/6] COPY 1680x1050.hex /etc/kvmd/tc358743-edid.hex                                                                3.9s
 => [3/6] COPY cleanup-usb-gadget.service /etc/systemd/system/                                                          0.2s
 => [4/6] COPY switch-to-uyvy.service /etc/systemd/system/                                                              0.2s
 => [5/6] COPY override.yaml /etc/kvmd/                                                                                0.2s
 => ERROR [6/6] RUN set -eu;     for unit in man-db.service man-db.timer sshd.service systemd-networkd.service systemd  1.3s
------
 > [6/6] RUN set -eu;     for unit in man-db.service man-db.timer sshd.service systemd-networkd.service systemd-timesyncd.service systemd-network-generator.service systemd-networkd-wait-online.service systemd-networkd.socket rngd.service systemd-resolved.service watchdog.service<EMAIL_ADDRESS>systemd-random-seed.service kvmd-bootconfig.service eth0.network en.network 99-default.link;     do systemctl mask $unit;     done;     for unit in dbus-org.freedesktop.timesync1.service dbus-org.freedesktop.network1.service dbus-org.freedesktop.resolve1.service;     do systemctl disable $unit;     done;     for unit in cleanup-usb-gadget.service kvmd-tc358743.service switch-to-uyvy.service kvmd-janus.service;     do systemctl enable $unit;     done;     kvmd-gencert --do-the-thing;     kvmd-gencert --do-the-thing --vnc;     sed -i '/PIBOOT/d; /PIPST/d; /PIMSD/d' /etc/fstab;     sed -i 's/stderr/\/var\/log\/nginx\/error.log/' /etc/kvmd/nginx/nginx.conf;     curl -fLSo /usr/local/bin/remove-gadget.sh https://raw.githubusercontent.com/larsks/systemd-usb-gadget/7602009806a4b838663d9db75e5e7f35e131d0c7/remove-gadget.sh;     chmod 755 /usr/local/bin/remove-gadget.sh:
0.697 Created symlink /etc/systemd/system/sshd.service → /dev/null.
0.706 Created symlink /etc/systemd/system/systemd-networkd.service → /dev/null.
0.716 Created symlink /etc/systemd/system/systemd-timesyncd.service → /dev/null.
0.726 Created symlink /etc/systemd/system/systemd-network-generator.service → /dev/null.
0.736 Created symlink /etc/systemd/system/systemd-networkd-wait-online.service → /dev/null.
0.745 Created symlink /etc/systemd/system/systemd-networkd.socket → /dev/null.
0.755 Created symlink /etc/systemd/system/rngd.service → /dev/null.
0.765 Created symlink /etc/systemd/system/systemd-resolved.service → /dev/null.
0.774 Created symlink /etc/systemd/system/watchdog.service → /dev/null.
0.784 Created symlink<EMAIL_ADDRESS>→ /dev/null.
0.802 Created symlink /etc/systemd/system/kvmd-bootconfig.service → /dev/null.
0.812 Created symlink /etc/systemd/system/eth0.network.service → /dev/null.
0.822 Created symlink /etc/systemd/system/en.network.service → /dev/null.
0.831 Created symlink /etc/systemd/system/99-default.link.service → /dev/null.
0.845 Unit /etc/systemd/system/systemd-timesyncd.service is masked, ignoring.
0.845 The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
0.845 Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
0.845 template units). This means they are not meant to be enabled or disabled using systemctl.
0.845
0.845 Possible reasons for having these kinds of units are:
0.845 • A unit may be statically enabled by being symlinked from another unit's
0.845   .wants/, .requires/, or .upholds/ directory.
0.845 • A unit's purpose may be to act as a helper for some other unit which has
0.845   a requirement dependency on it.
0.845 • A unit may be started when needed via activation (socket, path, timer,
0.845   D-Bus, udev, scripted systemctl call, ...).
0.845 • In case of template units, the unit is meant to be enabled with some
0.845   instance name specified.
0.856 Unit /etc/systemd/system/systemd-networkd.service is masked, ignoring.
0.856 The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
0.856 Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
0.856 template units). This means they are not meant to be enabled or disabled using systemctl.
0.856
0.856 Possible reasons for having these kinds of units are:
0.856 • A unit may be statically enabled by being symlinked from another unit's
0.856   .wants/, .requires/, or .upholds/ directory.
0.856 • A unit's purpose may be to act as a helper for some other unit which has
0.856   a requirement dependency on it.
0.856 • A unit may be started when needed via activation (socket, path, timer,
0.856   D-Bus, udev, scripted systemctl call, ...).
0.856 • In case of template units, the unit is meant to be enabled with some
0.856   instance name specified.
0.867 Unit /etc/systemd/system/systemd-resolved.service is masked, ignoring.
0.867 The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
0.867 Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
0.867 template units). This means they are not meant to be enabled or disabled using systemctl.
0.867
0.867 Possible reasons for having these kinds of units are:
0.867 • A unit may be statically enabled by being symlinked from another unit's
0.867   .wants/, .requires/, or .upholds/ directory.
0.867 • A unit's purpose may be to act as a helper for some other unit which has
0.867   a requirement dependency on it.
0.867 • A unit may be started when needed via activation (socket, path, timer,
0.867   D-Bus, udev, scripted systemctl call, ...).
0.867 • In case of template units, the unit is meant to be enabled with some
0.867   instance name specified.
0.881 Created symlink /etc/systemd/system/kvmd-otg.service.wants/cleanup-usb-gadget.service → /etc/systemd/system/cleanup-usb-gadget.service.
0.904 Created symlink /etc/systemd/system/kvmd.service.wants/switch-to-uyvy.service → /etc/systemd/system/switch-to-uyvy.service.
0.924 + mkdir -p /etc/kvmd/nginx/ssl
0.929 + rm -f '/etc/kvmd/nginx/ssl/*'
0.934 + cd /etc/kvmd/nginx/ssl
0.935 + openssl ecparam -out server.key -name prime256v1 -genkey
1.025 + openssl req -new -x509 -sha256 -nodes -key server.key -out server.crt -days 3650 -subj /C=RU/ST=Moscow/L=Moscow/O=PiKVM/OU=PiKVM/CN=localhost
1.042 + chown root:kvmd-nginx /etc/kvmd/nginx/ssl/server.crt /etc/kvmd/nginx/ssl/server.key
1.049 + chmod 440 /etc/kvmd/nginx/ssl/server.key
1.053 + chmod 444 /etc/kvmd/nginx/ssl/server.crt
1.056 + chmod 755 /etc/kvmd/nginx/ssl
1.064 + mkdir -p /etc/kvmd/vnc/ssl
1.067 + rm -f '/etc/kvmd/vnc/ssl/*'
1.069 + cd /etc/kvmd/vnc/ssl
1.069 + openssl ecparam -out server.key -name prime256v1 -genkey
1.081 + openssl req -new -x509 -sha256 -nodes -key server.key -out server.crt -days 3650 -subj /C=RU/ST=Moscow/L=Moscow/O=PiKVM/OU=PiKVM/CN=localhost
1.096 + chown root:kvmd-vnc /etc/kvmd/vnc/ssl/server.crt /etc/kvmd/vnc/ssl/server.key
1.101 + chmod 440 /etc/kvmd/vnc/ssl/server.key
1.103 + chmod 444 /etc/kvmd/vnc/ssl/server.crt
1.105 + chmod 755 /etc/kvmd/vnc/ssl
1.115 sed: can't read /etc/kvmd/nginx/nginx.conf: No such file or directory
------
Dockerfile:13
--------------------
  12 |
  13 | >>> RUN set -eu; \
  14 | >>>     for unit in man-db.service man-db.timer sshd.service systemd-networkd.service systemd-timesyncd.service systemd-network-generator.service systemd-networkd-wait-online.service systemd-networkd.socket rngd.service systemd-resolved.service watchdog.service<EMAIL_ADDRESS>systemd-random-seed.service kvmd-bootconfig.service eth0.network en.network 99-default.link; \
  15 | >>>     do systemctl mask $unit; \
  16 | >>>     done; \
  17 | >>>     for unit in dbus-org.freedesktop.timesync1.service dbus-org.freedesktop.network1.service dbus-org.freedesktop.resolve1.service; \
  18 | >>>     do systemctl disable $unit; \
  19 | >>>     done; \
  20 | >>>     for unit in cleanup-usb-gadget.service kvmd-tc358743.service switch-to-uyvy.service kvmd-janus.service; \
  21 | >>>     do systemctl enable $unit; \
  22 | >>>     done; \
  23 | >>>     kvmd-gencert --do-the-thing; \
  24 | >>>     kvmd-gencert --do-the-thing --vnc; \
  25 | >>>     sed -i '/PIBOOT/d; /PIPST/d; /PIMSD/d' /etc/fstab; \
  26 | >>>     sed -i 's/stderr/\/var\/log\/nginx\/error.log/' /etc/kvmd/nginx/nginx.conf; \
  27 | >>>     curl -fLSo /usr/local/bin/remove-gadget.sh https://raw.githubusercontent.com/larsks/systemd-usb-gadget/7602009806a4b838663d9db75e5e7f35e131d0c7/remove-gadget.sh; \
  28 | >>>     chmod 755 /usr/local/bin/remove-gadget.sh
  29 |
--------------------
ERROR: failed to solve: process "/bin/sh -c set -eu;     for unit in man-db.service man-db.timer sshd.service systemd-networkd.service systemd-timesyncd.service systemd-network-generator.service systemd-networkd-wait-online.service systemd-networkd.socket rngd.service systemd-resolved.service watchdog.service<EMAIL_ADDRESS>systemd-random-seed.service kvmd-bootconfig.service eth0.network en.network 99-default.link;     do systemctl mask $unit;     done;     for unit in dbus-org.freedesktop.timesync1.service dbus-org.freedesktop.network1.service dbus-org.freedesktop.resolve1.service;     do systemctl disable $unit;     done;     for unit in cleanup-usb-gadget.service kvmd-tc358743.service switch-to-uyvy.service kvmd-janus.service;     do systemctl enable $unit;     done;     kvmd-gencert --do-the-thing;     kvmd-gencert --do-the-thing --vnc;     sed -i '/PIBOOT/d; /PIPST/d; /PIMSD/d' /etc/fstab;     sed -i 's/stderr/\\/var\\/log\\/nginx\\/error.log/' /etc/kvmd/nginx/nginx.conf;     curl -fLSo /usr/local/bin/remove-gadget.sh https://raw.githubusercontent.com/larsks/systemd-usb-gadget/7602009806a4b838663d9db75e5e7f35e131d0c7/remove-gadget.sh;     chmod 755 /usr/local/bin/remove-gadget.sh" did not complete successfully: exit code: 2
umount: loopmount/boot: no mount point specified.
umount: loopmount: no mount point specified.
rmdir: failed to remove 'loopmount': No such file or directory
losetup: /dev/loop7: detach failed: No such device or address

The PiKVM image changed the way nginx was configured and I needed to change the Dockerfile accordingly. 574c044211a9e5e4471b75805f7e9d4d7dcdadf7 fixes this issue.


There is no map

Hi, so I wanted to try the beta of the Qwant Maps and nothing looked to work but I was wrong, it was just the map, the route works etc.
Soo I checked out the console and it says this :
Content Security Policy: L’analyse de « script-src-elem » a échoué, car la directive est inconnue.
Error: Failed to initialize WebGL     _setupPainter https://www.qwant.com/maps/statics/build/javascript/vendors~map.bundle.js:1     a https://www.qwant.com/maps/statics/build/javascript/vendors~map.bundle.js:1     t https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1     u https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     _invoke https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     t https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     Ce https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1     a https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1 vendors~map.bundle.js:1:21480
WebGL warning: <Create>: Refused to create native OpenGL context because of blacklist entry: FEATURE_FAILURE_OLD_FGLRX vendors~map.bundle.js:1:718412
Failed to create WebGL context: WebGL creation failed:  Refused to create native OpenGL context because of blacklist entry: FEATURE_FAILURE_OLD_FGLRX Exhausted GL driver options. vendors~map.bundle.js:1:718412
WebGL warning: <Create>: Refused to create native OpenGL context because of blacklist entry: FEATURE_FAILURE_OLD_FGLRX vendors~map.bundle.js:1:718448
Failed to create WebGL context: WebGL creation failed:  Refused to create native OpenGL context because of blacklist entry: FEATURE_FAILURE_OLD_FGLRX  Exhausted GL driver options. vendors~map.bundle.js:1:718448
Uncaught (in promise) Error: Failed to initialize WebGL.     a https://www.qwant.com/maps/statics/build/javascript/vendors~map.bundle.js:1     t https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1     u https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     _invoke https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     t https://www.qwant.com/maps/statics/build/javascript/bundle.js:11     Ce https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1     a https://www.qwant.com/maps/statics/build/javascript/map.bundle.js:1 vendors~map.bundle.js:1:702752
I have every thing like the search bar, the route etc(I tried to go from Toulouse to Paris). I'm on debian 9.13, firefox 78.6.1esr (64 bits).

(This is the link by the way : Here )

Thanks for your report. It seems that your browser fails to initialize WebGL, that is required to display the map.
It's difficult do determine whether this is a configuration issue on your system, or Firefox that does not support WebGL with your specific graphics driver. Here are a few questions that could help us better understand what's going on:

Is it the first time you are using Qwant Maps on your system, or did it work previously ?
Can you confirm the issue persists after Firefox has been restarted ?
Can you confirm the same issue exists on other websites that use WebGL ? For example on https://get.webgl.org/
Do you encounter the same issue on another browser, or a more recent version of Firefox ?
Have you modified browser settings related to hardware acceleration ?
(via settings described on https://support.mozilla.org/en-US/kb/upgrade-graphics-drivers-use-hardware-acceleration#firefox:linux:fx78 or the "about:config" page)

Thanks for your report. It seems that your browser fails to initialize WebGL, that is required to display the map.
It's difficult do determine whether this is a configuration issue on your system, or Firefox that does not support WebGL with your specific graphics driver. Here are a few questions that could help us better understand what's going on:

Is it the first time you are using Qwant Maps on your system, or did it work previously ?
Can you confirm the issue persists after Firefox has been restarted ?
Can you confirm the same issue exists on other websites that use WebGL ? For example on https://get.webgl.org/
Do you encounter the same issue on another browser, or a more recent version of Firefox ?
Have you modified browser settings related to hardware acceleration ?
(via settings described on https://support.mozilla.org/en-US/kb/upgrade-graphics-drivers-use-hardware-acceleration#firefox:linux:fx78 or the "about:config" page)

Thanks for your report. It seems that your browser fails to initialize WebGL, that is required to display the map.
It's difficult do determine whether this is a configuration issue on your system, or Firefox that does not support WebGL with your specific graphics driver. Here are a few questions that could help us better understand what's going on:
* Is it the first time you are using Qwant Maps on your system, or did it work previously ?

* Can you confirm the issue persists after Firefox has been restarted ?

* Can you confirm the same issue exists on other websites that use WebGL ? For example on https://get.webgl.org/

* Do you encounter the same issue on another browser, or a more recent version of Firefox ?

* Have you modified browser settings related to hardware acceleration ?
  (via settings described on https://support.mozilla.org/en-US/kb/upgrade-graphics-drivers-use-hardware-acceleration#firefox:linux:fx78 or the "about:config" page)

Thanks for your replie.
It never worked on my system and I confirm that after a week, multiple reboot of my laptop and firefox it doesn't work.
The Web Site of webgl says :

Hmm. While your browser seems to support WebGL, it is disabled or unavailable. If possible, please ensure that you are running the latest drivers for your video card.

I have the last version of firefox that I am able to install on my system and after setting hardware acceleration on firefox, I have the same issue that before doing that.
But, I tested with Chromium and it worked !
So I don't know if it's about webGL that doesn't seem to work with firefox or anything else

Thanks for your report. It seems that your browser fails to initialize WebGL, that is required to display the map.
It's difficult do determine whether this is a configuration issue on your system, or Firefox that does not support WebGL with your specific graphics driver. Here are a few questions that could help us better understand what's going on:
* Is it the first time you are using Qwant Maps on your system, or did it work previously ?

* Can you confirm the issue persists after Firefox has been restarted ?

* Can you confirm the same issue exists on other websites that use WebGL ? For example on https://get.webgl.org/

* Do you encounter the same issue on another browser, or a more recent version of Firefox ?

* Have you modified browser settings related to hardware acceleration ?
  (via settings described on https://support.mozilla.org/en-US/kb/upgrade-graphics-drivers-use-hardware-acceleration#firefox:linux:fx78 or the "about:config" page)

Thanks for your replie.
It never worked on my system and I confirm that after a week, multiple reboot of my laptop and firefox it doesn't work.
The Web Site of webgl says :

Hmm. While your browser seems to support WebGL, it is disabled or unavailable. If possible, please ensure that you are running the latest drivers for your video card.

I have the last version of firefox that I am able to install on my system and after setting hardware acceleration on firefox, I have the same issue that before doing that.
But, I tested with Chromium and it worked !
So I don't know if it's about webGL that doesn't seem to work with firefox or anything else


getBytesIO and getStringIO are eliminated from reportlab starting v3.6.7

https://hg.reportlab.com/hg-public/reportlab/rev/cdb9ddeac15a
getBytesIO and getStringIO are eliminated from reportlab starting v3.6.7

Yep.  Just got bit by this one as well.

Me too!
Is getStringIO an important function for xhtml2?

Yes, the possible release date is March 2.   :).

Nop, but try to update from master branch, now it's fixed.

@luisza so what's the latest version of the lib that we can use? I see updates in master but seems like I'm missing an appropriate tag for this fix.


Add hostnames of the certificate to response

Adds an array of all hostnames that are covered by the certificate. Uses subjectaltname from the tls module.
  console.log(await sslChecker("example.com"));

returns:
{
  "daysRemaining": 75,
  "valid": true,
  "validFrom": "2018-11-28T00:00:00.000Z",
  "validTo": "2020-12-02T12:00:00.000Z",
  "validFor": [
    "www.example.org",
    "example.com",
    "example.edu",
    "example.net",
    "example.org",
    "www.example.com",
    "www.example.edu",
    "www.example.net"
  ]
}

Update: Added clean output for IP addresses:
console.log(await sslChecker("<IP_ADDRESS>"));

returns:
{
  "daysRemaining": 136,
  "valid": true,
  "validFrom": "2019-01-28T00:00:00.000Z",
  "validTo": "2021-02-01T12:00:00.000Z",
  "validFor": [
    "cloudflare-dns.com",
    "*.cloudflare-dns.com",
    "one.one.one.one",
    "<IP_ADDRESS>",
    "<IP_ADDRESS>",
    "<IP_ADDRESS>",
    "2606:4700:4700:0:0:0:0:1111",
    "2606:4700:4700:0:0:0:0:1001",
    "2606:4700:4700:0:0:0:0:64",
    "2606:4700:4700:0:0:0:0:6400",
    "<IP_ADDRESS>",
    "<IP_ADDRESS>"
  ]
}

LGTM, Can you rebase to pick up some changes from master?

Thanks for accepting. Can you create a release of the current master?


scrollContainerSelector not working as expected

It does not work when route to another scroll container and route back to the previous scroll active menu(which has already set scrollContainerSelector for a specific scroll container), the previous scroll menu will not work any more.
Fex.
// Nav 1 in the left navigation bar
<scrollactive scrollContainerSelector="#scroll-container1">
  Nav1 Item1
  Nav1 Item2
  Nav1 Item3
</scrollactive>

// Nav 2 in the left navigation bar
<scrollactive scrollContainerSelector="#scroll-container2">
  Nav2 Item1
  Nav2 Item2
  Nav2 Item3
</scrollactive>

// component 1

    .......

    .......

    .......

// component 2

    .......

    .......

    .......

Page will route to nav1 by default, it will works properly,  however,  when I choose the nav2 and route to it, then both nav1 and nav2 will not work any more......
Do you have any idea for it?
Thanks
kck

Find out the reason:
The scroll container dom element could not be found before the scrollactive creation.
The solution is that make sure the container has already existed in dom before init the scrollactive.


Deprecate use of Tcl

Codecov Report

Merging #2369 (4c185e7) into master (0b958d0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2369   +/-   ##
=======================================
  Coverage   28.55%   28.55%
=======================================
  Files         190      190
  Lines       32683    32683
=======================================
  Hits         9332     9332
  Misses      23351    23351

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 0b958d0...4c185e7. Read the comment docs.

Codecov Report

Merging #2369 (4c185e7) into master (0b958d0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2369   +/-   ##
=======================================
  Coverage   28.55%   28.55%
=======================================
  Files         190      190
  Lines       32683    32683
=======================================
  Hits         9332     9332
  Misses      23351    23351

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 0b958d0...4c185e7. Read the comment docs.


Implementing per-area music randomization.

This will satisfy #72, although it should be noted that as the bosses and the areas that play Final Toccata were unlabeled, I have split each of those addresses into a separate area, which may not be correct.
What this does, is instead of shuffling the music in the game based on what music was originally playing there (e.g. all areas that played Lost Painting now play Wandering Ghosts), the music is split into a list of areas, and a music pool is constructed, starting with one instance of each song (so each song is guaranteed to appear at least once), and then adding a randomly selected song from the original list until the pool's length matches the area list's length, then shuffling the pool and assigning each entry from the pool to each area's addresses. Thus, the Reverse Caverns may play Dance of Pales, while the Anti-Chapel plays Marble Gallery and the Forbidden Library plays Dance of Gold. This should greatly reduce the monotony of the reverse castle.

I don't think this should be core behavior. This is a quality of life improvement that should be optional. Please implement as a feature of Turkey Mode instead of the default.

I'm unsure how to do that, but I can try.

I'm not entirely sure why it's being tied to turkey mode (which is seemingly on by default for all presets) but it's done.

Update: I went through and organized everything that hadn't been labeled with the zone IDs.

I've also noticed through playing that there are a couple cues for music that play the vanilla music: the scene where Alucard walks to the teleporter to warp to the reverse castle, and the room with Akmodan II after he's defeated.
Also the file menu, prologue, final boss, and credits aren't randomized, but I'm guessing that's intentional?

I've also noticed through playing that there are a couple cues for music that play the vanilla music: the scene where Alucard walks to the teleporter to warp to the reverse castle, and the room with Akmodan II after he's defeated.

These are unintentional.

I've also noticed through playing that there are a couple cues for music that play the vanilla music: the scene where Alucard walks to the teleporter to warp to the reverse castle, and the room with Akmodan II after he's defeated.

These are intentional.

Made the requested changes.

It would seem that those changes broke the randomization somehow.

Fixed.

Something is not working here, multiple people reporting no music playing outside of Prologue and the main menu.


Support for loading a package.json file from query parameters

I'm using a little tool for generating bundle analyses with esbuild, but without the graph from npmgraph it doesn't quite tell me the whole story, but opening the website and manually telling it what to show a graph for is not as convenient as writing 2 words in the terminal.
Would it be possible to add support for loading a package.json file encoded directly in the query parameters? With that I could automate my workflow a bit, and speed things up.

What about just enumerating your package.json#dependences in the q param?  E.g. https://npmgraph.js.org/?q=sshpk,smpp,ansiterm (... and so on)

I could! I didn't know that was possible 😃 thanks!

Not quite what you're after, but you can know provide a URL instead of module name.  So you could conceivably serve the package JSON files locally and point to that.  (Requires CORS, though.)

See also https://github.com/npmgraph/npmgraph/issues/94

Hey @fabiospampinato , you should be able to open a package.json by simply opening a URL with the package.json contents in the URL hash.  See the new URL API for details.


Support liquidated vaults in metrics

Issue: #548.
Description of the issue.
Right now, when we start the client pointing to a liquidated vault, the vault will never be saved into the VaultIdManager created on initiation (see here).
The issue is that many of the metrics code relies on iterating this map to obtain the metrics from on-chain data (eg.: here or here).
Proposed workaround
Add a new field to  VaultData to keep track of a liquidated vault, and add the vault even if the status is Liquidated when the systems starts.
Modifying the get methods like get_entries to filter by default non-liquidated vaults allows to maintain compatibility, while in metrics we fetch all vaults on the VaultIdManager.
Testing
To verify that the missing exports, I ran a new vault against the testnet, but momentarily patching the code such that it was not added to VaultIdManager. When exploring the metrics, I could see that most of them are missing.
Extra metric
Added a Liquidated metric that displays if the vault is liquidated.
# HELP liquidated Boolean reporting if the vault is currently liquidated
# TYPE liquidated gauge
liquidated{currency="XCM(0)_Stellar(USDC:GAKNDFRRWA3RPWNLTI3G4EBSD3RGNZZOY5WKWYMQ6CQTG3KIEKPYWAYC)"} 0

This takes the liquidated status from VaultData, this is currently NOT updated and is only updated upon restart. I believe the vault will not be set back to regular status since the recover extrinsic does not emit. Also, we are not polling to check the status of it from the state which means that a liquidated vault will stay in this state (in the client) until restart.
Furthermore, we will not detect if the vault is liquidated while the client is running. Although it was observed that this leads to a restart of the client in production.

That's great @ebma ! Thanks for testing, I kinda ignore Amplitude since I couldn't connect to polkadot.js and then forgot to check there. I'll merge this then!


Create 0000-01-02-ksavlekov.md

As a reminder, you have: created a branch, created a file and made a commit, and opened a pull request


Is there an easy to output top k sentences for each source sent when decoding?

Hi there,
Thanks for the repo and help! I was wondering if there is a way to output more than one (e.g. k) output sentence of each input sentence when decoding?
Thanks much in advance!

The argument --need_score_traces can be added for python decode_seq2seq.py, which dumps a *.trace.pickle file for the intermediate results of beam search. Then s2s-ft/gen_seq_from_trace.py can re-load the dumped beam search results. In https://github.com/microsoft/unilm/blob/master/s2s-ft/gen_seq_from_trace.py#L63 , we used  if s > max_score: to save the best beam search result. Instead, we can maintain a sorted list to save the top-K results (L67: frame_id and pos_in_frame). Then L69-L76 can recover them to tokens.

Thank you very much for the tip! Will have a try!

Hi @donglixp,
I used these hyper-parameters but got an empty file as output (i.e. I have generated the score trace file):
python s2s-ft/gen_seq_from_trace.py \
--bert_model bert-base-cased --length_penalty 0 \
--tokenizer_name unilm1.2-base-uncased \
--is_roberta \
--do_lower_case \
--input ${OUTPUT_FILE}

After a little bit debugging, I found that this for-loop was all skipped by this if judgement. However, I'm not quite sure how it is the case.
 if fid <= last_frame_id and scores[fid][i] >= 0:
    # skip paddings
    print("skip paddings")
    continue

Thanks for reporting the issue. @addf400 is investigating it.

Hi @donglixp,
I used these hyper-parameters but got an empty file as output (I have generated the score trace file):
python s2s-ft/gen_seq_from_trace.py \
--bert_model bert-base-cased --length_penalty 0 \
--tokenizer_name unilm1.2-base-uncased \
--is_roberta \
--do_lower_case \
--input ${OUTPUT_FILE}

After a little bit debugging, I found that this for-loop was all skipped by this if judgment. However, I'm not quite sure how it is the case.
 if fid <= last_frame_id and scores[fid][i] >= 0:
    # skip paddings
    print("skip paddings")
    continue

I have created a PR for this (https://github.com/microsoft/unilm/pull/94)
You need to change the running command as:
python gen_seq_from_trace.py \
--model_type unilm --length_penalty 0 \
--tokenizer_name unilm1.2-base-uncased \
--input ${OUTPUT_FILE}

Thanks! @addf400 and @donglixp  It works now!  I also tried to save top k sentences by the following modifications.
def get_best_sequence(.....):
    max_score = -math.inf
    frame_id = -1
    pos_in_frame = -1
    searched_results = []
    frame_set = set()

    for fid in range(last_frame_id + 1):
        for i, wid in enumerate(wids_list[fid]):
             .....
                if s > max_score:
                    # if (frame_id != -1) and min_len and (fid+1 < min_len):
                    #     continue
                    max_score = s
                    frame_id = fid
                    pos_in_frame = i
                # To ignore duplicate generations.
                if (frame_id, pos_in_frame) not in frame_set:
                    frame_set.add((frame_id, pos_in_frame))
                    searched_results.append((s, frame_id, pos_in_frame))

    searched_results.sort(key=lambda x:x[0], reverse=True)
    searched_results = searched_results[:top_k]

    seqs = []

    for s, frame_id, pos_in_frame in searched_results:
        if frame_id == -1:
            seq = []
        else:
            seq = [wids_list[frame_id][pos_in_frame]]
            for fid in range(frame_id, 0, -1):
                pos_in_frame = ptrs[fid][pos_in_frame]
                seq.append(wids_list[fid - 1][pos_in_frame])
            seq.reverse()
        seqs.append(seq)
    return seqs

And
    for s in samples:
        word_ids_list = get_best_sequence(s, eos_id, pad_id, alpha=args.alpha,
                                     length_penalty=args.length_penalty, expect=args.expect,
                                     min_len=args.min_len, top_k=args.top_k)

        for word_ids in word_ids_list:
            ......
            results.append(output_text)
        results.append("----")

In the end, I found that most of the examples have only a single unique generation from the trace.pickle.
Only a few of them can have more than one different generations.  Is that expected, or maybe I am making some mistakes.


Disable dotted lists

https://docs.google.com/document/d/1LnpnNY8hr_XmbAMvxFGuSjKjF4M2wvWO1SA1TFlKRpA/edit#

Need to merge #63 first to make variadic a special form.

Note that the current lexer has some issues (specifically, it can't handle Symbols beginning with a .), but I plan to rewrite both the lexer and format_parser later to address #22 anyway, so that will be fixed then.


Update to Go 1.20 and remove deprecated dependencies

# github.com/iancmcc/bingo.test
github.com/iancmcc/bingo/bytes.InvertArrayLarge: relocation target crypto/cipher.xorBytes not defined
FAIL	github.com/iancmcc/bingo [build failed]
FAIL

XorBytes is now exported by the stdlib. I can send a PR updating the go.mod version directive to 1.20 and replacing the xorBytes fn.

how to solve

Fixed in 0.2.0


Fix #304 - Idle CPU usage increases every time QuickOpen is used

Issue:  Everytime QuickOpen is opened, the idle cpu usage increases.
Defect: Initially, I suspected the ripgrep process was sticking around, or some of the threads we use for I/O were not being stopped. However, the actual cause turned out to be the timer we use for cursor blinking for input was never being disposed - so every time we created a quickopen, we'd actually trigger a timer that would cause a re-reconciliation, re-layout, and re-render of the UI. The root cause is actually in brisk-reconciler here: https://github.com/briskml/brisk-reconciler/pull/40
Fix: For now, we'll turn off the cursor blinking since it degrades performance. However, we'll need to fix https://github.com/briskml/brisk-reconciler/pull/40 at some point!

Fixes #304


Output "Zoom Stack" list of bin widths

Currently we use a script which invokes odgi bin multiple times with different bin widths.  I believe this should be a single invocation that accepts a list of widths instead.  This particularly becomes relevant in the case where we're outputting sequence (at bin_width=1) and we want to reuse that same sequence file at every bin_width level.  Sequence and bin declarations should be excluded in every bin_width json file because a single FASTA file covers sequence needs for all sizes.

[ ] argument accepts list instead of single number
[ ] internal invocation loop for each bin_width
[ ] add "fasta_file" key to json header

Currently the script looks like this:
echo "### odgi bin"
for w in 1 10 100 1000; do
	BIN=${GFA%.gfa}.w${w}.json
	BINPREF=${0%.sh}_04_bin_w${w}
	/usr/bin/time -v -o ${BINPREF}.time \
	ionice -c2 -n7 \
	$ODGI bin \
	--json \
	--idx=$SOG \
	--bin-width=${w} \
	--fasta $FASTA \
	1> $BIN \
	2> ${BINPREF}.log &
done

It would change to listing the prefix in $BIN and then automatically appending w${w}.json to the end of each file created.  Since this is one invocation, it would make one .time file.  This may also speed up by eliminating the need to reload the --idx each time?
Question: Does this proposal disrupt any features related to the stdout pipe?  Where is that used and is there a multi-file solution that still allows usage of the stdout pipe?
Follow on to #88.

An example of my test procedure is here: https://github.com/vgteam/odgi/pull/96#issuecomment-608081718 complete with data file and script.

It won't have any utility to make it directly output the whole stack or
not. The runtime is exactly the same, modulo shell invocations and graph
load, which should be minor in all but the largest graphs. Just loop over
the desired bin widths.
On Fri, Apr 3, 2020, 04:38 Josiah Seaman<EMAIL_ADDRESS>wrote:

An example of my test procedure is here: #96 (comment)
https://github.com/vgteam/odgi/pull/96#issuecomment-608081718 complete
with data file and script.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/vgteam/odgi/issues/98#issuecomment-608197566, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDQEIPVILN6PUYAXP64SDRKVD25ANCNFSM4L25Z7WQ
.

We can always adjust the bash script. For w=1 we can output the FASTA as a default. We can chat about the organization of all other bin widths.