Feature-WIP Trace pipeline scheduling

Proposed changes
Issue Number: close #xxx
now we got tracing logs like:
8500427614500572113-6789189066394059143|task0(0-1ExchangeSourceOperator)|1|139825136383744|74631528697|74631528720||0
8500427614500572113-6789189066394059143|task0(0-0ScanOperator)|17|139825176491776|74631533384|74631533818||0
8500427614500572113-6789189066394059143|task0(0-0ScanOperator)|3|139825156437760|74631532316|74631533166||0
8500427614500572113-6789189066394059143|task0(0-1ExchangeSourceOperator)|1|139825136383744|74631539128|74631539137||0
8500427614500572113-6789189066394059143|task0(0-0ScanOperator)|17|139825176491776|74631539144|74631539215|RUNNABLE|0
8500427614500572113-6789189066394059143|task0(0-0ScanOperator)|3|139825156437760|74631539137|74631539344|RUNNABLE|0
8500427614500572113-6789189066394059143|task0(0-1ExchangeSourceOperator)|1|139825136383744|74631539341|74631539545|RUNNABLE|0

in next pr, we will use a tool to extract-transform it to fit some display tools
Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

run buildall

run buildall

run buildall

run buildall

run buildall

run buildall


Skill doesnt stay enabled

the Skill testing is enabled in "Development" does not stick.  I always have to go in and change it from off the development

it may have been because I was logged into dev console on 2 devices at dame time. I've been away this week so haven't played with it since

That might actually be the issue. Please post an update once you tried it again, I'm really interested to know if this solves the problem.

yeah that was the issue as far as that goes. now this bigger issue is getting the automation to fire every 5 minutes from HA. after awhile the echo home creek returns and stay on indefinitely


Test Set-based burst network

Thanks for the awesome work! Just a quick question, is the set-based burst network automatically activated when n_burst > 1 in test.py?

You can increase n_burst and set is_burst to True to use burst model.

Thank you!


Wiserhub V2 Api

While investigating some of the other functions of the wiser app that are not yet supported in this api, I found that the wiser app uses a v2 api to the hub.
For reading the hub domain data this is significantly faster and it also separates schedule data into a different api call with different json format.
I suspect that a future hub firmware update may remove this v1 api in favor of v2, so we should have on the enhancement list to migrate to the v2 version.
As a side note, found a really great app for phone or tablet to monitor http calls from apps similar to fiddler called HTTPCanary. Was very useful to do the function in the app and see the calls to the api.

Nice,
Moving to v2 we should plan for, but I dont think they'll remove the v1 api for a long time.. unless they need to why would they?

Agreed but thought worth logging issue so it's on radar.
You not busy today? ;-)

I was manic on Tuesday... Just seeing what I need to do for tomorrow :-)

Nice,
Moving to v2 we should plan for, but I dont think they'll remove the v1 api for a long time.. unless they need to why would they?

If i was an engineer at schnieder then at some point I might run out of headroom on the Atmel they are using. Maintaining support for an old API is expensive so I wouldn't want this project to die on the assumption that they won't drop it.
That said the availability of this library was a key to why I purchased the Drayton system so hopefully they will work with us.

While investigating some of the other functions of the wiser app that are not yet supported in this api, I found that the wiser app uses a v2 api to the hub.
For reading the hub domain data this is significantly faster and it also separates schedule data into a different api call with different json format.
I suspect that a future hub firmware update may remove this v1 api in favor of v2, so we should have on the enhancement list to migrate to the v2 version.
As a side note, found a really great app for phone or tablet to monitor http calls from apps similar to fiddler called HTTPCanary. Was very useful to do the function in the app and see the calls to the api.

Do you think you could give a quick brief as to what you know about how to access this API?
Just as a starting point.

I did some work some months ago on updating this api to both use the v2 version and also to shift most of the work of managing the integration to the Wiser hub out of the HA component, to make it easier to get it into the core HA release.  Unfortunately, I've not yet had time to finish it but it is mostly there and mostly tested.  You can see in on my github repo at Wiser API v2.

Yeah I was thinking about that ,  @msp1974 , lets chat offline about how to merge it all in..


Delegate methods

Xcode 9.3 & Cocoapods 1.5.0
After installing and creating a simple class to test the delegate methods I repeatadly get the following issue:

Do you have any ideas as to why this my be happening?

Do you have the Result type declared elsewhere in the containing project? The names might be conflicting. You can try specifying MerchantKit.Result in the signature.

Thanks for the fast response! Yeah it was that. Didn't notice it was included elsewhere.

I have run into this issue myself. I have pondered renaming the type to something more specific like TaskResult.

Is it only used in the context of a "task"? Another option could be to call it something like ProcessingResult perhaps.

It's solely used by the tasks in the public API; internal to the framework it threads through several different things. I think I'll bring up the naming collisions up on the Swift forums, and at least push for a better error message.

Thanks for reporting the issue. Definitely worth while.


Improve circuit relay setup

Currently the whole circuit relay "kinda works". It's working, you can relay connections, but it's cumbersome. Check alternatives to setting it up and try to enable direct webrtc
Look into:

https://docs.libp2p.io/guides/getting-started/webrtc/
https://universal-connectivity.vercel.app/
https://github.com/libp2p/universal-connectivity

We still need to investigate on how to do it w/ VPNs, probably public nodes subscribed to the pubsub group will probably fix this edge case. Right now it's out-of-scope.


Add extra script "intersect-gt-and-pred.py"

This pull request does these things:

Fix the previous bug of PR #18, (forget to commit bypass function)
Add script intersect-gt-and-pred.py used to fix file not found error by moving non-intersected ground-truth and predicted files into a backup folder.
Write README for this script and more info to the error message in main.py

Example output of the script:
total ground-truth files: 863
total predicted files: 946

No backup required for ../ground-truth
total ground-truth backup files: 0
total predicted backup files: 83
total intersected files: 863
Intersection completed!

Yeah, this makes it a lot easier when there are a lot of files!
What do you think of renaming backup2 to something like backup_matching_file_not_found? It would make things more clear.

One last thing, we should mention something in the main.py code, no?
So that people use your code when they get file not found.
Both in line 301 and 378, I would suggest something like:
error_msg = "Error. File not found: predicted/" + file_id + ".txt\n"
error_msg += "(You can avoid this error message by running extra/intersect-gt-and-pred.py)"

Oh you already did that! My bad!

I will change it to your message.

Deal?

Looks great! Thank you!


Fixed composite rate controller logic and docs.

Adjusted the composite rate controller to the new environment semantics as detailed by Issue #142.
The virtualization mechanism is not totally transparent now, but without passing more information to the rate controllers, this is the only way. Updated the docs accordingly.
@panyu4 since Nick has already fixed the PID controller, if this PR is accepted, then the issue can be closed.
Signed-off-by: Attila Klenik<EMAIL_ADDRESS>

Misinterpreted the meaning of the results array, will fix it soon.

I am accepting this PR  and  closing the Issue #142


sending it again to be merged cuz last merge undid this!

Don't merge yet!

Will do the changes and send again


Add Health Check Valve

To offer the current container Orchestrator  the option to check the tomcat health let's add and activate the Health Check Valve.
It would be nice to back port this to TC 10+9

The health check valve is not appropriate all all configurations so it should not be enabled by default.


Assignment/modifying embedding in embeddingset using [] operator

I was wondering whether we should allow for assignment or modification of an embedding in a EmbeddingSet instance using [ ] operator, i.e. __setitem__ method? For example:
embset = EmbeddingSet(foo, bar)

# Change an existing embedding
embset['foo'] = Embedding('foo_new', ...)
embset['foo'] = np.array([1,2,3])
embset['foo'] = embset['foo'] | embset['bar']
embset['foo'] += embset['bar']

# Add new embedding
embset['buz'] = Embedding('buz', ...)
embset['buz'] = embset['foo'] - embset['bar']

I can imagine that this is sensible. For examples, you might want to create a plot that highlights one point with another color. Manually specifying a property might make sense in such a situation.
I want to be a little bit careful though. I'd prefer if the vector, name and orig attributes remain protected. The vector should never change dimensionality unless the entire set changes. The name and orig might alter the representation of the Embedding in an unintuitive way.

For examples, you might want to create a plot that highlights one point with another color. Manually specifying a property might make sense in such a situation.

That's exactly the scenario I encountered yesterday and came to this question! :smile:

I'd prefer if the vector, name and orig attributes remain protected.

I also have the same opinion (unless a good use case proves me wrong!). Especially, changing the name attribute might create confusion: when an EmbeddingSet is created, the keys to access the embeddings are initialized with the value of name attribute, and I think after any operation this consistency still holds. However, this leads to another question that whether we should allow these:
embset['foo'] = embset['foo'] - embset['bar']
print(embset['foo'].name)  # this would be "foo - bar", not "foo"?!

embset['buz'] = Embedding('qux', ...)   # name and key differs?!

Or instead for adding new embedding, should we create a separate method to add one Embedding instance to an EmbeddingSet instance? Although, there is already one way to do that: embset = embset.merge(EmbeddingSet(buz)). Alternatively, we can extend merge to also support a single Embedding as well.

I'm closing issues because ever since the project moved to my personal account it's been more into maintenance mode than a "active work" mode.


Error : fail config

Since some day i have an error : Fail configuration.
In log i see :
2023-06-22 08:58:42.915 DEBUG (MainThread) [custom_components.biketrax.coordinator] Device data coordinator updating.
2023-06-22 08:58:44.171 DEBUG (MainThread) [custom_components.biketrax.coordinator] Finished fetching<EMAIL_ADDRESS>data in 1.256 seconds (success: True)
2023-06-22 08:58:44.171 DEBUG (MainThread) [custom_components.biketrax.coordinator] Trip data coordinator updating.
2023-06-22 08:58:44.452 DEBUG (MainThread) [custom_components.biketrax.coordinator] Finished fetching<EMAIL_ADDRESS>data in 0.281 seconds (success: True)
2023-06-22 08:58:44.452 DEBUG (MainThread) [custom_components.biketrax.coordinator] Subscription data coordinator updating.
2023-06-22 08:58:44.646 DEBUG (MainThread) [custom_components.biketrax.coordinator] Finished fetching<EMAIL_ADDRESS>data in 0.193 seconds (success: True)
2023-06-22 08:58:44.646 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry BikeTrax<EMAIL_ADDRESS>for biketrax
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/biketrax/__init__.py", line 82, in async_setup_entry
    hass.config_entries.async_setup_platforms(entry, PLATFORMS)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ConfigEntries' object has no attribute 'async_setup_platforms'
2023-06-22 08:58:45.057 ERROR (MainThread) [aiobiketrax.client] Unhandled exception while reading from WebSocket, error counter is 0.
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 49, in wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 278, in post_session
    return models.session_from_dict(response)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/models.py", line 831, in session_from_dict
    return Session.from_dict(s)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/models.py", line 157, in from_dict
    token = from_str(obj.get("token"))
            ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/models.py", line 13, in from_str
    assert isinstance(x, str)
AssertionError

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/client.py", line 100, in update_task
    async for update in self.traccar_api.create_socket():
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 40, in wrapper
    async for x in func(*args, **kwargs):
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 72, in wrapper
    async for x in func(*args, **kwargs):
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 482, in create_socket
    await self.post_session()
  File "/usr/local/lib/python3.11/site-packages/aiobiketrax/api.py", line 51, in wrapper
    raise ApiError("Unable to parse API response.") from e
aiobiketrax.exceptions.ApiError: Unable to parse API response.

Can you tell me where is the problem and how solve it?

Can you try one of the following approaches:

Add the following to your configuration.yaml, and then restart:

logger:
  default: warning
  logs:
    aiobiketrax: debug
    aiobiketrax.responses: debug

Then send me the response you get back for the /api/session endpoint.

Sign-in on https://app.powunity.com. Then (in Chrome) open the element inspector, go to the network tab and filter for the POST session request. Then send me the response.

Be sure to hide sensitive details.

I check tomorow :)

Can you try one of the following approaches:

Add the following to your configuration.yaml, and then restart:

logger:
  default: warning
  logs:
    aiobiketrax: debug
    aiobiketrax.responses: debug

Then send me the response you get back for the /api/session endpoint.

Sign-in on https://app.powunity.com. Then (in Chrome) open the element inspector, go to the network tab and filter for the POST session request. Then send me the response. You might need to refresh the page if you cannot find the response.

Be sure to hide sensitive details.

Ok i see the error, Hacs was not uptodate and your plugin not uptodate because hacs must be manually update. After update hacs, i have succefully update plugin and work again :)


ModelBinder in netcore

version:4.0.1
[HttpPost]
[Route("BatchUpdate")]
[ProducesResponseType(typeof(ResultJsonNoDataInfo), 200)]
public async Task  BatchUpdate([ModelBinder(typeof(JsonNetBinder)),FromForm]BatchUpdateModel model)

@yuzd this is still a bug, just wondering why you closed the issue?

Hello,
I'd like to second this - it seems to be an issue in 5.0 when using a custom model binder.
For parameters directly on a method, that are decorated with a custom modelbinder, they are set as query in Swagger, and not required. Decorating them with [FromRoute] and [Required] fixes it.
Same thing goes when passing a model decorated with [FromForm], then any parameter in the model that have a custom modelbinder, will come out as query in swagger, instead of RequestBody. It doesn't seem like there is any easy fix for this, besides writing your own OperationFilter that removes them from the Parameters and adds them to RequestBody.

Swashbuckle is built on top of ApiExplorer the API metadata provider that ships with ASP.NET Core. It exposes an ApiParameterDescription object for each parameter and that is used by Swashbuckle to generate a corresponding OpenApiParameter object. In determining the parameter location (path, query, header etc.), Swashbuckle looks at the ApiParameterDescription.Source property and maps the value accordingly:
private static readonly Dictionary<BindingSource, ParameterLocation> ParameterLocationMap = new Dictionary<BindingSource, ParameterLocation>
{
    { BindingSource.Query, ParameterLocation.Query },
    { BindingSource.Header, ParameterLocation.Header },
    { BindingSource.Path, ParameterLocation.Path }
    ...

Unfortunately, the ApiExplorer sets the ApiParameterDescription.Source = BindingSource.Custom whenever a custom binder is applied regardless of whether or not the underlying parameter is also decorated with an explicit binding attribute ([FromForm], [FromQuery] etc.).
So, with the current approach, there's no good way for Swashbuckle to determine the intended parameter location unless it bypasses the ApiExplorer abstractions and inspects the attributes itself directly - and this is something I don't want to do from a design/simplicity standpoint.
In an ideal world, there would be a standard approach for expressing the intended binding source, either by attributes or additional meteadata on the IModelBinder interface, that is then projected by ApiExplorer onto the ApiParameterDescription object. Perhaps you could create an upstream issue in the ASP.NET Core repo for this?
In lieue of that, this needs to be solved with custom filters. With that said though, you could possibly simplify the filter implementation by using an IParameterFilter instead of an IOperationFilter

Swashbuckle is built on top of ApiExplorer the API metadata provider that ships with ASP.NET Core. It exposes an ApiParameterDescription object for each parameter and that is used by Swashbuckle to generate a corresponding OpenApiParameter object. In determining the parameter location (path, query, header etc.), Swashbuckle looks at the ApiParameterDescription.Source property and maps the value accordingly:
private static readonly Dictionary<BindingSource, ParameterLocation> ParameterLocationMap = new Dictionary<BindingSource, ParameterLocation>
{
    { BindingSource.Query, ParameterLocation.Query },
    { BindingSource.Header, ParameterLocation.Header },
    { BindingSource.Path, ParameterLocation.Path }
    ...

Unfortunately, the ApiExplorer sets the ApiParameterDescription.Source = BindingSource.Custom whenever a custom binder is applied regardless of whether or not the underlying parameter is also decorated with an explicit binding attribute ([FromForm], [FromQuery] etc.).
So, with the current approach, there's no good way for Swashbuckle to determine the intended parameter location unless it bypasses the ApiExplorer abstractions and inspects the attributes itself directly - and this is something I don't want to do from a design/simplicity standpoint.
In an ideal world, there would be a standard approach for expressing the intended binding source, either by attributes or additional meteadata on the IModelBinder interface, that is then projected by ApiExplorer onto the ApiParameterDescription object. Perhaps you could create an upstream issue in the ASP.NET Core repo for this?
In lieue of that, this needs to be solved with custom filters. With that said though, you could possibly simplify the filter implementation by using an IParameterFilter instead of an IOperationFilter

Hello,
I'd like to second this - it seems to be an issue in 5.0 when using a custom model binder.
For parameters directly on a method, that are decorated with a custom modelbinder, they are set as query in Swagger, and not required. Decorating them with [FromRoute] and [Required] fixes it.
Same thing goes when passing a model decorated with [FromForm], then any parameter in the model that have a custom modelbinder, will come out as query in swagger, instead of RequestBody. It doesn't seem like there is any easy fix for this, besides writing your own OperationFilter that removes them from Parameters and adds them to RequestBody.

Thank you for your analysis and suggestion! I did exactly that, and here's the snippet:
using System.Linq;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

// Converts any custom BindingSource that accept Body into RequestBody parameters in Swagger
// See: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1002
public class CustomFromBodyOperationFilter : IOperationFilter
    {
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            var apiBodyParameter =
                context.ApiDescription.ParameterDescriptions.FirstOrDefault(p =>
                    p.Source.CanAcceptDataFrom(BindingSource.Body));

            if (apiBodyParameter == null) return;

            var swaggerBodyParameter = operation.Parameters.FirstOrDefault(p => p.Name == apiBodyParameter.Name);

            operation.Parameters.Remove(swaggerBodyParameter);
            operation.RequestBody = new OpenApiRequestBody {
                Content = {["application/json"] = new OpenApiMediaType {Schema = swaggerBodyParameter.Schema}}
            };
        }
}

Apply:
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c => {
        c.OperationFilter<CustomFromBodyOperationFilter>();
        // ...
    });
}

Hello,
I'd like to second this - it seems to be an issue in 5.0 when using a custom model binder.
For parameters directly on a method, that are decorated with a custom modelbinder, they are set as query in Swagger, and not required. Decorating them with [FromRoute] and [Required] fixes it.
Same thing goes when passing a model decorated with [FromForm], then any parameter in the model that have a custom modelbinder, will come out as query in swagger, instead of RequestBody. It doesn't seem like there is any easy fix for this, besides writing your own OperationFilter that removes them from Parameters and adds them to RequestBody.

Thank you for your analysis and suggestion! I did exactly that, and here's the snippet:
using System.Linq;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

// Converts any custom BindingSource that accept Body into RequestBody parameters in Swagger
// See: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1002
public class CustomFromBodyOperationFilter : IOperationFilter
    {
        public void Apply(OpenApiOperation operation, OperationFilterContext context)
        {
            var apiBodyParameter =
                context.ApiDescription.ParameterDescriptions.FirstOrDefault(p =>
                    p.Source.CanAcceptDataFrom(BindingSource.Body));

            if (apiBodyParameter == null) return;

            var swaggerBodyParameter = operation.Parameters.FirstOrDefault(p => p.Name == apiBodyParameter.Name);

            operation.Parameters.Remove(swaggerBodyParameter);
            operation.RequestBody = new OpenApiRequestBody {
                Content = {["application/json"] = new OpenApiMediaType {Schema = swaggerBodyParameter.Schema}}
            };
        }
}

Apply:
// Startup.cs
public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c => {
        c.OperationFilter<CustomFromBodyOperationFilter>();
        // ...
    });
}


Need more file system syscalls, in particular opendir/readdir

Apparently it is still not possible for a program to obtain the list of files in a directory.  We can call the CAT command but this prints the directory on the screen. If we need to get the list of files in a program,. so we can make our own file load/save dialogue or Midnight Commander clone we are SOL.
I will  try to implement this.

There are system calls defined in mos_api.inc, ffs_dopen, ffs_dclose, ffs_dread, but they are NOT implemented currently. Implementing seems very straightforward.
The only thing is: they need DIR and FILINFO structures. For the DIR struct your application only  needs to reserve a memory area of the appropriate size, for the FILINFO struct, it is fairly clear what goes inside it and this contains the very stuff (file size, data, file name, attribs) that your application wants to read from the directory.
An alternative could be to statically reserve a single DIR struct and allow for one directory to be open at a time and then have mos_opendir/closedir/readdir functions to work on that single DIR struct.  For now I think I will go for the simple straightforward fs_ functions that require applications to reserve their own DIR struct.
I only consider it done if I have an example program that lists a directory based on these system calls.

@tomm implemented these calls in his "Rainbow" MOS build. Here's the commit.
This is a simple shim, but since all three functions work via being passed a reference to a DIR/FILINFO struct there's no need to implement anything more. The user can do it themselves.
I'm using these functions happily enough in AgDev now, and if/when they ever get mainstreamed I will offer up the changes to mos_api.h and mos_api.src that match Tom's shim.

the new calls implemented in @tomm 's "rainbow" MOS build have been integrated and released as part of the 2.2.0 release
there are however still several filesystem sys calls that are missing

Closing as the directory management functions are now exposed
I have raised a separate issue #92 to track the implementation of other fatfs APIs


Why there's no Domain Service?

This is a rough idea. My opinion may be wrong.
In my opition, one domain event MUST be in one single transaction, because an event is something happened in the past. To raise an OrderStartedDomainEvent, you should make sure the order aggregate has been persisted in the database. If the data has not been persisted in the database, some sub-events which attempt to get order aggregate from database will get null.
Secondly, can I say that the side effects which are supposed to be triggered by domain event MUST not have atomicity with the original action which raise the event? In a project, if (operation, side-effect) requires atomicity, I think this probably indicates a Domain Service (mentioned in Eric Evan's DDD book) should be used, which can perform transactions across several aggregates. I didn't see any Domain Service in this ebook, which confuses me.
For example. If a buyer placed an order, an email should be sent to he/she. The failure of sending the email should not be considered, because the success of placing an order has nothing to do with the state of the email. Under this situation, a Domain Event should be used.
But placing an order requires checking for the remaining amount of some items, under this situation, a Domain Service should be used.

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

ID: d432d5bb-24a7-3bec-1e17-910c8129226e
Version Independent ID: e41af96d-f015-a8e0-4449-7a508d7bccc8
Content: Domain events. design and implementation
Content Source: docs/architecture/microservices/microservice-ddd-cqrs-patterns/domain-events-design-implementation.md
Product: dotnet-architecture
Technology: microservices
GitHub Login: @nishanil
Microsoft Alias: nanil

@mvelosop I was viewing https://github.com/dotnet-architecture/eShopOnContainers/issues/721 and https://github.com/dotnet-architecture/eShopOnContainers/issues/700 and realized the problem may be the lack of domain service. Can you help me?

Hi @crclz, thanks for your feedback.
I don't quite get to see it that way.
Whether several related domain events must be in different or a single transaction is usually context specific, so, as usual, it depends, no golden rules here.
Different transactions, and hence, eventual consistency, with the need to handle compensating action adds a lot of complexity that wasn't deemed necessary here.
The idea of domain services is to handle processes that don't naturally correspond to an aggregate or domain model, but are part of the domain.
In this case, however, I see the handlers are coordinating an action between two aggregates, Order and Buyer, which is the typical the role of Application Services and that's where Domain Event Handlers fit in, so every seems OK here.
So, I don't think the use of a domain service would solve the atomicity issue here, which was a design decision, because the processes we are talking about are at the application services level, implemented using message handlers with MediatR.
The fact that there are no domain services here, is just because this a simplified model that only implemented a few features.
Hope this helps.


Added option for pauseLocationUpdates (iOS)

Noticed that iOS location updates stop with the app in background after about 15 minutes.
The new  pauseLocationUpdates config flag can be set to false to force location updates even if the background app has been automatically paused by iOS.
Addresses #147

Ok, will merge this. Thanks

I can confirm this resolved #147 - thank you both.

Good morning/afternoon,
@GeoTob thank you very much, I was needed this feature as well
@mauron85 , thank you in advance for the merge, do you know already in which release version it s going to be merged ? I have checked the alpha-8 but I did not see it in the code

Merged and published as 2.2.0. Thank you.


CommandBar near top of window opens up, causes clipping

Describe the bug

CommandBar appears to always open upward, whether or not there is space to do so.
Steps to reproduce the bug

Create a new blank app with

    <Grid>
        <CommandBar>
            <AppBarButton Icon="Delete" Label="Delete"/>
            <AppBarButton Icon="Save" Label="Save"/>
        </CommandBar>
    </Grid>

Run the app
Click on More button

Expected behavior

CommandBar opens downward.
Screenshots

Closed CommandBar:

Opened CommandBar:

Version Info

NuGet package version:

N/A. Targetting 18362 SDK.

Windows 10 version
Saw the problem?

Insider Build (18916)
Yes

May 2019 Update (18362)

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

Device form factor
Saw the problem?

Desktop
Yes

Mobile

Xbox

Surface Hub

IoT

Additional context

This is not only a problem when it is at the top of the page. It also makes it impossible to vertically center CommandBar.Content elements, and it produces an ugly gap below the buttons.
There is a 4px shift up of all elements inside the CommandBar when IsOpen switches to true, and I believe this is a bug.

For me, there is a workaround shared by @v-zhumin on StackOverflow:
<AppBarSeparator Height="40"/>

That one worked for me.
However, I see that @YuliKl did not use AppBarSeparator, so for her it must be caused by something else?
Can you pick this up and solve the bug so that the workaround is not needed anymore?
Can you investigate what other causes there might be?

@hansmbakker
I believe you are running into the same issue described in #1454.

I believe you are running into the same issue described in #1454, although I didn't check using your repro.

@kmgallahan
Please check my repro, because although there is similarity, there are really differences as well.
I am not using scaled text for example, which the issue you mention is about.


Added copy assignment operator.  Added unit tests

Proposed changes
Implemented the copy assignment operator using the copy and swap idiom. This enables us to ensure safe assignment of containers with a strong exception guarantee.
Types of changes
What types of changes does your code introduce?
Put an x in the boxes that apply

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[x] I have read the CONTRIBUTING doc
[x] Unit tests pass locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)

Codecov Report

Merging #40 into master will not change coverage.
The diff coverage is 100%.

@@          Coverage Diff          @@
##           master    #40   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           5      5
  Lines         408    426   +18
=====================================
+ Hits          408    426   +18

Impacted Files
Coverage Δ

tests/linkedListTest.cpp
100% <100%> (ø)
:arrow_up:

src/linkedList.cpp
100% <100%> (ø)
: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 b8bea68...ab5336c. Read the comment docs.


Added a "pre initialise" feature for quick start

Added a "pre initialise" feature for quick start: cv-lane will initialise everything then wait for any key to be pressed.  Once a key is pressed it will immediately start to move forward and run CV code.  This is useful for a race scenario when you need to start driving as soon as you can.
Updated the readme with the current details
Removed some old, unneeded LED blinking code

You legend


Limit maximum size of downloaded objects.

This PR introduces the new config option max-object-size that limits the size of individual RPKI objects. It is enabled by default and set to 20 Mbytes. The largest object currently in the RPKI – RIPE’s manifest – is a bit over 1 Mbyte, so this should give a bit of buffer.
The limit is implemented in the RRDP client which simply stops processing and errors out when any published object exceeds the size limit. For rsync, we pass the --max-size option if no other options are provided.
Resolves #462

I would also consider the AS0 ROA. That used to be quite large (megabytes) as well.

I checked APNIC’s AS0 ROA. It is about a megabyte, so comparable with RIPE’s manifest.


alt.Object.all contains nulls after resource restart

Description of the problem
alt.Object.all getter returns array with nulls (non-destroyed objects before resource was stopped) after resource restart

Reproduction steps

Execute this code

new alt.Object(
  'stt_prop_stunt_soccer_ball',
  new alt.Vector3(0, 7, 72),
  alt.Vector3.zero,
)
alt.log('alt.Object.all:', alt.Object.all)

Restart resource

Expected behaviour
Objects should be removed from alt.Object.all array after resource restart
Additional context
No response
Operating system
Windows 11
Version
15.0-dev291
Scope
client
Reproduction tested

[X] I confirm that I have made sure that this issue is also present on the newest dev version

can't reproduce on latest dev using the following code:
new alt.Object('stt_prop_stunt_soccer_ball', new alt.Vector3(0, 7, 72), alt.Vector3.zero)
alt.log('alt.Object.all:', alt.Object.all.map((o) => o instanceof alt.Object))

@xLuxy it was clientside issue

before release of v15 alt.LocalObject was named alt Object

@xLuxy is it fixed?

Read my message above.
xshady @.***> schrieb am Di., 30. Juli 2024, 16:49:

@xLuxy https://github.com/xLuxy is it fixed?
—
Reply to this email directly, view it on GitHub
https://github.com/altmp/altv-js-module/issues/281#issuecomment-2258541177,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQAFNNPXGNYHY7INFX3HAYLZO6RWJAVCNFSM6AAAAABLWI6DCSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJYGU2DCMJXG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

@xLuxy did you read my message that followed yours? xd

before release of v15 alt.LocalObject was named alt.Object

on your screen its alt.Object, this issue is about alt.LocalObject


Omitted words in the following sentence...

"If the installation steps in failed, you try to install using the GoFish package manager. GoFish describes itself as a cross-platform Homebrew."
Needs to be: "If the installation steps described in the sections above failed, you can install the AKS Engine using the GoFish package manager. GoFish describes itself as a cross-platform Homebrew."

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

ID: 143ccfc6-64a1-f7d9-e9ec-7e0b313f1f15
Version Independent ID: e59d1050-1d82-0792-dd64-7f0fa9816605
Content: Troubleshoot the AKS Engine on Azure Stack
Content Source: azure-stack/user/azure-stack-kubernetes-aks-engine-troubleshoot.md
Service: azure-stack
GitHub Login: @mattbriggs
Microsoft Alias: mabrigg

@walterov Thanks for bringing this to our notice. We are investigating into the issue and will update you shortly.

https://review.docs.microsoft.com/en-us/azure-stack/user/azure-stack-kubernetes-aks-engine-troubleshoot?view=azs-1802&branch=pr-en-us-1656


Fix query structure for nested comments

When I copy/pasted as is into graphiql it didn't work.  Looks like missing "nodes" for each nested child was the culprit?

Realized this is a copy of https://github.com/wp-graphql/docs.wpgraphql.com/pull/58 .  Closing...

Thanks! Just merged the change to the docs.


Add acknowledgement message for releases with no changelog entries

By detecting if the changelog content is empty, the release script would return undefined which then caused the release to abort.  We just change the logic to instead insert a line that indicates, "This release only contains documentation or internal changes." That prevents the release from aborting and provides a meaningful comment to fill the void of any otherwise empty space where the changelog entries would appear.
As explained in #49, this enables us to still add releases to the changelog even when all the changes are internal/documentation.

@yokuze @joshuacurtiss is this still a thing we want to land?

@onebytegone this seems reasonable to me. Thoughts?


Added fromContents method to Palette

This is important because we often cache the file contents in variable to not reread the image every time we need to obtain the color palette.

Implemented in v0.4.0.  Thanks for the PR!


Adding user as a config option (.snakebiterc)

For when your remote hdfs user is not the same as your local user.
The API was already there, I just passed 'user' along in the config.

At Spotify we had a discussion around this to not expose this deliberately because we don't want people to run as other people. If we do expose this, we should also add a command line flag (-u?).

I see. So, are we pending adding the -u flag or you guys don't want to expose it atm regardless?

@ravwojdyla what do you think?

So we discussed it before partially also in #63 (there is some code there as well), honestly I personally changed my mind a bit on this, whether we like it or not impersonation is a feature (that other people may want to use), moreover there are proper security options in place (aka impersonation settings and kerberos). I'm :+1: to effective user in config/cli.

@dterror could you rebase this on master, so we can merge this in?

Rebased

lgtm -> merge.

thanks @dterror !


Python QPS Tests

This is a continuation of #6216.
There was a dependency on python shared proto generation, which has now been pushed.
The only new changes since #6216 are generic server/client are supported.
Addresses #4178.

I've made the suggested changes

Implemented the feedback.  Also, there was a bug where specifying the c++ server was leaving lingering python processes, and that has been resolved.

Actually, there turns out to be more dependencies.
The problem seems to be that we are not running under the virtualenv provided by  tox and we are using system python instead.

test-this-please

Seems it's still failing. I was experimenting a was able to run it successfully with this change:
https://github.com/grpc/grpc/pull/6353/commits/f09a7f38d498097db9e10c4a81c9cbe259bd4f3d (just replace your last commit with this one)
https://github.com/grpc/grpc/pull/6353 for reference.

Performance tests are running now

python perf tests are passing, only ruby is failing:
TIMEOUT: qps_json_driver.ruby_protobuf_unary_ping_pong

LGTM, will merge once tests finish.


Fix NatCert href value to use variable.

the only change is the template syntax for credentialSubject.image?

Correct @davidlehn - it was a little whacky from compressing the SVG with SVGO


MWPW-159224: Stage domains mapping

Resolves: MWPW-159224
Before:

https://main--dc--adobecom.hlx.page/acrobat/how-to/test-links
https://main--dc--adobecom.hlx.live/acrobat/how-to/test-links

After

https://mwpw-159224--dc--adobecom.hlx.live/acrobat/how-to/test-links
https://mwpw-159224--dc--adobecom.hlx.page/acrobat/how-to/test-links

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 84.80%. Comparing base (fb4900d) to head (d404846).
Report is 3 commits behind head on stage.

Additional details and impacted files
@@            Coverage Diff             @@
##            stage     #890      +/-   ##
==========================================
+ Coverage   84.75%   84.80%   +0.05%
==========================================
  Files          48       48
  Lines        6148     6175      +27
==========================================
+ Hits         5211     5237      +26
- Misses        937      938       +1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


LspStop should remove related autocmds

Language server
No response
Requested feature
LspStop doesn't deal with the autocmds created by setup or launch. I think it'd be better to delete them, so that, after an LspStop, when you open another file that matches either the FileType or BufReadPost event patterns, the LS is NOT launched again, which is a bit unexpected to the unaware user.
It can be argued that this is only necessary is autostart is false.
Other clients which have this feature
No response

I am not sure if this is 100% correct, but this issue becomes irritating as it always pop up a warning for BufReadPost concerning an invalid character in the group name:
Erreur détectée en traitant Autocommandes BufReadPost pour "*" :
W18: Caractère invalide dans un nom de groupe
Appuyez sur ENTRÉE ou tapez une commande pour continuer
Erreur détectée en traitant Autocommandes BufReadPost pour "*" :
W18: Caractère invalide dans un nom de groupe
Appuyez sur ENTRÉE ou tapez une commande pour continuer

I think the offending lines are where the autocmd is defined:
https://github.com/neovim/nvim-lspconfig/blob/67f0d0025b118e7e328396d7732d97415a9afda4/lua/lspconfig/configs.lua#L69-L72

I found :au! lspconfig after :LspStop is a good work-around for the time being.

I've running into this problem when changing swapping the autostart to false dynamically, as the autocmds were not deleted.


pyradio: <IP_ADDRESS> -> <IP_ADDRESS>

Description of changes
Diff: https://github.com/coderholic/pyradio/compare/refs/tags/<IP_ADDRESS>...<IP_ADDRESS>
Changelog: https://github.com/coderholic/pyradio/releases/tag/<IP_ADDRESS>

Things done

Built on platform(s)

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

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

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

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

Done in #306434.


Add Switch Actuator 2/1

Please add following entry to the switch part in the index.js
case '100E':
          return ['BuschJaegerSchaltAktorAccessory', false];
Thank you.

Hi,
does the accessory behave just like any other switch actuator or did you need to do any other modifications? Which model is this? Please tell me the full name as appearing in the homebridge logs (or accessory information in HomeKit)

Hi,
it doesn't seem that there are further changes needed. It is a normal switch actuator (Sensor/Schaltaktor 2/1-fach für Busch-free@home®). The light can be switched via Homebridge after I made the change manually.
[2019-10-4 22:21:06] [BuschJaegerSysAp] initialising actuator Sensor/ Schaltaktor 2/1-fach Channel 0006 with uuid ABB700C9Bxxxch0006
[2019-10-4 22:21:06] [BuschJaegerSysAp] initialising actuator Sensor/ Schaltaktor 2/1-fach Channel 0006 with uuid ABB700C91xxxch0006
[2019-10-4 22:21:06] [BuschJaegerSysAp] Initializing platform accessory 'Sensor/ Schaltaktor 2/1-fach Channel 0006'...
[2019-10-4 22:21:06] [BuschJaegerSysAp] Initializing platform accessory 'Sensor/ Schaltaktor 2/1-fach Channel 0006'...

Thanks, I have added support for the actuator in commit 9891b6cfdc5ddb70aa063f8fb7c65c3f575dc082
I will probably release a new version this or next weekend after I have reworked the device discovery (no need for white-/blacklisting anymore) which should make things a lot easier.


A separate screen for handling permanent deletion of archived data

Once #380 and #381 are completed, we need a screen where:
[ ] archived items can be deleted in mass (i.e. delete all items that have been archived for 6 months or more
[ ] a specific archived item can be searched for a deleted permanently

How will permissions for this page work? As in, are there restrictions around which type of users would have access to see the page, or delete certain records?
How should the data be organized?  Would you want to filter or sort the data in anyway?


why .net slowly than python and run slowly in gpu than cpu?

I use tensorflow.net to predit classisify the images. my environment is tensoflow.net0.60.4 、Tensorflow.Keras 0.6.4、SharpCV 0.10.1 、Redist-windows-gpu 2.6.0、OpencvSharp4.runtime.win 4.4.020200915。I write code python and .net，and found .net version slowly than python.
here is my python code:
'''
model_path = "train-renforce.h5"
base_dir = 'dataset'
test_dir = os.path.join(base_dir,'test1')
model = tf.keras.models.load_model(model_path)
model.summary()
def predict(label,filepath):
# print(filepath)
img = cv2.imread(filepath)
print(img.shape)
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
x = np.expand_dims(img,axis=0)
x = x/255.0
preds = model.predict(x)
rs = np.argmax(preds,axis=1)
return rs[0]
labels = {0:'0.斑点',1:'1.发霉',2:'2.发芽',3:'3.红皮',4:'4.起泡',5:'5.油污',6:'6.正常',7:'7.白斑'}
total = 0
correct = 0
time_start = time.time()
for root,dirs,_ in os.walk(test_dir):
for dir in dirs:
dirpath = os.path.join(root,dir)
label = int(dir[0])
for ,,files in os.walk(os.path.join(test_dir,dir)):
for file in files:
filepath = os.path.join(dirpath,file)
rs = predict(label,filepath)
if (rs!=6 and label!=6) or(rs==6 and label==6):
correct = correct+1
total = total +1
time_end = time.time()
acc = float(correct)/total
print('总共' + str(total) + '张图片，正确预测' + str(correct) + '张,准确率' + str(acc) + '用时' +
str(time_end-time_start))`
'''
and this is .net code :
// tensorflow设置
//tf.debugging.set_log_device_placement(true);
tf.Context.Config.GpuOptions.AllowGrowth = true;
//tf.compat.v1.disable_eager_execution();
        var model = keras.Sequential(new List<ILayer>
        {
            keras.layers.InputLayer(input_shape:(220,112,3)),
            keras.layers.Conv2D(32,3,activation:"relu"),
            keras.layers.MaxPooling2D(2),
            keras.layers.Conv2D(64,(3,3),activation:"relu"),
            keras.layers.MaxPooling2D((2,2)),
            keras.layers.Conv2D(128,(3,3),activation:"relu"),
            keras.layers.MaxPooling2D((2,2)),
            keras.layers.Conv2D(128,(3,3),activation:"relu"),
            keras.layers.MaxPooling2D((2,2)),
            keras.layers.Flatten(),
            keras.layers.Dense(512,activation:"relu"),
            keras.layers.Dense(8,activation:"softmax")
        });
        model.summary();

        model.load_weights("ok-weight.h5");

        // 测试文件目录
        var test_dir = @"E:\peanut\peanut_train\dataset\test";
        DirectoryInfo dir = new DirectoryInfo(test_dir);
        DirectoryInfo[] subDirs = dir.GetDirectories();
        int count = 0;
        DateTime startTime = DateTime.Now;

        foreach (var folder in subDirs)
        {
            FileInfo[] files = folder.GetFiles();
            //List<NDArray> listCells = new List<NDArray>();

            foreach (var file in files)
            {

                var img = cv2.imread(file.FullName);
                img = cv2.cvtColor(img, SharpCV.ColorConversionCodes.COLOR_BGR2RGB);

                var x = np.expand_dims(img, axis: 0);
                x = x / 255.0f;
                var preds = model.predict(x);
                //print(preds);
                var rs = tf.arg_max(preds, 1);

                count++;
                //var rs = np.argmax(preds,axis:1);
                //print(rs.numpy()[0]);
            }
        }
        DateTime endTime = DateTime.Now;
        TimeSpan span = endTime.Subtract(startTime);
        print("共耗时：", span.Seconds, "处理图片：", count);

`
I run the code , python's code cost 27s with gpu, and .net cost 40s,why? How to fix it?

Can you retry v0.60.5?

I just did some experiment on my current C# code. I'm doing reinforcement learning that alternate between practice (lots of cpu computation and lots of prediction with the model) and training (dataprep and fit)
With version v0.40.1 I tried the CPU redist vs the GPU redist on exactly the same code. I believe the dataset and the model are small enough to fit into GPU memory
CPU redist : Practice 2.49h Train 5.88m
GPU redist : Practice 3.63h Train 9.21m
The GPU redist is 50% slower even for training.
I will try to do the same with v0.60.5

Ok just did same test with v.60.5
CPU redist : Practice 4.09h Train 8.05m
GPU redist : Practice 4.4h Train 6.55m
So for the prediction part, GPU is 9% slower but for training GPU is 20% faster than CPU
Knowing that it seems that tensorflow is using all of my 12/24 cores cpu during the training, could we assume that the GPU version is 10-15x faster than a mono-core CPU ?

@CrimyTheBold It's not always, because there is I/O cost underlying.
Do you have a small piece code to demostrate the slow phenomenon?

the prediction part being slower is not surprising because I predict values one by one instead of a big batch (due to the nature of underlying algorythm, I cannot do otherwise). So I think, it is the worst case scenario in terms of I/O : for each prediction, the input has to be marshaled and transfered to the GPU, make a single forward pass, get the result back to the CPU and un-marshal it.
It is not a problem for me because I intend to multithread the "Practice part" doing predictions  with multiple cloned models on CPU and keep the training model on GPU.
I could build some code to test CPU vs GPU predictions with different batch size to see the difference, that could be interesting.
Is there a way to force a model on a specific device, like the Tensorflow in python ?

tf.device api is not implemented yet.
api/ function level comparison is more helpful.
model level is hard to find out root cause.


Integrating MQTT Functionality for IR Signal Reception

Hello,
First of all, thank you very much for the work done, it has helped me understand better the functionality of the Beo4.
I would like to modify the project to add MQTT functionality so that the received signals can be interpreted by a home automation box (Home Assistant) and control various connected devices, scenes, automatism, etc...
Requested Feature
I have attempted to modify the code to integrate MQTT (see below), but I am facing issues with the responsiveness and reliability of the IR signal reception.
The ESP32 console generates numerous logs which disrupt the reading of the remote control signals, making the usage very unresponsive.
Help Needed
Do you have any suggestions or have you encountered this issue before? Your assistance would be greatly appreciated.
If you have any question don't hesitate to contact me !
Thank you for your help.
Code
#include <Arduino.h>
#include "IrBeo4.h"
#include "IrBeo4Info.h"

#include <WiFi.h>
#include <PubSubClient.h>  // MQTT Library
#include <ArduinoJson.h>   // JSON Library

// Wifi setup
const char* ssid = "<ssid>";
const char* password = "<password>";

// MQTT Setup
const char* mqtt_server = "<ip_adress>";
const int mqtt_port = 1883;
const char* mqtt_topic = "beomote/command";
const char* mqtt_user = "mqtt";
const char* mqtt_password = "pass-mqtt";

WiFiClient espClient;
PubSubClient client(espClient);

#define IR_RX_PIN 34            // IR receive pin
IrBeo4 beo4(IR_RX_PIN);         // instance

const int beoId = 1; // Setup for each instance of esp32

const char* blank_message = "{'beoSource':null,'beoCommand':null,'beoCode':null,'beoId':1}";  // Reset message

xQueueHandle beo4_rx_queue;     // queue

// alternative solution with callback function
//
void beo_code_cb(uint32_t beo_code) {
  Serial.printf("beo_code_cb: %04x %s %s \n",
                beo_code,
                beo_src_tbl(beo_code),
                beo_cmd_tbl(beo_code));

  StaticJsonDocument<200> doc; // JSON Creation
  doc["beoSource"] = beo_src_tbl(beo_code); // Add attribute
  doc["beoCommand"] = beo_cmd_tbl(beo_code); // Add attribute
  doc["beoCode"] = beo_code; // Add attribute
  doc["beoId"] = beoId; // Id of the receiver

  char message[256]; // String to the the serialisation
  serializeJson(doc, message); // JSON serialize

  // Send MQTT message
  if (client.connected()) {
    client.publish(mqtt_topic, message);
    // Reset message
    client.publish(mqtt_topic, blank_message);
  } else {
     Serial.println("MQTT connection lost");
  }
}

void connectWifi() {
  delay(10);
  // Connecting to a WiFi network
  Serial.printf("\nConnecting to %s\n", ssid);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(250);
  }

  Serial.println("");
  Serial.print("WiFi connected on IP address ");
  Serial.println(WiFi.localIP());
}

void connectMQTT() {
  String clientId = "BeoEye";
  while (!client.connected()) {
    Serial.printf("MQTT connecting as client %s...\n", clientId.c_str());

    if (client.connect("ESP32Client", mqtt_user, mqtt_password)) {

      Serial.println("MQTT connected");
      client.publish(mqtt_topic, "Hello from BeoEye");
      // ... and resubscribe
      client.subscribe(mqtt_topic);
    }
    else {
      Serial.printf("MQTT failed, state %s, retrying...\n", client.state());
      delay(500);
    }
  }
}

void setup() {
  Serial.begin(115200);

  // Add wifi conection
  connectWifi();
  // Setup MQTT server
  client.setServer(mqtt_server, mqtt_port);

  beo4_rx_queue = xQueueCreate(50, sizeof(uint32_t));
  //xTaskCreatePinnedToCore(beo4_task,"beo4_task",10000,NULL,0,&beo4_task_h,0);
  beo4.Begin(beo4_rx_queue);
  printf("beo4 started, RX=%d\n",IR_RX_PIN);

}

void loop() {
  // Check every 50 sec if the server is still connected
  if (!client.connected()) {
    connectMQTT();
  }
  client.loop();

  delay(50);
}

Logs
.........[  2849][D][WiFiGeneric.cpp:1040] _eventCallback(): Arduino Event: 7 - STA_GOT_IP
[  2856][D][WiFiGeneric.cpp:1103] _eventCallback(): STA IP: <IP_ADDRESS>, MASK: <IP_ADDRESS>, GW: <IP_ADDRESS>

WiFi connected on IP address <IP_ADDRESS>
beo4 started, RX=34
MQTT connecting as client BeoEye...
[  2945][I][IrBeo4.h:78] resetRxFsm(): ERR: FSM_S_0 state failed : t=2945480 fsm=1 pc=2

[  2974][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=2947277 fsm=1 pc=1

[  3001][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=2947277 fsm=1 pc=0

[  3017][I][IrBeo4.h:78] resetRxFsm(): ERR: FSM_S_0 state failed : t=3017588 fsm=1 pc=22

MQTT connected
[  3581][I][IrBeo4.h:78] resetRxFsm(): ERR: FSM_S_0 state failed : t=3581265 fsm=1 pc=2

[  3664][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=3644369 fsm=1 pc=20

[  3688][I][IrBeo4.h:78] resetRxFsm(): ERR: FSM_S_0 state failed : t=3688129 fsm=1 pc=14

[  3761][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=3741326 fsm=1 pc=17

[  3788][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=3741326 fsm=1 pc=0

[  3815][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=3741326 fsm=1 pc=0

[  3842][I][IrBeo4.h:78] resetRxFsm(): TIMEOUT occured : t=3741326 fsm=1 pc=0

Ok, just a quick reply for now, I'm off on vacation tomorrow.
From my point of view, the call-back function is the wrong place to send the MQTT messages. My advice would be: have a look for the task solution in the example main.cpp file. You can do further tests with sending the MQTT Frames inside the while() loop instead of the Serial.printf()
  void beo4_task(void *parameter) {
  static uint32_t beo4Code=0;
  while(1) {
    if(pdTRUE==xQueueReceive(beo4_rx_queue,(void*)(&beo4Code),portMAX_DELAY)) {
      Serial.printf("beo4_task:   %04x %s %s\n",beo4Code,beo_src_tbl(beo4Code),beo_cmd_tbl(beo4Code));
    }
  }
}

The two tasks are decoupled, i.e. the beo4_rx_task() generates the Beo4-codes and puts them into the queue and on the other side the beo4_task() in main.cpp gets the Beo4 codes out of the queue again.
BTW, just another little thought. My plan for the future is to make a solution for esphome as I have turned off MQTT (with mosquito broker etc) in my HA installation since I migrated all my ESP32 devices (e.g. Shelly, sonoff and DIY ) to esphome.

Thanks for the quick response.
I'll take a look and test the implementation with the task solution.
The implementation with Esphome, is a great idea.
During my research I first looked to see if anyone had implemented a function for the "remote_receiver" component.
Have a nice holiday

Have a look at the examples directory for a Home Assistant intergration via MQTT
https://github.com/aanban/esp32_beo4/tree/main/examples/esp32_beo4_HA

Thanks for the integration with Home Assistant, I'd managed to get it working following your instructions but the implementation was still causing problems.
Can't wait to test it


[1.5pts] Prepare for deployment [GROUP ACTIVITY]

Get the back-end API ready for deployment, including environment configurations. Prepare the project for deployment by configuring production settings and ensuring it's deployment-ready.

No enough time


fmap issue

under demos/fmap_failexemple 3 subjects for which all files do not populate -- have figured why
-- note my bad, this includes the 'old' suggested change about the trial type on the face rep data set

I only see the participants.tsv.
Were by any chance the truncated files git ignored?

You may have to use git add --force given this gitignore
https://github.com/bids-standard/bids-matlab/blob/dev/demos/.gitignore

OMG - yes, forced add and push, it's finally there

Will try to documment the debugging in the PR.
dir 'entity' seems unknown for several fmaps
>> BIDS = bids.layout(pwd, 'verbose', true, 'use_schema', true)

Indexing dataset:
	/home/remi/github/bids/matlab/demos/fmap_failexemple
 Indexing subject: sub-55809 [.]
 Indexing subject: sub-57460 [.Warning:
Skipping file: sub-57460_ses-1wkfollowup_acq-gre_dir-AP_run-1_magnitude1.nii.gz.
 Unknown entities: 'dir'
Try using the parameter: " 'use_schema', false "

> In bids.internal.error_handling (line 57)
  In bids.internal.append_to_layout (line 112)
  In bids.layout>parse_using_schema (line 410)
  In bids.layout>parse_subject (line 351)
  In bids.layout (line 188)

According to the spec only pepolar support the dir entity
https://bids-specification.readthedocs.io/en/latest/modality-specific-files/magnetic-resonance-imaging-data.html#types-of-fieldmaps
https://bids-specification.readthedocs.io/en/latest/modality-specific-files/magnetic-resonance-imaging-data.html#case-4-multiple-phase-encoded-directions-pepolar

Quick work around for now is to ask bids-matlab to index without relying on the schema.
>> BIDS = bids.layout(pwd, 'verbose', true, 'use_schema', false)

Indexing dataset:
	/home/remi/github/bids/matlab/demos/fmap_failexemple
 Indexing subject: sub-55809 [.]
 Indexing subject: sub-57460 [..]
 Indexing subject: sub-57507 [.]

BIDS =

  struct with fields:

              pth: '/home/remi/github/bids/matlab/demos/fmap_failexemple'
      description: [1×1 struct]
         sessions: {}
     participants: [1×1 struct]
         subjects: [1×4 struct]
             root: [0×0 struct]
    is_datalad_ds: 0

>> bids.query(BIDS, 'data')

ans =

  18×1 cell array

    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-55809/ses-Baseline/fmap/sub-55809_ses-Baseline_acq-se_dir-AP_run-1_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-55809/ses-Baseline/fmap/sub-55809_ses-Baseline_acq-se_dir-PA_run-1_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-AP_run-1_magnitude1.nii.gz'}
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-AP_run-1_magnitude2.nii.gz'}
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-AP_run-1_phasediff.nii.gz' }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-LR_run-1_magnitude1.nii.gz'}
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-LR_run-1_magnitude2.nii.gz'}
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-1wkfollowup/fmap/sub-57460_ses-1wkfollowup_acq-gre_dir-LR_run-1_phasediff.nii.gz' }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-Baseline/fmap/sub-57460_ses-Baseline_acq-se_dir-AP_run-1_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-Baseline/fmap/sub-57460_ses-Baseline_acq-se_dir-AP_run-2_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-Baseline/fmap/sub-57460_ses-Baseline_acq-se_dir-PA_run-1_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57460/ses-Baseline/fmap/sub-57460_ses-Baseline_acq-se_dir-PA_run-2_epi.nii.gz'              }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-AP_run-1_magnitude1.nii.gz'      }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-AP_run-1_magnitude2.nii.gz'      }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-AP_run-1_phasediff.nii.gz'       }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-LR_run-1_magnitude1.nii.gz'      }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-LR_run-1_magnitude2.nii.gz'      }
    {'/home/remi/github/bids/matlab/demos/fmap_failexemple/sub-57507/ses-Baseline/fmap/sub-57507_ses-Baseline_acq-gre_dir-LR_run-1_phasediff.nii.gz'       }

If you want to stick to the schema, then this would require updating the spec by adding the dir entity for all fieldmaps.

might relate to https://github.com/bids-standard/bids-validator/issues/1589

i see that, although dir- should really be allowed any where, donæt you think

Let's say I would not be shocked to have it added to many mri datatype instead of letting acq do the heavy lifting.

Will probably switch this PR to draft until we see things more clearly on this front, it that is ok with you?

tagged you in the bids validator issue -- the entitiy says you can, and it silly to have acq-se_dir-AP valid but acq-gre_dir-AP invalid

yes


fix bug in uploadAemAsset when used through browser

Description

The change done in https://github.com/adobe/acc-js-sdk/pull/91 didn't work correctly when sdk is used inside browser.
Noticed that we have two different implementations of transport layer - axios(node) & fetch(browser).
I didn't knew that earlier & had only tested with a nodejs app.
Two issues -

Axios automatically serialized json body but fetch doesn't.
Axios handled to return json response while fetch handled for string response.

Related Issue

ttps://github.com/adobe/acc-js-sdk/pull/91
Motivation and Context

How Has This Been Tested?

same as linked PR
Screenshots (if appropriate):
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

@mkiki , sorry for inconvenience, but my last code failed on browser. Please add review.

Will fix the transport function to have a consistent behavior in future PR


Adding support for MEESA v.1.1 native model regions

This pull request needs to be revised be the MEESA team.

Thanks @Renato-Rodrigues for starting the PR! The error messages from the GitHub Actions workflow are a bit difficult to read at first, so the relevant lines are:
Error parsing file mapping values are not allowed here
  in "mappings/meesa_v1.1.yaml", line 3, column 8
Error parsing file while parsing a block collection
  in "definitions/region/model_native_regions/meesa_v1.1.yaml", line 1, column 2
expected <block end>, but found '<block sequence start>'
  in "definitions/region/model_native_regions/meesa_v1.1.yaml", line 2, column 3

Basically, the yaml files cannot be parsed correctly...
Also, there seems to be some confusion in the mappings-file, the entry "common_regions" exists twice...

The second error is fixed. I am not sure what causes the first one although.

@danielhuppmann  It should be fixed now. There was a rogue space in the yaml file.

Thanks for the combined effort, @Renato-Rodrigues & @tatar99!


Dialogue Editor Bugs

Describe your bug here.
This isn't really a bug, but a compilation of bugs I guess. As the title says, this is mainly with the dialogue editor:

The dialogue sound doesn't play in the editor unless if it's the default dialogue sound
The characters defaults to BF no matter which character you choose, with the exception of GF. This shouldn't affect dialogue files, since they can still run the same, but you can't choose animations beforehand (i.e. to choose the animation, you have to edit the dialogue file manually)
The dialogue speed works in the editor, but it seemingly doesn't when you run the dialogue file in a song
Seems like the editor will lag the more words you type in a single line. While this is probably normal, it seems to lag very obviously now

On a side note, it seems that after 0.6.3, bugs have been popping up left and right in everything. Might wanna look into those.
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
Nothing (except for adding modpacks).

 Sorry for the trouble.
However, there are still some bugs though, might wanna still check for those.


Update microsoft-365-guest-settings.md

Made changes to the navigation as Sharing is under Policies in the new sharepoint admin center

@JohanFreelancer9 Please copy review

Issue#https://github.com/MicrosoftDocs/microsoft-365-docs/issues/8098

@MikePlumleyMSFT Please merge this PR. Thanks


Calico upgrade failing for us from 3.18 to 3.32

Seeing differing behavior of calico-node on startup on upgrade vs fresh deployment. Using manifest, upgrading from 3.18 to 3.23. I noticed in node logs, on fresh deployment:
2022-11-15 07:08:50.000 [INFO][9] startup/startup.go 425: Early log level set to info
2022-11-15 07:08:50.000 [INFO][9] startup/utils.go 127: Using NODENAME environment for node name ipv6airctl01
2022-11-15 07:08:50.000 [INFO][9] startup/utils.go 139: Determined node name: ipv6airctl01
2022-11-15 07:08:50.000 [INFO][9] startup/startup.go 94: Starting node ipv6airctl01 with version v3.23.2
2022-11-15 07:08:50.000 [INFO][9] startup/startup.go 430: Checking datastore connection
2022-11-15 07:08:50.004 [INFO][9] startup/startup.go 454: Datastore connection verified
2022-11-15 07:08:50.004 [INFO][9] startup/startup.go 104: Datastore is ready

However on upgrade I only see the logging configuration then it jumps to Typha client logs, where it errors out:
2022-11-15 06:26:29.536 [INFO][11316] status-reporter/startup.go 425: Early log level set to info
2022-11-15 06:26:29.537 [INFO][11316] status-reporter/config.go 60: Found FELIX_TYPHAK8SSERVICENAME=calico-typha
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/discovery.go 189: Found ready Typha addresses. addresses=[]discovery.Typha{discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)}}
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/startsyncerclient.go 56: Connecting to Typha. addr=[]discovery.Typha{discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)}}
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 72:  requiringTLS=false
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 151: Syncer started addresses=[]discovery.Typha{discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)}} connID=0x0 type="node-status"
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 155: connecting to typha endpoint [2604:1380:45e1:6400::2]:5473 (1 of 1) connID=0x0 type="node-status"
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 214: Starting Typha client
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 72:  requiringTLS=false
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 266: Connecting to Typha. address=discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)} connID=0x0 type="node-status"
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 281: Connected to Typha. address=discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)} connID=0x0 type="node-status"
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 316: Started Typha client main loop connID=0x0 connection=&discovery.Typha{Addr:"", IP:"", NodeName:(*string)(nil)} type="node-status"
2022-11-15 06:26:29.542 [ERROR][11316] status-reporter/sync_client.go 308: Failed to read from server connID=0x0 connection=&discovery.Typha{Addr:"", IP:"", NodeName:(*string)(nil)} error=EOF type="node-status"
2022-11-15 06:26:29.542 [INFO][11316] status-reporter/sync_client.go 180: Typha client Context asked us to exit connID=0x0 type="node-status"
2022-11-15 06:26:29.542 [FATAL][11316] status-reporter/startsyncerclient.go 77: Connection to Typha failed
2022-11-15 06:26:29.747 [WARNING][11271] felix/health.go 211: Reporter is not ready. name="int_dataplane"

I searched for "Using NODENAME environment for node name" in the upgraded calico-node Pod logs, can't find any occurence. Which is strange because that log is immediately after the first log from ConfigureLogging: https://github.com/projectcalico/calico/blob/release-v3.23/node/pkg/lifecycle/startup/startup.go#L90
How is it getting interrupted and straight to the ReadTyphaConfig call on upgrade? https://github.com/projectcalico/calico/blob/release-v3.23/typha/pkg/syncclientutils/config.go#L51
Any ideas what may be happening here? I also noticed that in the Typha error, it is missing the address, but has it when it connects:
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 281: Connected to Typha. address=discovery.Typha{Addr:"[2604:1380:45e1:6400::2]:5473", IP:"2604:1380:45e1:6400::2", NodeName:(*string)(0xc000b80810)} connID=0x0 type="node-status"
2022-11-15 06:26:29.541 [INFO][11316] status-reporter/sync_client.go 316: Started Typha client main loop connID=0x0 connection=&discovery.Typha{Addr:"", IP:"", NodeName:(*string)(nil)} type="node-status"
2022-11-15 06:26:29.542 [ERROR][11316] status-reporter/sync_client.go 308: Failed to read from server connID=0x0 connection=&discovery.Typha{Addr:"", IP:"", NodeName:(*string)(nil)} error=EOF type="node-status"
```:q

we finally figured it out, turns out the old version of calico-typha (3.18) was still running and its incompatible with newer calico-node. it was due to rollingUpdateStrategy. This was a single node cluster... and we had set replicas to 3. So 2 Pending, 1 Running. New replica can't spawn, presumably because typha uses hostNetwork so port is in use. Old Pod can't be removed because that would result in 3/3 unavailable. That's why old version of typha was still running...
We added the cluster-proportional-autoscaler (https://github.com/kubernetes-sigs/cluster-proportional-autoscaler) to scale typha for 1 replica for single node, 2 for 2-node, and 3 for 3node+... But I don't think this solves our issue. During upgrade, we have 1/1 running, rather than 1/3 like before. But we can't scale this down either because that results in 100% unavailable...
How can we achieve this? To handle 1 node, 2 node, and 3+ node clusters? Only way I can see is setting maxUnavailable to 100%... but then we don't have zero downtime for Typha for upgrades. Do you see any issues with that?


chore: update gw-browse version [SAW-1272]

question: @SparoHawk why the downgrade of the vue-form-generator?

Versioning was incorrect. It's not an actual downgrade.


Fix VSCode prints ""<--command--> failed"

Purpose

Fix VSCode prints ""<--command--> failed"

Fixes #21755
Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Closing as tests are failing ...


Upgrade swagger-parser to latest version (2.1.16)

This PR updates swagger-parser to the latest version. This version also depends on a new version of snake-yaml (v2) which should solve some issues with Gradle 8.

+1 for this

Closing this as I don't longer use this plugin, and there are a bunch of new swagger-parser releases in the mean time.


Refactor codebase.split the code into different different files and f…

Pull Request Summary:
Purpose:
This pull request, in response to issue #33, addresses a critical need for codebase refactoring. The primary objective is to enhance the overall structure and maintainability of the project.
Changes Made:
In this pull request, we have undertaken a significant refactoring effort. Prior to this, the entire codebase was contained within a single monolithic file (main.py). The key changes introduced are as follows:

Modularization: We have divided the codebase into separate, logically organized modules. These include actions, config, dialogs, exceptions, prompts, and utils.

Utility Functions: Within the newly created utils module, we have introduced utility functions to aid in various aspects of the codebase. This includes functions such as prompt_util, ansi_colors,screenshot_util and action_util.

Impact of Changes:
The ramifications of these changes extend beyond immediate enhancements. The objectives are multi-fold:

Improved Navigability: The modularization ensures that the codebase is more navigable and comprehensible, fostering efficient development and maintenance.

Foundation for Future Development: This refactoring serves as a solid foundation for future feature development and bug fixes, making the project more adaptable and scalable.

Testing Done:
To validate the integrity of this refactoring, comprehensive manual testing has been conducted. The testing process covered all functionalities to ensure that they continue to perform as expected. This rigorous testing regimen aimed to identify and mitigate any potential regressions introduced during the refactoring process.
Call to Action:
Feedback on the new structure, especially with regard to naming conventions and the modularization approach, is highly appreciated.

@gtlYashParmar Thank you for the PR. It looks good at a high level, but I'll dive deeper and let you know if I have any questions

@gtlYashParmar nice job with this refactor. It passed my tests. I'll merge in. I have a little more feedback I'll share shortly.

Thank you, @joshbickett. This is @gtlYashParmar, reaching out from my main account. I'm about to submit a feature enhancement related to running this application via Docker container. I'll detail this in an upcoming issue and would appreciate your feedback on it.

@Yash-1511 The additional thought I had on this PR was , what do you think about changing the name of /actions to /models

@joshbickett Renaming the section to models seems feasible. Additionally, we've incorporated several functions dedicated to actions, which include tasks such as performing specific operations, validation, and summarization. If you agree, we can proceed with this modification. I also suggest that actions might be a more descriptive and suitable name than models for the section related to interactive functionalities.


fix(readme): Added GoogleMap import

I found this import needed for using 'google.maps' namespace in the ts file.

I don't believe this is the right fix - importing from @angular/google-maps shouldn't be declaring any namespaces in the file. You should consult with your build system to determine how to correctly use namespaces


K8 spxc 172 tests

Test name
Status

storage
passed

recreate
passed

scaling
passed

big-data
passed

init-deploy
failed

limits
passed

scaling-proxysql
passed

monitoring
passed

self-healing
passed

demand-backup
passed

upgrade
passed

monitoring-2-0
passed

self-healing-advanced
passed

affinity
passed

upgrade-consistency
failed

security-context
passed

operator-self-healing
passed

one-pod
passed

scheduled-backup
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

big-data
passed

storage
passed

init-deploy
failed

scaling
passed

recreate
passed

limits
passed

self-healing
passed

scaling-proxysql
passed

upgrade
passed

monitoring
passed

demand-backup
passed

self-healing-advanced
passed

upgrade-consistency
failed

monitoring-2-0
passed

security-context
passed

affinity
passed

operator-self-healing
passed

scheduled-backup
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

recreate
failed

big-data
failed

storage
failed

scaling
failed

init-deploy
failed

self-healing
failed

scaling-proxysql
failed

demand-backup
failed

limits
passed

self-healing-advanced
failed

upgrade
failed

monitoring
failed

operator-self-healing
failed

scheduled-backup
failed

upgrade-consistency
failed

monitoring-2-0
failed

affinity
passed

security-context
failed

one-pod
failed

auto-tuning
failed

proxysql-sidecar-res-limits
failed

Test name
Status

storage
passed

scaling
failed

init-deploy
failed

recreate
passed

big-data
failed

limits
passed

self-healing
passed

scaling-proxysql
passed

monitoring
passed

upgrade
passed

demand-backup
failed

monitoring-2-0
passed

self-healing-advanced
failed

upgrade-consistency
failed

operator-self-healing
passed

security-context
failed

affinity
passed

one-pod
failed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

scaling
passed

recreate
failed

init-deploy
failed

big-data
failed

storage
passed

limits
passed

self-healing
passed

scaling-proxysql
passed

demand-backup
failed

monitoring
passed

upgrade
passed

monitoring-2-0
passed

self-healing-advanced
failed

upgrade-consistency
failed

security-context
failed

operator-self-healing
passed

affinity
passed

scheduled-backup
failed

one-pod
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

storage
passed

init-deploy
failed

recreate
passed

big-data
failed

scaling
passed

limits
passed

self-healing
passed

monitoring
passed

scaling-proxysql
passed

demand-backup
failed

monitoring-2-0
passed

upgrade
passed

self-healing-advanced
passed

affinity
passed

upgrade-consistency
failed

security-context
failed

one-pod
failed

operator-self-healing
passed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

init-deploy
passed

storage
passed

recreate
passed

scaling
passed

big-data
failed

self-healing
passed

scaling-proxysql
passed

limits
passed

monitoring
passed

demand-backup
failed

upgrade
passed

self-healing-advanced
passed

monitoring-2-0
passed

upgrade-consistency
passed

security-context
failed

affinity
passed

operator-self-healing
passed

one-pod
failed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

big-data
failed

init-deploy
passed

scaling
passed

recreate
passed

storage
passed

self-healing
passed

scaling-proxysql
passed

limits
passed

upgrade
passed

demand-backup
failed

monitoring
passed

self-healing-advanced
passed

upgrade-consistency
passed

security-context
failed

monitoring-2-0
passed

operator-self-healing
passed

affinity
passed

one-pod
failed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

big-data
failed

scaling
passed

recreate
passed

init-deploy
passed

storage
passed

self-healing
failed

scaling-proxysql
passed

limits
passed

monitoring
passed

upgrade
passed

self-healing-advanced
passed

demand-backup
failed

monitoring-2-0
failed

operator-self-healing
passed

upgrade-consistency
passed

security-context
failed

affinity
passed

one-pod
failed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

recreate
failed

big-data
failed

storage
passed

scaling
passed

init-deploy
passed

self-healing
failed

scaling-proxysql
passed

limits
passed

self-healing-advanced
failed

upgrade
failed

operator-self-healing
passed

monitoring
passed

demand-backup
failed

upgrade-consistency
passed

monitoring-2-0
passed

security-context
failed

affinity
passed

one-pod
failed

scheduled-backup
failed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

init-deploy
passed

recreate
failed

scaling
failed

big-data
passed

storage
passed

demand-backup
passed

scaling-proxysql
passed

self-healing
failed

limits
passed

self-healing-advanced
passed

upgrade
passed

monitoring
passed

upgrade-consistency
passed

operator-self-healing
passed

security-context
passed

monitoring-2-0
passed

scheduled-backup
passed

affinity
passed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

recreate
passed

storage
passed

init-deploy
passed

scaling
failed

big-data
passed

self-healing
passed

limits
passed

monitoring
passed

demand-backup
passed

self-healing-advanced
passed

monitoring-2-0
passed

scaling-proxysql
passed

affinity
passed

upgrade
passed

operator-self-healing
passed

upgrade-consistency
passed

security-context
passed

one-pod
passed

scheduled-backup
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed

Test name
Status

scaling
passed

big-data
passed

storage
passed

init-deploy
passed

recreate
passed

scaling-proxysql
passed

self-healing
passed

limits
passed

upgrade
passed

demand-backup
passed

monitoring
passed

self-healing-advanced
passed

upgrade-consistency
passed

security-context
passed

monitoring-2-0
passed

operator-self-healing
passed

affinity
passed

scheduled-backup
failed

one-pod
passed

auto-tuning
passed

proxysql-sidecar-res-limits
passed


Improve jinja rendering context

add now datetime value to page/post context
add boolean is_develop to differentiate development and build modes

is_prod instead of is_develop in context - to indicate production build


CMake installs desktop file in different folder than repo package, which login manager doesn't pick up

Regression?
No
System Info and Version
 System/Version info
Hyprland, built from branch main at commit 0e86808e5912823f1c6bea1b6d5fcae297fc9f57  (cursor: Better xcursor implementation (7178)).
Date: Mon Aug 5 19:58:21 2024
Tag: v0.41.2-166-g0e86808e, commits: 5052

flags: (if any)

System Information:
System name: Linux
Node name: kashiro
Release: 6.10.3-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Sun, 04 Aug 2024 05:11:32 +0000

GPU information:
08:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA104 [GeForce RTX 3070 Ti] [10de:2482] (rev a1) (prog-if 00 [VGA controller])
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64  555.58.02  Release Build  (archlinux-builder@)

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

Description
Not sure if this belongs here or on "ly"'s side, but on my arch system I had initially installed Hyprland stable from the repos and ly as display manager. However I switched to a compiled version to get the focus bugfix for games, thus compiling Hyprland myself via cmake.
The docs on the website list the following steps to compile and install Hyprland via cmake:

git clone --recursive https://github.com/hyprwm/Hyprland
cd Hyprland
make all && sudo make install

and I noticed that ly didnt show the hyprland session anymore.
Upon further inspection, it looks like, while the stable arch repo package installs the hyprland desktop file in /usr/share/wayland-sessions (see here https://archlinux.org/packages/extra/x86_64/hyprland/), the cmake compiled version will install it in /usr/local/share/wayland-sessions.
It could be that this is intended and that ly must be fixed to accommodate, but it could also be that there's an inconsistency that was missed in the cmake instructions, right?
How to reproduce

install ly from arch repos and compile hyprland with cmake using the aforementioned instructions in the documentation
notice how the hyprland.desktop file is not installed to /usr/share/wayland-sessions like the repo package would, and how ly does not offer Hyprland as a session to login to.

Crash reports, logs, images, videos
No response

CMake's default PREFIX is /usr/local, so as not to conflict with Arch's prefix /usr. This is likely a bug on ly's side, but you can also work around this by using hyprland-git from the AUR.

or override cmake's default with a manual compile


Arch's and Fedora's dependencies not properly handled by LLI binary

Fedora's dnf (and yum) is actually a python script. Since LLI includes its own python libraries, there seems to be some kind of library mismatch when the binary tries to run dnf commands. The only known output at the moment is that the dnf list installed command exits with a non-zero exit code (1).
Proposed workaround: use rpm to check installed packages, then provide a command to the user to run manually to install any missing dependencies.

Another option for our Fedora users would be to host a bash script that we then execute on Fedora. They would still get automated installs that way.

We've opted for users having to perform a manual install until we can figure out a proper fix.

Added Arch to the issue description. We can separate these into two issues if desired.

We've opted for users having to perform a manual install of dependencies with a continue question to prompt the user before proceeding until we can figure out a proper fix.

Using KDE on Fedora 40 here. When running LLI in CLI, I get 2024-08-29 13:53:07 ERROR: Your distro requires manual dependency installation.  but no prompt to install dependencies or which dependencies are needed. I checked here and have verified that all the packages listed are installed. Is that list up-to-date?

Most likely we need to implement a bypass for Fedora. Most likely we are just grabbing the distro and saying no, even if all the packages are fine. Should be an easy fix.

If you use the most recent release (alpha-14) simply run it with ./LogosLinuxInstaller on fedora 40 you should get something like this, which will tell you the command to run to install the dependencies:

I just did this in a virtual machine, then chose "Continue", then the TUI exited prematurely. When running it again, it no longer gives the info on how to install the dependencies, but then it does get stuck, as you say:

This is definitely a bug on our end, and we'll see if we can sort it out. I'll try to upload the log file next.

Logos_on_Linux.log

I think I found the issue with it canceling on you right away on choosing continue.
I'm not sure about the error being reported in the second issue.

See https://github.com/FaithLife-Community/LogosLinuxInstaller/pull/163#issuecomment-2388885394


Smooth time

Added Code to fade changing Digits, with optional switches to show seconds / fade digits.

I really appreciate your effort, but I don't think it's a visual improvement. With all the fading, It all becomes a bit messy, IMHO.

I agree that when seconds are displayed it's messy. That's the reason I
left them out in the first request.
But when you don't display seconds it's a really smooth effect similar
to those old displays which took some time to update. The reason I went
down this fading way, was that IMHO the original code made the mirror
restless. So I removed the seconds and added the digit-wise fading.
If you think it would look better to just fade hours and minutes, I
could change to version. If not would adding the code as an non default
option be ok with you?
Am Fr, 29. Jan 2016, um 15:13, schrieb Michael Teeuw:

I really appreciate your effort, but I don't think it's a visual
improvement. With all the fading, It all becomes a bit messy, IMHO.

Reply to this email directly or view it on GitHub:
https://github.com/MichMich/MagicMirror/pull/65#issuecomment-176775050

Yes, using an option in the config would be ok. :)


Symbolic Math Toolbox needed

Hi Bobbie,
You will want to list the requirements (matlab version + toolboxes) needed. Looks like you call vpa in the crucial 3-line weight gen func, for non-standard orders. I can't run it on laptop since don't have that toolbox... test_sto2d_bie works great, but test_helm2d_bie needs vpa.
Cheers, Alex

Hi Alex,
This should be fixed now.
Thanks,
Bobbie

Hi Alex,
This should be fixed now.
Thanks,
Bobbie


Data Structures Week 4: Parallel Computing and Hashmaps  Notes, Qs and Hacks, and MCQ 4 score Individual Review Ticket - Liav Bar

Notes, Qs, and Hacks
Here is the notebook where I completed the Parallel Computing

Here I took notes and answered all the questions in the notebook
In the hacks I answered the questions in the video
Also used list comprehension in python while relating it to my past CPT project with exersizes. I was able to filter out ratings and word characters.

Here is the notebook where I completed the Hashmaps

Here I took notes and answered all the questions in the notebook
In the hacks I created a canva diagram about pros and cons of the data structure
I also created my own album then was able to add ratings of each song.

MCQ4
Here is the blog where I showed my score and reflection on the MCQ #4

Thoroughly completed hashmaps and parallel computing hacks. Created his own album for hashmap hacks and created a rating system with filters. Related hacks in PC to past CPT project and got a very high score on the MCQ on collegeboard.


Chat view

The PR adds the chat view where discussion happens.

I remove this PR, @Valandr can you re-open it as a "Draft Pull Request".


[Feature Request] Focus Awareness

Right now custom frames dominate the focus. You have to click outside of the window to bring focus back to obsidian.
it would be nice if a focus is only applied to the view when the mouse is hovering over it and focus goes back to the main obsidian viewer when the mouse leaves the pane.
Note: I'm not sure if this is something that is within the scope of plugin or needs to be made in obsidian itself.
This old bug has good animation of the issue so linking it here.
https://github.com/electron/electron/issues/13057

Honestly, I have no idea if this is possible.
I also see some issues with your specific suggestion though: I often find myself opening a Google Keep note and then moving my cursor to an Obsidian note to scroll in the note while, simultaneously, typing information into the Google Keep note. With your idea of a frame only being active when the mouse is hovering over it, that wouldn't work anymore, and I can't help but think that it might be more annoying than useful all in all.
If you have any ideas on how to solve this problem without making it dependent on the cursor position, please let me know!

I'll look into it, but your right it might end up being a bit painful to handle

FYI, here is how Obsidian Surfing does it: https://github.com/PKM-er/Obsidian-Surfing/blob/main/src/surfingView.ts#L233-L271


Can't start KA Lite server if port 8008 is occupied

Summary
I created a notification to notify the user if port 8008 is occupied.
Issues addressed
This fixes #131
@radinamatic can you test this PR using this windows installer
To test it, Run the command python -m SimpleHTTPServer 8008 in the command prompt before starting the KA Lite server.
It will show a notification when starting KA Lite and the port 8008 is occupied.

@radinamatic use this windows installer to test this PR, I have new fixes in hardcoded path of KALITE_HOME path environment variable.

@mrpau-richard I've tested the latest installer, occupied port alert is in place and I can see the
KALITE_PYTHON=\Python27\python.exe
KALITE_SCRIPT_DIR=\Python27\Scripts

environment variables, but no KALITE_HOME.

Let me know if there's anything else I can check!

@radinamatic I think it's fine even if the KALITE_HOME is not set because it's automatically default to user/.kalite path. @mrpau-eduard I think you can merge this PR.

Great work, let's get it merged and I'll remember to add a release note about it in KA Lite.


Difference in generated code between VS code extension and autorest CLI

Not sure if this the right place to report this, but when I generated C# from the Azure Functions VS code extension, it set the TargetFramework to netcoreapp2.1 in the csproj, which causes "error CS8370: Feature 'nullable reference types' is not available in C# 7.3. Please use language version 8.0 or greater" on build because of the "#nullable disable" in each .cs file in the Models folder.
When I ran autorest directly (autorest --azure-functions-csharp --input-file:spec.json --output-folder:./generated-azfunctions --version:3.0.6314 --namespace:CovidScreeningNamespace), the TargetFramework was netcoreapp3.1 and it built successfully.

Thanks, @balderstonb - autorest.azure-functions-csharp which generates the code only uses dotnet 3.0.
I have added a validation check for VSCode to make sure devs use only dotnet 3.0 for autorest generated apps.
/cc @skylerah


Integrate HttpClient as the basis of this module

The basis for HTTP communication with Activiti should be the HttpClient class.
For an actual implementation see the RestHelper used in biz.dfch.CS.Infoblox.Wapi and my article HttpClient and how to use Headers, Content-Type and PostAsync.
Use the Wapi RestHelper as a guideline on how to model the the Activiti client.

##Decision
Leave [] RestClient (Class) as it is (needs cleanup) or instead [] using biz.dfch.CS.Utilities.Rest.

@schefDev what is the status here? are you now using the client from CS.Utilities?
can this issue be closed?

fixed with commit https://github.com/dfensgmbh/biz.dfch.CS.Activiti.Client/commit/98a06da679fcddc1f8f6788e03596a4357e699f4


assertion order

sometimes the order is wrong. currently because process.nextTick is used to fix this bug
https://github.com/scottcorgan/tap-out/issues/8

changed the rendering order, looks better now and doesn't run into the assert error


Setting "object.format" should not be in the default config file.

This setting is only for use in upgrades/downgrades from versions 1.3 and earlier.

[x] CSE approval
[x] PM approval

Create jira issue

Can one of the admins verify this patch?