marker position changed after rotate in high-zoom size use case

Hello all,
I'm using the wamp and chrome as my browser to develop an indoor map(higher zoom size).
Already clone the latest Leaflet branch rotate as bellow to implement the rotate function:
https://github.com/Leaflet/Leaflet/tree/rotate
And find that after rotation, the marker's position changed, as bellow:

Is that the javascript's Math precision problem or something else I need to take care about?
Thanks and regards.

Hello,
It is probably an issue in the rotation code, not taking in account the iconAnchor you provided (in the simplest examples, icons are markers pointing down, so the iconAnchor is at the bottom. In your case, the coordinate of your icon must be the center of the icon.
There is currently a PR done by @sisou so that the markers don't rotate with the map at all:
https://github.com/fnicollet/Leaflet/pull/18
It is still a work in progress but I believe you should check it out, and maybe contribute to the task :)
Fabien

Hello Fabien,
Seems like #18 patch will resolve this problem.
here's the demonstration with/without #18 patch, and use the default icon to withdraw factor of custom icon.

without patch:

with patch:

Once the patch is merged, I think this issue could be closed, Thanks a lot.
CW

Thanks for trying out #18 , that's promising :)
Will try it out and merge asap

The PR has been merged ( #21 ), so give it a go and close the issue if this particular problem is gone
Thanks!
Fabien

Already pull down the updated code and give it a go, everything works fine.
This issue will be closed.
Thanks for your help.
CW

Great! Thanks for your feedback


Cannot instrument activities

The usual pattern for emitting custom activities in OpenTelemetry goes along these lines:
const string SourceName = "MyApplication.MySource";

//this is to be accessible in the application
var source = new ActivitySource(SourceName);

//this is somewhere in the OpenTelemetry configuration
using var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource(SourceName) //<--this is where we bind one to another
    .Build();

//somewhere in the code which we instrument
var rootActivity = source.StartActivity();

The important thing here is that OpenTelemetry works via System.Diagnostics.ActivityListener, which is then passed to System.Diagnostics.ActivitySource.AddActivityListener and filters activities by name (see https://github.com/open-telemetry/opentelemetry-dotnet/blob/dfd27c50408e770963f9d60880c1da04810c409d/src/OpenTelemetry/Trace/TracerProviderSdk.cs#L107-L283).
I would expect SerilogTracing to support the same model in TracingConfiguration.Instrument.With, but unexpectedly it deals in DiagnosticListener, not ActivityListener (the interface name IActivityInstrumentor adds to the confusion here). I believe this might prove an obstacle for adoption, as it doesn't allow for easy interoperation.
I kinda understand where this confusion comes from, because both HttpClient and AspNetCore emit information from both ActivitySource and DiagnosticSource as well, and the flow is... complex, let's say (https://github.com/open-telemetry/opentelemetry-dotnet/blob/dfd27c50408e770963f9d60880c1da04810c409d/src/OpenTelemetry.Instrumentation.Http/Implementation/HttpHandlerDiagnosticListener.cs#L84-L88).
I would say that as the adoption for OpenTelemetry grows, there'll be more and more Activity-based tracing in the new code, so this model is worth supporting. I can try drafting a basic example, if you're interested.

Hi @srogovtsev, thanks for the feedback.
The naming around Instrument.With might be off; it's currently intended to provide that bridge between diagnostic sources and activities.
SerilogTracing does see and bind to activity sources, but there isn't currently an API in SerilogTracing for participating in the Activity → LogEvent mapping, or for adding additional context to Activity instances, which it sounds like you are looking for.
An example scenario would be great, if you can pass one on :+1:

Hi again! Just taking another look at this, and trying to pinpoint the gap...
When a custom activity is created in SerilogTracing, all of the "instrumentation" is normally inline, e.g.:
// JobId property exposed through `System.Diagnostics.Activity.Tags`:
using var activity = _log.StartActivity("Process job {JobId}", 5);

// Also added to `Activity.Tags`
activity.AddProperty("ItemType", "beans");

// Exception is added to `Activity.Events` and status is `Activity.Status`:
activity.Complete(LogEventLevel.Error, exception);

I think this is counter to the idea of activities being created with opaque/symbolic names, and the data being attached elsewhere through enrichment. It seems on the surface that the indirect approach would work well for optional instrumentation in framework components and libraries, but in application code, the direct approach is much more compact and pleasant.
Definitely still open to making some improvements, just trying to get a handle on the scenario :-) Thanks!

I”ll try to build a runnable example tomorrow (my time, we’re unfortunately on almost opposite sides of the globe).

Okay, here we go: https://github.com/srogovtsev/serilog-tracing/tree/feature/activity-instrumentation/example/ActivityTracing
Let's pretend this is our "library" code:
internal class Worker(ILogger<Worker> logger)
{
    //usually this would be separate, but let's pretend
    public const string ActivitySourceName = "MyLibrary";
    private static readonly ActivitySource ActivitySource = new(ActivitySourceName);

    private readonly Guid _id = Guid.NewGuid();
    public void Run()
    {
        // ReSharper disable once ExplicitCallerInfoArgument
        using var activity = ActivitySource.StartActivity(name: "Worker Run", kind: ActivityKind.Internal, tags: new Dictionary<string, object?>
        {
            {"WorkerId", _id}
        });
        logger.LogInformation("Worker {WorkerId} was run", _id);
    }
}

It uses only generic dependencies - System.Diagnostics (for ActivitySource) and Microsoft.Extensions.Logging for, well, logging.
Its consumer, on the other hand, is very specific:
const string programSourceName = "Program";

using var tracerProvider = Sdk.CreateTracerProviderBuilder()
    .AddSource(programSourceName)
    .AddSource(Worker.ActivitySourceName)
    .AddOtlpExporter()
    .Build();

using var logger = new LoggerConfiguration()
    .WriteTo.Console()
    .CreateLogger();

using var loggerFactory = LoggerFactory
    .Create(builder => builder.AddSerilog(logger));

//end of configuration, let's go

using var source = new ActivitySource(programSourceName);

using var root = source.StartActivity();

logger.Information("Started");

new Worker(loggerFactory.CreateLogger<Worker>()).Run();
new Worker(loggerFactory.CreateLogger<Worker>()).Run();

logger.Information("Finished");

It uses OpenTelemetry for tracing and Serilog for logging. Pay attention to the AddSource(Worker.ActivitySourceName) line, which is the only thing that binds the library to our tracing.
Lo and behold, everything works as expected (and we even have our worker ids in Zipkin):
[14:45:40 INF] Started
[14:45:40 INF] Worker 9c7fc289-2847-4ff6-a6d2-ab793639b4b1 was run
[14:45:40 INF] Worker 632fc706-838b-4131-8af5-0183152e5554 was run
[14:45:40 INF] Finished

Now then, we add SerilogTracing (I should have replaced the OpenTelemetry completely, but I don't want to do so, as I want to show its output):
using var _ = new TracingConfiguration().EnableTracing();
using var source = new ActivitySource(programSourceName);
using var root = source.StartActivity();
using var serilog = logger.StartActivity("Serilog root");
logger.Information("Started");
new Worker(loggerFactory.CreateLogger<Worker>()).Run();

Configuration part is omitted, but I've added StartActivity from the SerilogTracing.
Here's what Zipkin (via OpenTelemetry) shows:

And this is exactly what I expect, because I had my original instrumentation, and I've added one more activity from Serilog in the middle of it.
But here's what sees Serilog:
[14:48:40 INF] │ Started
[14:48:40 INF] │ Worker e037253e-deda-44a4-891f-3d1ee559e21f was run
[14:48:40 INF] │ Worker 6a98555f-a3b6-47b7-b1ca-1a2a7e7066bc was run
[14:48:40 INF] │ Finished
[19:48:40 INF] ├ Serilog root (126.766 ms)

Its own activities are there, but mine aren't.
And this is where my issues comes from: how do I make SerilogTracing honor the same instrumentation that I'm already using with OpenTelemetry?

Ah, I see! Thanks for taking the time to produce a repro @srogovtsev, much appreciated.
This is the same footgun that got me in a demo to a room of conference attendees a month ago ---- it's still hurting 😅.
You're not using the static Log.Logger property, so you need to tell EnableTracing() where to write those spans:
using var _ = new TracingConfiguration()
    .Instrument.WithDefaultInstrumentation(false)
    .EnableTracing(logger);

With that change everything looks much nicer:

We have #36 open to attempt to make this more discoverable. I might add a "Troubleshooting" section to the README to cover this, too, however that feature comes out...

I really hate it when it's this obvious. Thanks for pointing it out.
But then there's another question: so, unlike OpenTelemetry, it instruments everything by default? That'd be lots of data in some systems.

The Instrument configuration is the bridge from diagnostic sources to activities, so the WithDefaultInstrumentation() call here is just turning off the default HttpClient request descriptions (you'll get something similar via OTel, which will be more in line with what you want in your scenario).
But - trace sources are controlled using MinimumLevel in SerilogTracing. It will show you all possible traces in your application by default, and you need to switch them off the same way that you switch off logging:
    .MinimumLevel.Override("Npgsql", LevelAlias.Off)

That still might not be ideal if you're intending to produce very fine-grained traces (emulating execution profiles) and coarse-grained logs; some additional options in TracingConfiguration may help with that down the track. Right now the default experience is aiming for out-of-the box discoverability, and to encourage fairly coarse-grained, application-oriented spans.

But - trace sources are controlled using MinimumLevel in SerilogTracing.

I suspected this much, and I'm not sure this is very easy to use when one has a lot of activity sources which they don't control. OpenTelemetry offers opt-in, your model is more opt-out. While I understand your desire for pit-of-success kind of defaults, I'd appreciate an optional configuration like this:
new TracingConfiguration()
.Instrument.Activities(activityOptions => {
  activityOptions.IncludeAll = true; //<--default
  //or
  activityOptions.IncludeAll = false;
  activityOptions.AddSource("some")
})

This was I can easily switch from OpenTelemetry to SerilogTracing with roughly same semantics.

Right now the default experience is aiming [...] to encourage fairly coarse-grained, application-oriented spans.

The problem is that we don't control the spans emitted by the libraries we consume, and as OpenTelemetry gets more and more traction in .net world, there'll be more and more Activities floating around. The guidance is already leaning in that direction.

...actually, this discussion led me to a weird idea of my own, which might need some of the code from your implementation. I'll try to do a PoC ASAP so that you would be able to consider opening some internals if that would be needed.

The PoC is interesting, could definitely be a nice alternative for what you're aiming to do.
I am not sure how much of ActivityInstrumentation we'll end up wanting to expose at this point - it's likely that the Get* and TryGet* methods there will be closed, and also likely it will shift from being a static class, to being an argument passed in the IActivityInstrumentor.InstrumentActivity() method. Just mentioning this as a heads-up.
Since the activities reaching your exporter are unlikely to have LoggerActivity instances attached (since they'll be coming from library components not using SerilogTracing) this might not matter too much to you.
I've raised a ticket for opting into activity sources. I might close this one now, as it's grown into rather a long and broad thread, but feel free to tack any more thoughts on here, or open a new one if there's more you think we can improve.

I'm trying to add activity templates to a library that is only implementing ActivitySource and not DiagnosticListener. Like this issue mentions, IActivityInstrumentor requires DiagnosticListener to be used by the library providing the instrumentation.
This issue is marked as closed, but I don't see the solution. Was there a pull request or follow up issue to be able to customize a ActivityListener instead of DiagnosticListener like IActivityInstrumentor  does?

Hi @ngbrown ! What you're trying to do is one of the core use cases of SerilogTracing, so it should work straight out of the box with no config. Level overrides in your Serilog configuration are one common culprit to check, since these can end up suppressing spans just like they would suppress log events.
If this doesn't narrow it down, could you please add a few more details into a new ticket, e.g. what your Serilog and SerilogTracing configuration looks like, the kind of activity you're expecting to see, and the output you're getting, if any? Pretty confident we'll be able to spot the problem :+1:.

Hi @nblumhardt  I'm talking about setting a custom template on an activity/trace being logged to Seq, not about the severity level of the trace. Much like is done in the implementations of IActivityInstrumentor here: https://github.com/serilog-tracing/serilog-tracing/blob/8305fd5ae843a7d48733265baf7692d7c007ba40/src/SerilogTracing.Instrumentation.AspNetCore/Instrumentation/AspNetCore/HttpRequestInActivityInstrumentationOptions.cs#L25-L26
I am trying to integrate with the new ActivitySource instrumentation available in v7 of RabbitMQ.Client (now at ver 7.0.0-rc.11).
This matters because the default trace log text does not show in Seq as following a template, so every different queue or channel received from or sent on results in a different message type:

I initially went down the path of trying to implement something similar to what was done for SerilogTracing.Instrumentation.SqlClient, but came to the realization that the RabbitMQ.Client isn't using DiagnosticListener/DiagnosticSource at all, so IActivityInstrumentor.ShouldSubscribeTo is never called using a RabbitMQ related diagnosticListenerName. This led me to this issue, because it does talk about libraries that only use ActivitySource and not DiagnosticListener.
This does seems to be following the guidance from the .NET team because their 2020 design decision says they are simplifying the recommended pattern of activity objects to not use DiagnosticSource.
I can inject my own message template overrides for SerilogTracing if I setup my own ActivityListener, but this relies on the ordering of calls to subscribers, so doesn't seem like a great idea.

Expand for Program.cs. See AddAmqpActivityInterceptor() for hacky way to inject custom templates and assign parameters to Activities about to be sent to Seq.
using System.Diagnostics;
using GrpcGreeter.Services;
using Serilog;
using Serilog.Events;
using Serilog.Parsing;
using Serilog.Templates.Themes;
using SerilogTracing;
using SerilogTracing.Expressions;
using SerilogTracing.Instrumentation;

namespace GrpcGreeter;

public class Program
{
    // Works in the console, but Seq (as of 2024.3.12250) doesn't yet seem to support this
    const bool UseDottedPropertyNames = false;

    public static void Main(string[] args)
    {
        AppContext.SetSwitch("Serilog.Parsing.MessageTemplateParser.AcceptDottedPropertyNames", UseDottedPropertyNames);

        Log.Logger = new LoggerConfiguration()
            .Enrich.WithProperty("Application", typeof(Program).Assembly.GetName().Name)
            .WriteTo.Console(Formatters.CreateConsoleTextFormatter(TemplateTheme.Code))
            .WriteTo.Seq("http://localhost:5341")
            .CreateLogger();

        try
        {
            var builder = WebApplication.CreateBuilder(args);

            // Additional configuration is required to successfully run gRPC on macOS.
            // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682

            AddAmqpActivityInterceptor();

            // Add services to the container.
            builder.Services.AddSerilog();
            builder.Services.AddSingleton(
                new ActivityListenerConfiguration()
                    .Instrument.AspNetCoreRequests()
                    .Instrument.RabbitMQClient()
                    .TraceToSharedLogger());
            builder.Services.AddGrpc();

            builder.Services.AddSingleton<FibService>();
            builder.Services.AddHostedService<RabbitMqServer>();

            var app = builder.Build();

            // Configure the HTTP request pipeline.
            app.MapGrpcService<GreeterService>();
            app.MapGet("/",
                () =>
                    "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");

            app.Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Application terminated unexpectedly");
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }

    private static void AddAmqpActivityInterceptor()
    {
        var messageTemplateSubscriber =
            new MessageTemplateParser().Parse(UseDottedPropertyNames
                ? "AMQP {messaging.operation} {messaging.rabbitmq.destination.routing_key}"
                : "AMQP {Operation} {RoutingKey}");
        var messageTemplatePublisher =
            new MessageTemplateParser().Parse(UseDottedPropertyNames
                ? "AMQP {messaging.operation} {messaging.destination.name}"
                : "AMQP {Operation} {DestinationName}");

        var activityListener = new ActivityListener
        {
            ShouldListenTo = source =>
                source.Name == "RabbitMQ.Client.Subscriber" ||
                source.Name == "RabbitMQ.Client.Publisher",
            ActivityStopped = OnActivityStopped
        };
        ActivitySource.AddActivityListener(activityListener);
        return;

        void OnActivityStopped(Activity activity)
        {
            if (activity.Source.Name == "RabbitMQ.Client.Subscriber")
            {
                ActivityInstrumentation.SetMessageTemplateOverride(activity, messageTemplateSubscriber);
                foreach (var (k, v) in activity.Tags)
                {
                    switch (k)
                    {
                        case "messaging.operation":
                            ActivityInstrumentation.SetLogEventProperty(
                                activity,
                                UseDottedPropertyNames ? k : "Operation",
                                new ScalarValue(v));
                            break;
                        case "messaging.rabbitmq.destination.routing_key":
                            ActivityInstrumentation.SetLogEventProperty(
                                activity,
                                UseDottedPropertyNames ? k : "RoutingKey",
                                new ScalarValue(v));
                            break;
                    }
                }
            }
            else if (activity.Source.Name == "RabbitMQ.Client.Publisher")
            {
                ActivityInstrumentation.SetMessageTemplateOverride(activity, messageTemplatePublisher);
                foreach (var (k, v) in activity.Tags)
                {
                    switch (k)
                    {
                        case "messaging.operation":
                            ActivityInstrumentation.SetLogEventProperty(
                                activity,
                                UseDottedPropertyNames ? k : "Operation",
                                new ScalarValue(v));
                            break;
                        case "messaging.destination.name":
                            ActivityInstrumentation.SetLogEventProperty(
                                activity,
                                UseDottedPropertyNames ? k : "DestinationName",
                                new ScalarValue(v));
                            break;
                    }
                }
            }
        }
    }
}

So now Seq shows a templated trace:

But because Seq doesn't seem to support AcceptDottedPropertyNames property yet, I end up with duplicate properties to support the templating in Seq:

So what I'm asking for is a way to do set a custom template and properties on a to-be logged trace somewhere around https://github.com/serilog-tracing/serilog-tracing/blob/8305fd5ae843a7d48733265baf7692d7c007ba40/src/SerilogTracing/Interop/LoggerActivityListener.cs#L115-L119 or within ActivityConvert.
My test project is available on the rabbit-rpc branch here: https://github.com/ngbrown/grpc-testing/commits/rabbit-rpc/

Thanks @ngbrown, I think I understand now 👍
Some kind of instrumentation hook to customize external activities like this would be nice. Is it possible to move your comment to a new issue? We can follow up and figure out what a design would look like, there. Thanks!


Images of 16x16 and 32x32 are bad previewed

As you can see, the "_" prefixed icon was rendered with createicns while the non prefixed was created with iconutil.

Only affects 16x16 and 32x32 images (don't have a retina display so can't check @2x versions). I'm attaching the example with the iconset, so maybe you can test it: Test.zip
Thanks in advance!

On a MBP Retina all icons look fine... I checked it out in Parallels too, to see how it would look on a non-Retina Mac and I see that there is that issue with that _7z.icns file you sent, but when I created the .icns file from the PNGs you included with createicns 7z.iconset, it doesn't seem to have that issue and the file size is different (the file size is similar to that of those PNGs), but your _7z.icns file size is double of what it should be if you created them from the same PNGs.
What exactly did you do?

Sorry I forgot to mention that you need to apply the icon to itself so it shows like it would in a app or in a file that uses that icon. So after creating 7z.icns, right click and Get Info and then just drop the file to the little preview on the top. That's why it weights double and this is a demo of how this icon will appear when an app uses it.
You can obviously apply the icon to any other folder or file and the result will be the same.

Yes, you are right... I tested it in Parallels now to see how it would appear on non-Retina Macs and icons created with createicns show that issue when you do that... it seems to only affect non-Retina 16x16 and 32x32 icons.
I checked those PNGs with pngcheck before creating the icns file and the PNGs appear to be OK... I also tried to open those PNGs in Preview and to save them again from it, but the same things happens...
Also... if you try to use iconutil -c iconset to extract those pngs from those the .icns file created by createicns, the non-Retina 16x16 and 32x32 pngs aren't there... but the readicns can extract them.
And if you create an icon from those PNGs using iconutil -c icons, then readicns has issues extracting the 16x16 and 32x32 sizes as PNGs from it and some files like "icon_data_il32", "icon_data_info", "icon_data_is32", "icon_data_l8mk" and "icon_data_s8mk" appear in the .iconset folder.
But if after you create an icon with iconutil -c icons and extract the PNGs with readicns (although it extracts the 16x16 and 32x32 sizes as "icon_data_il32", "icon_data_info", "icon_data_is32", "icon_data_l8mk" and "icon_data_s8mk" instead of PNGs) and you just leave those "icon_data_il32", "icon_data_info", "icon_data_is32", "icon_data_l8mk" and "icon_data_s8mk" files in that folder... you can optimize the PNGs that were correctly extracted and create the icon again with createicns and then that icon doesn't seem to show this issue and the 16x16 and 32x32 sizes are there (it seems to recognize those "icon_data_il32", "icon_data_info", "icon_data_is32", "icon_data_l8mk" and "icon_data_s8mk" files and includes them in the .icns file without those issues).

I've been reading more about the .icns format... il32 and l8mk are the 32x32 sizes in a format for Classic Mac OS 8.5 and is32 is 16x16 size in the format for Classic Mac OS 8.5...
It seems that when iconutil creates .icns files that it isn't using PNG format for 16x16 and 32x32 non-Retina sizes... it seems that it converts those sizes to a format compatible with Classic Mac OS 8.5... that would explain why readicns can't extract PNG data for those sizes when the .icns file is created with iconutil -c icns, if that's PackBits format and not PNG...
And when createicns makes icons only from PNG files, maybe the issue is that macOS is expecting the 16x16 and 32x32 non-Retina sizes to be in that PackBits format...
I guess that maybe the issue could be solved by using a PackBits encoder for those sizes.

So if it uses something similar to PackBits, it's using a TIFF image (https://en.wikipedia.org/wiki/PackBits). I'll try using a plain TIFF image instead of the PNG and, if it works, bring to implement the PackBits compression.

Those old formats are not defined here:
https://github.com/avl7771/createicns/blob/162f008d72991a2a71cef90a5e387e284c74067e/createicns.c#L62-L77
I'll try to adapt this.

No luck with some quick test over TIFF.
So right now the @MaxPower85 workaround is the best:

Convert the .iconset to an icns file using iconutil -c icns
Extract this icns file contents using readicns
Copy all the non PNG files inside, which are the 16, 32 and 128 versions to your original .iconset
Remove the original 16, 32 and 128 PNG before creating the icns file using createicns.

This only applies to @1x quality, @2x files (like<EMAIL_ADDRESS>do not have this issue.


Support PaaS Cassandra - Create Schema on Azure CosmosDB

Requirement - what kind of business use case are you trying to solve?
Connect to an Azure Cosmos DB managed Cassandra-API to reduce the operational overhead on the databases.
Additional context is available here https://github.com/jaegertracing/jaeger/issues/2467
Problem - what in Jaeger blocks you from solving the requirement?

Cassandra API does not support frozen collection types at the moment: https://docs.microsoft.com/en-us/azure/cosmos-db/cassandra-secondary-index
CQL definition language needs to be adjusted.

Proposal - what do you suggest to solve the problem or improve the existing situation?

Remove frozen definitions
Adjust the definition language; for what I tested so far its mostly removing the last , in the definition language.

https://github.com/jaegertracing/jaeger/blob/master/plugin/storage/cassandra/schema/v003.cql.tmpl#L35-L38
Any open questions to address
Maybe we can start to discuss the approach.

This is only about the create schema job, right? I think we could provide a second set of files, for Azure's CosmosDB.

Correct, its just about the create schema job. I would do a first check whether it is really just the two things by applying the CQL. Maybe its easier to just use a sed or something to remove the frozens but keep the same set of files due to maintenance ease. I'll do a quick check and describe the findings here so that we can decide what the easiest way would be. What do you think?

If you can do it with a couple of sed commands, I'd be all for it. We just need to build safe guards, so that those still work in the future and that we'll get a notification in case it breaks. For instance, it should be part of the build process.

Hi, do we have any update on this?
We are planning to deploy Jaeger into our Azure stack but we don't have expertise in Cassandra.

@sshah90 I did not had time to proceed with the implementation, so feel free to take over.

I made changes as mentioned here in my customize local jaeger-cassandra-schema image, but still getting the following error when I run the image.
Attaching to jaeger-cassandra_app_1
app_1  |
app_1  | system_schema  system              system_traces
app_1  | system_auth    system_distributed  jaeger_index
app_1  |
app_1  | Generating the schema for the keyspace jaeger_index and datacenter dc1
app_1  | Using template file /cassandra-schema/v003.cql.tmpl with parameters:
app_1  |     mode = test
app_1  |     datacenter = dc1
app_1  |     keyspace = jaeger_index
app_1  |     replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}
app_1  |     trace_ttl = 172800
app_1  |     dependencies_ttl = 0
app_1  | <stdin>:13:SyntaxException: line 1:39 no viable alternative at input 'keyvalue (...IF NOT EXISTS jaeger_index.keyvalue...)
app_1  | <stdin>:18:SyntaxException: line 3:110 no viable alternative at input 'keyvalue (...g (
app_1  |     ts      bigint, // microseconds since epoch
app_1  |     fields  list<keyvalue...)
app_1  | <stdin>:29:SyntaxException: line 3:100 no viable alternative at input 'keyvalue (...(
app_1  |     service_name    text,
app_1  |     tags            list<keyvalue...)
app_1  | <stdin>:54:SyntaxException: line 10:335 no viable alternative at input 'keyvalue (...  operation_name  text,
app_1  |     flags           int,
app_1  |     start_time      bigint, // microseconds since epoch
app_1  |     duration        bigint, // microseconds
app_1  |     tags            list<keyvalue...)
jaeger-cassandra_app_1 exited with code 2

Any Suggestions?

Did someone manage to run it?

CosmosDB explicitly states that frozen collections are not supported - the key is not just "frozen", but the fact that they are collections. Jaeger uses manual indexing of data in Cassandra, so secondary indexing of Cosmos is not necessary, and if we did want to support db-native indexing I think we'd need to seriously rethink the whole implementation. Closing this as wontfix.


nil of any type serialize to null

For example, this model contains any type properties, even no value set to those properties, it will be serialized to "protectedSettings": null. It is because the reflect null value judgement here will not work for any/interface{} type. We may need special logic to handle it.

Introduced in https://github.com/Azure/autorest.go/pull/734


Integrate CLI docs with asyncapi website

Reason/Context
AsyncAPI tools should also have documentation available in asyncapi.com/docs
We have AsyncAPI Generator docs there already -> asyncapi.com/docs/tools/generator
Description
We need here, in cli repo the same workflow that we already have in AsyncAPI Generator -> https://github.com/asyncapi/generator/blob/master/.github/workflows/update-docs-in-website.yml
But of course not copied 1:1, certain renaming must be done.
Author of related automation is @Florence-Njeri in case you have some question

@derberg I will work on this issue.

@activus-d lemme know if I can somehow help

@derberg Sorry that I have not started working on this task. I was busy with my Outreachy internship. I will start working on it next week.

no worries, good luck with Outreachy!

this is done already


added sfx eat audio and Allow user to tap anywhere on splash screen

added sfx eat audio which plays randomly among those, when we drop right answer stone #1021
Allow user to tap anywhere on splash screen to move onto the level selection screen and excluded the close button area for tapping #1027

I can see that two audios are added, modify the title to reflect the same.
and please try to create separate PR according to different task.

I can see that two audios are added, modify the title to reflect the same. and please try to create separate PR according to different task.

One is already added rajesh, so that is reason i just have added rest two which are not present before.

I know that one audio is already present, i can see that too but title seems confusing. Also create separate PR for separate tickets since these tasks are not even related.

@burrage Hey Ben this PR has two tasks in same PR, i feel its cleaner to have each task have their separate PRs. Should we follow that and create separate PR for this one or should i merge it.

@Rajesh1041 @ashishkrr In general, we should stick to the 1 task = 1 PR model because it just makes life easier on the reviewer, merger, production maintainer, rollbacker...
Are the only changes for #1027 in start-scene.js? Since it is 3 lines and these are both pretty minor changes, we can make a one-time exception but in the future, let's please try to stick to 1 task = 1 PR. Thanks!

@Rajesh1041 @ashishkrr In general, we should stick to the 1 task = 1 PR model because it just makes life easier on the reviewer, merger, production maintainer, rollbacker...
Are the only changes for #1027 in start-scene.js? Since it is 3 lines and these are both pretty minor changes, we can make a one-time exception (only if Rajesh feels it is appropriate) but in the future, let's please try to stick to 1 task = 1 PR as a best practice. Thanks!

@burrage Thanks for clarification, will follow the 1 task = 1 PR, @Rajesh1041 I am closing this PR as you asked me earlier to create separate PR for good practice.


chinese character encoding issues

Which version and edition of Flyway are you using?
compile('org.flywaydb:flyway-core:5.0.7')
Which client are you using? (Command-line, Java API, Maven plugin, Gradle plugin)
Spring boot + Gradle plugin
Which database are you using (type & version)?
Mariadb: Ver 15.1 Distrib 10.2.12-MariaDB, for Win64 (AMD64)
Which operating system are you using?

What did you do?
this is my V0_0_1__base.sql file :
CREATE TABLE book_publisher
(
  id   BIGINT AUTO_INCREMENT
    PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  CONSTRAINT book_publisher_uindex
  UNIQUE (name)
)
  ENGINE = InnoDB;

INSERT INTO book_publisher (id, name) VALUES (1, '人民教育出版社');

and this is my database character :

and my application.properties :

Is there any wrong configration?
What did you expect to see?

What did you see instead?

This is due to your database using utf8 instead of utf8mb4 encoding. Not a Flyway issue.

@axelfontaine Thanks for answer,but I don't think so.
Because I use mybatis to insert the name my database is :

@axelfontaine Thanks for answer. But I don't think so.
Because I use mybatis to insert the name and my database is normal.

so I think this is not my database encoding issue.

Then it must be somewhere else in your config. Ensure Flyway's encoding property is set to UTF-8 and that your build tool is also properly reading and packing the files using UTF-8. Either way, Flyway does handle this correctly, so the issue must be somewhere in your setup.


feature selection optimization

most important is to see if there's a more accurate way to do feature selection.
secondly, we can probably speed up training time a bit by training a feature selection model once per pipeline, and feeding that in, rather than having to fit a new one for each new call to .fit().
runs into the obvious issue of not having the data in the right format at the start (dictionaries, vs. sparse matrices).
maybe, again, we create a natural jumping off point for auto_ml, where it can exit the process at this step, and we can feed that into  our new outer auto_ml.
so, we could potentially train up an auto_ml that does nothing more than the basic data transforms, and feature selection. this half-auto_ml then gets inserted into a parent pipeline as the first half of that parent pipeline. this saves us from having to do any of the fitting of that half pipeline again- we can just return self from .fit, and have .transform already prepared.

I have just implemented much of this in a different way, or found that it's unreasonable to do as described above.
The one thing left to do is to optimize feature selection for accuracy.

Fixed this as part of the keras branch.


[ListView] onPress - undefined is not an object

I seem to be stuck with calling functions on button press. No matter what method i try i get different undefined errors.
i'm running react native 0.24 and currently coding for Android device only.
please see the code below:
class ListPage extends Component {

   constructor(props){
   super(props);
       this.nav = props.nav;
       this.route = props.route;
       this.ds = new ListView.DataSource({
          rowHasChanged: (row1, row2) => row1 !== row2,
       });
       this.state = ({
           visible: false,
           dataSource: this.ds.cloneWithRows(props.fullList),
       });
  }

  goToPage(name){
      this.nav.push({ name: name });
  }

  loadModal() {
      this.setState({ visible: true });
  }

    list(row){
        return (
             <View style={styles.box}>
                  <TouchableNativeFeedback underlayColor="#FFF"
                    onPress={this.goToPage.bind(this,'ShowRow')}>
                      <View>
                          ...ShowRow Button
                      </View>
                   </TouchableNativeFeedback>
                   <TouchableNativeFeedback
                      onPress={this.loadModal.bind(this)} >
                        <View style={styles.button}>
                            ...Modal Button
                        </View>
                   </TouchableNativeFeedback>
              </View>
          );
    }

    render(){
        return (
             <View style={styles.container}>
                <Modal visible={this.state.visible}
                  onRequestClose={() => {this.setState({visible: false}) }} >
                    <View>
                        <Text>I am a Modal!</Text>
                    </View>
                </Modal>
                <ListView
                  dataSource={this.state.dataSource}
                  renderRow={this.list} />
             </View>
        );
    }
}

Whenever i press either button i get undefined is not an object error for both this.goToPage.bind and this.loadModal.bind .
if i try this:
render() { //or inside list(row) function
    goToPage = function(name){
       this.nav.push etc etc
    }
    loadModal = function() { setState etc... }
    return (
        ...render stuff
    )
}

it now says undefined is not an object for both this.nav and this.setState
but if i do this:
 constructor() {
    ...
    goToPage = function(name){
        props.nav.push(...);
    }
 }

it works.....but i know this is not the right approach and also i can't setState for the modal. Why isn't it working with the first method? Many thanks.

Okay, found the solution. in renderRow, i needed to bind the function like so:
<ListView dataSource={this.state.dataSource} renderRow={this.list.bind(this)} />

Now i can call the functions with the first method.


WIP: Feature: Force polling around scheduled charging start

This fixes #41
This needs to be tested, but I wanted to open ASAP
I had to introduce a proper scheduler in python, so it may be worth considering migrating our tasks to it in the future

What's missing: get the car TZ from the SAIC API and use that in the scheduler

Unfortunately, I didn't test this well enough. I don't have any scheduled charging configured. In VehicleState.update_scheduled_charging() the mode is ScheduledChargingMode.DISABLED and I end-up in the else branch where it tries to remove a job. Then it crashes.
2023-07-31 19:23:29,749 Updating charging status
2023-07-31 19:25:06,694 Removing scheduled check for charging start for VIN XXXXXXXXXXXXXXXXXX
2023-07-31 19:27:20,133 'handle_vehicle_XXXXXXXXXXXXXXXXXX' task crashed with an exception
Traceback (most recent call last):
  File "/usr/lib/python3.10/asyncio/tasks.py", line 232, in __step
    result = coro.send(None)
  File "/home/tosate/git/saic-python-mqtt-gateway/mqtt_gateway.py", line 100, in handle_vehicle
    charge_status = self.update_charge_status()
  File "/home/tosate/git/saic-python-mqtt-gateway/mqtt_gateway.py", line 129, in update_charge_status
    self.vehicle_state.handle_charge_status(charge_mgmt_data)
  File "/home/tosate/git/saic-python-mqtt-gateway/vehicle.py", line 513, in handle_charge_status
    self.update_scheduled_charging(start_time, mode)
  File "/home/tosate/git/saic-python-mqtt-gateway/vehicle.py", line 163, in update_scheduled_charging
    self.__scheduler.remove_job(job_id)
  File "/home/tosate/git/saic-python-mqtt-gateway/venv/lib/python3.10/site-packages/apscheduler/schedulers/base.py", line 625, in remove_job
    raise JobLookupError(job_id)
apscheduler.jobstores.base.JobLookupError: 'No job by the id of XXXXXXXXXXXXXXXXXX_scheduled_charging was found'
2023-07-31 19:27:20,163 Task exception was never retrieved
future: <Task finished name='Task-1' coro=<main() done, defined at /home/tosate/git/saic-python-mqtt-gateway/mqtt_gateway.py:469> exception=SystemExit(-1)>


Usage instructions are incorrect for v3.0.0

Since the package is now ESM-only, we need to import bencode. However currently the docs incorrectly state the way to use it is:
var bencode = require( 'bencode' )

What version of this package are you using?
v3.0.0
What operating system, Node.js, and npm version?
OS: Arch Linux x86_64, Kernel: 6.0.10-arch2-1
Node: v16.10.0
NPM: 7.24.0
What happened?
file:///tmp/bcode/main.js:1
const bencode = require('bencode');
                ^

ReferenceError: require is not defined in ES module scope, you can use import instead
This file is being treated as an ES module because it has a '.js' file extension and '/tmp/bcode/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
    at file:///tmp/bcode/main.js:1:17
    at ModuleJob.run (node:internal/modules/esm/module_job:183:25)
    at async Loader.import (node:internal/modules/esm/loader:178:24)
    at async Object.loadESM (node:internal/process/esm_loader:68:5)
    at async handleMainPromise (node:internal/modules/run_main:63:12)

What did you expect to happen?
Import would work
Are you willing to submit a pull request to fix this bug?
Yes

ah my regex didn't catch that, my bad


Migrate to new Type::getArrays()

fixed what was mentioned in https://github.com/phpstan/phpstan-beberlei-assert/commit/8df4766e5a2c59bce668fe42d1cd575d68fb6f92#commitcomment-82796461

Thank you.


Disable arrow keys

How do I disable the arrow keys so that it does not go to the next slide. Thanks

@StevenLopez-007  Can you explain in more details?

Hello, I have the same request. Because I have big forms in some steps, there will be textarea in the form and user use the arrow key to navigate in the text area.

That will be great if it can have settings to disable the arrow key.  Thanks a lot!


TypeError: undefined is not an object (evaluating ...)

Description
Passing data params to another components and unfortunately i face this error TypeError: undefined is not an object (evaluating 'this.state.dataset.Image[0]'), while i run  console.log(this.state.dataset); the data is there but i can't reach them.
I set a condition in render and it makes me access the data  if (this.state.dataset && this.state.dataset),
would you please give me more info about this error. thanks
React Native version:
System:
OS: Linux 4.15 Ubuntu 18.04.4 LTS (Bionic Beaver)
CPU: (4) x64 Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz
Memory: 165.87 MB / 7.67 GB
Shell: 4.4.20 - /bin/bash
Binaries:
Node: 12.18.3 - ~/.nvm/versions/node/v12.18.3/bin/node
Yarn: Not Found
npm: 6.14.8 - ~/react/SEC/node_modules/.bin/npm
Watchman: Not Found
SDKs:
Android SDK:
API Levels: 23, 28, 29
Build Tools: 23.0.1, 28.0.3, 29.0.2, 29.0.3
System Images: android-28 | Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: Not Found
Languages:
Java: 1.8.0_252 - /usr/bin/javac
Python: 2.7.17 - /usr/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 16.13.1 => 16.13.1
react-native: 0.63.2 => 0.63.2
npmGlobalPackages:
react-native: Not Found
Steps To Reproduce
1.render() {  console.log(this.state.dataset.Image[0].Src) ...}
Expected Results
accessing to data
Extra information
the data JSON I passed is:
[      { "Available": true,  "Discriptions": [[Object], [Object]],   "Image": [                     {                         "Src": "/Uploads/News/590068041036526-1599664273.jpg"                     } , "added_date": "2020-09-19T19:30:00.000Z"    } ]
my components:
export default class Detail extends Component {
  constructor(props) {
    super(props);
    this.state = {
      dataset:'',
    }
        }
  async componentDidMount(){

       this.setState({
        dataset: this.props.router.params.data,
             });

    }
    render() {
        console.log(this.state.dataset.Image[0].Src)
        .
        .
        }

ERROR    TypeError: undefined is not an object (evaluating 'this.state.dataset.Image[0]')

Then I set this condition and I could access the data
 if (this.state.dataset && this.state.dataset){         console.log(this.state.dataset.Image[0].Src)         }
I could not understand it.
export default class Detail extends Component {
  constructor(props) {
    super(props);
    this.state = {
      dataset:'',
    }
        }
  async componentDidMount(){

       this.setState({
        dataset: this.props.router.params.data,
             });

    }
    render() {
    if (this.state.dataset && this.state.dataset){
        console.log(this.state.dataset.Image[0].Src)
        .
        .
        }

This question is better suitable for StackOverflow instead of a react-native issue.
But looking at your code you are trying to access a string since when render is called this.state.dataset is '' and you cant access Image of an empty string. componentDidMount runs after the initial render. That means your code is not even getting there.

@wmonecke Thank you, my mind was around the condition.


Updated for 2023, also deleted dead link etc.

I have deleted 404 link, moved INSTALL.md to README.md. I might be dumb but I didn't notice it for some time, in my opinion this approach would be better for user.
Also screenshots are updated to newer version of DR.

Thanks for helping @jakub1812!!
I've made this project some years ago, so I forgot to improve this project.


Toggling neotree two times in a row puts it in a broken state

Hi!
The steps to reproduce are the following:

Open a file in a git directory.
Call :NeotreeShowToggle to reveal neo-tree.
Call it one more time to hide it.
From now on calling it will give you a stack trace below.

I am using the latest main branch.
Best,
Ivan

Thanks for reporting! It should be fixed now in both main and 1.x.

@cseickel yep, fixed, thanks!


Incompatible with Ruby 2.2

Run the following code in 2.1.x and 2.2.
require 'rubygems'
require 'openssl'
require 'oembed'

provider = OEmbed::Providers::Vimeo.get("http://vimeo.com/113057654")
puts provider.html

In Ruby 2.1.4, I get successful HTML output:
"<iframe src=\"//player.vimeo.com/video/113057654\" width=\"1280\" height=\"720\" frameborder=\"0\" title=\"Gingerbread House 2014\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>"

In Ruby 2.2.0, I get this error:
/Users/j/.rbenv/versions/2.2.0/lib/ruby/2.2.0/uri/generic.rb:743:in `registry=': can not set registry (URI::InvalidURIError)
	from /Users/j/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ruby-oembed-0.8.11/lib/oembed/provider.rb:138:in `block in raw'
	from /Users/j/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ruby-oembed-0.8.11/lib/oembed/provider.rb:138:in `each'
	from /Users/j/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ruby-oembed-0.8.11/lib/oembed/provider.rb:138:in `raw'
	from /Users/j/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/ruby-oembed-0.8.11/lib/oembed/provider.rb:86:in `get'
	from /Users/j/Desktop/ruby-oembed-test.rb:5:in `<main>'

My pleasure! Glad the fix is in the offing.

Alrighty. Version 0.8.12 of ruby-oembed (with Ruby 2.2 support) is now on rubygems.

I'm still seeing this issue with version 0.8.14 and ruby 2.2.3
 >> OEmbed::Providers::Youtube.get("https://youtu.be/blSl487coFg")
URI::InvalidURIError: can not set registry
from /home/vagrant/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/uri/generic.rb:743:in `registry='

$ gem list oembed

*** LOCAL GEMS ***

ruby-oembed (0.8.14)

@benwalsh I'm not able to reproduce that error locally. Could you help me troubleshoot a bit? Here's what I'm seeing:
# Started an irb session using: bundle exec irb
require 'oembed' #=> true
OEmbed::VERSION #=> "0.8.14"
RUBY_VERSION #=> "2.2.3"
RUBY_VERSION < "2.2" #=> false
OEmbed::Providers::Youtube.get("https://youtu.be/blSl487coFg") #=> #<OEmbed::Response::Video:0x007fa48425dd40 @fields={"version"=>"1.0", "provider_name"=>"YouTube" ...

I know that in 0.8.14 we added a conditional on the RUBY_VERSION constant that controls whether or not the gem tries to set the registry attribute on URI instances. Maybe RUBY_VERSION in your app/context is returning an unusual value?

@metavida thank you -- that's what it was, I guess that RUBY_VERSION had persisted at some point when switching rvms. Working now!


[main] Upgrade to latest dependencies

0.25 Release -lionelvillard
/cc knative-sandbox/channel-wg-leads
/assign knative-sandbox/channel-wg-leads
Produced by: knative-sandbox/knobots/actions/update-deps
Details:
bumping knative.dev/eventing e340077...0c41e6d:
  > 0c41e6d Fix ci (# 5629)

/lgtm
/approve


typescript: handle destructuring [phab:D1698]

Created by evmar at 2017-06-06 17:17:57:
let {x} = foo();
declares a new binding "x".

fromberger accepted this revision at 2017-06-06 17:20:49

fromberger closed via commit 67ca31249dcff499ebfd378e39ef0cd1ca4cc9ee at 2017-06-06 17:21:05


fix: remove redundant error check

Overview

Removes a redundant error check that was previously removed in #880 but was reverted.

Hello @csatib02, nice catch, thank you for your contribution!


feature concatenation about the paper, and the output layer in the actor network

Hi! Impressive work!
In the paper, I found that the input for decoders is the concatenation of three components (see equations 3 and 4). However, it shows to be two instead of three in the code (actor_critic.py, line 178, concateFea = torch.cat((candidate_feature, h_pooled_repeated), dim=-1)). Did I miss the last component?
Another question, why did you use batch size for the number of nodes in the encoder part? (I found this in actor_critic.py, line 101, where the code is self.actor = MLPActor(3, hidden_dim*2, hidden_dim, 1).to(device) ). Here the output of the actor is 1, which means the last layer only has one neuron. Why not use a longer last layer for all the possible actions?

Hello, you can download the latest version of the code at: https://github.com/leikun-starting/End-to-end-DRL-for-FJSP

About the actor and critic network, please refer to Actor1.py.


SignInResult extensibility for SignInManager

The current implementation of the SignInManager does not allow for extending the SignInResult that can get returned from something like PasswordSignInAsync.
For example, I need to add expiring passwords to my users.  This means I need to add a new "result" to the call.  Just like "LockedOut", "RequiresTwofactor", ect.  I will be adding a "RequiresPasswordChange".  I can override PasswordSignInAsync and add my logic, but there is no way to return the status.  What I propose is the following:
// Existing class logic goes here
public class SignInResult<T> where T : SiginInResult<T>, new()

// backwards compatibility signature
public class SignInResult : SignInResult<SignInResult> {}

And
// Existing class logic goes here
public class SignInManager<TUser, TSignInResult>
    where TUser : class
    where TSignInResult : SignInResult<TSignInResult>
{
    public virtual async Task<TSignInResult> PasswordSignInAsync(TUser user, string password, bool isPersistent, bool lockoutOnFailure)
    {
        return SignInResult.Success as TSignInResult;
    }
}

// backwards compatibility signature
public class SignInManager<TUser> : SignInManager<TUser, SignInResult> {}

Now, if I wanted to extend the SignInManager ....
public class ApplicationSignInResult : SignInResult<ApplicationSignInResult>
{
    private static readonly ApplicationSignInResult _passwordChangeRequired = new ApplicationSignInResult { RequiresPasswordChange = true };

    public bool RequiresPasswordChange { get; protected set; }

    public static ApplicationSignInResult PasswordChangeRequired => _passwordChangeRequired;

    public override string ToString()
    {
        return IsLockedOut ? "Lockedout" :
            IsNotAllowed ? "NotAllowed" :
            RequiresTwoFactor ? "RequiresTwoFactor" :
            RequiresPasswordChange ? "RequiresPasswordChange" :
            Succeeded ? "Succeeded" :
            "Failed";
    }
}

public class ApplicationSignInManager : SignInManager<ApplicationUser, ApplicationSignInResult>
{
    public override async Task<ApplicationSignInResult> PasswordSignInAsync(ApplicationUser user, string password, bool isPersistent, bool lockoutOnFailure)
    {
        //return base.PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure);
        return ApplicationSignInResult.PasswordChangeRequired;
    }
}

I'm going to have to completly replace the SignInManager with my own Application specific version (not very good), or have something like what I am proposing here...  I'm going to do the work either way, I just need to know if the approach will work.  And what it will mess up internally.  As far as I can tell, it looks like a solid approach.

OK.. So I forged the Identity repository, and created a new branch with the potential updates.  If someone could review them before I do the whole pull request process I would appreciate it.
https://github.com/RoySalisbury/Identity/tree/SignInManagerGenerics
I'm sure I will need to figure out some type of tests to create, but before I go that far I need to get the current fork running its own tests.

OK..    I'll need to refactor that a bit.
It was a fun exercise to get this all working so far ... from forking, branch, build, package, publish, and use in my own project...  Took a while, but had fun.
BTW, the extension that was added for AddSignInManager in another branch will need to be updated with this as well.  I had written it as a standalone extension awhile back and had to update it as follows:
public static void AddIdentitySignInManager<TSignInManager, TUser, TSignInResult>(this IServiceCollection services)

var managerType = typeof(SignInManager<,>).MakeGenericType(typeof(TUser), typeof(TSignInResult));

Well, beginning to think this may not be possible.  Its probably why having static properties/methods in generic types is discouraged. No matter what I come up with, it always means a breaking change.  Basically, it would be easier to leave the SignInManger signature like it is, and just deal with creating a new (or updated) SignInResult.
A better solution might be to model SignInResult after IdentityResult.
With IdentityResult you basically have "Success", and "Failed".  If "Failed" you can provide a list of IdentityError's { Code, Description }.  This allows it to be extensible, just not strongly typed (what I originally going for).  And In most cases in the source, you use the "IdentityErrorDescriber" as a way to localize the strings in the "description".
I like this approach.  You can still have the current SignInResult properties so the existing code stays as is, but if "Failed" is true, then there may be further information in the "Errors" property. (e.g. { Code = "PasswordChangeRequired", "Description = Resources.PasswordChangeRequired }).  I always hated branching code based string comparison, but sometimes its just how it has to be.
So we wind up with:
public class SignInResult
{
    // All Existing stuff still here.....

    // New Stuff
    private List<IdentityError> _errors = new List<IdentityError>();
    public IEnumerable<IdentityError> Errors => _errors;
}

We reuse the IdentityError class since it appears to be designed to be extended for the Identity system and is even setup for DI. Its also used in the PasswordValidator, RoleManager, UserManager, ect).
I'll modify my branch to try this structure.

Whats better .. a minor breaking change, or an addition that is semi-lame.
Breaking (modify the existing "Failed" property:
public static SignInResult Failed(params IdentityError[] errors)

Or ugly ..
public static SignInResult Failed => _failed;
public static SignInResult FailedWithError(params IdentityError[] errors)
I'm going to go with the 2nd option until someone can chime in on what shuld be done about the existing "Failed" results (NotAllowed, TwofactorRequired, ect) that do not have an IdentityError assigned to them.

So why can't you just add a new RequiresPasswordChangeSignInResult : SignInResult, and override whatever sign in methods you want to return this result in the cases you need.
You can add an extension method to SignInResult.RequiresPasswordChange to return true if its an instance of your type.

Because you cant change the return type of the overridden method.
For example...
public class MyIdentityResult : IdentityResult { }

public override async Task<MyIdentityResult> ChangePhoneNumberAsync(Guid userId, string phoneNumber, string token)
    {
        return new MyIdentityResult();
    }

This will error with:
'ApplicationUserManager.ChangePhoneNumberAsync(Guid, string, string)': return type must be 'Task<IdentityResult>' to match overridden member 'UserManager<ApplicationUser, Guid>.ChangePhoneNumberAsync(Guid, string, string)'

I could create a NEW one, and possibly hide the parent, but then that's not very good.
Roy

Why are you trying to change the return type, return your derived new result for the cases where you need in your method, there's no data on it, so what's wrong with what I suggested above, create a type for your new RequiresPasswordChangeSignInResult, update your calling code to contain a check for that result, alongside all the old cases.  That's basically no different than how you use the other built in results today.
Leave the signatures alone

Or are you suggesting I treat the SignInResult like an abstract class.  Always have to check the type so see what it is before I cast it.  That seems a bit heavy handed.
public class MySignInResult : SignInResult
{
    public static MySignInResult RequiresPasswordChange => _requiresPasswordChange;
}

public override async Task<SignInResult> PasswordSignInAsync(ApplicationUser user, string password, bool isPersistent, bool lockoutOnFailure)
{
    return MySignInResult.RequiresPasswordChange;
}

And then in my code
var signInResult = await PasswordSignInAsync(user, "password", false, true);

// Do normal checks .. is success, lockout, ect

// Now do my checks
if (SignInResult.RequiresPasswordChange) {}
else if (SignInResult.RequiresSomeOtherThing) {}

Is that what your suggesting?
I could also put better logic in my class so that I just do a single cast, check it, and then switch on the results:
var mySignInResult = signInResult as MySignInResult;
if (mySignInResult != null)
{
    switch (mySignInResult.ErrorCode)
    {
         case 1: { break; }
         case 2: { break; }
         case 3: { break; }
    }
}

So I have implemented it the way you suggested, and while it does work, its not something that lends itself to an inclusion into the base code.  So I wont need to provide all the PasswordHistory, LastLogin and other changes for inclusion into the framework.  If I run into other things that might require internal changes, I will re-branch and see what I can contribute.
Thanks

Cool


Dark theme not applying on input filled

What is affected?
Theming
Description
I made a simple project with sveltekit using MWC 1.1 but the dark theme doesn't apply on filled inputs or select
i am using @material/material-color-utilities i tried with predefined themes too and it has the same issue
dark mode

light mode

Reproduction
my project is on GitHub and stackblitz
Workaround
i didn't find any workarounds
Is this a regression?
No or unsure. This never worked, or I haven't tried before.
Affected versions
1.1
Browser/OS/Node environment
Google Chrome
Chrome is up to date
Version 118.0.5993.89 (Official Build) (64-bit)
Microsoft Windows 11
Version 22H2 (0S Build 22621.2428)

I can speak to the Typescript version of Material Web Color only:  There are several styles that don't get created when using the Theme Utilities, this being one of them I ran into.  Anything that uses the list component was the same.
You'll need to create your own option using the DynamicScheme  class or, if you just need something to get through for now you can check out https://github.com/thekvd/material-web-color.  It's a bit involved but not too much.  I put that up for my own reference, but if it helps someone else.  Cool.
I'm using the Scheme class which is going away, but I can't get DynamicScheme to generate the right colors at the moment.

It’s not the dynamic theme problem even I created a static theme with
https://m3.material.io/theme-builder#/custom
Its will have the same results
On Mon, Oct 23, 2023 at 12:43 PM Kevin Handy @.***>
wrote:

I can speak to the Typescript version of Material Web Color only: There
are several styles that don't get created when using the Theme Utilities,
this being one of them I ran into. Anything that uses the list component
was the same.
You'll need to create your own option using the DynamicScheme class or,
if you just need something to get through for now you can check out
https://github.com/thekvd/material-web-color. It's a bit involved but not
too much. I put that up for my own reference, but if it helps someone else.
Cool.
I'm using the Scheme class which is going away, but I can't get
DynamicScheme to generate the right colors at the moment.
—
Reply to this email directly, view it on GitHub
https://github.com/material-components/material-web/issues/5099#issuecomment-1775596918,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AIIO4JENJA6LUUS47CWDWRLYA2NDXAVCNFSM6AAAAAA6LTPCICVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZVGU4TMOJRHA
.
You are receiving this because you authored the thread.Message ID:
@.***>

@isaacwein I have come across this problem when I was trying to make my own dark theme. I found that the --md-sys-color-on-surface-variant changes the color of the text.

@isaacwein I have come across this problem when I was trying to make my own dark theme. I found that the --md-sys-color-on-surface-variant changes the color of the text.

the text color is accurate.
what variable is for changing the color from the input background that can be a temporary fix

@material/material-color-utilities is unfortunately not up to date with the latest Material tokens. It's a separate project and it's hard for our team to help get it updated 😔
In the meantime, I recommend using https://material-web.dev and its theme generator (palette icon in the top right corner). This is a site just for this project and is kept up to date.
You can press the copy button after setting your hex color to get all the correct tokens, including the new surface-container tokens that the color utilities are missing, which is why some surface containers like text field's aren't being set.
We're working on better resources for generating themes that isn't reliant on other libs that may be using a different Material token version.

dynamic themes from @material/material-color-utilities are supported based on the https://material-web.dev/,
what is the material-web.dev website using to generate themes at runtime, can i use it too

Thank you for clarifying

in https://github.com/material-components/material-web/blob/main/catalog/src/utils/material-color-helpers.ts#L13C45-L13C45
I see that @material/material-color-utilities is being used that strange

I believe it's using the HCT colorspace utilities from that package, but not the main Scheme class from the utilities, which doesn't have all the correct system tokens.

Thank you for pointing me to that file it will help me a lot
I was wondering why if I have that bug why the material-web.dev doesn't have the same bug, now everything make sense thank you very much for your time

@isaacwein For the text field specifically the background is --md-sys-color-surface-container-highest. I found that using the tools inside the Figma template will help you create a color palate that can plug into the component css.

No, they are separate teams, which unfortunately makes it difficult to keep things in sync.
We plan on building our own API for theme generation that uses the theme builder, but keeps things up to date with our specific version of tokens.


a configuration to strip whitespaces?

${{TITLE}} in
"pr_template": "- PR: #${{NUMBER}} **${{TITLE}}** by ${{AUTHOR}}",

often does not get bold because of leading or trailing whitespaces. could there be a configuration to strip remaining whitespaces?

@scarf005 thank you for the ticket. That's an interesting note.
Generally I'd say the authors of PRs should ensure there are no whitespaces before and after - as it comes back to PR etiquette to spend the appropriate time to have these nicely.
That being said though, while there is no "simple" flag to trail whitespaces, there are various utils provided as part of the configuration which offer multiple ways to modify the content.
While the normal transformers could be used, it's fair that these are not the most fitting for the request.
Instead the new feature of CUSTOM_PLACEHOLDERs (which is still experimental - but stable) can be used.
An example can be found here: https://github.com/mikepenz/release-changelog-builder-action#experimental-
This allows you to define a custom placeholder, for example STRIPPED_TITLE - and then an associated regex extracting the text with the whitespaces removed. Some regex like (([\S]+[\s]*)*[\S]+) (https://regexr.com/321iv)

Looked some more into this.
So while the custom_placeholder feature itself would be the right way to go for this request, it seems that the current variant of the regex usage for these may not match the requirement fully.
Given that currently it would use a value.replace(transformer.pattern, transformer.target) condition to extract a value.
And if there are no whitespaces that may not return any data - https://github.com/mikepenz/release-changelog-builder-action/blob/develop/src/transform.ts#L340
It's probably worth to explore on expanding the flexibility of the placeholder to also cover cases like yours.

As noted in my previous message, there needs to be a change to fully handle your case. Which would be done in this PR: https://github.com/mikepenz/release-changelog-builder-action/pull/933 (given that this may change behaviour, I can't say for certain yet when this may land in a release) - in any way you can use that particular commit for the time
Additionally here is a small test-case for the specific custom placeholder: https://github.com/mikepenz/release-changelog-builder-action/blob/9a9874ae0a080b834fd92a2207cdf34be0e6665f/tests/transform.test.ts


Update team in CODEOWNERS

What does this PR do?
Reflects new ownership.
Motivation
Team owner changed.

/merge

/remove


Stitch new

@ehavazli Could you look into this code?

retiring this as we have approach from marin now


Create smg

I believe you might need a .json extension on this file.

oh my, how do I add the extension to the file?

Thank you!


Connection fails: Error: Handshake inactivity timeout in loopback

Hi,
I have installed Node.js version 6.9.0 on my machine. I am trying to run sample for SQL database connectivity from examples. I am getting "Connection fails: Error: Handshake inactivity timeout" when i launch application. please help
regards
arvind

Hi @arvindkrbhatt the error means that it took longer than 10 seconds to establish a connection to your MySQL server. You may want to investigate packet captures to see what is making the connection establishment take so long, but you can always increase the timeout by changing the  acquireTimeout pool option.

where can i set this option in in sample at https://github.com/strongloop/loopback-example-database/tree/MySQL. i directly used this sample even getting same issue. I also tried to increase time out in sequence.js setting   this._timeout  = 100000; but no luck.

@arvindkrbhatt , As dougwilson pointed out, when the default timeout is exceeded it usually points to something else interfering with the connection such as a firewall or some configuration problem. However, if you want to extend the timeout for that Loopback demo you would add a configuration line after line 13:
https://github.com/strongloop/loopback-example-database/blob/mysql/server/datasources.json#L13
So it looks like:
{
  "db": {
    "name": "db",
    "connector": "memory"
  },
  "accountDS": {
    "host": "demo.strongloop.com",
    "port": 3306,
    "database": "loopback-example-mysql",
    "username": "demo",
    "password": "L00pBack",
    "name": "accountDS",
    "connector": "mysql",
    "connectTimeout": 100000
  }
}

-Don't forget to add the comma at the end of line 13!

@bbito Unfortunately still i am getting same error. my colleagues also facing the same problem with sample. I'll be thankful to you if you could please suggest how can i debug it or any tool to debug. Setting up connectTimeout is also not working. I'll try to run this sample in my home network, just to verify if its related to firewall or something else.

@arvindkrbhatt As I wrote earlier, I have no trouble connecting to the Loopback Demo MySQL server using the supplied credentials via MySQL Workbench. I'd suggest trying that and if you do connect successfully, then I would suspect a problem with the Loopback Sample application.
If you find that, the correct place to register an issue would be with the mysql branch of Loopback's loopback-example-database here:
https://github.com/strongloop/loopback-example-database/issues

Thanks. I'll log this issue to place you suggested.

I am facing the same issue. I am running node 4.6.1 version.
I tried connecting to local mysql server as well as the mysql server on the amazon aws. But i still face the same error. It does not look like its the code issue but has to do something with the firewall issue may be ? As i am able to connect to mysql from the workbench.

I had the same issue and just fixed it. I use Amazon AWS RDS server and set the security group inbound for my IP only. And this morning somehow my IP address changed. So I just updated the IP on AWS and everything works. Hope this helps.

Try changing the address of your computer's DNS server and IP.


Design: Privacy & Opt-in/out for cloud services

Is your feature request related to a problem? Please describe.
We have different cloud services that we need to give the user to opt-in or out of.  These would be:

#301
#304

Describe the solution you'd like

During onboarding, give the user opt-in/out options for:

Storing secret in Google Credential Manager
Enabling crash analytics

In settings, give the user opt-in/out options for

Storing secret in Google Credential Manager
Enabling crash analytics

My suggestion to implement it as above is primarily based on grouping these opt-in/out prompts together, although other designs that shows them separately is also reasonable depending on what the ultimate designs look like.

This version was made assuming that the user's choice was to use a cloud service or physically write down (and prove) their backup. Crash analytics currently does not share enough info about the process.

@geffenz @ccjernigan Thanks for these designs. I have a few thoughts to discuss:

Don't we want to have all the consents in one place? I'm in favor of having only one consent screen, which we prompt to user in the onboarding. It might be ideally extendable so we're able to add another service to opt-in/out later (e.g. Google Credentials, Firebase Crashlytics, Firebase Analytics, etc.). I can imagine several switch buttons with descriptions - each for a different service. Most important for us for the first production build are:

Google smart lock -  For saving the seed phrase. We already have it on the first screen above, maybe just a little naming change: Google Credentials Manager -> Google Smart Lock. And making it shorter for the switch button?
Crashlytics - This can be probably again only a switch button with a text like: Send anonymous crash reports to our Firebase Crahslytics.

Or maybe switch buttons are not enough to properly explain to users what we're talking about. So these switch buttons may end up as buttons leading to a separate permission (service) detail screen?

What is the right place for this new screen? A common use-case is to have it as a last page of the onboarding, for example.

After implementing this new page, we'd be good to use Google Credentials Manager for the saving or restoring of the user seed phrase in Create new wallet or Restore existing wallet flows.

The second Settings screen seems good to me. May be just a little change to hide the opt-in/out Crash button its own Permission screen so it's not so easy to accidentally switch it off?

@geffenz  @ccjernigan I think we can have 2 kinds of UX here.

show cloud storage of credentials upfront and delay self custody backup + periodically prompting the user to back up them physically
Make the user follow the backup flow as it is currently and then offer to additionally back the keys up in the cloud.

1 favors faster onboarding, while 2 favors self-custody

Crashlytics - This can be probably again only a switch button with a text like: Send anonymous crash reports to our Firebase Crahslytics.

Note: I assume this is more a colloquial thing but we've had negative sentiment on Firebase being shipped with the app. So we opted for open source crash analytics like bugsnag instead.

Yes @pacu, you're right about the UX types we have here. We've agreed that we better split consents for analytics and credentials to keep them closer to the related use-case. There are also other flows we need to cover with designs, like Restore wallet flow or additional opt-in/out later from Settings, etc. About Firebase, yes, that was just an example, but yea, we probably choose something open-source. Thanks for your thought!

I'm closing this, as the designs and related implementation tasks are prepared.


Using jaq-core as a library

I was wondering if it would be possible to use jaq-core or jaq-std as a library. I have tried but I get an unresolved import for jaq_core::Ctx. Thanks.

@01mf02  I'd also love to use jaq as a library in one of my own projects as well for jq-like filters and transformations. I tried integrating jq-rs but it's magnitudes slower than just shelling out to jq (which I do atm).

Thanks, will give that a try!

@tjbell, perhaps you were not able to import jaq_core::Ctx because this was only available in the development version, not in the version on crates.io. I just released a new version of jaq / jaq_core, so perhaps this solves your issue. :)


[HP EliteBook 840 G6] Special keys remapping

ℹ Computer information

PowerToys version: 0.23.2
PowerToy Utility: Keyboard Manager
Running PowerToys as Admin:
Windows build number: [run "winver"]: Win10 1909

📝 Provide detailed reproduction steps (if any)
I am using laptop which does not have Insert key. Instead of there are three additional keys (right from F12).
Presentation
Answer call
Stop call
I wanted to use your application to map one of these keys to Insert key, but I couldn't.
For example this presentation key is seen by PowerToys like F22, but after remapping it does not work. Insert is not invoked.
Answer call key is seen as: Win (left)
Stop call is seen as: F14
✔ Expected result
Remapping works for additional keys.
❌ Actual result
Remapping does not work.
📷 Screenshots
Are there any useful screenshots? WinKey+Shift+S and then just paste them directly into the form

hi, do these keys actually engage what PT see's them as? So does your answer call key able to invoke the Win menu? also does the Fn key change the behaviour of these keys

@saahmedm
Hi,
No. I don't see Windows menu when I click that key. There is no code changed when I additionally press Fn key.
Previously I have written about it to author of sharpkeys:
https://github.com/randyrants/sharpkeys/issues/315
There is more details. There is suggestion that this keys response with triple-bytes.

@depablo
Hi.
These keys are not keys,but shortcuts.
These shortcuts are(from left to right):

Presentation Ctrl(Left)+Alt(Left)+F22
Answer Call Win(Left)+Alt(Left)+F15
Stop Call Ctrl(Left)+Alt(Left)+F14

So you can use "Remap Shortcuts" to remap them.
PS:You can also enter your bios,find an option like"Fn...additional keys"(I can't remember the detail,sorry) and tick it.
Then you can use fn+m or fn+e as an insert key
My Computer is Elitebook 735 G5.Hope my advice is helpful.

https://github.com/microsoft/PowerToys/issues/3820 would be tracking issue


feat(valiation): account for controls not evaluated by Lula

Description
Opening as a draft to discuss the more convenient way to provide feedback when some controls do not have any Lula validation defined:
Currently, if the implemented controls do not define a Lula validation, they are reported as not-satisfied. This is fine, but it would be great to indicate the reasons for that verdict in the assessment results, such as "no lula validation is defined for this control", so users can properly reason about the result.
This can be achieved in different ways I'd like to discuss:

In the first place, is this a valid use case? Should the project account for such implemented-controls that do not define a lula validation? (And if not, should there be some validation instead?)
If the answer to the above is that Lula should gracefully handle that:

Does it make sense to keep findings for those controls in the findings list and in the reviewed-controls?

If not, the current state of the PR addresses it by not including the findings in the result. Or should that be reported in a different way?
If yes, what would be the best way to communicate that no validation was performed to determine the control is not-satisfied? Would a note in the finding remarks be OK? Or should that information be provided somewhere else?

Related Issue
https://github.com/defenseunicorns/lula/issues/776
https://github.com/defenseunicorns/lula/issues/350
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Other (security config, docs update, etc)

Checklist before merging

[ ] Test, docs, adr added or updated as needed
[ ] Schema Updates applied
[ ] Contributor Guide Steps followed

Currently, if the implemented controls do not define a Lula validation, they are reported as not-satisfied. This is fine, but it would be great to indicate the reasons for that verdict in the assessment results, such as "no lula validation is defined for this control", so users can properly reason about the result.

Agreed!

This can be achieved in different ways I'd like to discuss:

In the first place, is this a valid use case? Should the project account for such implemented-controls that do not define a lula validation? (And if not, should there be some validation instead?)

I believe the project should still account for them - more context below.

If the answer to the above is that Lula should gracefully handle that:

Does it make sense to keep findings for those controls in the findings list and in the reviewed-controls?

Current line of thought is yes - Retaining these controls as Findings allows for a few core principles to Lula adoption:

Lula augments OSCAL - People can bring their own OSCAL with zero Lula implementation and generate an Assessment Results file that they could then use manually or with other systems.
It allows for historical traceability - A control that was not-satisfied previously is now satisfied -> Report this (as well as the opposite scenario)

* If not, the current state of the PR addresses it by not including the findings in the result. Or should that be reported in a different way?
* If yes, what would be the best way to communicate that no validation was performed to determine the control is not-satisfied? Would a note in the finding remarks be OK? Or should that information be provided somewhere else?

I believe finding.remarks we be a great place to quickly annotated that no evidence was provided or collected to support the control being satisfied. This allows us to explore more concepts around what evidence means to findings.
Open to other opinions for consideration though.

I believe finding.remarks we be a great place to quickly annotated that no evidence was provided or collected to support the control being satisfied. This allows us to explore more concepts around what evidence means to findings.

That sounds good to me and as a good starting point. I'll update the PR accordingly following this approach and add the relevant tests, etc. Thx!

I'd possibly throw out the other field in status which is the reason one. I sort of interpreted that field as more "machine readable", with remarks being just additional context. The constraint is that the value "may be locally defined", and I'm not totally sure what that is, but I assume it's something we could choose to enumerate however we want?
So for example we could have an enumeration of options for reason (validations-failed, validations-passed, partial-validations, no-validations) then some additional more human friendly remark that's like "No validations are linked to the control" or "Some validations failed (this one, that one)"
This is also something we could instrument over time and for this initial thought I think remarks would suffice 😄

Ah great point - I think it would be great to start the implementation of reason. The token type and ambiguity around "may be locally defined" (I need to understand what this really means) makes this a little unclear.
That said - leaning into finding.status.reason = other as defined natively and finding.status.remarks being the remarks section to augment?

That said - leaning into finding.status.reason = other as defined natively and finding.status.remarks being the remarks section to augment?

Yeah I think that would work well!

Ok, pushed a commit implementing the suggested approach


feat(legend): add legend.color

Fix #9916. When itemStyle.color is a function, the legend's color may be uncontrollable.

@Ovilia First, to deal with default color. Should I just check the type or directly get itemModel.option.color?
When option.color is string, data.getVisual('color') is the same as itemModel.get('color')
var color = typeof itemModel.get('color') === 'string'
    ? itemModel.get('color')
    : data.getVisual('color')

Second, it also can be useful when I only need to set various line.lineStyle.color and line.ItemStyle.color. In that case, the legend color will be red, but I want it is blue:
option = {
  legend: {
    backgroundColor: "rgba(0,100,50,0.2)"
  },
  tooltip: {},
  xAxis: {
    data: seriesInfo.xAxisData
  },
  yAxis: {
    splitArea: {
      show: true
    }
  },
  series: {
    type: "line",
    name: "test",
    data: [
      {
        name: 1,
        value: 20
      },
      {
        name: 20,
        value: 30
      }
    ],
    lineStyle: {
      color: "blue"
    },
    itemStyle: {
      color: "red"
    }
  }
};

@100pah Please help review this PR.

How to use it as a function? I tried with this but it doesn't seem to work.
legend: {
        data: ['2011年', '2012年'],
        color: function (param) {
            console.log(param);
            return 'blue';
        }
},

Sorry, now it's fixed.And also add array support.


Add disabled and invalid statuses to input

More changes here.
Let me know what you think about disabled theme from the input. Probably the colors will also have to change.
The +/- buttons in InputNumber, if used inside a form, were submitting  the form and reloading page. I've added prevent_default() there.
I also updated demo pages and fixed some small errors I found.
There was a bug on the demo page where it would not switch from 'input-number' to 'input' pages. It's because there was a 'starts_with' check. I've changed it to 'eq'. Let me know if this breaks anything and other fix is needed.

Ok, merge

Hi, as I keep working on my project another thing I'm missing is something like this:
https://hope-ui.com/docs/features/style-props
Being able to do ... would be really nice. Adding this to a single component is easy, right?
#[prop(optional, into)] mr: MaybeSignal<u16>,
and later we can do even:
let view = view! { ... all the actual code for top level component is here ... };
view.style("margin-right", move || format!("{}px", mr.get()))
This would be generic for all components but still a lot of work to modify all of them.
Do you think this could be done by a macro? Like:
#[style_props]
#[component]
pub fn Button(....
Could the macro add all the optional params (m, mr, ml, mt, mb, p, pr, pl.....) and then take the return value of the method and add
.style("margin"..)
.style("margin-right"..)
.style("padding"...)
and so on? Would that be a good solution for this? I never did macros but I could try to figure it out. What do you think?

Personally I really like the short version used by chakra ui and other libraries.
  is just so much faster and shorter than
If possible I would definitely go with abbreviated styles.
To address your points:

If it would be possible to do with a macro it wouldn't be a problem, we just extend the macro to add add new styles to all components
2 and 3 Maybe it would be possible to solve both by doing something like:

view! {

and this could expand to:
style:margin-right=...
style:margin-left=..
and so on.
This would give us full control of where each style is applied.

I also think we can do both. Implement #[prop(optional, into)] style: Option first and then try to add abbreviated attributes for the most common styles. This would give us full control of the style first and later optional, faster way to do basic things.

Basically agree, but I need to investigate the feasibility of the abbreviation attribute.

I think you're right. Using Tailwind would be the quickest way to do it. It also covers media queries so it would offer more functionality out of the box. I think that's the way to go.
So would it be like current style attribute in button: [prop(optional, into)] class: MaybeSignal<String> ?
I don't really understand what #[prop(optional, into)] class: Option<AttributeValue> would give us. We could do <Button class=5>, right?

Using [prop(optional, into)] class: MaybeSignal<String> might be a good choice.


Bring Vale into the future

Move Vale directory out from Netlify into its own directory
Add a new Make target to run Vale on changed .md files prior to git commit
Use new vocab structure in docs here: https://vale.sh/docs/topics/vocab/
Update Vale action to use Reviewdog
Vale no longer fails when it finds an error in the text.

This change is

Does it make sense to add some reject rules?

@mdlinville We can, but 1) I don't know any reject rules we need right now. Can you think of any? Also, would this block successful merging of this PR?

Does it make sense to add some reject rules?

@mdlinville We can, but 1) I don't know any reject rules we need right now. Can you think of any? Also, would this block successful merging of this PR?

No, I can't think of any that aren't already covered by another test. It makes sense to use an iterative approach.


Feature/document permission list

With this PR the documents access permissions have been improved.

Add documents' permission test case
Refactor documents.views
Add support do document creation on nested route.
Once approved, we will be able to get the list of documents and create a document from the nested route: /api/v1/shipments/{shipment_id}/documents/

Do you think you could add the api call for listing the shipments' document to the postman? Didn't see it there

Do you think you could add the api call for listing the shipments' document to the postman? Didn't see it there

That's id gonna be another PR. Thanks for bringing it up!


Sound  command 'sfx' behavior

My observations with 'sfx'. Looks like all sfx statements are put onto a queue and only the last one played.
Not sure if this is the expected behavior. Below is the code tested:
10 sfx 0,0
20 sfx 0,1
30 sfx 0,2
Only sfx 0,2 gets executed.

This is deliberate. When writing Galaxians in BASIC I found I was always clearing the queue before SFX commands. This actually makes sense as most of them are in response to events in the game, so if you queue them they won't be coincident with the trigger.
I couldn't think of a usage for these queuing occasionally chaining two together. So I decided to clear the queue always for SFX.
If you want to wait, the following code will wait for the sound effect to compete,
repeat:until notes(0) = 0


TODO: Implement fade effects for screen changing, also allowing dynamic loading.

Basically using a transition effect to change across game states i. e. main menu to in-game, so that using two Texture2D objects together with a vector of Image, the background can be loaded into the second Texture2D object (the first is the currently moving background). This will minimize VRAM usage, and prevent stuttering on screen changes.

Dynamic background loading is in magnetrwn/raylib-bubbles@6030a4e of branch feature/implement_game, soon moving to develop, while fading is not yet supported.


Added HELIX subroutine

First draft of Helix subroutine, not tested
Description and Purpose
Type of change
What types of change is it?
Select the appropriate type(s) that describe this PR

[ ] Bugfix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (non-backwards-compatible fix or feature)
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no API changes)
[ ] Documentation update
[ ] Maintenance update
[ ] Other (please describe)

Github issues addressed, if one exists
Examples/Testing, if applicable
No testing

I am doubting about how to increment the Sinusoids for the Helix signal. Not sure if using LocalVar%Time is the right approach. How should we do this?

We should also think about the activated region. Will Helix only be activated in the below-rated region?


Thread-safety

Cache of implicit integrators is not thread-safe. e.g.
cache = NonlinearFunctionCacheSIPRK{ST}(D, M, S)

Possible solution: pre-generate cache Base.Threads.nthreads times and use according to threadid.

Unfortunately, it is not that easy. However, ParallelSimulation itself as well as the basic Runge-Kutta methods (DIRK, FIRK, IPRK) are now thread-safe (#40).

PR #50 introduces a new cache mechanism that is fully thread-safe.


Dataset location

How to use pre-trained models to obtain point clouds of data sets such as TNT and LLFF? Where should these data sets be placed?

Hello, thanks for your interest in our work.
For LLFF dataset, you can refer to scripts/mvsgs/llff_ft.sh
L2 data_dir represents the location of LLFF dataset.
L3 dir_ply represents the save directory of point clouds.
L7 python run.py --type evaluate --cfg_file configs/mvsgs/llff_eval.yaml save_ply True dir_ply $dir_ply  can generate point clouds for all scenes in LLFF dataset.
L9-14 is per-scene optimization by using the above point cloud as initialization.
If you just want to obtain the point cloud, you can simply run:
python run.py --type evaluate --cfg_file configs/mvsgs/llff_eval.yaml save_ply True dir_ply mvsgs_pointcloud test_dataset.data_root <path to LLFF>

dir_ply represents the save directory of point clouds, and test_dataset.data_root represents the location of LLFF dataset. You can also specify the data set directory in the config file.
It is similar for TNT or any other data set.


Support autofix output as patch

I'm looking to integrate Rubocop with phabricator's arc lint autofix method, but in order to do that I need to be able to get the proposed fixes in some form of output, instead of instantly applied to the code. I could implement this with some git wizardry, but it would save me a loooot of work if there were some way to generate a patch file.
Is there any way to implement this in Rubocop and/or Parser that won't be a huge hassle?
e.g.:
  describe 'foo' do

    bar {xyzzy}
    baz

  end

would generate
rubocop foo.rb -a --format=patch
Inspecting 1 file
C

Offenses:

foo.rb:2:1: C: [Corrected] Extra empty line detected at block body beginning.
diff --git a/foo.rb b/foo.rb
index b408de0..5553e70 100644
--- a/foo.rb
+++ b/foo.rb
@@ -1,5 +1,4 @@
 describe 'foo' do
-
   bar {xyzzy}
   baz

foo.rb:3:8: C: [Corrected] Space missing inside {.
  bar {xyzzy}
       ^
diff --git a/foo.rb b/foo.rb
index b408de0..ed62315 100644
--- a/foo.rb
+++ b/foo.rb
@@ -1,6 +1,6 @@
 describe 'foo' do

-  bar {xyzzy}
+  bar { xyzzy}
   baz

foo.rb:3:13: C: [Corrected] Space missing inside }.
  bar {xyzzy}
            ^
diff --git a/foo.rb b/foo.rb
index b408de0..f90c507 100644
--- a/foo.rb
+++ b/foo.rb
@@ -1,6 +1,6 @@
 describe 'foo' do

-  bar {xyzzy}
+  bar {xyzzy }
   baz

foo.rb:4:1: C: [Corrected] Extra empty line detected at block body end.
diff --git a/foo.rb b/foo.rb
index b408de0..f89556a 100644
--- a/foo.rb
+++ b/foo.rb
@@ -4,5 +4,4 @@ describe 'foo' do
   baz

-
 end

foo.rb:6:1: C: [Corrected] Extra blank line detected.
diff --git a/foo.rb b/foo.rb
index b408de0..f89556a 100644
--- a/foo.rb
+++ b/foo.rb
@@ -4,5 +4,4 @@ describe 'foo' do
   baz

-
 end

foo.rb:7:1: C: [Corrected] Extra blank line detected.
diff --git a/foo.rb b/foo.rb
index b408de0..f89556a 100644
--- a/foo.rb
+++ b/foo.rb
@@ -4,5 +4,4 @@ describe 'foo' do
   baz

-
 end

foo.rb:7:1: C: [Corrected] Extra empty line detected at block body end.
diff --git a/foo.rb b/foo.rb
index b408de0..f89556a 100644
--- a/foo.rb
+++ b/foo.rb
@@ -4,5 +4,4 @@ describe 'foo' do
   baz

-
 end

Some "git wizardry" outside of RuboCop is the right way to go here, for these reasons:

auto-correction is not done by a formatter, so it would require co-ordination between parts of the code that normally are quite decoupled
we have so far kept RuboCop revision control system agnostic, which I think is a good thing. It's better if RuboCop doesn't know about git's patch format, or require git to be installed to perform the diff.

Once there was someone who asked for the auto-correction results to be output as JSON, rather than applied directly to the FS. This seems to fall in the same vein.
git's patch format is not specific to git, but is a standard format knows as a "unified diff".

Related to https://github.com/bbatsov/rubocop/issues/2932. Maybe an API which can be invoked programmatically as @alexdowad says there could be used for multiple purposes like these.

Looking into the code, It almost feel like I should file a request to the folks over at Parser. It feels like it should be possible to format a sequence of Parser::Source::Rewriter.(remove/replace/insert_before/insert_after) commands in unified diff format, since a pretty high percentage of all code changes are done that way.. Not sure if I'm the right person to ask that from them though

Not sure if I'm the right person to ask that from them though.

Why wouldn't you be the "right person"? Who do you think the right person would be?

Imho this feature should only be requested from Parser if rubocop intends to use it. Since I'm not committed to building this in rubocop, I don't feel comfortable asking them for a feature that might not get used

I think this would be really useful to have as well. This in the combination with a non-zero exit code for any offences makes it possible to use in a CI system to verify that RuboCop is followed.

I'm closing this ticket due to no recent activity. Feel free to re-open it if you ever come back to it.


Returning after “Jump to Definition”

When I right-click the toLowerCase call in index.ts below and select “Jump to Definition”, utils.ts is opened and scrolled so the function definition is viewable.
Is there a command to return to the original position (index.ts with the function call in-view)? I expected the “Go → Back” item in Nova’s menu bar to accomplish this, but it’s disabled (grayed out).
// index.ts
import { toLowerCase } from "./utils"
const output = toLowerCase("ASDF")
console.log(output)

// utils.ts
function toLowerCase(x: string): string {
  return x.toLowerCase()
}

The "Jump to Definition" functionality is no longer managed by this extension as of v2, since Nova provides it directly through the language service. I can't do anything from this extension to support this, but it definitely seems like it should work. Can you please report this directly to Panic?

From @apexskier in https://github.com/apexskier/nova-typescript/issues/235#issuecomment-826065869

The "Jump to Definition" functionality is no longer managed by this extension as of v2, since Nova provides it directly through the language service. I can't do anything from this extension to support this, but it definitely seems like it should work. Can you please report this directly to Panic?

Thanks for the clarification! I’ll report the issue to Panic 👍 Closing since this issue is unfixable.