[HOW-TO] Continuously stream lores, Occasionally record main

Describe what it is that you want to accomplish
Raspberry Pi Zero 2 W
DietPi v9.6.1 - Debian GNU/Linux 12 (bookworm)
Arducam OV5647
I am attempting to continuously stream the lores config, which I'm using for streaming video - and then occasionally capture the main config to a file.
The issue I'm having is that I can't understand how to get the streaming encoder to honor the size and format being passed in - it instead appears to just be using the main configuration - I can tell this because when the streaming video is decoded, it's clearly in the main size - changing the value of the lores size has no effect on the stream, but changing the main size most certainly does.
I have been trying to follow the example in dual_encode, but am not understanding how it works. Specifically this bit related to creating a request and then encoding the request:
    request = picam2.capture_request()
    mjpeg_encoder.encode(lores_stream, request)
    request.release()

When I read about the capture_request method in the docs, it seems like this is something that should only be done occasionally to avoid creating problems. But as I want to stream the lores config continuously, I'm not sure how to apply the idea to my situation.
If an application fails to release captured requests back to the camera system, the camera system will gradually run out of buffers. It
is likely to start dropping ever more camera frames, and eventually the camera system will stall completely.

I'm aware of the existing mjpeg_streaming_server example, and was trying to combine that with the idea of the dual_encode example to create high-quality video captures with a lower-quality stream. I found the MJPEG stream to be far too slow/choppy on my Pi Zero 2 W - but the H264 stream over websocket (based on this older Code Inside Out example, but updated to work with Picamera2) seems to work great.
Describe alternatives you've considered
This is my current attempt: https://github.com/schillingderek/birdCam/tree/main/streamingServer/stream_picamera_h264
The Picamera code in server.py I'll copy here for convenience:
#!/usr/bin/env python3

import io
import picamera2
from picamera2 import Picamera2
from picamera2.encoders import H264Encoder
from picamera2.outputs import FileOutput, CircularOutput
from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer
from wsgiref.simple_server import make_server
from ws4py.websocket import WebSocket
from ws4py.server.wsgirefserver import WSGIServer, WebSocketWSGIHandler, WebSocketWSGIRequestHandler
from ws4py.server.wsgiutils import WebSocketWSGIApplication
from threading import Thread, Condition
import time
from PIL import Image
from datetime import datetime

videoCaptureEncoder = H264Encoder()
videoCaptureOutput = CircularOutput()

startTime = time.time()

width = 960
height = 540

class StreamingOutput(io.BufferedIOBase):
    def __init__(self):
        self.frame = None
        self.condition = Condition()

    def write(self, buf):
        with self.condition:
            self.frame = buf
            self.condition.notify_all()

    def read(self):
        with self.condition:
            self.condition.wait()
            return self.frame

class Camera:
    def __init__(self):
        self.camera = picamera2.Picamera2()
        self.video_config = self.camera.create_video_configuration({"size": (width, height)}, lores={"size": (640, 360)})
        self.camera.configure(self.video_config)
        self.streaming_encoder = H264Encoder()
        self.streaming_encoder.bitrate = 2500000
        self.streaming_encoder.profile = 'baseline'
        self.streaming_encoder.size = self.video_config['lores']['size']
        self.streaming_encoder.format = self.video_config['lores']['format']
        self.stream_out = StreamingOutput()
        self.stream_out_2 = FileOutput(self.stream_out)
        self.streaming_encoder.output = [self.stream_out_2]
        self.camera.start_encoder(self.streaming_encoder)

        self.camera.start_recording(videoCaptureEncoder, videoCaptureOutput)

        self.camera.start()

camera = Camera()

def stream():
    global startTime
    is_recording = False
    try:
        WebSocketWSGIHandler.http_version = '1.1'
        websocketd = make_server('', 9000, server_class=WSGIServer,
                 handler_class=WebSocketWSGIRequestHandler,
                 app=WebSocketWSGIApplication(handler_cls=WebSocket))
        websocketd.initialize_websockets_manager()
        websocketd_thread = Thread(target=websocketd.serve_forever)

        httpd = ThreadingHTTPServer(('', 8000), SimpleHTTPRequestHandler)
        httpd_thread = Thread(target=httpd.serve_forever)

        try:
            websocketd_thread.start()
            httpd_thread.start()

            while True:
                # Read from the StreamingOutput and broadcast via WebSocket
                frame_data = camera.stream_out.read()
                if frame_data:
                    #print("Sending frame of size:", len(frame_data))
                    websocketd.manager.broadcast(frame_data, binary=True)
                else:
                    print("No frame data received")
                # if time.time() - startTime > 10 and not is_recording:
                #     print("starting to record")
                #     timestamp = timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
                #     videoCaptureOutput.fileoutput = f"/root/birdcam/streamingServer/stream_picamera_h264/images/snap_{timestamp}.h264"
                #     videoCaptureOutput.start()
                #     is_recording = True
                #     startTime = time.time()
                # elif time.time() - startTime > 10 and is_recording:
                #     print("stopping recording")
                #     videoCaptureOutput.stop()
                #     is_recording = False
                #     startTime = time.time()

        except KeyboardInterrupt:
            pass
        finally:
            websocketd.shutdown()
            httpd.shutdown()
            camera.camera.stop()
            camera.camera.stop_encoder()
            raise KeyboardInterrupt
    except KeyboardInterrupt:
        pass
    finally:
        camera.camera.stop()
        camera.camera.stop_encoder()

if __name__ == "__main__":
    stream()

Hi, thanks for the question. I think the problem may just be that the easiest way to do this is to pass the encoder, output and stream name altogether to the start_encoder function. When you start the encoder, it should pick up the resolution, format and image stream from the name supplied - in your case it was probably overwriting whatever you'd tried to configure!
import time

from picamera2 import Picamera2
from picamera2.outputs import FileOutput
from picamera2.encoders import H264Encoder

with Picamera2() as picam2:
    main = {'size': (960, 540), 'format': 'YUV420'}
    lores = {'size': (640, 360), 'format': 'YUV420'}
    config = picam2.create_video_configuration(main, lores=lores)
    picam2.configure(config)

    streaming_encoder = H264Encoder()
    streaming_output = FileOutput("stream.h264")
    file_encoder = H264Encoder()
    file_output = FileOutput("file.h264")

    picam2.start()

    picam2.start_encoder(streaming_encoder, streaming_output, name='lores')
    time.sleep(2)
    picam2.start_encoder(file_encoder, file_output, name='main')
    time.sleep(5)
    picam2.stop_encoder(file_encoder)
    time.sleep(2)
    picam2.stop_encoder(streaming_encoder)

When you run this, you should get a ~5 second file at the larger resolution, and a ~9 second file at the lower resolution (you could play them back with ffplay).

Brilliant - works perfectly :) Thanks @davidplowman


Triggering events

Today I stumbled upon st I wasn't quite sure how to handle. I was trying to test event listener attached somewhere above the components tree by triggering click on some element that does not have any listeners attached to it at all. Dummy example:
Component:
{
  methods: {
    doSomething() {
      console.log('doSomething called!');
    },
    triggerDoSomething(event) {
      if (event.target !== event.currentTarget) {
        return;
      }
      event.preventDefault();

      this.doSomething();
    },
  },
  render(h) {
    return (

Some element

    );
  }
}

Component.spec.js:
it('prevents `doSomething` from being called ', async () => {
  const wrapper = mount(Component);
  const element = wrapper.find('.element');

  await element.trigger('click');

  // TODO Assert that `doSomething` was not called
});

But triggerDoSomething doesn't get called at all... (In browser if you click .wrapper doSomething gets called, and if you click .element it doesn't)
I ended up testing the triggerDoSomething method directly:
Component.spec.js:
it('prevents `doSomething` from being called ', () => {
  const wrapper = mount(Component);

  const dummyEvent = new Event('click');
  wrapper.vm.triggerDoSomething({ ...dummyEvent, target: null });

  // TODO Assert that `doSomething` was not called
});

Is there a better way of doing this, preferably by triggering an event on a wrapper returned by test utils methods?

I wonder if events don't bubble in jsdom by default. Can you try trigger('click, { bubbles: true })?
I have not tested this but this is my gut feeling; it's a jsdom vs real dom difference (maybe).
Either way, any reason not to trigger on the .wrapper (and does the test work if you do?)

We encountered it and use trigger('mousedown') instead

I also wonder though why trigger click will not trigger other mouse events.

Most likely because a real browser does not just dispatch a click event when you click, but all the other associated events, too. jsdom does not, I guess. I am not sure this is a bug in VTU or not, need to investigate more.
Is this bug in jsdom only or when running VTU in a browser, too? That would help narrow it down.

Thanks for everyone's input on this. Apparently when using trigger('mousedown') on .element, it does bubble up and doSomething will not be called (and it gets called if triggered on .wrapper).
Doing trigger('click', { bubbles: true }) will make the test fail with TypeError: Cannot set property bubbles of [object Event] which has only a getter.
The real scenario behind all of this was to test input field inside bunch of wrapper elements (there's some reasoning behind that too..). Anyway, idea was to trigger input focus (doSomething method in this example) when clicked on certain elements by attaching onmousedown={this.triggerDoSomething} on them, while clicking on others, input will not be focused (if already focused, it would lose focus) - the if (event.target !== event.currentTarget) { return; } part.
So going further with calling trigger('mousedown') on .element, the input doesn't blur during testing, while it does in browser...
@lmiller1990 I need to test the running tests with test-utils in a browser part yet.

yeah you should definitely call it inside .wrapper or else it will not call the triggerDoSomething

I would say the next steps:

run this test in a browser with VTU
if it passes there, it's a jsdom bug/limitation, nothing more to be done
if it's a VTU bug, we can investigate more.

I am having the same issue, but  when I await it again ,it worked. you can add " await wrapper.vm.$nextTick();" after " await element.trigger('click');" .

@mokywu nextTick() wasn't really useful in my case, as I was trying to simulate click and that simply doesn't trigger mousedown...

@lmiller1990 Will try that, and get back if I have more info.

@lmiller1990 I ended up creating a small test repo , and the trigger('click') use-case was failing both with browser and jsdom.
But, I soon came to conclusion, that in both cases it boils down to calling dispatchEvent on a node, which even in browser settings will not trigger either of mousedown and/or mouseup. So unless we are willing to simulate what usually happens when user interacts with mouse, we can might as well close this issue...

Yeah, I figured the browser does a lot whole more than what jsdom/Test Utils does when we simulate an event. If you do figure out what exactly needs to happen for this to work in Test Utils, I'd love to know. Thanks for your work on this.


Correct the spelling of CocoaPods in README

This pull request corrects the spelling of CocoaPods 🤓
https://github.com/CocoaPods/shared_resources/tree/master/media
One day I’ll make a bot that looks through the READMEs of all Pods, looks to see if it uses “Cocoapods” and PRs “CocoaPods” :D— Ørta (@orta) February 10, 2016

Created with cocoapods-readme.

Hahaha~~~, ReadmeCritic and cocopoads-readme you are cute boys!


Build fails while archiving in 5.0.2

Hi @sbertix,
I am getting compiler error No such module 'Combine' when I try to archive,
my minimum deployment target is 14, and I am not using swiftUI

yes, for iOS build,
still not working :(

What version of Xcode are you on?

Version 12.5 (12E262)

It does not appear to be related with Swiftagram per se, still I'm not really sure why CombineX would have trouble importing Combine…
I hope I'll get to test it some more either tonight or tomorrow, and if no solution can be found, I'm just gonna drop CombineX all together and stick with iOS 13 and above.

Removing CombineX did fix the problem and I feel like it's the only way to go…
I'm not merging yet as it's somehow a "defeat" having to raise deployment version to iOS 13, but find a working version on the development branch for now.

Thanks man


Add option to suppress informational logging in IndexOptimize

Description of the feature
Add new input parameter for Verbosity so we can suppress the "RAISERROR(@EndMessage,10,1) WITH NOWAIT" messages

I can't assign this to myself :(

Dup of #429?


Make s3 gateway DNS optional

This PR (possibly) supersedes #2351, #2352 and #2312.
If merged, most users will not need to configure any DNS record to use lakeFS, except for 2 (relatively advanced?) cases:

They're working with a system that doesn't support path-based addressing for S3.
They wish to use public-access repositories that don't require authentication Note this is not currently supported by lakeFS

For everyone else, it makes it possible to spin up a lakeFS instance, and use whatever address the system provides for it, for both S3 and API use:
$ aws s3 --endpoint-url="http://localhost:8000" ls

will work, but also
$ lakectl fs ls lakefs://my-local-repo/main/...

Without any special configuration.
How does it work?
It works by changing the way we decide whether a request goes to the UI/API handler, or the S3 Gateway handler. It will now resolve it using the following order:

If the request is made with a Host header that matches gateways.s3.domain_name, route to S3 gateway
If the request is made with a Host header that is a sub-domain of gateways.s3.domain_name, route to S3 gateway
If the request contains an AWS Sigv2 or Sigv4 signature, route to S3 gateway
Otherwise, route to the UI/API handler

The addition is of course # 3 above. Both sigv2 and sigv4 have very specific query params or HTTP header values, not used anywhere else. This makes them good candidates for this type of inference: They will ALWAYS be present in S3 authenticated requests, and will likely NEVER be present in API, SDK or UI requests.
For users who do wish to use unauthenticated access (if we do end up supporting it) or that cannot use path-based addressing, they can set up the required DNS records the same way it's done today.
Why do it?
Because the user journey is currently overly partly because of the DNS settings.
This makes running lakeFS locally (using Docker or otherwise) pretty complex since you need to understand its internal routing of S3 requests prior to using the project.
It also complicates setting up a POC environment (and possibly even production deployments) for cases where the virtual-host addressing is not required.
Testing
The code modifications are relatively easy to test and are covered by both unit and system tests.
The harder part is testing all the integration documentation. For that I'd love some help.
Tested on:

[x] EMR
[x] Databricks
[x] Boto
[x] MinIO client
[ ] Kafka connect

I'd like to suggest rolling this feature silently, to allow us to test it thoroughly.
We can separate the docs to a second PR and merge it in a couple of weeks.

I'd like to suggest rolling this feature silently, to allow us to test it thoroughly.
We can separate the docs to a second PR and merge it in a couple of weeks.

That's possible! But I'm not sure what the benefit is, over testing this throughly before merging.. a silent release would be mostly testing the change is backwards compatible with current docs, which we can think of other ways to validate

As agreed, this will be the testing plan:
Databricks - @arielshaqed
EMR - @itaiad200
Trino - @guy-har
Align Terraform and setup lakeFS - @johnnyaug
minio client, boto, Kafka connect - @ozkatz

Need to add this change to CHANGELOG :)

@talSofer thanks, added

good catch @adunuthulan!

All tests we defined pass! Merging. Thanks @arielshaqed @itaiad200 @guy-har @johnnyaug @nopcoder @adunuthulan for helping with reviews and tests!


e2e: It seems to me that the e2e tests are not waiting for the Injector pod to be ready before tests are run

This GitHub Issue is to:

[ ] verify that the end-to-end tests have a mechanism by which they wait for the OSM Controller and OSM Injector are in status READY before the tests run
[ ] understand why sometimes tests run before Injector is READY (@allenlsy and @nojnhuh ran into this)
[ ] fix if this is indeed an issue

Possible related to Docker Desktop for Mac, where I've seen similar issues: #3143

unrelated to Jon's, but number of people has complained about issues with the helm wait in the past
https://github.com/helm/helm/issues/3173
https://github.com/helm/chart-testing/blob/4960e30445ead42157850a75245a6c543460ddee/lib/chartlib.sh#L326
https://www.prodops.io/blog/helm-install-wait-does-not-wait-workaround#:~:text=Helm provides the option to,to install and upgrade commands.&text=Wait%3A if set%2C will wait,for as long as — timeout.
Not sure how safe is to assume it is all fixed. For the time being, we can put a small check to ensure common e2e infra is always waiting for both injector and osm to be up.


[Feature Request] Collectors (AwaitMessages / awaitReactions)

Collectors using AwaitMessages / awaitReactions would be much appreciated: https://discordjs.guide/popular-topics/collectors.html

Collectors are a useful way to enable your bot to obtain additional input after the first command was sent. An example would be initiating a quiz, where the bot will "await" a correct response from somebody.

I managed to do simple awaiters, but not implemented as simple as the DiscordJs lib do.
Also there is a few issues when using multiple listner like that (reaction stops working after a while for new messages)

I'll have a look at it tonight or over the weekend hopefully - seems simple enough, however the message reation events are currently not implemented.

Try the collectors branch for me.


Plan for 0.3.x

New feature name

Arkhe
Vision icon

New feature description
I did not add this information when it was first created because there was little information available and it was not feasible.
The following versions will be added for use in new projects in the future.
Versions to be added
0.3.0～
Issue priority
High

Arkhe
Vision icon
These two are no longer regular due to Furina's implementation, so they are to be scrapped.
#5 and other optimizations currently being pushed, and the following as additional features for 0.3.0
Reward
fix Description(Talent,Avatar,Weapon)


Allows long int for bind when used with name

a3160dcfc2f80f692f3477a67c202ff87f75fa5a fixed this for bind by index
This PR just applies the same fix to the named functions.

Well, sure, I was too quick and missed that!
Thanks for doing this, with proper unit tests.

Coverage increased (+0.02%) to 96.344% when pulling cebea884c37d1fa58ee4202c077ee34815223be2 on xforce:master into 7c4689eb5179d68c79bf22381b475c191f77f31c on SRombauts:master.


deployment example

Description of changes
Terraform GCP Google Compute Engine with Github Actions Deployment

@tazarov can you take another look here?

@jeffchuber I think this branch might not be rebased on #1054, which was fixing a cross-version compile. I'll talk to @Jaglyser (in my TZ) and we'll get this resolved.

@tazarov can you take a look here?

@tazarov can you take a look here?

Unfortunately this is quite out of date (due to no fault of the OP!) - for hygiene I am going to close this now.


Port #7770 fix to 2.1.2 or 2.1.3

Suggest we port the #7770 fix (49c653e) to the next 2.1 patch. Basically [ApiController] causes a regression in some scenarios.
/cc @Eilon @mkArtakMSFT

Given the super simple workaround customers facing this issue can apply, I don't think this will get approved as a patch candidate. Still, I will try to get this approved in Shiproom.

Actually, thinking more about this, this is not even close to the bar for a patch. Closing this.

@mkArtakMSFT we introduced the #7770 regression in a patch (2.1.1). I'm surprised fix for that doesn't meet the bar for a subsequent patch. We shouldn't break scenarios in a patch -- ever.
In addition, the IFormFileCollection workaround may be simple but isn't particularly obvious.


dashboard: Add status view

Add view for new health status service introduced in #1715.

+1 :)
Would be usefull for a big wall mounted display.


Image support

Could you please add image support?
Example: https://www.tiktok.com/@emissionzenith/photo/7334350203929103621

This plugin only overrides the User extractor. Extraction of the individual items yielded from the User extractor are handled by vanilla yt-dlp. So fully adding support for these would be out-of-scope for this plugin.
However, If these /photo/ urls are provided by the creator API endpoint that this plugin uses, I could at least remove the TikTokIE restriction for the url results so that the photo urls could be extracted by another plugin. Do you know if the creator endpoint yields these photo items?

I don't know, sorry

I could at least remove the TikTokIE restriction for the url results so that the photo urls could be extracted by another plugin

Closing this as out-of-scope, but it can be re-opened if doing the above would be useful for anyone


Interface not usable on Hybric PC (Surface pro like)

Godot version:
Godot_v3.0-rc2_win64
OS/device including version:

Dell PC Hybrid (Surface Pro like)
Windows 10

Issue description:
Impossible to work with Godot :
On the project selection window, all the button interface are difficult to click
On the project window, all menus does not appear
I think this is because of the Hybrid capability of the PC, All the interface is by default zoomed by 150%, but if I try 100% zoom, it is not working

I'm having this same problem - with both the downloaded .exe and one I compile myself.
It seems like all my trackpad/keyboard input are all delayed by one event - I move the mouse over a button and it doesn't highlight until I move the mouse pointer OUT of the button. Typing is delayed by one keystroke - I type a character and it doesn't appear until I type the NEXT character, etc.
Weirdest thing is that if I run either .exe with the --verbose command-line option, everything works splendidly!  So very strange.
I'm testing this on a new Microsoft Surface Pro i5 w/ Intel HD graphics 620 on Windows 10 Pro. The behavior doesn't change when I flag the .exe for HiDPI mode, either.
I don't think this is a driver issue since everything works amazingly well when I include "--verbose" on the .exe command-line. Either way, AFAIK I have the latest Intel graphics drivers installed.

Right clicking Godot_v3.0.6-stable_win64.exe and creating a shortcut and modifying the shortcut to include --versbose fixes it on a Surface Pro 4


[java]如何开启安全模式

You can enable it by FuryBuilder#withSecureMode api

You can enable it by FuryBuilder#withSecureMode api

thanks！

FYI, we just replaced withSecureMode by requireClassRegistration in https://github.com/alipay/fury/pull/768


Add typeButton in Buttons

What added:

Add field type = ButtonType.button in Buttons {} to change the default value (submit)

Issue(#1272)
Helps
@petertrr @sanyavertolet @Cheshiriks Please look at the changes made. Previously, these buttons did not have this field and had a default value (submit) (A button for sending form data to the server). It is she who breaks the logic by substituting "?" in the URL before "#"

I think it's an okay change, because we don't rely on default button behavior anyway. Just please make sure that you've tried to click all these buttons and there have been no weird errors.

I think it's an okay change, because we don't rely on default button behavior anyway. Just please make sure that you've tried to click all these buttons and there have been no weird errors.

I have tested everything, everything works correctly


Pre trained model for 2d landmarking tracking

Hi,
Can you please tell me if there is a pre trained model that I can download for 2d landmarks tracking?
Thanks for your work!

Hi,
Thanks!
There's a couple pre-trained "toy" models in apps/rcr/data. Then there's the one that the patrikhuber/4dface demo app uses (the demo is a bit dated) - you'll find the download link if you click on that link, on that line in the CMakeLists. That model is pretty good and useful, but nonetheless I'm sure you're aware that it's around 2+ or so years old, and is not up-to-par with 2018's models (also it wasn't trained using too many data-augmentation "tricks").


Optimize performance of area draw methods

Hi,
I am opening an issue here that is related to the following issues in other projects:

glimmer-dsl-libui: https://github.com/AndyObtiva/glimmer-dsl-libui/issues/55
libui-ng: https://github.com/libui-ng/libui-ng/issues/79 (this issue is not directly related, but the comments at the bottom of the issue include a solution to the problem above)

The work that needs to be done was mentioned in these comments on the libui-ng issue:

@kojix2 : kou measured the time required to call a C function from Ruby with FFI and native C extension and concluded that FFI consumes about 10 to 100 times longer.

@cody271 : I would suggest a native C extension just for the uiDraw calls, the rest of the bindings for controls can stay FFI.

As you already saw on Twitter, I announced that a 2-hour workshop that I proposed for RubyConf 2023 was accepted for November 13, 2023 (Workshop Title: How To Build Desktop Applications in Ruby): https://rubyconf-2023.sessionize.com/session/531448
Just like how I announced a new release of glimmer-dsl-libui in RubyConf 2022 that you helped contribute to in a new release of LibUI, it would be great if I could announce in RubyConf 2023 a new release of glimmer-dsl-libui that includes optimized area drawing via an optimized LibUI Ruby binding with a C extension for the uiDraw calls only (LibUI.draw_* methods like draw_path_arc_to, draw_path_line_to, and draw_path_add_rectangle).
If that is not possible by November 13, 2023, then if you could make a new release by then to resolve other simpler issues or expose new behavior from libui-ng, that would be great too (unless you have already exposed all the latest features in libui-ng).
Otherwise, it would still be useful to have this optimization implemented eventually as it would be great for a variety of graphical applications like games, live diagramming applications with thousands of nodes, and analytical applications.

I admit that there is a problem with the slow drawing of LibUI.
It is suggested that a switch from Fiddle to C extension may be necessary to solve this problem. I think this problem is too big to address all at once. I will try to think of a way to break the problem up and address it little by little.

The reason I hesitated to take on this issue was because I thought I would need to rewrite many structs from Fiddle::Struct to TypedData Objects. This means redoing the entire LibUI.
While I've written several C extension Gems before, most of them involved copying and pasting code from other projects, and I don't have a good understanding of TypedData Objects.
In fact, we don't need to make major changes to deal with this issue. Just get the address from a Fiddle::Pointer object and pass it to the libui function. I've learned from kou how to implement a method in a C extension that takes FFI::Pointer as an argument. You can also write C extensions that take Fiddle::Pointer as arguments in a similar manner.
The idea is simple, but I didn't realize it.

I created a branch named native and added some draw-related methods written in C, mostly by AI coding assistants. This attempt is just getting started, but I have a feeling it won't be fast. We need to investigate what is the bottleneck.

https://github.com/AndyObtiva/glimmer-dsl-libui/issues/64

I got accepted to present at RubyConf again in 2024. I will conduct a 2-hour workshop just like last year. I will teach "How To Build Basic Desktop Applications in Ruby".
It would be nice if the libui performance optimization for area draw methods was ready by November 13 when RubyConf 2024 begins.

Unfortunately, I don’t think we’ll find a solution soon.
Since it’s been a while, I wanted to share my thoughts. I don’t think the performance issues are because of libffi. This is just a guess, but when I tested ruby-htslib’s performance, libffi didn’t seem to cause any big slowdowns.
I’m starting to think the real problem is with Ruby’s callbacks, which are closures. In C, callbacks are just functions, but Fiddle and Ruby-FFI create callback functions as closures. This is a big difference, and it might be causing the performance problems. Maybe creating and copying these closures is what’s slowing things down.
Honestly, I feel a bit stuck this time, but I’ll keep investigating.

Some Basic Understandings

Closures cannot be used in C.
Instead, C APIs typically accept function pointers and user data as arguments.
C's libui also provides such functions.
However, Ruby's LibUI does not use this mechanism to create closures.
Fiddle and Ruby-FFI utilize libffi.
libffi provides functionality for handling closures.
LibUI uses closures via libffi through Fiddle.
libffi can dynamically generate anonymous functions.
Dynamically generating functions in C involves placing data in memory according to the ABI to function as a callable function.

Current Hypotheses

Benchmarks suggest that anonymous function creation is time-consuming.

These anonymous functions are likely dynamically created by libffi.
There seems to be some overhead in creating closures.

I do not have a complete understanding of this matter. I have written what I think at this point in time in Japanese and had ChatGPT summarize it in English. Of course, what I have written here is not everything, but this is what I believe to be the most important aspect of this issue at this time.

I must apologize for not being able to dedicate enough time and effort to this problem. However, I believe that simply replacing FFI with a C extension will not solve the issue.
Issues with Using Closures as C Callbacks
In general, C functions cannot take closures (functions that keep track of external variables) as arguments. Instead, C functions often use a data argument to pass a pointer to external information. This allows the function to access data outside of its own scope, simulating the behavior of a closure.
In Ruby, closures are represented by blocks, and a block can reference variables outside of itself. On the other hand, Ruby’s methods cannot reference external variables. This is a key difference between C functions and Ruby’s blocks or methods.
Using Closures in Crystal
To understand this better, let's look at Crystal, a language similar to Ruby. In Crystal, you can use the Box class to pass closures to C functions. Here is an example:
Crystal Official Documentation: Passing a Closure to a C Function
module Ticker
  @@box : Pointer(Void)?

  def self.on_tick(&callback : Int32 ->)
    boxed_data = Box.box(callback)
    @@box = boxed_data

    LibTicker.on_tick(->(tick, data) {
      data_as_callback = Box(typeof(callback)).unbox(data)
      data_as_callback.call(tick)
    }, boxed_data)
  end
end

In this example, the Box class stores the closure in memory, and its pointer is passed as the data argument to the C function. This allows us to simulate closures within the C function’s context.
Limitations When There Is No data Argument
However, if a C function does not have a data argument, this technique will not work. In Crystal, when a closure references variables outside its own scope and is passed to such a function, it will raise an error at runtime. This behavior is unusual for a static language and can cause unexpected terminations, instead of typical segmentation faults in C.
FFI’s Approach to Implementing Closures
With FFI, dynamic C functions are generated using libffi, which allows us to simulate closures even without a data argument. In Ruby, we can use Fiddle::Closure::BlockCaller to create a C function pointer that behaves like a Ruby block. This method involves some performance overhead because it requires dynamically generating a function that wraps the Ruby block.
Example: Using qsort in Ruby
Here is a concrete example using the qsort function in Ruby with Fiddle::Closure:
require 'fiddle'
include Fiddle

class Compare < Fiddle::Closure
  def call(x, y)
    x.to_s(1) <=> y.to_s(1)
  end
end

libc = Fiddle.dlopen("/lib/libc.so.6")
qs = Fiddle::Function.new(libc["qsort"], [TYPE_VOIDP, TYPE_INT, TYPE_INT, TYPE_VOIDP], TYPE_VOID)
s = "7x0cba(Uq)"
qs.call(s, s.size, 1, Compare.new(TYPE_INT, [TYPE_VOIDP, TYPE_VOIDP]))
p s # =>  "()07Uabcqx"

In this example, the Compare class inherits from Fiddle::Closure and defines the call method, allowing it to be used as a C function pointer in qsort. This enables us to write a custom comparison function in Ruby and pass it to the C library.
The area_handler Structure
The area_handler structure, which is causing the issue, looks like this:
struct uiAreaHandler {
    void (*Draw)(uiAreaHandler *, uiArea *, uiAreaDrawParams *);
    void (*MouseEvent)(uiAreaHandler *, uiArea *, uiAreaMouseEvent *);
    void (*MouseCrossed)(uiAreaHandler *, uiArea *, int left);
    void (*DragBroken)(uiAreaHandler *, uiArea *);
    int (*KeyEvent)(uiAreaHandler *, uiArea *, uiAreaKeyEvent *);
};

We can assign Ruby closures to these function pointers using Fiddle::Closure::BlockCaller like this:
do_nothing = Fiddle::Closure::BlockCaller.new(0, [0]) {}
key_event  = Fiddle::Closure::BlockCaller.new(1, [0]) { 0 }

handler.Draw         = handler_draw_event
handler.MouseEvent   = do_nothing
handler.MouseCrossed = do_nothing
handler.DragBroken   = do_nothing
handler.KeyEvent     = key_event

In this setup, BlockCaller transforms Ruby blocks into C function pointers. However, since this process involves libffi, it may introduce some performance overhead. Also, if a C function does not have a data argument, it is difficult to use closures effectively.
Conclusion
For structures like area_handler, using Fiddle::Closure::BlockCaller allows us to register Ruby blocks as C function pointers, but the lack of a data argument makes it impossible to pass closures directly. Rewriting the code as a C extension would not solve the problem because the same limitations apply. In these cases, replacing closures with simple methods might be a practical solution, even though it limits the flexibility of the implementation.
This is my current understanding of the issue. I hope this explanation helps clarify the situation, and I look forward to exploring more efficient solutions in the future.

Thank you for the summary.
Using methods in place of block closures should be good enough. If you can provide an example of that working without performance issues, that would be great.

Rewriting the code as a C extension would not solve the problem because the same limitations apply

This can only be confirmed 100% by trying to build the C extension, even if in theory, this might be true. If the other option of using methods doesn’t work out, I think trying to build a C extension would be worth it even if it ends up failing in resolving the draw slowdown issue.

I'm going to work on this problem this week, but please don't get your hopes up too much.
This issue is more difficult for me to solve than the others.

This week, I made some progress in my thinking.
I realized that some of my previous ideas were wrong. As usual, I wrote a notebook for the record and translated it into English using ChatGPT.

It all started when I began using per to measure performance and Hotspot to visualize it. Although I don’t have a formal background in computing, I knew that Hotspot makes it easy for anyone to visualize how much time native functions consume.
https://github.com/AndyObtiva/glimmer-dsl-libui/issues/55

From the screenshots, I noticed that some functions, marked with ?? [??] ?? [??] ?? [??] ?? [??], were consuming a lot of time. However, the exact function names were missing, which was puzzling. (This makes the problem difficult since it’s unclear what’s actually taking up time.)
At first, I thought the missing function names were because libui-ng wasn’t built with debug mode enabled. But even after rebuilding it with debug mode, nothing changed. Although libui-ng functions were recorded, the unknown function names remained hidden.
Next, I suspected that these were dynamically generated anonymous functions from libffi. Since performance slowed down significantly with larger inputs (e.g., 1000 or 2000 elements) and much time was spent inside these unknown functions, I thought memory copying might be involved.
I also wondered if FFI itself was responsible for copying memory, but this turned out to be a misunderstanding.
The following blog explains how FFI calls back functions:
Cast a Closure to a Function Pointer: How libffi closure works
According to the blog, if *data is not passed as an argument, FFI places the pointer to *data at a fixed offset, which is referred to as a "trampoline." This trampoline only involves pointers and does not copy memory. Therefore, using the trampoline instead of passing a closure through *data does not add overhead. This means my initial assumption that FFI was copying memory was wrong.
Furthermore, both FFI::Closure and FFI::Closure::BlockCaller use the same trampoline mechanism, meaning there is little practical difference between them. Thus, switching from FFI::Closure::BlockCaller to FFI::Closure will not solve the issue.
However, memory copying does happen, but it occurs inside Ruby, not FFI.
A Proc object contains a structure called rb_env_t, which holds a stack frame. This environment is copied using env_clone. New memory is allocated with ALLOC_N(VALUE, env->env_size), and local variables are copied with MEMCPY(new_body, env->env, VALUE, env->env_size). The pointer ep refers to the position of the current stack frame. The MEMCPY macro ensures that copying is skipped if env_size meets certain conditions.
That’s what I have figured out so far...


improve top-bar menu

Pre-Flight checklist

[ ] Screenshots and design review for any changes that affect layout or styling

[ ] Desktop screenshots
[ ] Mobile width screenshots

[ ] Migrations

[ ] Migration is backwards-compatible with current production code

[ ] Testing

[ ] Code is tested
[ ] Changes have been manually tested

[ ] Settings

[ ] New settings are documented and present in app.json
[ ] New settings have reasonable development defaults, if applicable
[ ] Opened issue for DevOps regarding necessary configuration changes to deployed environments

What are the relevant tickets?
fixes #118
What's this PR do?
(Required)
How should this be manually tested?
(Required)
Where should the reviewer start?
(Optional)
Any background context you want to provide?
(Optional)
Screenshots (if appropriate)
(Optional)

Codecov Report

Merging #135 (1065d4b) into main (d07c8e3) will decrease coverage by 5.74%.
The diff coverage is n/a.

:exclamation: Current head 1065d4b differs from pull request most recent head e1fc2ca. Consider uploading reports for the commit e1fc2ca to get more accurate results

@@            Coverage Diff             @@
##             main     #135      +/-   ##
==========================================
- Coverage   90.19%   84.45%   -5.75%
==========================================
  Files         205       87     -118
  Lines        5976     3287    -2689
  Branches      284      284
==========================================
- Hits         5390     2776    -2614
+ Misses        501      426      -75
  Partials       85       85

Impacted Files
Coverage Δ

...ic/js/components/forms/RegisterDetailsForm_test.js

static/js/lib/api.js

static/js/reducers/ui.js

static/js/containers/pages/login/LoginPages.js

...js/containers/pages/register/RegisterDeniedPage.js

static/js/lib/notificationsApi.js

static/js/lib/queries/util.js

static/js/lib/queries/index.js

static/js/components/Expandable.js

static/js/components/forms/EditProfileForm.js

... and 106 more

Continue to review full report at Codecov.

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


Align the implementation for ascii function with spark sql

Since spark's latest releases, like spark 3.2.3/3.3.1 or higher versions, ascii function will return the code point for initial character of given input string. Character with two or more bytes needs to be considered.

Hi @mbasmanova, could you please review this PR?
BTW, I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output. So I just keep a call method here.

I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output.

This is strange. Maybe a bug. Would you file an issue with a repro? We need to fix that.

CI is red.

I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output.

This is strange. Maybe a bug. Would you file an issue with a repro? We need to fix that.

Hi @mbasmanova, regarding this issue, I find the execution will go into the below if branch (fastPathIteration = true), where callAscii method will never be called. Is it an expected behavior?
https://github.com/facebookincubator/velox/blob/main/velox/expression/SimpleFunctionAdapter.h#L546

I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output.

This is strange. Maybe a bug. Would you file an issue with a repro? We need to fix that.

Hi @mbasmanova, regarding this issue, I find the execution will go into the below if branch (fastPathIteration = true), where callAscii method will never be called. Is it an expected behavior? https://github.com/facebookincubator/velox/blob/main/velox/expression/SimpleFunctionAdapter.h#L546

@laithsakka Laith, would you help take a look?
@PHILO-HE It would be helpful to file a GitHub issue with a description and possibly repro of the problem.

I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output.

This is strange. Maybe a bug. Would you file an issue with a repro? We need to fix that.

Hi @mbasmanova, regarding this issue, I find the execution will go into the below if branch (fastPathIteration = true), where callAscii method will never be called. Is it an expected behavior? https://github.com/facebookincubator/velox/blob/main/velox/expression/SimpleFunctionAdapter.h#L546

@laithsakka Laith, would you help take a look?
@PHILO-HE It would be helpful to file a GitHub issue with a description and possibly repro of the problem.

Yes, I just filed an issue: https://github.com/facebookincubator/velox/issues/5792

@PHILO-HE Thanks. Let's see what @laithsakka says.

Hi @mbasmanova, could you please review this PR? BTW, I just found fast path optimization with callAscii for ascii input is not applicable to the function who has varchar input, but int32 output. So I just keep a call method here.

Thanks for reporting this, we should add handle calling callAscii in the fast iteration path as well.
I will follow up on this in the task

Hi @mbasmanova, I just updated this patch. The callAscii method is workable now after a separate fix. Could you please take a review again? Thanks!
Please refer to Spark impl. here.

Updated with 3 more test cases and code rebase. @mbasmanova, please note this small change. I see this PR has been imported.


Testing/Module-module_Tests

Fixes #145

Changes

Change 1: cleaned up and re-organized code in Module.test.ts file

PR Checklist

[x] Does your PR contain relevant tests that pass?
[x] Is your code linted? yarn lint or yarn lint:fix
[x] Does your code build correctly in ALL projects? yarn build

Was working with a corrupt branch, so closed out the other PR and opened a new one here with a new branch from develop. Please review and tell me how I can improve my tests. Thanks.

Hey @quimgv, can you re-review this when you have a chance?

Good work @LeeYang2019 ! I added a few small comments :)
@shaneSheridan let us know if you come up with a better name for that and we can get it done here.
@LeeYang2019 please look into the prettier issue, you can configure it in settings to not being detected by this project but detected by others.

What's the go with this one @LeeYang2019 , @quimgv ? Been here for a while, would like to get it on the move if possible.

@tristanMatthias  I reviewed it and waiting for @LeeYang2019 's changes or comments.

Ok. @LeeYang2019 I know you've mentioned you've been doing other things. Can you please either fix these changes or communicate we need to put someone else on it.

Hey @shaneSheridan and/or @quimgv, I apologize for the inconvenience. I should have had this done a few days back. Can either of you review and let me know if any issue is still persisting?
CC: @tristanMatthias

Nevermind. I see a few conflicts that must be resolved. Will work on resolving them.

So, I see there are two conflicts that must be resolved. As these conflicts are not related to the testing I completed on the Module.test.ts file, how should I resolve them? @shaneSheridan, @tristanMatthias, @quimgv.

Yes please, solve them and let me know if you have any doubt. Thanks!

Hey @quimgv, I've resolved the conflicts. Please review and let me know what else needs to be done. Sorry, I attempted to merge this. Saw a bright green button and could not resist.


Broken pipe in finalize step - 2. Make a dd insertion

Hey!
Thank you for your great too. I am having the same problem as issue #24 (Broken Pipeline in 'finalize' step #29). Your solution to this was to add a dd insertion to lines 62 and 64 of construct-fasta-from-asm.sh. After some googling I was unable to figure out what a dd insertion is. Is there any chance that you could respond with the code that you had in mind so I can make the correct changes without having to guess/check?
I saw that on your google group discussion , that you wanted the two lines replaced with the following:
Line 62: tail -c +${index[${contig}]} ${fasta} | awk '$0~/>/{exit}1' | awk -f ${pipeline}/utils/reverse-fasta.awk -
Line 64: tail -c +${index[${contig}]} ${fasta} > tmp.fasta && awk '$0~/>/{exit}1' tmp.fasta | awk -f ${pipeline}/utils/reverse-fasta.awk
This conversation was a couple years ago and I noticed that while line 62 looks like the line 62 you wanted changed, line 64 does not. Is this due to a system specific issue and I should replace the line 64? I have 3d-dna/20210216.
Thanks so much!
Dustin
Github issue: https://github.com/aidenlab/3d-dna/issues/29
Google group Discussion: (https://groups.google.com/g/3d-genomics/c/cqAmJHbXCzE/m/M3B--B8RBAAJ)

Hi Dustin,
You sure that the source of the problem is the same though? A much more common source of this problem is when folks use the wrong assembly file when running post-review step or, somewhat more rarely, there are some weird characters like carriage return in fasta.
Best,
Olga

Hey Olga!
I'm not certain if that is the source of the problem. This being said, I doubt that I am using the wrong assembly file when running the post-review step as I'm using the run-asm-pipeline function which should use the same assembly file all the way though. Is there a way of checking for these weird characters in the fasta?
I have attached an overview of what I did below:
I assembled my nanopore genome with Flye.
flye --nano-raw fastq/male.fastq.gz --out-dir male --genome-size 2700m --threads 16
I aligned Hi-C reads with juicer2.0-CPU. It worked successfully until the postprocessing step because the two file sizes below were equal in size:
	size1=$(samtools view $sthreadstring -h ${outputdir}/merged_sort.bam | wc -l | awk '{print $1}')
	size2=$(wc -l ${outputdir}/merged_dedup.sam | awk '{print $1}')
I also converted the deduplicated bam file back to a merged_nodups file with Neva's script
samtools view -O SAM -F 1024 merged_dedup.sam | awk -v mnd=1 -f $juicedir"common/"sam_to_pre.awk > merged_nodups.txt
I then ran 3d-DNA using close to default parameters.
run-asm-pipeline.sh  -m "haploid" -i 10000 /dir/assembly.fasta /align/merged_nodups.txt
Best,
Dustin

Do you mind sharing the full stdout/stderr if you have it?
For carriage return one can open in something that can show them (https://superuser.com/questions/409919/cr-and-lf-characters-shown-at-the-end-of-each-line-in-notepad)
or do something like tr '\r' '\n' < file > mod_file
and see there’s any difference.
Another thing to check that one user once had is that they had empty lines in the fasta, also probably some conversion or newline characters problem.
Best,
Olga

On Apr 29, 2021, at 5:49 PM, Dustin Sokolowski @.***> wrote:
Hey Olga!
I'm not certain if that is the source of the problem. This being said, I doubt that I am using the wrong assembly file when running the post-review step as I'm using the run-asm-pipeline function which should use the same assembly file all the way though. Is there a way of checking for these weird characters in the fasta?
I have attached an overview of what I did below:
I assembled my nanopore genome with Flye.
flye --nano-raw fastq/male.fastq.gz --out-dir male --genome-size 2700m --threads 16
I aligned Hi-C reads with juicer2.0-CPU. It worked successfully until the postprocessing step because the two file sizes below were equal in size:
size1=$(samtools view $sthreadstring -h ${outputdir}/merged_sort.bam | wc -l | awk '{print $1}')
size2=$(wc -l ${outputdir}/merged_dedup.sam | awk '{print $1}')
I also converted the deduplicated bam file back to a merged_nodups file with Neva's script
samtools view -O SAM -F 1024 merged_dedup.sam | awk -v mnd=1 -f $juicedir"common/"sam_to_pre.awk > merged_nodups.txt
I then ran 3d-DNA using close to default parameters.
run-asm-pipeline.sh -m "haploid" -i 10000 /dir/assembly.fasta /align/merged_nodups.txt
Best,
Dustin
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hey!
Here are the files. I switched from the diploid to the haploid version between runs as it was reccomended and possible an issue. With that in mind these are the stdout and stderr of the same script but diploid. it's haploid equivalent should be ready in the next day or so.
I'll check the file/empty line differences ASAP
Best,
Dustin
stderr.txt
stdout.txt

I don’t see anything bad happening with the pipeline up to the finalize part. If you are happy with the rawchrom.hic just run the post-review with -r rawchrom.assembly to do the very last part (in haploid will be the default) to save some time, no need to rerun the whole pipeline. -Olga

On Apr 29, 2021, at 6:09 PM, Dustin Sokolowski @.***> wrote:

Hey!
Here are the files. I switched from the diploid to the haploid version between runs as it was reccomended and possible an issue. With that in mind these are the stdout and stderr of the same script but diploid. it's haploid equivalent should be ready in the next day or so.
I'll check the file/empty line differences ASAP
Best,
Dustin
stderr.txt
stdout.txt
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Hey Olga,
Thanks so much! you're right -- the code I adjusted and switching to haploid didn't do the trick. May I send the stdout and stderr of the finalize portion once it's run?
Best,
Dustin

Hey Olga,
Running the run-asm-pipeline-post-review.sh with the following script below:
run-asm-pipeline-post-review.sh -r ~/male_3dDNA/assembly.rawchrom.assembly ~/assembly_male/bwa_index/assembly.fasta ~/aligned/merged_nodup.txt and I'm getting the same series of errors.
Interestingly, the FINAL.fasta file is being made, but there is not a difference in the number of chromosomes.

This being said, the Hi-C data is definitely making chromosome level scaffolds. This is rawchrom.assemby.hic file. We're expecting 30 chromosomes and the squares add up.

Is there a way to check if the temporary files were made correclty (temp.fasta, temp.cprops, temp.assembly)? If not all I can think of is trying to run the
bash ${pipeline}/finalize/construct-fasta-from-asm.sh temp.cprops temp.asm temp.fasta | awk -f ${pipeline}/utils/wrap-fasta-sequence.awk - > ${label}.FINAL.fasta line individually.
Thanks again for all of your help!
Dustin

Hey Dustin,
Can you send me your fasta and the final.assembly file? olga.dudchenko hosted on bcm.edu.
Olga


Is not recognized as a name of a cmdlet, function, script...

Run the storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)
received

is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

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

ID: cad5909e-e1c6-aa8e-82f1-f2851c1caced
Version Independent ID: 42292330-aa69-9df0-5bd7-e07c9daed995
Content: Tutorial: Use Azure Event Grid to automate resizing uploaded images - Azure Event Grid
Content Source: articles/event-grid/resize-images-on-storage-blob-upload-event.md
Service: event-grid
GitHub Login: @spelluru
Microsoft Alias: spelluru

@TLKG Thank you for your feedback! We will review and update as appropriate.

@TLKG I don't see any document issue and looks like you are running the below command in PowerShell rather than CLI. If you are using the below command in CLI then it should work as expected and for PowerShell you need to add $ with storageConnectionString as mentioned in the command in our document.
storageConnectionString=$(az storage account show-connection-string --resource-group $resourceGroupName --name $blobStorageAccount --query connectionString --output tsv)
We will now proceed to close this thread as there is no document enhancement. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Guidance on embedding sample a.minimizable-web-chat in Wordpress site

Most of my webchat implementations start from this react-sample. After customizing the UI, I disable code splitting and I build the react-app (npm run build). This results in two files like this:
  591.42 KB  build\static\js\main.XXXXXXXX.js
  4.48 KB    build\static\css\main.XXXXXXXX.css

These are embedded in a wordpress (or any site) via some lines of html:
<link href="/webapps/chatbot/static/css/main.12f1e0b2.css" rel="stylesheet">
You need to enable JavaScript to run this app.

Straightforward but it works in all environments.
However, the files are very large and impact website performance. Therefore I would like to enable code splitting (chunks) again but don't have a clue how to use\launch\load these chunks via html.
Any help or guidance much appreciated

'How to' questions such as this one are better suited for Stack Overflow. Please feel free to post other questions you have about developing your own features over there so the community at large may help out. If you need help with a Web Chat implementation, you can post a question to the Web Chat tag. Thank you!


[HOT FIX] Windows 8.1 project now compiles

Removed open source header from pch.* files
Fixed unnecessary compiler warnings

looks good.


[detailRowHeight] unable to set relatively height

I'm submitting a feature request
[detailRowHeight] now support absolute height, e.g: [detailRowHeight]="100"
If possible to support relatively height? say, '100%' or 'auto' ?

No


Fix the command group duplication error

This checklist is used to make sure that common guidelines for a pull request are followed.
General Guidelines

[ ] The PR has modified HISTORY.rst with an appropriate description of the change (see Modifying change log).

Command Guidelines

[ ] Each command and parameter has a meaningful description.
[ ] Each new command has a test.

(see Authoring Command Modules)

@georgechenchao,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

Codecov Report

Merging #4219 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #4219   +/-   ##
=======================================
  Coverage   70.09%   70.09%
=======================================
  Files         475      475
  Lines       29603    29603
  Branches     4539     4539
=======================================
  Hits        20749    20749
  Misses       7409     7409
  Partials     1445     1445

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 05556cc...e975f11. Read the comment docs.


doc: point to $animate.pin() to enable animation for elements outside…

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Doc update
What is the current behavior? (You can also link to an open issue here)
https://github.com/angular/angular.js/issues/14907
Does this PR introduce a breaking change?
No
Please check if the PR fulfills these requirements

[X] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[n/a] Tests for the changes have been added (for bug fixes / features)
[X] Docs have been added / updated (for bug fixes / features)

Other information:

I've changed the text a bit and merged it. Thanks!


Project name appears with % character

Bug
Project name appears with % character.
Is this something we should solve structurally? It only appears once for now.
Steps to reproduce

Go to record https://backoffice.biblio.ugent.be/publication/8762760?redirect-url=%2Fpublication%3Fq%3D8762760%26sort%3Ddate-updated-desc
Scroll to projects and see percentage here
Try to add department, see it without %

We had some issues retrieving projects with spaces in EOS project codes (e.g. "EOS 000123456") from Biblio Frontend  initially.  The %20 is an URL encoded space which seems to have found its way into the record.
Presently, adding the same project with the same EOS project code doesn't cause issues.
I also see that the same project has been added twice to the record: once with %20 and once with a normal space. Removing the one with %20 should be enough to fix this.

@netsensei Okay, we can consider it fixed and refer to this issue might it ever happen again?

@mietcls Yep. Let's close this one.


sourcing hooks

I notice the script sources (. operator) the hook files. I'd avoid that as it is then possible for the hooks to accidentally redefine environment variables that your script uses and chaos ensues.

I misread the script, closing.


2019 todo list - 愤怒的小猥琐的博客 | Blog

http://aichibazhang.com/2019/08/27/todo/
Every failure is leading towards success.

美着来


adding init() to componentDidMount function

Fixed Issue #16

@aminy - I'm closing this now due to lack of activity on #16. Please let me know if you have any thoughts. Thanks!


Changes made to source and tests to support PHP 7.3

See related #804 and #810

This change is

Coverage decreased (-0.02%) to 75.132% when pulling ec9f55293663741d39d510cffd306310ce4ea054 on yitam:php73 into bd34cabdd2be2c49c4437e3f09a0d34909b8bb35 on Microsoft:dev.

Codecov Report

Merging #822 into dev will decrease coverage by 0.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##              dev     #822      +/-   ##
==========================================
- Coverage   80.06%   80.05%   -0.02%
==========================================
  Files          25       25
  Lines        7325     7321       -4
==========================================
- Hits         5865     5861       -4
  Misses       1460     1460

Impacted Files
Coverage Δ

...phpdev/vc14/x86/php-7.1.20-src/ext/sqlsrv/util.cpp
84.37% <0%> (-0.25%)
:arrow_down:

...phpdev/vc14/x86/php-7.1.20-src/ext/sqlsrv/stmt.cpp
87.81% <0%> (-0.02%)
:arrow_down:

...x86/php-7.1.20-src/ext/sqlsrv/shared/core_sqlsrv.h
85.38% <0%> (ø)
:arrow_up:

...php-7.1.20-src/ext/pdo_sqlsrv/shared/core_sqlsrv.h
81.52% <0%> (ø)
:arrow_up:

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 bd34cab...ec9f552. Read the comment docs.


Element hiding is not working on novosti-n.org

Original issue
https://forum.adguard.com/index.php?threads/https-novosti-n-org.42811/
Banner must be blocked by the rule from Russian filter:
novosti-n.org##a[target="_blank"][rel="nofollow"] > img
Wide rules also not working:
novosti-n.org##body *
novosti-n.org##body
Disable all another adblockers before check.

Fixed by novosti-n.org$$script[tag-content="setAttribute('type', 'text')"]

If I understand correctly it will not be fixed.
Maybe it's not important issue, but I think that similar approach may be used on other websites as well.
If I understand correctly, currently there is protection from removing and modifying AdGuard style, so why not to add protection also for type="text/css"?

@sxgunchenko

It seems like a content-script issue. @slavaleleka what do you think?


Target Validation

How to categorize this issue?

/area robustness
/kind epic
/priority 2
What would you like to be added:
Targets are input options for a blueprint and are heavily used in deploy items to describe the environment to deploy to.
Whereas default data imports are completely validated using the inline blueprint jsonschema definitions, targets are described by a type but the type configuration is not validated.
To improve the robustness of the service and to be able to also validate targets before even a blueprint is executed validation for target types is needed.
The validation should be done per target type and should validate the target config based on the specific type.
As target type are extensible we would need a way to describe target types.
Therefore 2 options are proposed:

using a similar system as kubernetes with its crd's (Target Resource Definition trd)

Pro: already known pattern, also types would be editable and viewable in the cluster
Con: another dependency that somehow needs to be pushed and maintained in the cluster. It is possible to have different trds in different systems for the same types.

target registry referenced by the component descriptor / blueprint

Pro: a blueprint developer can directly reference the definition for a target he wants to use. No duplicate tdr's for same types. Can be transported with the blueprint and other definitions
Con: yet another resource reference. system would be similar to the external jsonschema.

@In-Ko closed because outdated and/or copied into internal project


Don't Merge! PR real time test for webhook case

Docs Build status updates of commit 14e0434:
:clock10: Pending: waiting for processors (57 builds ahead of you)
:warning: Docs Build is busy, currently there are 57 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 14e0434:
:clock10: Full build: the average full build time is 6 min(s) 5 sec(s), this is based on the last 495 build(s) for this repository.

Docs Build status updates of commit 14e0434:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

docs-ref-conceptual/testing.md
:white_check_mark:Succeeded
View (azure-cli-latest) View (azure-cli-2017-03-09-profile) View (azure-cli-2018-03-01-hybrid)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Migrate Mobile notifications always to other notifications settings

Online mobile notifications setting should not be under "PM and @mentions" section. Also, this setting should not be dependent on its parent setting.
Testing Plan:
I've just updated the UI. As we discussed in #10381, the backend works independently for both the settings.
In development environment, since we are not allowed to check mobile notifications, I could not test if we can check both settings independently.
But I think this should work good, since, I've remove two parameters from dependent setting, namely : is_nested and is_parent_checked. Moreover, the tests are passing.

@timabbott FYI. It was just a copy-pasta, with two lines being removed. Let me know, if there is anything missing.

@shubhamdhama @pragatiagrawal31 can you review this?  I'm not sure whether or not we need to worry about bgus where the JS code makes assumptions about where these elements live.

@ruchit2801 how did you test this?  I'm pretty sure from a quick look at the JS code that the error status widgets will be messed up with this change as written.

@timabbott  I could not figure out how would I test this. Mobile notifications are disabled in development server.
About status widget : Yeah! that's correct. I, by mistake, didn't notice it. Now, I've also migrated status widget for that setting to other notifications settings section.

@timabbott @pragatiagrawal31 I tried reviewing this but came across settings_checkbox.handlebars, and it has turned to a mess, we really need to fix this template first, @pragatiagrawal31 can you please fix this template first by removing these hard-coded push notifications pieces in this template and remove those custom tags from templates.js as well if then become redundant.
We definitely would not happy with style="display:none" inline CSS there and tags like this if_not_a_or_b_and_not_c and hard coded instances.

@ruchit2801 it's really important to test changes you're proposing carefully.  E.g. one can temporarily remove the code disabling a feature in order to test its settings code locally.  It's also worth noting that the bugs I'd expect with this change are things of the form "clicking the checkbox and reloading the page reveals the setting change wasn't actually sent to the server" because you changed the HTML layout without adjusting the JS code that needs to correspond to it.

Closing in favor of #12148, which implements this correctly (including updating the /help/ articles).


allow passing of remote monero node

Hi, just found this project. Looks very cool!
When I try to run the neveko app, it complains that it cannot find monerod. I am running monerod on a different machine on my network. Can you please implement an option to supply a remote monero node address? Thanks.

Thanks! it is possible to connect to a remote node. docs are still in progress but when you pass -h flag you can see the neveko cli args. There needs to be a checkbox from gui. For now you can go to neveko root and perform a similar command with your monerod node:
./scripts/build_all_and_run.sh "-- --monero-rpc-daemon http://stagenet.community.rino.io:38081 --remote-node --monero-location /path/to/monero-x86_64-linux-gnu-v<IP_ADDRESS>/ --i2p-zero-dir /path/to/i2p-zero-linux.v1.21/"

if you want to access the other mirco servers for testing the --remote access is needed and some docs are in docs/curl.md
(needs to be updated)
*the path to monero binaries are still needed so neveko can start its own monero-wallet-rpc instance
then go to gui
cd neveko-gui

start gui
RUST_LOG=debug cargo run

Thanks - is there also a way to point to a remote i2p daemon? I have my home network in a way that everything is on its own host. The i2p-proxy-host command line option does not seem to help. App just ends with this:
[2023-06-20T13:52:54Z INFO  neveko_core::i2p] creating tunnel
thread 'main' panicked at 'i2p-zero failed to create a tunnel: Os { code: 2, kind: NotFound, message: "No such file or directory" }', neveko-core/src/i2p.rs:139:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Thanks - is there also a way to point to a remote i2p daemon? I have my home network in a way that everything is on its own host. The i2p-proxy-host command line option does not seem to help. App just ends with this:
[2023-06-20T13:52:54Z INFO  neveko_core::i2p] creating tunnel
thread 'main' panicked at 'i2p-zero failed to create a tunnel: Os { code: 2, kind: NotFound, message: "No such file or directory" }', neveko-core/src/i2p.rs:139:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

@snex
i2p-zero has to run locally because all traffic besides downloads from the installation manager get tunneled through i2p. it can be daemonized like Tor with a systemd service too. what did you pass for the --i2p-zero-dir argument? or i2p-zero dir in the gui?

I do not have i2p-zero installed on the machine attempting to run neveko. I am hoping to avoid this and route everything through the separate machine running i2p.

Ok, I see. Since the machine with neveko doesn't have i2p it won't be possible for the app to startup without some changes. If you have configured a separate server as http proxy server then the i2p-proxy-host flag is right. But you will have to manually configure the tunnels and disable i2p completely from neveko:
stop i2p startup by commenting out this line
https://github.com/creating2morrow/neveko/blob/main/neveko-core/src/utils.rs#L499
manually create an i2p-zero directory with tunnels.json file from the address in the manually created tunnel
{"tunnels": [
  {
    "port": "9000",
    "dest": "DESTINATION.b32.i2p"
  }
]

port needs to match whatever the app port is
next these lines need to be changed to find your tunnels.json
https://github.com/creating2morrow/neveko/blob/main/neveko-core/src/i2p.rs#L188
i will create a flag/logic to ignore neveko i2p-zero for advanced users so these changes don't need to be made.

@snex also I will move this to #22 since original issue was for remote monero node.


autogen

what is the difference between autogen from microsoft and this?

autogen doesn't generate new agents for itself out of the box. It can, and so can metagpt which is what this project uses. It's not new, actually. This group is just the first to want to gain notoriety for it with a paper.

autogen doesn't generate new agents for itself out of the box. It can, and so can metagpt which is what this project uses. It's not new, actually. This group is just the first to want to gain notoriety for it with a paper.

Dude, have you read the paper?

autogen doesn't generate new agents for itself out of the box. It can, and so can metagpt which is what this project uses. It's not new, actually. This group is just the first to want to gain notoriety for it with a paper.

If you actually understood the paper (supposing you've read it) you will see why our approach differs from the rest.


Trademark and Logo regresion

Adding a trademark removes the logo, and vis-versa.

Another possible non issue. Will need more testing on a clean install

Found the issue. Fixed now


doc : remove raspi-config folder and documentation

it's been implemented in the main readme now as of pr #49

also need to delete test.txt file in main branch


Add feature cache to model

Since the current implementation of Model is an integration of feature calculation and model training, I wonder if this is a good idea to have a feature cache (at least for training inputs). It is more of an efficiency concern, especially for simple (e.g., linear) models, sometimes one needs to perform iteration with weight variations. There is no need for recomputing the features as it might be the "rate limiting step".

Good idea. Go ahead.


WIP: Link to Etherscan

Issue link

#173
Auto-close the issue?

Closes #173
Types of changes
New feature (non-breaking change that adds functionality)
Notes

I'm not sure how the link should look like and where it should be shown.
Gated by #259

Gated by #259

This ^ PR has been merged

TODO

AccountCreationProgress component eye icon design;
Modify accountInfo reducer as commented by @pcowgill on #tasit channel on Slack;
Show etherscan link on My Land screen.

Notes

On Development env, the My Land screen becomes empty because DecentralandUtils is always returning []
For Purchase transactions, changes on TasitSDK (DecentralandUtils) will be needed

For Purchase transactions, changes on TasitSDK (DecentralandUtils) will be needed

It's worth considering whether any of these changes can move down a level of abstraction below DecentralandUtils too

Modify accountInfo reducer as commented by @pcowgill on #tasit channel on Slack;

To remember: current accountInfo reducer is {    account: null,    creationStatus: NOT_STARTED,  }
I think creationStatus serves a very well-defined role and should stay just as-is as a string that can be one of an enumerable list of options
But we definitely will have the need in the future to persist links to multiple transactions related to account status
So I think there should be a separate object called creationTransactions that uses the strings from the creationStatus enum as keys and the values are the tx hashes
We can store the action object and get the txHash only inside of the Etherscan component but I'll have to think how will store it.
If we want to store the action objects instead of the txHashes, then replace all the mentions of “tx” or “hash” above with “action”
If our goal is for this to work for mobile devs who don’t know a lot about blockchain, then calling a buildLink function on the action object probably would be better

We'll need to decide what tx to link out to during the "funding account with MANA and approving marketplace" step

We'll need to decide what tx to link out to during the "funding account with MANA and approving marketplace" step

@marcelomorgado Thoughts on this?

Show etherscan link on My Land screen.

@marcelomorgado For this TODO, we'll still need to decide on the redux data structure, right?

We'll need to decide what tx to link out to during the "funding account with MANA and approving marketplace" step

@marcelomorgado Thoughts on this?

I think that will be nicer show the funding with mana transaction then the approval one.

Show etherscan link on My Land screen.

@marcelomorgado For this TODO, we'll still need to decide on the redux data structure, right?

This ask is deprecated right?

I think that will be nicer show the funding with mana transaction then the approval one.

I think I'd prefer showing both or neither to picking an arbitrary (even if more important) one.

Show etherscan link on My Land screen.

@marcelomorgado For this TODO, we'll still need to decide on the redux data structure, right?

This ask is deprecated, right?

Hmm, I don't think so. Is that already in this PR somewhere? This is about the redux data structure of land purchase transactions to show in the My Land screen, not the redux data structure of action creation status. And purchasing land isn't part of account creation status.

Show etherscan link on My Land screen.

@marcelomorgado For this TODO, we'll still need to decide on the redux data structure, right?

This ask is deprecated, right?

Hmm, I don't think so. Is that already in this PR somewhere? This is about the redux data structure of land purchase transactions to show in the My land screen, not the redux data structure for account creation status. And purchasing land isn't part of account creation status.

Oh, I've misunderstood. Yes, we'll need to add the purchase transaction hash/action to redux state to show the link to etherscan on My Land

I think that will be nicer show the funding with mana transaction then the approval one.

I think I'd prefer showing both or neither to picking an arbitrary (even if more important) one.

Ok, I'll think a little more about it.

Oh, I've misunderstood. Yes, we'll need to add the purchase transaction hash/action to redux state to show the link to etherscan on My Land

Okay, cool. That can come in a follow-up PR if you like.

BUG

@marcelomorgado said, "Assuming that you agree since you gave thumbs up to it. I've just undo the navigation change. I'll add more info to the #267 right now."

I've just got a BUG on this PR:
Since we are getting the list of users' land from blockchain during MyAssetsScreen.componentDidMount what is happening is:
On the first time of the app: User signs up, buy land and before the purchase process finished on the blockchain, he is moved to the MyAssetsScreen that will get no assets from blockchain and the list will be empty.
On the second use, the list will be loaded with the land bought on first use and so on...
The expected behavior only will happen if the user access the MyAssetsScreen before purcharse any asset.
I think will could move the user the the LandForSaleListScreen as before, and extract this change (move to MyLand) to already created issue #267

Assuming that you agree since you gave thumbs up to it. I've just undo the navigation change. I'll add more info to the #267 right now.

I've just got a BUG on this PR:
Since we are getting the list of users' land from blockchain during MyAssetsScreen.componentDidMount what is happening is:
On the first time of the app: User signs up, buy land and before the purchase process finished on the blockchain, he is moved to the MyAssetsScreen that will get no assets from blockchain and the list will be empty.
On the second use, the list will be loaded with the land bought on first use and so on...
The expected behavior only will happen if the user access the MyAssetsScreen before purcharse any asset.
I think will could move the user the the LandForSaleListScreen as before, and extract this change (move to MyLand) to already created issue #267

Assuming that you agree since you gave thumbs up to it. I've just undo the navigation change. I'll add more info to the #267 right now.

Yep, that sounds good!


stream not found to dispose on v1.0: is this expected under some load?

a wasi v0.2.0 module build using tinygo has no problem on wasmtime nor spin (which is wasmtime) at 10,000 requests over 10 connections, but jco 1.0 can only handle about 9,000 before the following error appears:
squillace@idiopath:~/work/hello-wasi-http-go$ jco serve main.component.wasm
Server listening on 8000...
file:///home/squillace/.nvm/versions/node/v21.5.0/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:85
      if (error instanceof Error) throw Object.assign(error, properties);
                                  ^

Error: wasi-io trap: stream not found to dispose
    at handle (file:///home/squillace/.nvm/versions/node/v21.5.0/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/io/worker-thread.js:397:15)
    at file:///home/squillace/.nvm/versions/node/v21.5.0/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:105:38
    at MessagePort.<anonymous> (file:///home/squillace/.nvm/versions/node/v21.5.0/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:112:9)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:822:20)
    at exports.emitMessage (node:internal/per_context/messageport:23:28)

Node.js v21.5.0```

Module built using the 06d197d6e608ac52da8ad39a5b6e5b41270fb773 commit of https://github.com/mossaka/hello-wasi-http-go. Again, like #335, Dan's rust hello world works fine under load, but the tinygo fails out.

WSL2, Ubuntu 22.04.3 LTS, Windows 11, JCO 1.0.0

@Mossaka heads up.

Thanks for posting, can you share the example component to replicate this? Would be great to resolve. We could just ignore these errors but it's quite important to catch disposal invariant breaks.

I'll repro today.

OK! Back to this finally. I'm using Dan's rust component for jco serve. Same happens with go and python components.
jco version: 1.0.2
node: Node.js v21.6.2
Error occurs only after whacking it reasonably heavily:
squillace@dellsquill:~/work/squillace/hello-wasi-http$ jco serve target/wasm32-wasi/debug/hello_wasi_http.wasm
Server listening on 8000...
file:///usr/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:85
      if (error instanceof Error) throw Object.assign(error, properties);
                                  ^

Error: wasi-io trap: stream not found to dispose
    at handle (file:///usr/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/io/worker-thread.js:397:15)
    at file:///usr/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:105:38
    at MessagePort.<anonymous> (file:///usr/lib/node_modules/@bytecodealliance/jco/node_modules/@bytecodealliance/preview2-shim/lib/synckit/index.js:112:9)
    at [nodejs.internal.kHybridDispatch] (node:internal/event_target:822:20)
    at exports.emitMessage (node:internal/per_context/messageport:23:28)

Node.js v21.6.2

Here's the run that hurts it. I can run with ONE connection and it'll get a bit farther, but still collapses.
squillace@dellsquill:~$ hey -n 10000 -c 20 http://localhost:8000

Summary:
  Total:        4.9213 secs
  Slowest:      0.0241 secs
  Fastest:      0.0032 secs
  Average:      0.0122 secs
  Requests/sec: 2031.9800

Response time histogram:
  0.003 [1]     |
  0.005 [1]     |
  0.007 [1]     |
  0.009 [92]    |■
  0.012 [3330]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.014 [3097]  |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.016 [1166]  |■■■■■■■■■■■■■■
  0.018 [216]   |■■■
  0.020 [48]    |■
  0.022 [17]    |
  0.024 [31]    |

Latency distribution:
  10% in 0.0103 secs
  25% in 0.0109 secs
  50% in 0.0119 secs
  75% in 0.0131 secs
  90% in 0.0145 secs
  95% in 0.0155 secs
  99% in 0.0183 secs

Details (average, fastest, slowest):
  DNS+dialup:   0.0000 secs, 0.0032 secs, 0.0241 secs
  DNS-lookup:   0.0000 secs, 0.0000 secs, 0.0016 secs
  req write:    0.0000 secs, 0.0000 secs, 0.0008 secs
  resp wait:    0.0119 secs, 0.0016 secs, 0.0237 secs
  resp read:    0.0003 secs, 0.0000 secs, 0.0026 secs

Status code distribution:
  [200] 8000 responses

Error distribution:
  [2000]        Get "http://localhost:8000": dial tcp <IP_ADDRESS>:8000: connect: connection refused

@squillace thanks for the follow-up here - could you try test this out on the latest 1.0.3 version and let me know if it is still happening there? If so, please share the component and I'll look into it further.


Ignore blocked datasets in WorkerSize metrics for auto scaling

Fix for https://github.com/huggingface/dataset-viewer/issues/2945

I think we forgot to decrease the metrics when a dataset is blocked: https://github.com/huggingface/dataset-viewer/blob/ae007899af0d49ef0ca4c39dfc713af240aea272/libs/libcommon/src/libcommon/queue/dataset_blockages.py#L75
On the other side, when the dataset is not blocked anymore due to the TTL index, we will have to wait for the next metrics update cron job to fix the metrics


Allow href without .html extension for links between app's pages

Is your feature request related to a problem? Please describe.
I want to have several pages in my app with links between them.
Suppose my distDir contains two files: index.html and about.html.
My index page has a link to the About page:
 About
On the web this link opens the about.html file.
But in Tauri this link doesn't work unless I put href="about.html" there.
Describe the solution you'd like
The link should work even if I don't add the .html part.
Describe alternatives you've considered
_
Additional context
_

as discussed on discord
give this directory structure , if you want about.html then you need to explicitly set your  tag to link to about.html About
|_ index.html
|_ about.html

if you want  About to work then your folder structure should be like this
|_ index.html
|_ about
	|_ index.html

Thanks. I realised after looking into this that I had a setting called clean_urls enabled in a Vercel-hosted app which made my links work that way.
What you described about folder structure makes total sense. :+1:


Proxy timeleft return the smallest between proxy and voms - wmagent version

wmagent branch version of #7819
the agent docs needs to be deleted from wmstats:
$manage execute-agent wmagent-unregister-wmstats hostname -f

 Fix #7824 - Proxy timeleft return the smallest between proxy and voms

master version is already merged, so merging it.


Update ReadMe file to match ABπ project description

Fixes #12
The previous ReadMe file contains information about AB3.
As per the requirements specified in #12, the ReadMe file had been updated to accurately reflect the work we will be doing for ABπ.

Codecov Report

Merging #14 (2cc3c66) into master (0ba2a46) will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #14   +/-   ##
=========================================
  Coverage     72.15%   72.15%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1232     1232
  Branches        125      125
=========================================
  Hits            889      889
  Misses          311      311
  Partials         32       32

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 0ba2a46...2cc3c66. Read the comment docs.


feat(aws): Support for incremental cache updates based on s3 events

Adds a new ObjectKeyLoader implementation that subscribes to an sqs
queue and receives events generated in response to s3 modifications.
These events should be received no more than 1s after the modification.
This PR also removes the unused loadObjectsWithPrefix StorageService
method.

Thus far I've been making changes directly to applications/pipelines and ensuring the cache reconciles properly within the expected amount of time.
Need to do another round of live end-to-end testing of this to ensure nothing appears out of the ordinary in the UI.


Advanced encoding tab

Handbreak should have an advanced encoding tab, but it does not have one on this container

I think this tab has been removed since HandBrake 1.2.0.  See https://forum.handbrake.fr/viewtopic.php?f=11&t=38560.

Closing this issue.  Please re-open if needed.


Add additional checking in comments for spaces after punctuation.

:+1:

FYI, there will be another PR fixing all the style issues this uncovers, but I'll wait until the open PRs are resolved first.   Any time spent fighting with github conflicts is lost time.


Cloning

Add ability to clone each of the template boards directly from the home page by clicking on their images/links.
Will need to change isSeed on each of the two template boards (RoEW2jMzxow6GygQg and YZYHSsP2Y3r82Weeh) to true in order for this to work.

This looks good Rebekah!


added example: Earth-Venus cosmic dance

PR Checklist
If you are contributing to Javis.jl, please make sure you are able to check off each item on this list:

[ ] Did I update CHANGELOG.md with whatever changes/features I added with this PR?
[x] Did I make sure to only change the part of the file where I introduced a new change/feature?
[ ] Did I cover all corner cases to be close to 100% test coverage (if applicable)?
[ ] Did I properly add Javis dependencies to the Project.toml + set an upper bound of the dependency (if applicable)?
[ ] Did I properly add test dependencies to the test directory (if applicable)?
[x] Did I check relevant tutorials that may be affected by changes in this PR?
[ ] Did I clearly articulate why this PR was made the way it was and how it was made?

Link to relevant issue(s)
Closes #
How did you address these issues with this PR? What methods did you use?

Hey @Ved-Mahajan - this looks great! Thanks for formatting the code using JuliaFormatter. @Wikunia - what do you think? This might be a nice example to have on the Javis.jl README

Oh also, @Ved-Mahajan - seems like when you ran JuliaFormatter, it formatted some of Javis. Could you remove the changes made to the morphing.jl file? Thanks!

Regarding the formatting @TheCedarPrince  the morphing file always makes problems. But yeah maybe you can revert that change from this PR would be nice!

Oh wait! Almost forgot - @Ved-Mahajan , we need to include you as a contributor in our main README.md file at the bottom of the page! Could you add yourself there? We always wanna acknowledge anyone who contributes to Javis. :)

Oh wait! Almost forgot - @Ved-Mahajan , we need to include you as a contributor in our main README.md file at the bottom of the page! Could you add yourself there? We always wanna acknowledge anyone who contributes to Javis. :)

Did that :smile:

LGTM - @Wikunia ?

Ok - I think @Ved-Mahajan fixed this up @Wikunia . Looks like all checks are passing. Ready to merge?


46471 - Make rollingUpdate configurable in istio/gateway deployment template

Just to add configurable values for rollingUpdate.maxSurge and rollingUpdate.maxUnvailable in deployment template for istio/gateway.

Hi @hari-rad. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
Once the patch is verified, the new status will be reflected by the ok-to-test label.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

please sign CLA, @hari-rad .

/ok-to-test

@hari-rad: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hari-rad: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

integ-helm_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-helm

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hari-rad: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

integ-helm_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-helm

lint_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test lint

integ-pilot-istiodremote_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hari-rad: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

integ-helm_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-helm

lint_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test lint

integ-pilot-istiodremote_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote

integ-pilot-istiodremote-mc_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote-mc

integ-cni_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-cni

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hari-rad: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

integ-helm_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-helm

lint_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test lint

integ-pilot-istiodremote_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote

integ-pilot-istiodremote-mc_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote-mc

integ-cni_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-cni

integ-pilot-multicluster_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-multicluster

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hari-rad: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test release-notes

integ-helm_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-helm

lint_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test lint

integ-pilot-istiodremote_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote

integ-pilot-istiodremote-mc_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-istiodremote-mc

integ-cni_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-cni

integ-pilot-multicluster_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot-multicluster

integ-pilot_istio
e10a3eb010896fa929819e02c6dbef5ae776f89e
link
true
/test integ-pilot

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Hi @hari-rad will you continue this? I think jacob is asking to set this to more generic strategy: {} setup


Runtime reload configmap/secret when they change

Opening this request to capture discussion here: https://camel.zulipchat.com/#narrow/stream/257299-camel-k/topic/watching.20mounted.20configmap.2Fsecret
Use case:  When values in a mounted configmap/secret is changed (e.g. a password to a service), would like a way to reload at runtime without needing to restart the integration (pod)

Considering that Camel K rebuilds are fast, would it be safer to trigger a rebuild & redeploy of the integration, rather than reloading the runtime? From the outset (i.e. user changing creds) it would appear similar (the runtime uses the new credentials), but internally, we would move through regular kubernetes lifecycle steps (rebuild, redeploy, rollover, readiness checks). Reloading at runtime doesn't sounds right to me.

Duplicates of #1235