Netty Client

I create this project(https://github.com/github-big-cheng/netty-protostuff.git) when I learning Netty,
I want to code a utility class NettyClient, it can work for http, rpc with a few config,
it will build a pool with org.apache.commons.commons-pool2 when accecpt a  new group of host and port,
but when i using a threadPool with 10 threads to run it, it does not work well.
I think it's my misuse to use Netty, but there's too little information about my exceptions on the Internet, so I went here for some helps.
Looking forward to your kind reply! Thanks very much...
Expected behavior
It can works well in highly High concurrency environment
Actual behavior

It looks like blocked in rpc model...
Also not work well in http model...

Steps to reproduce
when rpc test:
step 1. run ServerMain.java
step 2. run RpcClientMain.java
It looks like blocked, but I can't find the problems...
sometimes, it stoped with exception as 'throw exception:DefaultChannelPromise@447aeba5(incomplete)'
when http test
step 1. run HttpCLientMain.java
there are some exceptions like this:
io.netty.channel.ChannelPipelineException: io.netty.handler.codec.http.HttpClientCodec is not a @Sharable handler, so can't be added or removed multiple times.
Minimal yet complete reproducer code (or URL to code)
https://github.com/github-big-cheng/netty-protostuff.git
Netty version
5.0.0.Alpha2
JVM version (e.g. java -version)
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
OS version (e.g. uname -a)

Why are you using Netty 5.0.0.Alpha2?

Why are you using Netty 5.0.0.Alpha2?

It's that version unstable? which version should I take? I'm new to learn Netty, and hope to use it in my work usefully

4.1.51.Final...

4.1.51.Final...

I will try it, thanks a lot~

@github-big-cheng Hi one of the more likely reasons you didn’t add it to the pipeline. This is code client.channel.pipeline().get(NettyClientByteBufHandler.class) will try to found any handler which is represented by NettyClientByteBufHandler.class otherwise return null.

@github-big-cheng Hi one of the more likely reasons you didn’t add it to the pipeline. This is code client.channel.pipeline().get(NettyClientByteBufHandler.class) will try to found any handler which is represented by NettyClientByteBufHandler.class otherwise return null.

I had added to a new NettyClientByteBufHandler() pipeline already...
        this.bootstrap = new Bootstrap();         this.bootstrap.group(WORKER_GROUP)                     .channel(NioSocketChannel.class)                     .option(ChannelOption.SO_KEEPALIVE, true)                     .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 3000)                     .handler(new ChannelInitializer() {             @Override             protected void initChannel(Channel ch) throws Exception {                 ChannelPipeline pipeline = ch.pipeline();                 if(config.getHandlers()!=null && config.getHandlers().length>0){                     pipeline.addLast(config.getHandlers());                 }             }         });

I generate a new NettyClientPool (it created by commons-pool2) when accept a new group of host,port and handlers,when a same sign NettyConfig accept,
the NettyConfig is like this:
String host;
int port;
ChannelHandler[] handlers;
public int hashCode(){return host+port+handlers;}
my NettyCLientPool will return a NettyClient for net work, and NettyClient  is about work like this:
Channel channel;
NettyConfig config;
this.bootstrap = new Bootstrap();
        this.bootstrap.group(WORKER_GROUP)
                    .channel(NioSocketChannel.class)
                    .option(ChannelOption.SO_KEEPALIVE, true)
                    .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 3000)
                    .handler(new ChannelInitializer() {
            @Override
            protected void initChannel(Channel ch) throws Exception {
                ChannelPipeline pipeline = ch.pipeline();
                if(config.getHandlers()!=null && config.getHandlers().length>0){
                    pipeline.addLast(config.getHandlers());
                }
            }
           ChannelFuture future =                 this.bootstrap.connect(this.config.getHost(), this.config.getPort());
        this.channel = future.channel();
        });
The caller can use NettClient in multi model, like rpc,http just call the model static method.
The model config is about like this:
private static ChannelHandler[] httpHandlers(){
        ChannelHandler[] handlers = new ChannelHandler[]{
               new HttpClientCodec(), // codec                new HttpObjectAggregator(1024 * 10 * 1024), // aggegator                 new HttpContentDecompressor(), //  decompressor                 new ChunkedWriteHandler(), // chunked                  new NettyClientHttpObjHandler(), // http handler         };         return handlers;
    }
Is it used improper? the Channel cann't be used many times in loop?

May I  found some help here ?...

Tried with newer version of Netty?

Tried with newer version of Netty?

umm... I had tried with 4.1.51.Final, 5.0.0.Alpha1,5.0.0.Alpha2
There are some screenshot about it...
Sincerely hope to get some help, all the best wishes!

Use blocking operation because by the time you fetch it, sometime the value is present and sometimes it's null. So block or use listeners.

Use blocking operation because by the time you fetch it, sometime the value is present and sometimes it's null. So block or use listeners.

It more detail about it?Thanks a lot

Use blocking operation because by the time you fetch it, sometime the value is present and sometimes it's null. So block or use listeners.

I had block it with Promise.get() , and tried it like channel.arrt().set(promise) or channel.get(MyHandler.class).setPromise(promise),but all not work well
Is it more detail about it?Thanks a lot

Take a look at my code:

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.dns.doh.DoHDecoder;
import io.netty.handler.codec.dns.doh.DoHQueryEncoder;
import io.netty.handler.codec.http.HttpClientCodec;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http2.DefaultHttp2Connection;
import io.netty.handler.codec.http2.DelegatingDecompressorFrameListener;
import io.netty.handler.codec.http2.Http2Connection;
import io.netty.handler.codec.http2.HttpToHttp2ConnectionHandler;
import io.netty.handler.codec.http2.HttpToHttp2ConnectionHandlerBuilder;
import io.netty.handler.codec.http2.InboundHttp2ToHttpAdapter;
import io.netty.handler.codec.http2.InboundHttp2ToHttpAdapterBuilder;
import io.netty.handler.ssl.ApplicationProtocolNames;
import io.netty.handler.ssl.ApplicationProtocolNegotiationHandler;
import io.netty.util.concurrent.Promise;
import io.netty.util.internal.ObjectUtil;

import java.net.URL;

final class ALPNHandler extends ApplicationProtocolNegotiationHandler {

    private final URL url;
    private final Promise<Void> promise;

    ALPNHandler(URL url, Promise<Void> promise) {
        super(ApplicationProtocolNames.HTTP_1_1);
        this.url = url;
        this.promise = ObjectUtil.checkNotNull(promise, "promise");
    }

    Promise<Void> promise() {
        return promise;
    }

    @Override
    protected void configurePipeline(ChannelHandlerContext ctx, String protocol) {
        if (protocol.equalsIgnoreCase(ApplicationProtocolNames.HTTP_2)) {
            Http2Connection connection = new DefaultHttp2Connection(false);

            InboundHttp2ToHttpAdapter listener = new InboundHttp2ToHttpAdapterBuilder(connection)
                    .propagateSettings(false)
                    .validateHttpHeaders(true)
                    .maxContentLength(1024 * 64)
                    .build();

            HttpToHttp2ConnectionHandler http2Handler = new HttpToHttp2ConnectionHandlerBuilder()
                    .frameListener(new DelegatingDecompressorFrameListener(connection, listener))
                    .connection(connection)
                    .build();

            ctx.pipeline().addLast(http2Handler,
                    new HttpObjectAggregator(1024 * 64, true),
                    new DoHQueryEncoder(url),
                    new DoHDecoder(),
                    new Handler());
            promise.setSuccess(null);
        } else if (protocol.equalsIgnoreCase(ApplicationProtocolNames.HTTP_1_1)) {
            ctx.pipeline().addLast(
                    new HttpClientCodec(),
                    new HttpObjectAggregator(1024 * 64, true),
                    new DoHQueryEncoder(url),
                    new DoHDecoder(),
                    new Handler());
            promise.setSuccess(null);
        } else {
            promise.setFailure(new IllegalArgumentException("Unsupported Protocol: " + protocol));
        }
    }

    @Override
    protected void handshakeFailure(ChannelHandlerContext ctx, Throwable cause) {
        promise.setFailure(cause);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        promise.setFailure(cause);
    }
}

And then block like this:
 channel.pipeline().get(ALPNHandler.class).promise().sync();

And then block like this:
 channel.pipeline().get(ALPNHandler.class).promise().sync();

thanks very much!~~ I'll try it as soon as I can~

@hyperxpro
Thanks a lot!~ I had resolve it !!!!
I use client.channel.attr(NETTY_CLIENT_REQUEST).set(byteBuf);   and used override method channelActive  ctx.writeAndFlush(byteBuf) to instead of of client.channel.ctx.writeAndFlush(byteBuf) .
Thank you again for all kind helps !
There are some codes, hope can help some other peoples...
`// set request
ByteBuf byteBuf = Unpooled.copiedBuffer(message);
client.channel.attr(NETTY_CLIENT_REQUEST).set(byteBuf);
        // set response
        NettyResponse<byte[]> response = new NettyResponse();
        client.channel.attr(NETTY_CLIENT_PROMISE).set(response);

        // block for result
        result = response.get();`

`@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
this.byteBuf = (ByteBuf) ctx.channel().attr(NettyClient.NETTY_CLIENT_REQUEST).get();
if(this.byteBuf == null){
throw new SystemException("byteBuf is not bind...");
}
    ctx.writeAndFlush(this.byteBuf);
}`


Addition of a "notebook"

Hi
I am relatively new to CSS and HTML so forgive me for being naive.
Some background. I use Apple notes to keep track of snippets of code and I like to add links and other notes to help me understand the code snippets that I find and modify and paste in my notes. Obviously Apple notes is not a great solution to store code snippets and since discovering VSCode a few weeks ago, it dawned on me that I am going back and forth between notes and SVCode quite a bit.
It would be great if the code window could be split into two, revealing a second pane that could be used as a richtext well, where one could include URLs, images and text to augment the code being worked on. I know we could add comments to the code but it would be great to have a separate related window or window pane.
Hope this makes sense. Again I am newly hatched so my idea might not make sense for experienced coders but for neophytes who need to keep notes it can help as it adds context and reference.
Cheers!
—Alex

Oh my goodness, so many extensions that appear to do this already. I am closing this comment. Thanks and my apologies for the time waster.


the routes.js scripts are responsible for fetching data to and from the…

the routes.js scripts are responsible for fetching data to and from the server

ate wy have u closed
the pull request


Deprecate all operations

This PR serves to deprecate all the connector operations.
As there are no customers using it at present, it can safely be deprecated.

[x] I attest that I have added detailed descriptions for all operations and parameters in the swagger file.
[x] I attest that I have added response schemas to my actions, unless the response schema is dynamic.
[x] I validated the swagger file, apiDefinition.swagger.json, by running paconn validate command.
[x] If this is a certified connector, I confirm that apiProperties.json has a valid brand color and doesn't use an invalid brand color, #007ee5 or #ffffff. If this is an independent publisher connector, I confirm that I am not submitting a connector icon.

Hello @thedarkjester,
I hope you are doing well.
Congratulations, your pull request is approved and merged. Please submit the files to ISV Studio or update your submission using your latest commit ID, please allow us up to 1-2 weeks to review your submission, and our Engineers will notify you in the “Activity Control” area in ISV Studio. Please make sure that the icon meets all the requirements, that it’s size is 230x230, icon background is not white or transparent and it matches the iconBrandColor property in apiProperties.json file.
After making the submission in ISV Studio, please attach an intro.md file in the activity control section. This file is required and it's different from readme.md. You can find an example of intro.md file on this page at step 6.
Please Create an environment in the Preview region. You will use this environment later to test your connector after Microsoft is done with the functional verification for your connector.
We expect all tests to be completed within 1-2 weeks.
If your connector passes all tests, the deployment process begins, and it typically takes up to 3 to 4 weeks to deploy your connector to all of our regions.
Please let me know if you have any questions or run into any problems while creating or updating your submission.
Thank you very much for working with us.


Add Spotless (GoogleJavaFormat) to IDEA plugin

To ensure the IDEA plugin code is formatted correctly, Spotless will check it every time a push or PR.
I tweaked the plugin workflow created by @jef to just use ./gradlew build which depends on the task spotlessJavaCheck, so it will check if the plugin code compiles, tests pass, and if the code is correctly formatted.
To automatically format the code, run ./gradlew spotlessJavaApply.

Beautiful :)
(after importing, we'll need to wait for someone in the US to review, so probably Monday night Spanish time)


Revise the explanation for the -s option

Description
This PR adds more explanations on the -s option to stop users from using this option.
We should deprecate it in the future.
Related issues and/or PRs
N/A
Changes made

revised README
revised the CLI description

Checklist

[ ] I have commented my code, particularly in hard-to-understand areas.
[x] I have updated the documentation to reflect the changes.
[ ] Any remaining open issues linked to this PR are documented and up-to-date (Jira, GitHub, etc.).
[ ] Tests (unit, integration, etc.) have been added for the changes.
[x] My changes generate no new warnings.
[ ] Any dependent changes in other PRs have been merged and published.

@kota2and3kan
I made a change at https://github.com/scalar-labs/scalar-admin/pull/50/commits/1340e98ce80b0301d46b50846768e2b5b4b3000f according to your feedback.
Please take a look 🙇


Notify.Alexa_Media is no longer available for all devices

Describe the bug
Notify.Alexa_Media is no longer available for all devices
To Reproduce
Steps to reproduce the behavior:
This may be related to the most recent update of the Alexa Media Player or perhaps the most recent update of HA (v2021.1.5)...both were done together before a restart of HA.   I have approx 19 devices but the service : "notify.alexa_media" is only showing for 2 of them.  When I go into Configuration - Integrations - amazon alexa and reload, all of them show up under Developer Tools - Services but after playing once on a previously missing device/service, all of them disappear again with only 2 remaining.
The log I get is the following:
Logger: alexapy.alexalogin
Source: /usr/local/lib/python3.8/site-packages/alexapy/alexalogin.py:698
First occurred: 12:43:19 PM (2 occurrences)
Last logged: 12:50:40 PM
No access token found; falling back to credential login instead of oauth.
Not sure if this is a bug or I should try deleting the pickle file. I have tried removing the alexa-media folder in the custom-components folder and re-installing but it produces the same results.

Please fill out the complete template.

Please fill out the complete template.

Sorry...will complete although going to hold for a bit.  I just checked again and now 9 out of the 19 have become available without doing anything but leaving the system alone for the past hour.  Prior to that, I did restart home assistant multiple times  so that is not what is causing this service to become available.  Will advise further/fill out the form if no further ones come back over the next few hours.

Sorry...will complete although going to hold for a bit.  I just checked again and now 9 out of the 19 have become available without doing anything but leaving the system alone for the past hour.  Prior to that, I did restart home assistant multiple times  so that is not what is causing this service to become available.  Will advise further/fill out the form if no further ones come back over the next few hours.

Thank you for addressing this so quickly.  I noticed that a new version was published in HACs so I installed it and now all my devices are showing up with a "notify.alexa_media" service again. Well done!  And next time, I will ensure the template is fully completed to better help with troubleshooting.  :)

Thank you for addressing this so quickly.  I noticed that a new version was published in HACs so I installed it and now all my devices are showing up with a "notify.alexa_media" service again. Well done!  And next time, I will ensure the template is fully completed to better help with troubleshooting.  :)


Hsds examples

using token retrieved from Keycloak and not relying on h5pyd to do so

@vedina I guess we're dropping this one?

keep it for know, we can transfer examples later


RFC: getting rid of lock in Domable

The Domable type constructor takes a lock parameter for the same reason ST does - to create a computational context. This is essential to the implementation of portal: portals create a referentially opaque blob that is a DOM element, and this element is tied to its context via the phantom type lock. This guarantees that a term carrying this type isn't passed out of its context (for example via a hook) - it will trigger an escaped skolem error.
Why is this necessary? Imagine that you have a dyn with a portal inside of it. That dyn is deleted, which means all of its children are deleted, including the portal. But if the portal is injected into other contexts (ie via a hook), then the contexts will have no clue what to do with it or its children. Neither it nor its children will have a deku id, for example, so deku won't be able to determine parent/child relationships. The lock parameter locks the portal into its context, but at the expense of a pesky type parameter.
But what if, internally, we represented portals as their referentially opaque blob and their constructor. The logic would go as follows:

If the portal is defined in deku's internal engine, then by definition it is part of a current computational context and hasn't been deleted yet. Use the blob.
If the portal is not defined in deku's engine, treat its constructor as a template for a deku component and create a new component.

The only downside of this is that it'd lead to a quirk where the portal, outside of its initial context, creates a new component every time it is referenced, which ofc defeats the purpose of portals. But that is better than a crash, and it could be a "feature" instead of a bug where we say that portals can only be used in the <#~> or dyn where they were created or direct children of those contexts, and any other usage is undefined.
Ofc, one could ask: "given that you have this nice type-safe language where you can avoid icky behavoir through the type system, why would you opt for a more permissive usage with undefined behavior in corner cases?" The answer is in deku's usage: folks pass around domables far more often then they use portals, and while I've seen people get tripped up by gnarly skolem errors that require writing out the full type, I've rarely seen anyone use portals, let alone use them in a way that sends them out of their original context.
In other words, lock currently prevents an incorrect yet esoteric use of an esoteric feature at the expense of the framework's ergonomics. This proposal would get rid of the lock parameter and give portals a sensible default (namely, they'd lose their referential opacity and become referentially transparent constructors like any ol' Domable) when used in a "naughty" way.
Thoughts?

is defined in deku's internal engine

Does this correspond to the existing scoping of the lock, or is it some kind of imperative state thing that could be defined or undefined depending on when it is checked? If the former I think it is okay to have different behavior for the thing that was previously checked by the type system – if it is embedding it directly or just not doing anything, I have no opinion.

is defined in deku's internal engine

Does this correspond to the existing scoping of the lock, or is it some kind of imperative state thing that could be defined or undefined depending on when it is checked? If the former I think it is okay to have different behavior for the thing that was previously checked by the type system – if it is embedding it directly or just not doing anything, I have no opinion.

It corresponds to the existing scoping of lock. In other words, if a Domable's context is lock, then the internal engine must have a valid reference to it. Conversely, when a Domable with lock is deleted, that means that the internal engine frees the reference to it. Portals make this deletion safe by making sure that a referentially opaque Domable created by a portal can't be sent to an entirely different scope or even an entirely different runInElement if someone has two concurrent deku apps. If you try it, you get a skolem error.
So here, what we are getting (as you state) is different behavior for the thing that was previously checked by the type system. Whereas the type system previously prevented these domables from leaving their scope, now, they can leave their scope, but they'll act as a domable constructor as opposed to the blob. To make it more concrete, let's say that a Domable is a portal containing a video, like in this example from the docs. In the current deku, it's impossible to inject this video anywhere else than a context governed by lock without hitting an escaped skolem. In this proposal, going outside of the context will still get you your video, but it will be recreated anew every time and will not be removed when a new one is instantiated. In other words, it'll be like if you wrote let v = D.video__ ... and then used v a bunch of places.

Okay, that sounds fine to me, and a big win for UX. (I confess I have not actually used portals tbh 😂)

This is where the change would need to start:
https://github.com/mikesol/purescript-bolson/blob/7e65eef4f149b279c891c86896ae848b9e1a7cd5/src/Bolson/Control.purs#L48
Currently, giveNewParent takes very little information: basically what it needs to fetch the opaque element from the internal cache. We'd have to add an argument to giveNewParent of type obj lock payload that is the constructor to use when the ID isn't present.
Because the change is at the bolson level, deku, ocarina and rito will all be effected. ocarina uses portals tons (that's the fan operation, which is bread-and-butter stuff) and deku does as well, ie to pass a single scene to multiple three.js post-processors. Theoretically, this change will be for all of the frameworks, but I can't imagine it being problematic. For example, in ocarina, there are such limited opportunities to push an audio unit out of scope - you'd have to do it in the onended callback of an audio buffer, which I can't imagine anyone ever doing (famous last words...).

Adding notes here as I come across ideas/issues.
The bolson implementation was straightforward and can be found here.
In deku, there's a thorny patch that can be summarized as follows:

By the time a portal (or any deku component) has reached the interpretation stage, it knows nothing about events. For example, giveNewParent or setAttribute or createElement is an instruction received by the top-level subscription.
When a portal is interpreted is when we'd make the call "is this in the cache or not?"
If not, we'd need to make a new Domable. But as a Domable is essentially just an Event that spews instructions, we have nothing to subscribe it to.

So essentially this design would require deku to yield something like Event (Event Instruction) instead of Event Instruction, meaning that instead of each instruction like setAttribute or createElement being an atomic unit that is interpreted by the interpreter, each instruction would potentially contain others. Specifically wrt portals, a giveNewParent instruction that zaps a portal from A to B would contain all of the instructions to rebuild the element, and these instructions would be used to rebuild the portal.
Now, you may be asking "but what if a portal contains a portal"? Well, that may require Event (Event (Event Instruction)). And then, you may ask "but what if a portal contains an arbitrary number of nested portals?" This leads to the inevitability that the new type would have to be something like Free Event Instruction. This is where performance issues start to worry me. Theoretically Free Event Instruction is fine, but as 99.99999% of these will evaluate to Event Instruction, and as a project may have 10k of these, the overhead of interpreting a free monad, even if lightweight, may add up to make the first render un-fast. This is just a premonition though: it could be that calling resume' on Free Event Instruction to gather up all the instructions is not a performance killer, but the possibility is there.
So we'd go from "a type-parameter used in a corner case of a corner case" to "a rococo implementation that accommodates a corner case of a corner case." Dunno which is worse!


Add a graph-node-napi crate

This crate exposes graph-node functionality for Node's N-API
Currently it offers a single validate_schema function which returns schema validation errors.

Do we still want this PR @lutter ?

Yes, very much. Waiting on @saihaj to be ready to try this out and incorporate it into graph-cli

Can we merge this PR then and if there are more changes we can fix forward?


Update js and css for Download Resources

What is the context of this PR?
Some updates to the js and css for Download resources, mainly to fix linting errors
How to review

Code changes make sense
Download Resources works correctly

 Issue #971: Download resources pattern 'show filters' not working when used in a prototype - Mobile only


Improve a11y of the platform

I found that we lag with miss some a11y features, it would be great if we implement it and follow w3c guidelines
https://www.w3.org/standards/webdesign/accessibility

This needs scoping, added to the project roadmap :pray:


Generate examples of Lakeroad+Yosys integration used in bigger projects

From @nakengelhardt:

That's here: https://github.com/nakengelhardt/fpgagraphlib for the pagerank/"pr" example specifically (not sure how easy this is to use/run if you haven't written the code, I can export the verilog for a specific configuration for you if you want)

Doing some searching with GitHub's codesearch. I'm finding a lot of instances where people use DSPs directly, or use the use_dsp annotation. Less obvious are the cases where they have a module that should go onto a DSP.

Maybe this? https://github.com/hzeller/ibex/blob/416ecb10dfdb80ce88b8b41ab7c39a6bcefbba50/rtl/ibex_counter.sv#L4

Unsure what this does, but this could be one: https://github.com/snu-quiqcl/RFSoC/blob/79dadb5c0f81f8f9d77530b08ecb28077aab6ce1/RFSoC_Design_V1_1/IP_File_00/DAC_Controller/RFDC_DDS.sv#L40

Stopped on page three here, should pick it up later: https://github.com/search?q=DSp+xilinx+language%3ASystemVerilog&type=code&p=3


CAVA support

Is it possible, to display cava with this? Or any other program?
Thanks in advance

You mean this? I'm afraid it would be difficult. Just plain or pango-formatted text.

Yes, I was thinking about it, sorry that I forgot to link that.
So for wayland currently there is no way to do that? I was trying to simulate that by floating transparent terminal, but I couldn't put it on bottom layer...

One can always open a window on the layer shell, but I have no idea if it's even possible to open another applications window inside it. TBH I don't see much sense in making desktop widgets for a tiling window manager. They would only be visible on r/unixporn, hardly ever in real life.


Player plays the wrong song after a long pause

If the player is paused for a while (30min) and unpaused, it will play song a; however if the page is refreshed the player is updated and it will play song b.

Thank you for reporting this issue.
This is a standard message notifying you that the issue has become stale, so we are going to close it.
If you think we're wrong in closing this issue, please request for it to be reopened. Thank you and happy coding.


Pipes with parallel branches can return invalid tables

using TableTransforms

t = (a=1:4, b=5:8)

left = Select(:a) → Filter(row -> row.a < 4)
right = Select(:b) → Filter(row -> row.b < 7)
transform = left ⊔ right;

julia> transform(t)
(a = [1, 2, 3], b = [5, 6])

This should probably throw an error. But even if it did throw an error, it would illustrate a degree of freedom in the API design that allows the user to shoot themselves in the foot.
(The API design solution in my mind is to remove table queries from TableTransforms.jl and stick to ML and statistics transforms that preserve the number of rows of the input table.)

At least you get an error if you use a table type that actually enforces table-ness:
julia> df = DataFrame(a=1:4, b=5:8);

julia> transform(df)
ERROR: DimensionMismatch: column :a has length 3 and column :b has length 2

So the lack of an error for named tuples has more do to with the fuzziness of the NamedTuple table implementation in Tables.jl.
But the API design issue that I mentioned still stands.

I think that targeting corner cases in a dynamic language that doesn't support compile time checks is a bad goal. We definitely want to educate users on how to use these transforms well and safely, but we don't want to remove features just to make things that are currently possible, impossible.

I think that targeting corner cases in a dynamic language that doesn't support compile time checks is a bad goal. We definitely want to educate users on how to use these transforms well and safely, but we don't want to remove features just to make things that are currently possible, impossible.

I think you might be misunderstanding the MWE above. This isn't a feature, it's a bug; there's no situation where you want to pass an invalid table as an input to TableTransforms.jl. This bug also isn't related to a lack of compile-time checks; checking size outputs with filter has to be done at runtime.
TableTransforms.jl isn't throwing an error when it produces an impossible/invalid output right now, or when it's given an input that isn't a table (meaning the assumptions of TableTransforms.jl are being violated). If that gets passed through a pipeline, it's going to cause lots of problems downstream and a lot of confusion for users.

This particular MWE could be solved upstream by having the named-tuple-of-vectors materializer check that input column lengths are equal, which it currently does not:
julia> nt = (a=1:3, b=1:2)
(a = 1:3, b = 1:2)

julia> Tables.materializer(nt)(nt)
(a = 1:3, b = 1:2)

Then again, the correct fix for Tables.materializer is probably not within Tables.materializer but within the Tables.columns method for named tuples of vectors. There are two possible fixes for Tables.columns:

Throw an error if the length of columns is different.

This is the solution that would fix the MWE without any changes to TableTransforms.jl)

Return an iterator that pads short columns with missing.

This would not fix the MWE in this issue.

Let me clarify the underlying design issue. Running filters in parallel branches of a pipeline and then horizontally concatenating the results almost never makes sense. Can anyone think of a use case where this would actually make sense? Normally the only meaningful way to horizontally combine tables is with a JOIN.

You're proposing that we should add an assertion to our parallel transform
to inhibt parallel branches that contain Filter?
Em ter., 31 de out. de 2023 16:18, Cameron Bieganek <
@.***> escreveu:

Let me clarify the underlying design issue. Running filters in parallel
branches of a pipeline and then horizontally concatenating the results
almost never makes sense. Can anyone think of a use case where this would
actually make sense? Normally the only meaningful way to horizontally
combine tables is with a JOIN.
—
Reply to this email directly, view it on GitHub
https://github.com/JuliaML/TableTransforms.jl/issues/223#issuecomment-1787871678,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3MYEKP3LR22Z7GL6BDYCFFIVAVCNFSM6AAAAAA6U7Z2D6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBXHA3TCNRXHA
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

I am going to decline to make a specific proposal. :)
But if you did something like that, it would also have to handle DropMissing and DropExtrema.

The only sensible thing we can do here is add a check after the parallel branches are completed to make sure that all tables have the same number of rows. Will add to our roadmap.

 Here are a couple more:
1)
t = (a=[1, 2, 3], b=[3, 2, 1])

left = Select(:a)
right = Select(:b) → Sort(:b)
transform = left ⊔ right

julia> transform(t)
(a = [1, 2, 3], b = [1, 2, 3])

2)
t = (a=1:4, b=1:4)

left = Select(:a) → Sample(3)
right = Select(:b) → Sample(3)
transform = left ⊔ right

julia> transform(t)
(a = [2, 1, 3], b = [3, 2, 1])

Discussion
It's virtually impossible to correctly use Filter, DropMissing, DropExtrema, Sort, and Sample in parallel branches of a pipeline, so it would make sense to at least emit a warning, if not an error, when those transforms appear in parallel branches.
The alternative, as I mentioned in the original post, is to leave table queries to Query.jl and DataFrames.jl. (Technically you can make the same mistakes with DataFrames because they have hcat, but you shouldn't normally be using hcat.)

Both examples are valid. Maybe your mental model of parallel pipelines is not matching what we have here. Parallel pipelines simply combine the result of the branches with hcat, and that is clear from the docstring. There is no guarantee that rows of the original table will be processed together. If you ask to sort the column b and then hcat with column a, that is the expected result.
Regarding all transforms that change the number of rows, that is also expected. There are many other transforms that  change the number of rows: Potrace, Rasterize.
I don't think that Query.jl or DataFrames.jl address the same problem. The feature we have here is quite unique and powerful for the applications we are developing.

Whether you have a row-orientated table or a column-orientated table, individual data records are contained in rows. The examples above destroy the integrity of the data records.
1)
The initial data records:
(1, 3)
(2, 2)
(3, 1)

The final data records:
(1, 1)
(2, 2)
(3, 3)

2)
The initial data records:
(1, 1)
(2, 2)
(3, 3)
(4, 4)

The final data records:
(2, 3)
(1, 2)
(3, 1)

It's hard to imagine a scenario where this behavior is useful. But if you're ok with data corruption, then... 🤷♂

It is because for you this is invalid, but for many other people it may not be. It doesn't matter if the table is row-major or column-major, the transformation can do anything with the table and produce another table. It is the user who will build sensible pipelines for statistical analysis.
You are coming from the perspective that we should only allow transforms that make some sort of statistical sense. Again, think more broadly and understand that TableTransforms.jl is about transformations of tables, not just stats or ML.

You are coming from the perspective that we should only allow transforms that make some sort of statistical sense.

No, this has nothing to do with statistics. It has everything to do with data contained in tables. The definition of a table is that data records are contained in rows. This is a broader concept than just statistical data. A table is fundamentally just a data structure for holding rows/records/tuples (whatever you want to call them). Each row is atomic, and each row contains the same number of elements. Mathematically a table is a relation---it's a subset of a cartesian product.
If that's not how you treat tables, then maybe you should name this package something else, like ArrayTransforms.jl.

Tables are also a representation that associates column vectors to names.
No matter the definition, we can operate on these tables and produce new
tables. Invalidation as you describe can be a very delicate concept. Would
renaming the columns of the table be an invalidation of records? Would
replacing missing by 0 be an invalidation of records?
The issue here is still opened because we can throw a better error message
for the case where the parallel transform is returning columns with
different length. Other than that, the package name is completely fine.
Em ter., 31 de out. de 2023 18:45, Cameron Bieganek <
@.***> escreveu:

You are coming from the perspective that we should only allow transforms
that make some sort of statistical sense.
No, this has nothing to do with statistics. It has everything to do with
data contained in tables. The definition of a table is that data records
are contained in rows. This is a broader concept than just statistical
data. A table is fundamentally just a data structure for holding
rows/records/tuples (whatever you want to call them). Each row is atomic,
and each row contains the same number of elements. Mathematically a table
is a relation---it's a subset of a cartesian product.
If that's not how you treat tables, then maybe you should name this
package something else, like ArrayTransforms.jl.
—
Reply to this email directly, view it on GitHub
https://github.com/JuliaML/TableTransforms.jl/issues/223#issuecomment-1788080158,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3MKADVDP23HR7WCKELYCFWONAVCNFSM6AAAAAA6U7Z2D6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBYGA4DAMJVHA
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

Tables are also a representation that associates column vectors to names.

If tables were just a collection of named vectors, then the vectors could have different lengths. The requirement that tables have equal length columns follows from the definition of a table as a set of equal-sized rows.

Would renaming the columns of the table be an invalidation of records? Would replacing missing by 0 be an invalidation of records?

Obviously some table transformations make sense. But splicing together half of one row with half of a different row from the same table is a big no-no.
Anyhow, that's all I have to say on this subject.

| Obviously some table transformations make sense. But splicing together
half of one row with half of a different row from the same table is a big
no-no.
One may ask why, and in order to answer this question you will likely need
to rely on specific assumptions about the kinds of pipelines you have
in mind. For me it is completely valid and useful to splice together half
rows and columns together if the applications asks for it.
Thanks for the input.
Em ter., 31 de out. de 2023 19:11, Cameron Bieganek <
@.***> escreveu:

Tables are also a representation that associates column vectors to names.
If tables were just a collection of named vectors, then the vectors could
have different lengths. The requirement that tables have equal length
columns follows from the definition of a table as a set of equal-sized rows.
Would renaming the columns of the table be an invalidation of records?
Would replacing missing by 0 be an invalidation of records?
Obviously some table transformations make sense. But splicing together
half of one row with half of a different row from the same table is a big
no-no.
Anyhow, that's all I have to say on this subject.
—
Reply to this email directly, view it on GitHub
https://github.com/JuliaML/TableTransforms.jl/issues/223#issuecomment-1788107274,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZQW3IJHA4PRSQUN2K6RGLYCFZRXAVCNFSM6AAAAAA6U7Z2D6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBYGEYDOMRXGQ
.
You are receiving this because you modified the open/close state.Message
ID: @.***>

Both examples are valid. Maybe your mental model of parallel pipelines is not matching what we have here. Parallel pipelines simply combine the result of the branches with hcat, and that is clear from the docstring. There is no guarantee that rows of the original table will be processed together. If you ask to sort the column b and then hcat with column a, that is the expected result.

Right, so it's not a correctness bug in TableTransforms.jl, but it's behavior that could very easily lead to a correctness bug in user code. The problem here is that it's very easy to make a mistake or typo. When we have a suspicious-looking user input, our first question should be "What does the user want to do?"
But usually, when we filter a table, we either want to filter out columns or filter out rows. Usually, Filter commands aren't intended to mix-and-match variables, e.g. matching one country's oil reserves with a different country's growth rate.
But it's easy to absent-mindedly write a program that does this:
left = Select(:a)
right = Select(:b) → Filter(:b)
transform = left ⊔ right

When what we really meant was this:
left = Select(:a)
right = Select(:b)
transform = left ⊔ right → Filter(:b)

I think in the rare cases where a user does want to combine variables from different observations, it's better for them to write something more explicit, like permute!(data.oil, sortperm(data.growth)).

@juliohm thank you so much for this! :smile:

Thanks to @eliascarv who implemented the fix 👍🏽
We are working on #221 next.


[3.x] Fix navigation merge errors on too small triangles

#56786
See https://github.com/godotengine/godot/issues/56786#issuecomment-1014929078 for detailed explanation.
Please note this change may potentially have a severe impact on navigation, so it would be nice if someone else can test the lack of errors as well as Agents traversing navmesh.
Once this is accepted I'll open the same for master.
@Duroxxigar @AndreaCatania

I've created a proper demo to visualize paths going through "small" triangles which I've skipped and it turns out the triangles are not bypassed. They're removed. See the demo with drawing random paths on generated navigation with 2 merge errors:

And hence I need to improve it further so they're taken into account.

While analyzing further I've found yet another problem - when calculating cell key (id) we're dividing Y coordinate by cell_size while cell_height should be used.
With additional precision improvement, everything works as expected, but it's still not perfect.
I'll sync regarding it with @AndreaCatania offline.

I had to change detail/sample_max_error default to 5 so that vertices computed by recast are aligned with the voxels grid much better. This way we're avoiding problems even on very complex meshes while sacrificing some navmesh details.
In practice (flat meshes or meshes with some gentle hills) this makes no difference while this way we're able to avoid potential problems.
The grid alignment algorithm will have to be re-done, but IMO this commit at least polishes what's already there.

Thanks!


Retrieve multiple documents by their uids

As uid field is a unique identifier that can be used specifically to create SEO-friendly website URLs, it should be easy to fetch documents through get_by_uids method rather than having to write verbose predicate every time.
Really useful in case we display many but specific documents on a single page.
get_by_uids(typ, uids)

vs
query([
  Prismic::Predicates::at('my.'+typ+'.uid', uids)
])

A test for this would have been great, I'll try and one in a new branch based of this PR

A test for this would have been great, I'll try and one in a new branch based of this PR

A test for this would have been great, I'll try and one in a new branch based of this PR

What would have been great would have been not to let this PR opened for 2 years without any feedback. I'm not using Prismic anymore but I think this method could be useful.

A test for this would have been great, I'll try and one in a new branch based of this PR

What would have been great would have been not to let this PR opened for 2 years without any feedback. I'm not using Prismic anymore but I think this method could be useful.

@fabdbt I can agree with that, a few of our kits haven't been getting enough attention...
But yes it's a useful method there's another PR on the python kit for a similar method. I'll get this added  :)

@fabdbt I can agree with that, a few of our kits haven't been getting enough attention...
But yes it's a useful method there's another PR on the python kit for a similar method. I'll get this added  :)

Added to #105

Added to #105


Possible bug in v5 ConvertFromOldConvention

Changes to PropertyMapperNameConvention.FindMember (the introduction of the more robust IsPocoMemberEqual) results in level being updated where previously it was not. For our usage this later prevents another member from being found due to level filtering.
var pocoMemberLevels = members.Where(x => !used.ContainsKey(x.PocoMember) && x.Level >= level);

I have a sample repo setup to demonstrate the issue which can be found at https://github.com/p-m-j/npoco5-umbraco-issues
Some further details and description of the problem can be found at https://github.com/umbraco/Umbraco-CMS/pull/9800

Ok, I think I have an idea about this. Will try and get a beta release out tomorrow to test against the repo. Sorry for the delay.

Awesome cheers!

https://www.nuget.org/packages/NPoco.SqlServer/5.3.2-preview1 has been pushed. I don't know if you can try it out, but it works in your repo repo.

Works like a charm, thanks very much.

No longer an issue with 5.3.2


format_date() not working for nullable datetimes

Hello,
I'm using the latest version of the library (uk.gov.justice.service.hmpps:hmpps-digital-prison-reporting-lib:3.5.2) and trying to use the format_date() formula.
I had to tweak the query to remove the DATE conversion for these fields but once I've done that format_date() seems to work fine on datetimes when they're present 🎊
However one of our fields/columns can be null. Before the use of format_date() nothing was shown in the table (which is fair enough). Now it errors out for this field when trying to parse the date (which is null).
          [... this is the report field]
          {
            "name": "$ref:closed_date",
            "display": "Close Date",
            "formula" : "format_date(${closed_date}, 'dd/MM/yyyy')",
            "sortable": true,
            "defaultsort": false
          }

Error:
java.time.format.DateTimeParseException: Text '' could not be parsed at index 0
	at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2108)
	at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:2010)
	at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:494)
	at java.base/java.time.LocalDateTime.parse(LocalDateTime.java:479)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.FormulaEngine.interpolateFormatDateFormula(FormulaEngine.kt:45)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.FormulaEngine.interpolate(FormulaEngine.kt:36)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.FormulaEngine.constructValueWithFormulaInterpolationIfNeeded(FormulaEngine.kt:25)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.FormulaEngine.applyFormulas(FormulaEngine.kt:16)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.ConfiguredApiService.validateAndFetchData(ConfiguredApiService.kt:69)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.service.ConfiguredApiService.validateAndFetchData$default(ConfiguredApiService.kt:38)
	at uk.gov.justice.digital.hmpps.digitalprisonreportinglib.controller.ConfiguredApiController.configuredApiDataset(ConfiguredApiController.kt:93)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
[...more stacktrace, probably not relevant]

PS: Thanks for implementing the formulas :)

Thanks for raising this, we will look into it.
The following ticket has been created:
https://dsdmoj.atlassian.net/browse/DPR2-517

This has now been fixed as part of version 3.7.1

Thanks @gavriil-g-moj, I may have a play at it later if I get the time :)

I can confirm this is also fixed now ❤


Fix EventState Exclusive parsing interface{} to *bool error

What this PR does / why we need it:
Currently, when the exclusive flag is provided, the code will panic due to interface{} unable to be parsed into a (*bool). This change defaults the exclusive flag to true and sets the value if it is provided as a bool.

Many thanks! Can you please add a unit test to verify this change?
Ideally, with an example that would fire a nil exception.

Added two test cases and updated the existing one.
The existing test case did not have the exclusive flag set, so it should default to true.
Other two test cases explicitly sets exclusive to true and false.


flagcodec: preserve the order of args

Up until now, flagcodec was reordering the args
before rendering them.
This is not always correct, because it's relatively common
for command line argument to have some ordering requirements.
A key example is the subcommands: some options for a command
may make sense for the global context, while some other options
are subcommand-specific.
flagcodec doesn't aim (yet) to cover all the cases, but this is
simple to fix: instead of force a sorting, just record the order
on which the flags are parsed, and reuse it when rendering.
The end result is still a valid command line, the implementation
is not more complex and the behaviour is more correct.
Signed-off-by: Francesco Romani<EMAIL_ADDRESS>

/lgtm
/approve


How to use Msal with keycloak

Core Library
MSAL.js (@azure/msal-browser)
Wrapper Library
MSAL React (@azure/msal-react)
Public or Confidential Client?
Public
Documentation Location
https://github.com/AzureAD/microsoft-authentication-library-for-js
Description
Hi
im trying to integrate keyckock with msal library facing multiple issues

The acquireTokenSilent method is not working. Instead, we have to use acquireTokenPopup to obtain the token.
The logout functionality is not working as expected.
After the token expires, how can we refresh it using the refresh token?

when trying to logout getting end_session_endpoint_not_supported error (attached screenshot)

here is the configuration im using to initialize msal
export const keyclockConfig = {
  auth: {
    protocolMode: msal.ProtocolMode.OIDC,
    autoRefreshToken: true,
    authorityMetadata: JSON.stringify({
      authorization_endpoint:
        `${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec/protocol/openid-connect/auth`,
      token_endpoint:
        `${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec/protocol/openid-connect/token`,
      issuer: `${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec`,
      userinfo_endpoint:
        `${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec/protocol/openid-connect/userinfo`,
    }),
    authority: `${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec/protocol/openid-connect/logout`,
    clientId: "ibwweb",
    knownAuthorities: [`${process.env.REACT_APP_KEYCLOAK_URL}/realms/nec`],
    navigateToLoginRequestUrl: true
  },
  cache: {
    cacheLocation: "localStorage", // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs.
    storeAuthStateInCookie: false, // Set this to "true" if you are having issues on IE11 or Edge
  },
  system: {
    allowNativeBroker: false,
    loggerOptions: {
      piiLoggingEnabled: true,
      logLevel: LogLevel.Verbose, // Adjust log level based on your needs
    },
  },
}

i get an error if i use acquireTokenSilent
I have uploaded a screenshot here  with error
so if acquireTokenSilent works it automatically refreshes the token ?

You can't use acquireTokenSilent until you're signed in. When you get InteractionRequired you need to fallback to either acquireTokenPopup or acquireTokenRedirect

is it mandatory that third party cookies should be enabled ??
i see if i enable it acquireTokenSilent works fine if its blocked it fails and keep looping
below is example code

try {
const response = await instance.acquireTokenSilent(silentRequest).catch(async (error) => {
if (error instanceof InteractionRequiredAuthError) {
// fallback to interaction when silent call fails
await instance.acquireTokenRedirect(silentRequest);
}
});
} catch (error) {
console.log('error', error);
// Handle specific errors or provide more information for debugging
}
}

It's not mandatory but users that block 3P cookies will see more interactive prompts than users who don't.
I also would not recommend setting forceRefresh to true or setting the CacheLookupPolicy unless you have a specific requirements to get a brand new token and/or skip certain stages of the flow, most apps do not need to use these parameters.


Bump version to 1.5.0 & update Python to satisfy system tests

Prepare for release

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

Project coverage is 72.16%. Comparing base (fef3c5e) to head (1ff9524).

Additional details and impacted files

@@           Coverage Diff           @@
##           master     #150   +/-   ##
=======================================
  Coverage   72.16%   72.16%
=======================================
  Files          43       43
  Lines        6040     6040
  Branches      880      880
=======================================
  Hits         4359     4359
  Misses       1254     1254
  Partials      427      427


fix: TypeScript autocomplete issue #68

This PR solves the problem described within #68.
Can you please check? @nmn

Wohoo! 🎉

Great! Thanks for this fix.

Kudos to @kevintyj for addressing this!

Using latest version 0.3.0 and still not seeing the fix of this PR.
Is there anything that I miss up?

@hoangngocthanh This fix will be in 0.4.0. Stay tuned!

@hoangngocthanh This fix will be in 0.4.0. Stay tuned!

Thanks @nmn

many thanks @hoangngocthanh @nmn


Function worker uses raw webService Port against adverisedListener and advertisedAddress

Describe the bug
I am running Pulsar broker on docker and trying to run function worker as part of the broker. My advertisedListener IP is the IP of my host machine and I have a mapped worker port as well. But here, we are calling getAppliedAdvertisedAddress which returns my advertisedListner address and we are using the raw webServicePort agist it. That code is 2 lines above. So it is forming a weird address advertisedAddress:webServicePort (hostMachineIP:dockerContainerPort) which is not allowing function workers to start. This has broken from Pulsar 2.8.0.
To Reproduce
Steps to reproduce the behavior:

Run any of the sink connectors in the broker.
Configure advertisedListner with the address that is different from the address where the broker is running.

Expected behavior
There should be consistency in address formation. Either we should use advertisedListner/advertisedAddress with its port or we should use both raw broker address and raw webServicePort.

the same thing has happened with the broker address here.
Seems like commit [#10312] has caused this.

@315157973 Would you mind checking this?

Now the order of address acquisition is advertisedAddress, then advertisedListner, then hostname.
The problem now is that the address does not correspond to the port, right? @abhilashmandaliya

Now the order of address acquisition is advertisedAddress, then advertisedListner, then hostname.
The problem now is that the address does not correspond to the port, right? @abhilashmandaliya

@315157973 yes. that's correct.

I believe that the root cause is that Pulsar is erroneously using the configured advertisedListeners to formulate the web service endpoint in some cases.  A reasonable fix would be to use only advertisedAddress: webServicePort for that purpose, and allow advertisedListeners to also be configured for the broker service endpoint.


Support for configuring proxy via environment variable

After install luarocks, the command luarocks search lustache not work. There is a proxy configuration in the network and the variables http_proxy, ftp_proxy, socks_proxy, all_proxy and no_proxy are configured in my environment.
I read the source code and I saw that the source src/luarocks/fs/lua.lua do not refer to any thing about the environment variables.

Ok, so... in 'tools.use_downloader' I can add the required parameters for wget and curl.
Should I test for those variables or should the user specify the proxy in its config.lua file?
btw, the flags needed for wget seems to be:
-e "use_proxy=on" -e "https_proxy=https://<IP_ADDRESS>:8888"

When I set proxy = "http://myproxy.local:3128" in ~/.luarocks/config.lua, everything works. But not works using environment variables. So, I think would be better run tests using variables.

Unless that I'm mistaken, LuaSec does not support proxies.
So, should I give preference to those variables over cfg.proxy?

@ignacio if we are to support env vars for this, we need to assess what's the situation wrt these variables and standards. I don't want the code to contain a mess trying every possible env var under the sun.
If there's no support in LuaSec, then a user needing it should use fs_use_modules = false in the config.lua file to force usage of wget or curl (which support proxies and (probably) env vars)

Sure. Let's wait for that twitter survey result :) In the meantime, here is a wip branch, so you can assess if things are getting messy or not.
https://github.com/ignacio/luarocks/commit/308db7de56ead85ff58ccd5407dcff415ac0ce92

@ignacio I thought the environment var would be used only when using LuaSocket directly to handle network operations. man wget and man curl tell me that both of them already recognize these environment vars by themselves, there's no need to add code on our side to forward them explicitly as flags.

Erm... yes, you're right.  Now that I think of it, it setting "proxy" in config.lua fixed things for him, it surely had LuaSocket installed, and LR was using it, right?

yes.

Ok, so the use case is this:

User is in an evironment were proxy is required. Has environment variables properly configured.
User installs LuaRocks
Installs some modules ok, they go through the proxy.
Then installs luasocket and luasec
After that, everything breaks.

At this point, adding proxy in config.lua is needed. But, adding it would only make LuaSec fail, until a mirror like luafr.org or logiceditor.com is used. In these cases, LuaSocket is used, so it picks up the proxy setting and everything works again, except you're inadvertently using an insecure repository (maybe "insecure" is not the correct word, I mean it is a repo server over http).
A possible improvement right there is to make fs_lua.download not even attempt to use LuaSec when a proxy is configured, so we fallback to either wget or curl.
So, what is left is to make LuaSocket use the http_proxy env var.
Implementing no_proxy is more work. In this case, I would go straight to wget or curl and don't bother of implementing that logic in Lua.
I would drop the use of 'proxy' in config.lua
See current status at: https://github.com/ignacio/luarocks/commit/f022fe08167e67ae854120d472d273bed47ff3ff

Excellent assessment of the situation!

See current status at: ignacio@f022fe0

If I'm reading correctly, you basically did everything that has to be done to fix the proxy situation in four lines? Fantastic!

Well, thank you :)
Now I tested forcing all traffic through the proxy and everything I tested is working.
And no_proxy is handled by delegating directly to the configured downloader, just a couple more lines...
Current status at: https://github.com/ignacio/luarocks/commit/2c536b4bdd07b6f8983876a01296a1e8c752d2be
Do you want to add some sort of message when downloading stating that a proxy is being used?

I thought apply the same solution, but I don't understand how the tests work to simulate the problem. :D

Currently, I think they don't, because I don't know how to set a proxy on Linux, route some requests through it and assert that effectively the requests went through the proxy.

To set proxy variable, just add the follow instructions in /etc/environment to use PAM.
http_proxy=http://proxy.server:3128
https_proxy=http://proxy.server:3128
ftp_proxy=http://proxy.server:3128
all_proxy=http://proxy.server:3128
no_proxy=localhost,<IP_ADDRESS>

Personaly, I set configurations in /etc/profile.d/proxy.sh

@hishamhm do you want me to submit a PR with this?

oh, I completely forgot about that. I thought you solution was merged already :)

i had to use this method (insteadOf, gitconfig) to get it to work: otherwise luarocks woudl use the git:// method and fail: https://github.com/neovim/neovim/issues/1830


Specify output dimensions in pixels or density-independent pixels with Inkscape

These changes let you specify exact output dimensions in pixels or density-independent pixels (given a target screen DPI) when rendering with Inkscape.
The added property groups are:

width-px and height-px
width-dp, height-dp, and screen-dpi

I couldn't find a way to do something similar for Illustrator using AppleScript, unfortunately.

Any thoughts? I might be able to get it to work for Illustrator by calculating the scaling amount, but the dimensions could end up slightly off because there's no way to specify exact output dimensions (none that I could find in the Illustrator scripting docs, at least).
I'm also thinking that it might be useful to put the backends into their own file, possibly making them into classes?


LAB_06, remove the target sub-resource instruction

Lab/Demo: LAB_06_Connect to an Azure SQL server using an Azure Private Endpoint using the Azure portal.md
Task: Create an Azure SQL server and private endpoint
Step: 8
Remove the Target sub-resource setting. This page in the Azure portal automatically fills in "SqlServer" and does not let you change it.

Updates applied. Thank you.


Update link icon

Bug/issue #100028262, if applicable:
Summary
Update link icon

Dependencies
NA
Testing
Steps:

Over any title of a docc-render
Assert that link icon it's visually correct

Checklist
Make sure you check off the following items. If they cannot be completed, provide a reason.

[x] Added tests
[x] Ran npm test, and it succeeded
[x] Updated documentation if necessary

Looks great, icon update approved.

@swift-ci test

@swift-ci test


removing dupllicate keys

@Chochek please review on Monday. This is breaking IE11. Only found it with ESLint enabled. Otherwise, it was almost impossible to find.


Mobile godot 4.3.dev.2 graphical bugs

Tested versions
4.3.dev.2
System information
Godot v4.3.dev2 - Android - Vulkan (Mobile) - integrated PowerVR Rogue GE8322 -  (8 Threads)
Issue description
Literally clicking anything in the editor or when i interact with a UI element in the project and the editor it either appears in the wrong position or super stretched for 1 frame, it doesn't happen in previous versions like 4.3.dev.1 or 4.2.1, notice 0:05 or 0:01 in the video
https://github.com/godotengine/godot/assets/131946128/e8da5ce2-0517-4a34-8dda-53a54d110e88
Steps to reproduce
interact with the UI
Minimal reproduction project (MRP)
N/A

integrated PowerVR Rogue GE8322

Which Android device model is this, and which Android version is it running?
Can you reproduce this when using the Compatibility rendering method? This is generally more suited to old/low-end devices.

I Couldn't reproduce the bug in compatibility mode
my device is: Realme C11 2021
Andorid 11

There is a decent chance this will be fixed by https://github.com/godotengine/godot/pull/87340 I confirmed it fixed some similar issues on Android


Release notes changes

Change Version release notes to Release notes
Add link to versions history on GitHub
Click any where hides release notes( not x)
Insert Version number to release notes

In this menu it should be written : Release notes.

The release notes it self should include current version number .


[Bugs]Issue with Static IP Functionality and Multiple CIDR Entries on Webconsole VERIFY Button

The Static IP feature can be utilized by adding staticPools on the smfcfg.yaml side.
However, since it is possible to register one or more CIDRs, adding two as shown below results in the "[NO! Cause: Not in static pool …" error when the VERIFY button on the web console is pressed.
It seems that the cause is a discrepancy between the implementation and the configuration. The web console assumes only one CIDR definition, while the SMF side allows multiple entries, resulting in this issue.
[smfcfg.yaml]
dnnUpfInfoList: # DNN information list for this S-NSSAI

dnn: internet
pools:

cidr: <IP_ADDRESS>/16
staticPools:
cidr: <IP_ADDRESS>/24
cidr: <IP_ADDRESS>/24     <---- Error when running VERIFY

free5gc:
free5GC Version: v3.4.2
OS: Ubuntu 20.04.6 LTS
Kernel version: 5.4.0-125-generic
go version: Ubuntu go1.21.8 linux/amd64
webconsole:
OS: Windows10
Browser:Google Chrome 126.0.6478.57


Add ability to turn off error checking in TS

There's a setting for this in the Monaco editor - basically just turn off the red lines. We should add a checkbox in the settings panel for this.

I started using the visualizer today and I was thinking of the same. I used the // @ts-nocheck directive in my case though.


CI: K8sDatapathConfig Check connectivity with sockops and VXLAN encapsulation: EINVAL creating map

Getting -EINVAL when attempting to create the cilium_ep_to_policy map in a CI run:
https://jenkins.cilium.io/job/Cilium-PR-Ginkgo-Tests-Validated/11828/execution/node/83/log/?consoleFull
2019-04-23T22:29:59.027544432Z level=warning msg="Unable to restore endpoint, ignoring" endpointID=3768 error="interface lxc42042e5727ba could not be found" k8sPodName=default/testclient-sbzlq subsys=daemon
2019-04-23T22:29:59.031826434Z level=warning msg="Unable to open or create endpoint policy map" error="Unable to create map /sys/fs/bpf/tc/globals/cilium_ep_to_policy: invalid argument" subsys=map-ep-policy
2019-04-23T22:29:59.137698692Z level=error msg="Failed to load /var/run/cilium/state/bpf_sockops.o: exit status 255: libbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"CALLS_MAP\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"CALLS_MAP\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_encrypt_state\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_ep_to_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_events\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_ipcache\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_backends\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_reverse_nat\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_rr_seq\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_rr_seq_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_services\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_services_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_backends\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_reverse_nat\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_rr_seq\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_rr_seq_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_services\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_services_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lxc\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_metrics\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_sock_ops\" has unrecognized, non-zero options\nlibbpf: Program '.text' contains non-map related relo data pointing to section 0\nError: failed to open object file\n" subsys=sockops
2019-04-23T22:29:59.13781585Z level=warning msg="Disabled '--sockops-enable' due to missing BPF kernel support" error="Failed to load /var/run/cilium/state/bpf_sockops.o: exit status 255: libbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"CALLS_MAP\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"CALLS_MAP\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_encrypt_state\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_ep_to_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_events\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_ipcache\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_backends\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_reverse_nat\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_rr_seq\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_rr_seq_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_services\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb4_services_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_backends\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_reverse_nat\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_rr_seq\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_rr_seq_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_services\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lb6_services_v2\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_lxc\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_metrics\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_policy\" has unrecognized, non-zero options\nlibbpf: maps section in /var/run/cilium/state/bpf_sockops.o: \"cilium_sock_ops\" has unrecognized, non-zero options\nlibbpf: Program '.text' contains non-map related relo data pointing to section 0\nError: failed to open object file\n" subsys=daemon

This was the first test to run, ginkgo seed<PHONE_NUMBER>.
674d523a_K8sDatapathConfig_Encapsulation_Check_connectivity_with_sockops_and_VXLAN_encapsulation.zip

Maybe this is just trying to state that:
level=warning msg="Disabled '--sockops-enable' due to missing BPF kernel support"

but it looks like this weird giant error-y log in the daemon logs because the "error" contains the entire compiler output. Otherwise seems like the underlying test failure may actually just be the same as #7615.


Update main.py

Lots of changes for clear and concise code, with no unnecessary pauses and fixes for existing issues. 100% success rate (for now)

Seems pretty solid and optimized code. Merged. Have a great day!


Add option to always invert image

Is your feature request related to a problem? Please describe.
Currently, in order to invert image, you have to add #invert to all image links.
Describe the solution you'd like

Add an option to make it default. Options to make #invertW would also be nice for those vaults where majority images are black.
A way to exclude some images (by adding #exclude-invert ?)

I think this is better achieved as a snippet, you can adapt the code here:
https://github.com/kepano/obsidian-minimal/blob/master/src/scss/features/image-filters.scss


Enable passwordless sudo for certain commands as a non-root user

I want to use the backitup adapter to copy my iobroker backup per cifs to my nas. Unfortunately this does not seem to work properly even after installing the cifs-utils. The mout command used by the adapter can only be executed with sudo. Since I run my container as a non-root user, it might be useful to be able to define commands in the enviroment variable where the user does not need a password for sudo.

I just realized that this probably isn't a problem with sudo but with using the mount command inside containers itself.
Adding
cap_add:
    - SYS_ADMIN
    - DAC_READ_SEARCH

to my docker-compose file seems to work. But using a non-root user now doesn't make sense anymore if I have understood the meaning of the used options correctly.
Is there a way to use this adapter with a non-root user?

Hi, sorry for the late response. Did you find a solution for this?
I have never tried to use cifs inside a container cause i always use mountpoints for transferring data between container and host.
If you still want to use cifs, you may use the "userdefined startup scripts". The will be executed as root at startup and may solve your problem connecting to a cifs endpoint.
If this solves your problem (or you still got a solution) please close this issue.
Thank you.
Regards,
André

Since the backup and the mount and unmount process should be executed while the container is running, a startup script makes little sense. The mount would be there all the time, which would work, but I could also solve that with an external script including unmount.
The problem is the mount command inside docker containers, which is only possible with SYS_ADMIN.

Sorry, don't know how cifs is integrated in backitup adapter. And also don't know how this is working in general...
For me you mount a cifs target to your container and backitup pushes the backup there. Nearly the same procedure as you connect to ftp oder store the backup to a local folder. If you mount your cifs target on container startup you should be good. I think this you can reach with a user defined startup script.
How backitup then pushes/ stores the backup to your target is not my task. This is something the adapter has to do. If this could not be handled with the given permissions of the iobroker user, there must be a change to iobroker itself, cause ioBroker setup is setting up iobroker user and its permissions.
So this is why I still see no task for iobroker docker image here.
Regards,
André

I originally assumed that it was just a permission problem from the mount command and created the issue. I am now closing the issue, as this will probably work better for me via the smclient command, which has to be included in the adapter itself.


Doubt about multiple and simultaneous update to same entity

Hello,
I'm using QuickBlox in two projects for clients and I'm really enjoying it =]
But I have a doubt:
What happens if, for example, I start updating a QBChatDialog and, 0.5 seconds later, another person starts updating same dialog, with different changes. Which changes will prevail? How is version control in QuickBlox servers, how version conflicts are solved?
My platform is iOS and I'm using Swift
Thank you!

Hi,
There are actually not that much changes possible to do. You can now update chat name, photo and pull/push occupants
As of chat name and photo fields, it is working as simple as the newest change will always take affect.
As of pulling/pushing occupants, it is working on diffs.
Here is more information on who can do which operation: http://quickblox.com/developers/Chat#Update_dialog

And for custom parameters (my case), I imagine is the same rule for chat name and photo fields right (newest change prevails)?

Custom parameters of QBChatDialog are part of Custom objects and respect all custom objects rules.

Ok, and which are the rules for custom objects (Regarding changes/updates)? Newest change always prevails?


Moved virtualbox instructions to its own file.

Separated instructions from quickstart.md.

Hi there!
What we can do in order for people to do demos is to create our own OpenMined's VM and people with the use of Virtual just need to download it and use it directly
In France, we have something like this about Ethereum in order to code with some softwares already installed on the VM. Here is the repo : https://github.com/asseth/assethbox

Great idea @jeamick, a custom .ova could be available as an option.

Going ahead and merging! I think that this document will help lots of folks - particularly those on older Windows machines which seem to struggle with OM in it's current state. Great contribution @winfredselwyn !!

Awesome, thanks @iamtrask !


About the use of method.setAccessible() in TrustRootIndex

What kind of issue is this?

I believe this is neither a Question / Bug / Feature request, but a discussion, so I hope this is the right place for it.
When upgrading our code-base from okhttp-2.x to okhttp-3.x, we are seeing a security exception. It comes from TrustRootIndex.java#L40
The method.setAccessible(true) call requires ReflectPermission("suppressAccessChecks") which we don't enable for any of the protection domains, because it is a potently dangerous permission.
Hence, I am trying to solve this without increasing permissions. I have a couple of questions and ideas.

What is the intent of the method TrustRootIndex.get()? I understand the concept of certificate chains at a conceptual level, but I am not sure what this code is trying to achieve.
When the findTrustAnchorByIssuerAndSignature method is not found, the exception handler calls trustManager.getAcceptedIssuers() instead. So, is the access to hidden field just an optimisation with a less performant fallback?
If it is merely an optimisation, can you fallback to the less optimal method when access is denied by catching the AccessControlException?
If it is not just an optimisation, but is crucial to the operation of okhttp, then would you consider creating a separate protection domain for reflection code. (Simplest way is to create a separate library that only does one thing: change accessibility of a method).

@swankjesse at a minimum, shouldn't this code move behind the Platform interface and only be used on AndroidPlatform?

Configure your OkHttpClient instance with this method:
OkHttpClient.Builder#sslSocketFactory(SSLSocketFactory, 509TrustManager)

That’ll prevent the TrustRootIndex reflection from being used. It’s sadly necessary to avoid a problem with certificate pinning. In particular we can’t correctly validate the pins without the trust roots, and the SSLSocketFactory doesn’t expose an API for that.

@swankjesse We had tried using that method but still encountered the same problem. Here's a reproducible test-case: https://github.com/UprootStaging/security-manager-okhttp-test
The code for setting up the call to sslSocketFactory(SSLSocketFactory, 509TrustManager) is taken from its javadoc.

It's fixed by #3428

@yschimke Thanks :heart:


Support Kotlin Coroutines Plugin

description
Support tracing for Kotlin Coroutines
Support Version
1.0.1 ~ 1.5.2(Latest)
Tracing description
Coroutines have two main types of behavior.

Recreates the method inside the Coroutines's block
Dispatches recreated method to worker
L The object with tracing information is included.
Executes recreated method
L Create a new tracing root via step 2's object.

Notes :
If Coroutines use the parent's thread, it will be tracked even if you do not use the Kotlin plugin.

At the time of development, I didn't understand fully about Kotlin Coroutine.
I have plan of revising this plugin. and I will send PR again.
I recommend that do not use this as much as possible during that period.


[docs][cxx-interop] Mention no bridging for C++ standard library types

@swift-ci please smoke test


Allow url to be used in defining a service through docker labels

Addresses https://github.com/traefik/traefik/issues/8753

Hello @yelvert,
Thanks for this contribution!
At first glance, tests are missing. Can you please add some tests?

@rtribotte Does that work? This is the first Go ive ever written, so....


Bump eks-operator to include cluster type changes

Support for EKS launch templates changed the cluster type to include
fields for launch templates and the node groups. The changes need to be
added to rancher-operator so that the marshaling of the cluster type
includes the changes necessary for launch template support.
Rancher PR:
https://github.com/rancher/rancher/pull/30384
Issue:
https://github.com/rancher/rancher/issues/28803

Is the crd update by running go generate or something?

@rmweir Yes, I ran go generate to get those changes.

Is the crd update by running go generate or something?

@rmweir Yes, I ran go generate to get those changes.


MPI Tune utility

keyword_TIWG   |    by<EMAIL_ADDRESS>
Ilia is looking at using the mpitune utility to choose optimal options for the MPI library when running the UM

Issue migrated from trac:198 at 2024-01-31 18:14:02 +1100

<EMAIL_ADDRESS>changed priority from major to minor

<EMAIL_ADDRESS>commented

Issues with tool, Ilia working with Intel to resolve

<EMAIL_ADDRESS>changed _comment0 which not transferred by tractive

<EMAIL_ADDRESS>commented

Need different version of Intel ITAC. NCI don't have a licence for Intel 16
Benchmark comparison of Intel, OpenMPI, Cray - suggests parameters for MPI should be tuned for application


Demo Mode

Any ideas why, every time I put the watch into the USB cradle, it reverts back to "Demo Mode"...? Seems to be a quirk with latest f/w. May be nothing to do with your code...

Hmmmm... strange. I haven't heard of it doing this, and I've got the latest firmware. Are you running the ttwatch software as a daemon, or are you running it manually from the command line?
If you're running the software as a daemon, try killing it then docking the watch and seeing if it still reverts to demo mode.
You could also try using the Windows software and seeing what happens, if you have access to a Windows machine you can try it on.

I am using the latest firmware and can not confirm this problem

I think I know what is happening:
The Demo mode seems to be enabled by the acts of docking the watch, independant of whether the ttwatch software is running or not.
However, the firmware has been updated, using ttwatch, since the unti was last connected to a windows machine running the tomtom software
My guess is that for some reason TomTom have set their watch to go into "demo" mode when it is docued if it has never been paired with official windows software since the latest firmware update, on the basis that if it hasn't, it is likely still on display in a shop.
Without a windows machine I can't confirm this, and if true it seems a rather strange decision by TomTom devs - but I will try to get hold of a windows machine at work to test the theory

I'm not sure that's the problem. I haven't used the Windows software for well over 6 months, and the firmware's been updating using the ttwatch software ever since. The watch has never reverted to demo mode.
I don't know what could be the problem though. It sounds like a problem with the watch. Maybe a factory reset using the Windows software would fix it.


Add custom field widget support

[ ] Provide methods to retrieve D7 $field and $instance definitions.
[ ] Finish defaultSettings method.
[ ] Finish settingsForm method.
[ ] Finish settingsSummary method.
[ ] Decorate form state with ArrayAccessFormState.

I'm planning to add a way to retrieve $field and $instance definitions in D7 format.

Closes #61

@darrenoh this needs to get recreated against main. I tried changing the base branch before but it got all kinds of weird. Not sure if it's easiest to fix conflicts and then make a patch and recreate, or just to rebase it off of main directly


Ubuntu snap updates reset workspace

Have vscode snap package installed
It automatically/silently updates to new vscode version occasionally
Open a new file through the command line, it opens a new vscode instance since it's a new version
It's an instance with only 1 tab (the file I opened)

The problem is that the workspace is removed, the tabs and the workspace itself is gone.
So every time the snap updates I have to re-import the workspace and open tabs.
The recently open files is also gone so I can't easily restore relevant files.
The workspace is behind a symlink, in case that matters.
I know this is probably out of scope for vscode, but it shouldn't happen.

Can you reproduce this reliably?

This is https://github.com/microsoft/vscode/issues/15949


Running AutoDock Vina (rigid receptor)

To run Vina on your ligands, you will need:

ligand.pdbqt
receptor.pdbqt
configuration.txt file (contains information about docking parameters)
perlscript.pl (contains the commands for Linux to execute Vina)

Create a 'Ligands' folder, then enter that folder in Ubuntu terminal, create a ligands.txt file by typing:
ls >ligands.txt
then open this text file and delete any text that does not correspond to a ligand.pdbqt file, then save the file.

Docking of Ligands with Receptors in AutoDock Vina

Docking of Ligands with Receptors in AutoDock Vina
Now it is time to start the virtual screening process.
In our virtual screening folder (5rmm_rigid_vs), all of the required files are located, including the ligand files in the PDBQT format, a receptor file in a PDB format, a configuration file, and perl (.pl) file.

The perl script I have written for this screen is as follows:

Docking of Ligands with Receptors in AutoDock Vina
Now it is time to start the virtual screening process. In our virtual screening folder (5rmm_rigid_vs), all of the required files are located, including the ligand files in the PDBQT format, a receptor file in a PDB format, a configuration file, and perl (.pl) file.


Implement break & continue

Hi,
as written in a private message, I have implemented break and continue in my private repo and now offer to port that over to the main selfie repo.
It is implemented similar to how the return works using fixup chains. Additionally, the compiler knows if it is currently inside of a loop or not. Whenever a loop is compiled that is inside of another loop, the fixup chains are temporarily stored and then later restored at the end of the inner loop.
I can also adapt the for-loop assignment to check for successful implementation for break and continue if you would be interested in that. In my opinion, the assignment does not really get harder since including that in a for-loop implementation is very easy todo and barely different from how it is done by the while-loop implementation.
I have also updated the gammar. I incorporated the fact that break and continue can only be used inside of a while loop, which is why I did not add them to the actual statement definition, but I could of course also do that if its better that way.
If there is anything else needed or any issues, please let me know.
Tested compilation using both GCC and CLANG on a linux debian subsystem running on windows 10.

@CAS-ual-TY Thanks a lot for your PR! I should have replied earlier, sorry about that. Your code looks nice and you are welcome to PR it against a branch I just created called break. However, I may not be able to pull it into the main branch because break and continue make C* more complex and thus make teaching C* more difficult without really being needed in the implementation of selfie. For example, selfie still does not actually use these statements. That contradicts the spirit of the project which is self-referentiality. There are, however, interesting, more advanced projects such as support of char that I would be happy to advise you on.

Makes sense! I switched the branch, everything should be good


Is follow user feature working?

When I click "FOLLOW" in the FindPeople component, I see error:
TypeError: Cannot read property '0' of undefined
UserBoxComponent._this.onFollowUser
src/components/userBox/UserBoxComponent.tsx:182
179 | }
180 | if (!isFollowed) {
181 |   debugger

182 |   followUser!(followingCircle![0], { avatar, userId, fullName })
183 | } else {
184 |   this.onRequestOpenAddCircle()
185 | }

Also it would be good to add some documentation on what is UserTie and Circle; And what is the difference between FollowingComponent and YourCirclesComponent?
Thank you!

Hi @bayareabear , I appreciate your bug report and recommendation 🙂.
However as I already wrote in README file on the repository ...

I am working on a Telar Social UI (new version) which fixed these issues. But this version is written in Golang and working on Kubernetes which is for the projects in huge scale in production.
Here is the good news 🤩. I am working on TypeScript/JavaScript platform of Telar Social which supports more platforms (not only Kubernetes) like Firebase, Vercel and Netlify. Also in new version we have Next.js version of UI which supports features like SSR and PWA.
You can follow the project on Slack or my twitter to get notification about project release 🛎.


engine,execution: refactor operator telemetry

Instead of every operator needing to implement the OperatorTelemetry interface we just wrap and render analysis by piggybacking of Explain. This also has the benefit of reusing Explains node names.
=== RUN   TestQueryAnalyze/rate(http_requests_total[30s])_>_bool_0/range
    explain_test.go:160: Query: rate(http_requests_total[30s]) > bool 0
        Analysis:
        [*scalarOperator] > - 182.797µs:
        ├──[*coalesce] - 145.549µs:
        │  ├──[*concurrencyOperator(buff=2)] - 31.921µs:
        │  │  └──[*matrixSelector] rate({[__name__="http_requests_total"]}[30s] 0 mod 4) - 22.881µs
        │  ├──[*concurrencyOperator(buff=2)] - 46.706µs:
        │  │  └──[*matrixSelector] rate({[__name__="http_requests_total"]}[30s] 1 mod 4) - 38.499µs
        │  ├──[*concurrencyOperator(buff=2)] - 37.865µs:
        │  │  └──[*matrixSelector] rate({[__name__="http_requests_total"]}[30s] 2 mod 4) - 22.315µs
        │  └──[*concurrencyOperator(buff=2)] - 34.638µs:
        │     └──[*matrixSelector] rate({[__name__="http_requests_total"]}[30s] 3 mod 4) - 21.86µs
        └──[*numberLiteralSelector] 0 - 14.998µs

TODO:

more tests to ensure we have not forgotten to wrap something.

How will this facilitate capturing custom telemetry data that is not applicable to all operators i.e. how we will be able to add telemetry data from inside the operators themselves? My point is that the operators need to be aware of the telemetry implementation. Having a wrapper makes life easier but I think it would be better to only have one way of implementing telemetry.

Yeah this method only allows capturing telemetry that is applicable to all operators like this; is this a dealbreaker?

Maybe we can revert the removal of telemetry embedding and keep this wrapper only for CPU wall time? I think realistically this wrapper can only capture this info

Maybe we can revert the removal of telemetry embedding and keep this wrapper only for CPU wall time? I think realistically this wrapper can only capture this info

Lets close this PR! While working on it i found that subquery telemetry is broken i think though ( the nested options never get the "EnableAnalysis" flag; ill open followup to fix that )


Some MainLoop methods are documented as deprecated but still find its valid use cases

Godot version:
3.2-alpha
Issue description:
@akien-mga #30096 states that MainLoop methods like init, iteration, idle will be removed in 4.0, but I see how they are/can be used in #7269, #28183, bitwes/Gut#120.
I haven't found much discussion/reasoning behind this so perhaps someone could shed a light. What would be the alternative?

I think I'm just falsely alarming, I can't really find concrete usages for this (though it might be useful, who knows).


Is the plugin still actively maintained?

There have not been any replies to issues for over a month: is this plug-in still actively maintained?

The best way to tell this about a project is not to check how long issues have been open, but how recently issues have been closed.

I don't quite agree with that statement. If someone opens an issue I would expect the dev to reply sometime along the line, even if it is only to say “this is low priority for me”, or whatever else.
Still, looking at the issues recently closed, most of those were done by you. That brings me back to my previous question: have you taken over from @nothingislost?
So, if the Hover Editor plug-in is not abandonware, then are you just answering people's questions, or have you taken over the plug-in?
May we please know what the status is? And if you don't know, please say so.

Your original question was, "is the project actively maintained?"  The answer is yes, as you can see by both the closed issues and the recent commits (visible on the main project page).

If someone opens an issue I would expect the dev to reply sometime along the line, even if it is only to say “this is low priority for me”, or whatever else.

And for many open source projects "sometime along the line" can be months or years.  A polite way to handle this is to provide additional information on the specific issue in question, or inquire (again, in that issue) whether any additional info is needed or there is anything else you can do to help move the issue along.  Opening additional issues, using inflammatory language ("abandonware"), and demanding potentially-private information about the people behind a project, however, can come across as rude and entitled, and creates more work for the project maintainers, which they will not be happy about.
All I will say about the status of current work on the project is:

I am continuing to work on improving 0.16 compatibility, and have a list of specific things I intend to tackle on that as time permits.  Priority will be given to functional issues, such as the docking problem.
Some of the plugin's future direction (e.g. how to deal with tabs and splits) and specific issues (such as those related to move/resize) will require input from @nothingislost in order to move forward
I am not currently commenting on or closing issues that are not in my area of expertise and/or require said input to resolve

If you have any specific questions about my plans with regard to various aspects of the plugin, I will certainly attempt to answer them.  But I won't be answering any questions regarding the people working on the project.

Appreciate you jumping in @pjeby. I am still maintaining this plugin but haven't had cycles to look at it much over the past month due to other commitments. @DutchPete have some patience and please be polite to the maintainers of this plugin which was written during our free time for the benefit of the community.

@nothingislost I have no problem exercising patience, esp. since it is a free plug-in, I am in no position to demand anything. It is one heck of a fine plug-in.
Having said that, I do not believe I was rude to @pjeby. I noticed he answered issues even though it is not his plug-in originally. When I had an issue that he answered and closed immediately without checking if it worked, I was surprised, esp. since his solution did not work at first. So, I asked to reopen it and also tried to understand what his role was and what the status of the plug-in was.
I felt he was not clear in answering the latter issue, so I pushed him a bit on that. When he cleared it up I stopped pushing. He also help me solve the original issue I had, and was grateful for it.
I honestly do not believe that signalling me issue was not solved or pushing someone to be clear about a status equates to being impolite. I have never lacked respect to you whenever we communicated directly on Discord, so you know it is not my way.


Translate "Generating Code with Gii" guide to Bahasa Indonesia

Q
A

Is bugfix?
no

New feature?
no

Breaks BC?
no

Tests pass?
no

Fixed issues

Thank you!

Thanks :)

On May 16, 2017, at 5:31 AM, Carsten Brandt<EMAIL_ADDRESS>wrote:
Merged #14162.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Update lib versions on vendor modules.txt

This PR updates the go module versions within the vendor modules.
This fixes the broken builds on the master branch following the golang version updated delivered under https://github.com/rancher/local-path-provisioner/commit/ed8fd34ae7dd9078bd6419c01871610d91c4ba13

Updated in https://github.com/rancher/local-path-provisioner/pull/446.
Thank you.