Maintain last written LSN for each page

Related issue: https://github.com/neondatabase/neon/issues/2493. Please add a performance test for bulk update and delete with prefetch , to demonstrate that this helps.

Related issue: #2493. Please add a performance test for bulk update and delete with prefetch , to demonstrate that this helps.

Some performance results for delete are mentioned in correspondent Postgres PR:
https://github.com/neondatabase/postgres/pull/215
I will add it to performance tests once all other issues related with this PR are clarified.

I have added performance test (test_bulk_update.py) but results (at EC2) are ... frustrating:
test_layer_map.insert-1: 17.040 s
test_layer_map.update-no-prefetch: 48.789 s
test_layer_map.delete-no-prefetch: 31.214 s
test_layer_map.insert-2: 16.617 s
test_layer_map.update-with-prefetch: 62.428 s
test_layer_map.delete-with-prefetch: 27.855 s

Been performed manually, results are much better:
test_layer_map.update-no-prefetch: 38 s
test_layer_map.delete-no-prefetch: 30 s
test_layer_map.update-with-prefetch:35 s
test_layer_map.delete-with-prefetch: 23 s

The only difference is max_replication_write_lag which defaut value is 500Mb and in test suite is set to 15Mb.
So once again we faced with the behavior I have ultiple times reported. But now it is reproduced not t my laptop (where it can be explained y slow SSD), but at EC2 node with fastest possible disk configuration.
As you can see, smaller max_replication_write_lag can slowdown updates almost 2 times! It is because of throttling.
And looks like prefetch makes throttling even more "aggressive" and as a result we have worse performance with prefetch then without it.
And one more mockery of "common sense": with wal_log_hints=on performance is ... better:
test_layer_map.update-with-prefetch:32 s
test_layer_map.delete-with-prefetch: 20 s

May be it is because storing FPI for page hints allows to eliminate page reconstruction overhead.

I continue investigation of bulk update performance.
Below are results of test_bulk_update test combined with measure backpressure throttling delays:
max_replication_write_lag=15MB
w/out prefetch:

operation
time
throttling

insert
16.235
9.864

update
59.437
14.940

delete
30.602
0

with prefetch:

operation
time
throttling

insert
15.001
8.632

update
69.624
44.543

delete
25.337
9.490

max_replication_write_lag=500MB
w/out prefetch:

operation
time
throttling

insert
6.586
0

update
42.264
0

delete
34.661
0

with prefetch:

operation
time
throttling

insert
6.408
0

update
39.171
18.399

delete
15.839
0.745

So looks like time of bulk update is mostly limited by pageserver and so backpressure is not able to signficantly speed-up it.
For delete amount of produced WAL is much smaller than for update and with 500Mb write lag we are able to complete statement without throttling (so not waiting for pageserver).
Please notice that this result was produced at single EC2 node. May be at real cluster where safekeepers and pageserver are running at different nodes, the picture will be different.

There are three changes in this PR:

The new performance test case.

The changes in pagestore_smgr.c, in how prefetch_lsn is updated. Discussion in https://github.com/neondatabase/neon/pull/2588/files#r1013412589. This bitrotted, when the new prefetch queue implementation was committed. With the new implementation, I believe we actually track the prefetch_lsn separately for each prefetch request, so I don't think this code applies directly anymore. But I believe the problem still exists.

Summary the issue: If a very old page is prefetched, we remember the global last-written LSN as its prefetch_lsn, and when we receive the response to the request, we check if the last-written LSN is still the same. However, the global last-written LSN can move forward all the time, so you can easily have a scenario where you discard all prefetch responses because the global last-written LSN never matches what it was when the request was made.
It would be good to have a more targeted test case for that situation. We have some counters in the prefetch code, n_prefetch_hits, n_prefetch_misses, n_prefetch_missed_caches, and n_prefetch_dupes. Let's expose those as a SQL function in neon_test_utils`, and write a test case that explicitly checks that you don't get more than a few prefetch misses.
(https://github.com/neondatabase/neon/issues/2760 is related, but a little different I think. Even if we maintened the last-written cache in the LSN order as suggested there, I think we'd still have the same problem)

The change that's actually in the title of this PR: track the last-written LSN per page, rather than for a range of pages.

I suggest that we split this into three PRs. Let's get the new performance test comitted first, that seems straightforward, and it would be nice to have the performance test before the code changes, so that we can clearly see how the performance test results improve with the code changes. After that, 2. and 3. can be done in either order, I think.
@knizhnik, can you extract the performance test from this into a separate PR, please?
@MMeent what do you think of 2. ? Is that still a problem with the new prefetch queue? Can the fix from this PR be applied to that, or what would be the simplest way to fix it?

Created new issue https://github.com/neondatabase/neon/issues/2857 to track that second bullet point

Replaced with #2879


Benchmarking the happy-path CSJ prototype

We now have a local benchmarking setup, allowing us to tweak number of ledger peers, bandwidth, latency, disconnects, etc.
We should test the prototype in a number of useful combinations of these parameters, in order to answer questions such as:

How many ledger peers can we support?
Is a static CSJ interval policy sufficient for diverse network conditions?

Some plots for future reference:
Syncing progress for different capabilities

Network vs CPU bottleneck

Baseline vs CSJ with one peer

ChainDB queue pop timings with #2721

Using different BlockFetch Decision Loop Intervals

Removing fragment size calculation


Correct documented SortedList insert performance

Correct documented SortedList insert performance
Summary
This page states:

insertion is O(1) for data that are already in sort order, so that each element is added to the end of the list. (This assumes that a resize is not required.)

which sadly doesn't seem to be true as explained in the details.
Details
According to API specific doc pages and the code itself, insert as well as remove performance will be O(log n) instead of O(1) in the best case scenario:

This method is an O(n) operation for unsorted data, where n is Count. It is an O(log n) operation if the new element is added at the end of the list. If insertion causes a resize, the operation is O(n).

stated here: https://msdn.microsoft.com/en-us/library/ms132330(v=vs.110).aspx and here: https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.sortedlist-2.add?view=netframework-4.7#System_Collections_Generic_SortedList_2_Add__0__1_
The implementation of add also shows that it always starts with a binary search (being O(log n) in the best case) SortedList .NET Core implementation and SortedList .NET Framework implementation

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot


Hyprland with multi-monitor has wierd click behaviour

When running Hyprland with waybar on a multi-monitor setup (using latest waybar-git version) I am experiencing wierd behaviour:
Whenever I click (with the mouse) on a workspace that is on my second screen (where waybar is not rendered) the mouse moves to the second screen and the workspace gets displayed, so far so good.
However, every further click on the waybar will now always trigger this workspace button, it doesn't matter on which module I click. Click on audio module to mute? mouse jumps to second screen and opens the old workspace again. Click on a different workspace button? Mouse moves to second monitor again (no matter which workspace is clicked on) and the old workspace from the first click is shown again.
It even happens when you click on the bar where there are no buttons / modules
It is like that whenever you click on a worskpace  button that is not on the main screen, waybar breaks and the hitbox of that button now overlaps the whole bar.

I think it's a duplicate of #1850


Type loss when using generic decorators

TypeScript Version:  2.4.1
The following code aims to restrict the decorator decorate to members of a class inheriting from Base. However, it seems that K ends up only including members in Base, not in the inherited class. (This is a minimal reproducible example for other cases, e.g., restricting the decorator to methods within subclasses of Base of a certain return type.)
Code
abstract class Base {
  base() { return 1; };
}

type ProtoOf<T> = Pick<T, keyof T>;

function decorate<T extends Base, K extends keyof ProtoOf<T>, F extends T[K]>() {
  return (proto: ProtoOf<T>, propertyKey: K, descriptor: TypedPropertyDescriptor<F>) => {
    // Do stuff.
  };
}

class Test extends Base {
  @decorate()
  bar(): boolean {
    return false;
  }
}

Expected behavior:
No errors when applying @decorate() to bar().
Actual behavior:
Error: [ts] Argument of type '"bar"' is not assignable to parameter of type '"base"'.

You can work around it by returning a generic decorator from your decorator factory.
function decorate() {
  return <T extends Base, K extends keyof T, F extends T[K]>
    (proto: ProtoOf<T>, propertyKey: K, descriptor: TypedPropertyDescriptor<F>) => {
    // Do stuff.
  };
}

class Test extends Base {
  @decorate()
  bar(): boolean {
    return false;
  }
}

I think this behavior is correct since it is equivalent to writing

function decorate<T extends Base, K extends keyof ProtoOf<T>, F extends T[K]>() {
  return (proto: ProtoOf<T>, propertyKey: K, descriptor: TypedPropertyDescriptor<F>) => {
    // Do stuff.
  };
}

const decorator = decorate();

class Test extends Base {
  @decorator
  bar(): boolean {
    return false;
  }
}

@aluanhaddad thanks for the update! Your solution does address the issue in my earlier example, though I guess the actual problem I was having had to do with decorator arguments:
function decorate<T extends Base>(property: keyof T) {
  return <U extends T, K extends keyof U, F extends U[K]>
    (proto: ProtoOf<U>, propertyKey: K, descriptor: TypedPropertyDescriptor<F>) => {
    // Do stuff.
  };
}

class Test extends Base {
  @decorate('foo') bar(): boolean {
    return false;
  }

  foo(): boolean { return false; }
}

So the decorator works on bar() fine now, but is failing with this error: [ts] Argument of type '"foo"' is not assignable to parameter of type '"base"'. Basically, is there a good way of having the decorator parameters be generic w.r.t. the decorated class?

On another note, if bar() is marked private, then the original error returns - it seems that in this case, the decorator is only able to access public properties? My gut feeling is this is a limitation we'd have to deal with.

Just nothing that this function decorate<T extends Base>(property: keyof T)  does not have any place to infer T, you can not infer a type from a name of one of its properties. and remember decorate is a factory that returns a function that will be used to decorate. so it is equivalent to decorate(property: keyof Base), which means you can only decorate properties that have the same name as ones in Base.
So @aluanhaddad's suggestion seems like the correct solution here.

Your explanation makes sense. Though the issue still stands that it doesn't seem currently possible to have decorate properties work off the decorated class. It would be great if there was a way to give "context" to decorator properties as to what exact object they're decorating.

@vaskevich I'm not sure if I understand what you are trying to achieve correctly, but you can capture a string literal type parameter when the decorator factory is applied and then subsequently validate that this property exists on the class with the decorated method.
So, going back to your example, you can validate that a foo member exists on the decorated class and we can even place constraints on its type. For example, in the following, Test must have a callable member foo that has the same return type as the decorated member. (Warning these types are pretty hard to read and I experienced several language service crashes due to recursion while working them out.
type ProtoOf<T> = Pick<T, keyof T>;

function decorate<CK extends string>(property: CK) {

  return <
    T extends Base & {[P in CK]: G},
    K extends keyof T,
    F extends T[K] & G,
    G extends  ((...args: Array<{}>) => R),
    R>(
      proto: ProtoOf<T> & {[P in CK]: (...args: {}[]) => R},
      propertyKey: K,
      descriptor: TypedPropertyDescriptor<F>) => {
    // Do stuff.
  };
}

class Test extends Base {
  @decorate('foo') bar(): boolean {
    return false;
  }

  foo(): boolean {return false;}
}

Automatically closing this issue for housekeeping purposes. The issue labels indicate that it is unactionable at the moment or has already been addressed.

Thanks for the replies - I haven't been able to take a look at this again yet, but will open a new issue if there's a specific defect here (which doesn't seem to be the case).


Invalid XHTML? SyntaxError: An invalid or illegal string was specified

I think that this issue finds its root in the usage of innerHTML (instead of DOM manipulation with addChild and so) without adding the / at the end of auto-closing tags or ensuring every attribute has a value.
I serve my sites with the header: Content-Type: application/xhtml+xml in order to make the web browser point out syntax errors in the HTML.
Then, the line $('#mycalendar').datepicker(); raises this in the browser console:
Undefined entity (in unknown)
SyntaxError: An invalid or illegal string was specified (in jquery-2.1.1.js)
So it looks probable that the generated code is not valid XML (needs a / at the end of auto-closing tags and such).
Maybe Undefined entity refers to &something;.

There is actually no issue here since in HTML5 there is no /at the end of tags, as wrote in the HTML5 documentation.
I guess we can add some support for XHTML 1.x.
Now the fact are
that XHTML 1.x is getting old, and all browser support HTML5 syntaxe.
that XHMTL 2.0 development have been indefinitely suspended.
and that XHTML5 is based on HTML5 so it fall under HTML5 rules (so no /).
So to be honest, I don't see the value of adding this support, nor in fact making website in XHTML 1.x nowadays.

Thank you for the detailed reply.
I'm actually writing HTML5, but to enforce correct syntax on the web developers (including myself), the only way I found is to serve the page with application/xhtml+xml in the HTTP headers.
This makes the browser puke an error if the document is not a proper XML tree, so we could say I'm writing XHTML5 code.
It's way stricter than the HTML5 standard, for which this is a perfectly valid document (ew):
<!DOCTYPE html>
<head> <title>title</title>
<p>text
</html>
But nobody wants to have to work with that kind of crufty code; I think we can agree that just passing the HTML5 standard is asking for trouble.
Enforcing that the document be an XML tree is not a bad way to ensure that things stay tidy.
JQuery's generated HTML strings are also valid XML; I had no trouble with any component of bootstrap so far, except datepicker. It would be a cool addition, I think. :)

Ok, after checking the code there is self-closing tag anyway.
Now I wanna debug this issue, could you explain me how do you proceed to get your error ?

I put the header Content-Type: application/xhtml+xml, which can be simply done in php for instance by inserting this at the top of the page:
<?php header('Content-Type: application/xhtml+xml'); ?>
I think it might be an HTML entity, due to the error message in the console:
Undefined entity (in unknown)
There was no obvious way to get the code generated by the JS, though, since it's inserted via innerHTML.

if no JS is executed there is no reason the issue is raised by the datepicker.
When I change the mime Chrome will just display the Xml without any error, nor executing any JS.
That's why I was asking.

The error disappears when I remove $('#mycalendar').datepicker(); from the script in the page.
It seems that the function datepicker() tries to insert something that doesn't pass XML syntax as innerHTML.

There is only « and » in the code, which by the way should be gone in 1.5.
It's hard to lookup for this since I can't perform what you're doing.

I updated, and the problem is fixed. I'm pretty sure I made a mistake when fetching datepicker initially and didn't have the last version.
Thanks very much!


Add support for tilemap editor layers

Need to get layers rendering correctly

[x] Sprites
[ ] Colors
[x] Flags

This has been fixed.


Move github actions under .github folder

What is the purpose of the pull request
This is an addendum to #368. #368 created some action description file for status check on the Azure CI. Those files should be under .github.

@ashvina , could you take a look since you reviewed #368? Thanks

Thank you @jcamachor
I have a small confusion. GitHub searches the .github/workflows directory in your repository for workflow files. Does that mean that the workflow files which are getting moved to .github folder in this repo would also be executed in addition to xtable-ci?

@ashvina , yes, that's right. In fact, these files correspond to GitHub actions that control the status check in GitHub, while the CI itself is controlled by Azure Pipelines workflow files.


Change the README to be more Code/Project Oriented

Code and Work on it
This is a code repository.
The README should be mostly about the code and working ON this code:

How to build this code
How to run the algokit build
What other subsystems exist
How to contribute
How to setup a core-dev-environment to work on(!) algokit-cli

First attempt towards this was:

https://github.com/algorandfoundation/algokit-cli/pull/240

But this failed.
Not about the Product
The README should not be about the Product, this can be described in the User-Manual (or "Developer Manual").

Hi @abebeos,
Thanks for the feedback.
We point users readily to the README.md of this repository as the starting point for using AlgoKit. It has a lot of useful context about what AlgoKit is and point to the various components and documentation etc.
This pattern is pretty common across the industry in my experience, I think most root README.md files are targetted towards usage rather than contribution, a few examples I just randomly looked at to confirm this:

React
TypeScript
OpenZeppelin
Google Test Rust

All of them have a very similar structure to AlgoKit with an initial description, installation and usage instructions and then a section point to how to contribute that links off to another file.
In our case we have a How can I contribute section on the README that links to CONTRIBUTING.md that has reasonable coverage (definitely happy to take contributions to that file to add more detail though if you have any feedback on it.

again "comment & close".
Very well, seems you've everything totally under control.
(just know this: Code Repositories need to focus on Core-Development, this is a simple logical fact that no Meta, Google, MS and other "arrogant to the bones" giants can change. Usage is handled in the user/developer manuals. Luckily there are hundreds of projects that follow this).


Adapting to use with trafik v2

So I've actually gotten this to work behind traefik v2 but it does require both the tesla-http-proxy-docker and a nginx docker. Traefik can redirect (similar to nginx proxy_pass) but I don't believe it can host files which is needed for the com.tesla.3p.public-key.pem. However, it may still be possible without nginx but I'm not sure.
A couple of questions:

What are the lines in the nginx conf that direct everything but traffic at the root to the tesla proxy?
Is there anyway to access the com.tesla.3p.public-key.pem file from either the flask web server on port 8099 or the tesla proxy server on port 443?

My current config using traefik for reverse proxy and for SSL.
Docker Compose:
services:
  tesla-proxy:
    depends_on:
      traefik:
        condition: service_healthy
    image: iainbullock/tesla_http_proxy:latest
    container_name: tesla-proxy
    hostname: tesla-proxy
    restart: unless-stopped
    networks:
      - default
    environment:
      - TZ=$TZ
      - "CLIENT_ID=<redacted>"
      - "CLIENT_SECRET=<redacted>"
      - DOMAIN=tesla-proxy.domain.com
      - PROXY_HOST=<IP_ADDRESS>
      - "REGION=North America, Asia-Pacific"
    stdin_open: true
    tty: true
    entrypoint: "/app/run.sh"
    working_dir: /app
    volumes:
      - $LOCALTIME
      - ${APPDATA}/tesla-proxy/data:/data
      - ${APPDATA}/tesla-proxy/share:/share

  tesla-proxy-nginx:
    depends_on:
      tesla-proxy:
        condition: service_started
    image: nginx:latest
    container_name: tesla-proxy-nginx
    hostname: tesla-proxy-nginx
    restart: unless-stopped
    networks:
      - traefik_proxy
      - default
    volumes:
      - $LOCALTIME
      - ${APPDATA}/tesla-proxy/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ${APPDATA}/tesla-proxy/share:/share
    environment:
      TZ: $TZ
    labels:
      - traefik.enable=true
      - "traefik.http.routers.tesla-proxy-ext.rule=Host(`tesla-proxy.$DOMAIN`)"
      - traefik.http.routers.tesla-proxy-ext.entrypoints=websecure
      - traefik.http.routers.tesla-proxy-ext.service=tesla-proxy
      - traefik.http.services.tesla-proxy.loadbalancer.server.port=80

Nginx Conf:
server {
    listen 80;
    listen [::]:80;
    server_name tesla-proxy.domain.com;

    proxy_buffering off;

    resolver <IP_ADDRESS>;
    set $target __PROXYHOST__;

    # temporary Flask app for initial auth
    #location / {
    #    proxy_pass http://tesla-proxy:8099;
    #}

    # Changed to this one once I shutdown the Flask app
    location / {
        proxy_pass https://tesla-proxy:443;
    }

    # static public key for Tesla
    location /.well-known/appspecific/com.tesla.3p.public-key.pem {
        root /share;
        try_files /com.tesla.3p.public-key.pem =404;
    }

}

Is there anyway to access the com.tesla.3p.public-key.pem file from either the flask web server on port 8099

I actually added this myself when I first found this repo, but after investgating how the repo worked, I realised that the pem file itself is requested by tesla servers before flask is running, and then again anytime in the future to make sure its valid still so it really needs to be statically hosted before this app.
From what I can see, having nginx (or any other webserver that is capable of static hosting) is probably the best way forward. I personally use caddy to host the file and reverse proxy to the python app for set up.


error while compiling

Hi,
sorry it might be the basic things, although i am the beginner...
i am getting the error on include nccl.h no such file or directory and i am little confuse in NCCl_PATH
if some one could explain this issue
thank you so much.

NCCL_PATH points to NVIDIA's NCCL communication library. As mentioned in the README, NCCL library is available at https://github.com/NVIDIA/nccl. The benchmarks have been tested with commit b3a9e1333d9e2e1b8553b5843ba1ba4f7c79739d
Please setup the NCCL library and update the NCCL_PATH before compiling the all_reduce benchmark in DeepBench.

yea i checked it and it works thank you
i have made a mistake to setup a path
👍


Add the ability to delete guides.

resolves #457

Coverage decreased (-0.19%) to 99.74% when pulling 48bceb44a81db1997294c68db59628f89212e812 on guitsaru:delete-guides into 471833e842484ea9548f2a7f2bec41ee05b359b0 on openfarmcc:master.

Coverage increased (+0.0%) to 99.93% when pulling 0938d2bdd0b591aa9b861f813b7180b10b38aeca on guitsaru:delete-guides into 471833e842484ea9548f2a7f2bec41ee05b359b0 on openfarmcc:master.

Thanks for the PR! This looks really good. Can you have a look at my comment about rolling the guides_controller code into the mutation as well and let me know your thoughts on that?
Cheers,
Simon


Ignore existing release null body

Using the SOLIDSoftworks/semver-tags action will result in a release
created that doesn't contain anything for the release body. The
consequences is that the updated release body will appear to contain the
string null followed by a newline and then the release body as
specified for this action.
In such a case it appears to make more sense to ignore the existing
release body should it be currently null instead of implicitly
converting it to a string for the updated release body.

thanks @filips123 but I already merged in https://github.com/softprops/action-gh-release/pull/109 which mentioned it might have solved this. Im going to working on cutting a release and will then follow up if it doesn't I'll follow up on this pr

@softprops think you tagged the wrong person, but either way happy to see if fixed. Looks to me like the other PR covers this case, so closing and deleting the PR.


[📖] add docs for useId

Suggestion
We need to document the useId api.
@n8sabes  -  do you think it's feasible to throw a quick doc (using chatgpt based on #2468)  for this API ?
If you don't have time that's cool, but you're the obvious first person as you're the great magician who implemented it :)
At any case, thanks! 🙏

@n8sabes if for you it's ok I will create the doc section for this. Let me know.

@gioboa, Thanks for prodding me on this issue. I have something written up and will submit a PR this weekend. I was thinking about putting it just after Component>Overview just after Getting hold of DOM element -- what do you guys think?

After ref description sounds good to me


Deserialize objects with incomplete or inexisting type information

This is to request a feature to be able to deserialize an object with no type information.
The result should be a handle, and a RuntimeSchema that describes the type information, as found in the stream.
Of course, this does make sense only with serialization formats that include tagging.
Once one obtains an deserialized object, one should be allowed to:

serialize again, with no loss of data
cast it to a class, and the cast should be valid if the serialized data is actually an instance of this class. In order words, the layout of a deserialized object with no type information should be compatible with the layout of a class generated with the bond compiler.
dynamically query a field, using the RuntimeSchema.

I have some code that does more or less this.
There are some challenges. Should we use system containers (list, map) of not? There is no way in C++ to manage containers without knowning at compile time the type of the contained objects. One cannot, in a portable way, navigate a std::map without compiling for a particular type of keys and values. Of course, one can write code that navigates a std::map, if one knows the layout. But that means writting specific code for each compiler/platform.
I solved this writting a custom map. That that means that one must pass special flags to the bond compiler, if one wishes to enjoy compatibility between compiled objects and runtime deserialized objects.
In spite of the difficulties, I think that this would be a great enhacement to bond. It would make it safe to extend types, without the risk of losing data in intermediate object handlers.

There's a lot here to unpack, and I don't have time right now to go into much depth, so a few quick comments.

It would make it safe to extend types, without the risk of losing data in intermediate object handlers.

This sounds like what the Merge APIs are designed to do. Have you tried them? What worked and didn't work?

There is no way in C++ to manage containers without knowning at compile time the type of the contained objects.

Did you consider containers of variants? The static type would always be known, but not the runtime type.

cast it to a class, and the cast should be valid if the serialized data is actually an instance of this class. In order words, the layout of a deserialized object with no type information should be compatible with the layout of a class generated with the bond compiler.

What kind of cast? A dynamic_cast<>? reinterpret_cast? I'm not sure how to implement something like this in C++. Can you sketch an implementation?

The Merge API requires having a copy of the serialized representation along with a partial deserialized object. And other problems remain unsolved, such as the ability of finding or setting a field by name  (in case a partial or complete RuntimeType of the object is available).
Storing a container of pointers would be a solution. But anyway, the problem still happens: bond source would be compiled with special flags so that the containers are aliased to an implementation that is actually a container of pointers.
A normal static_cast. Note that the result of the deserialization would be a void* and a RuntimeSchema, The RuntimeSchema contains the runtime information. One can check it before casting to another object.

Coming from a C# perspective, I want to be able to deserialize in an assembly that has no reference to the type used in a separate assembly to serialize the data.
That is to say, I want to be able to examine the data similarly to this strawman:
IDynamicBonded root = Deserialize.From(new CompactBinaryReader<InputStream>(inputStream));

// Ability to fully examine without having to serialize to a known type
Console.WriteLine($"Root ({root.TypeDef}):");
foreach (var field in root.Fields)
{
    Console.WriteLine($"{field.Name}: {field.Value} ({field.TypeDef})");
}

// Maybe APIs like this, too
int fieldValue = (int)untyped["fieldName"];
IDynamicBonded nestedStruct = untyped["nestedStruct"]["doubleNested"];

Newtonsoft.JSON has a very similar concept with their JObject API. The .NET BCL also has this in the XNode API.

@jnm2 Bond serialized data does not contain field names. Fields are just numbered with tags.
(And with the SimpleBinary, not even that).

Oh, I see. I was thinking the tagged format would include that.
Are the names are included if the schema is sent over the wire manually? I see the struct name itself:
https://github.com/Microsoft/bond/blob/bd4b46e78a82dd3a38b52b00233a1a22047014d2/examples/cs/core/runtime_schema/program.cs#L16-L30
Looks like something I'd have to write myself: first deserialize the schema, then use that and a SimpleBinaryReader to construct a document object model.
Sorry for interrupting!

Yes, a SchemaDef contains the field names as well as the struct names.
When serializaing SchemaDef instances, be sure to use a tagged protocol--and not Simple Binary--so that you can handle any changes to SchemaDef itself.

This enhancement is not something that we need for our use of Bond at Microsoft, and we have no plans to implement it.
Anyone is welcome to contribute this feature. Should you want to do that, please create an issue with your proposed design.
Thus, I'm going to close this as won't fix. It can be re-opened if a design materializes.

Looks fair to me.


Peripheral.observe error propagation

With the current design, errors related to an observation (Peripheral.observe), are propagated via an exception being thrown in the flow. This allows for handling of failures via flow operators such as catch or retry, but exceptions thrown in a flow are terminal events.
Having the observe flow terminate can be problematic, as the flow is a kind of hybrid cold/hot flow, whereas it reacts (performs actions) based on the number of subscribers. When subscribers goes from 0 to 1, the characteristic notifications/indications will be enabled (and appropriate descriptor written to) and the converse (when subscribers goes from 1 to 0) will perform the inverse (unwinding the notification/indication setup).
observe was designed to be long-living, as in: you can subscribe and it will remain active across disconnects/reconnects (automatically re-configuring any notifications/indications as needed on reconnect). This simplifies its usage considerably but having the flow remain active across some errors states (connection drop) but not others (failure to write to config descriptor) is inconsistent. Combined with the automatic handling of spinning up/down indications/notifications, makes error handling difficult and error prone. Using retry would keep the flow alive for downstream subscribers but would have the adverse side-effect of spinning down/up any notifications/indications (because subscribers will momentarily go from 1 to 0, then back to 1) — these operations can be expensive and are unnecessary.
The design isn't yet solidified but materialize operator might provide a simple error handling mechanism. The challenge is being able to propagate failures without terminating the observe flow. It isn't clear if materialize would offer such functionality.
Rather than wait for materialize operator to be available, the observe flow should propagate a sealed class of event types (either data or error). This will allow the observe flow to remain active when, for example, failures to spin up notifications/indications occur. Instead of throwing the exception in the flow, a Observation.Error (or similarly named class) will be propagated. Down stream subscribers can dematerialize failures if desired, but the flow would remain active and only unexpected ("exceptional") Exceptions would be thrown from an observe flow (i.e. the flow would only terminate via exception due to a bug in Kable).

This may no longer be necessary after fixing #190, as that issue was causing significant number of crashes that spawned the idea of how to propagate those failures.

Recent changes in #190 and #193 has reduced the number of exceptions that are propagated through observation flows, but some failures remain problematic, especially those that occur due to a connection drop in the middle of an I/O operation (that is being executed to spin up/down observations):
https://github.com/JuulLabs/kable/blob/941c8ad88660aa48050162e192d605881ea3367a/core/src/androidMain/kotlin/Connection.kt#L52-L73

Android may return false on line 56 if the BluetoothGatt has already been invalidated due to a connection drop
An I/O operation may fail and trigger a callback with a non-success status (line 65)

For a typical I/O operation, where a library consumer is wanting to write or read data, these failures can be easily caught and handled as desired. For observations (which are supposed to remain active across disconnect/reconnect) it becomes a grey area if these failures should be "ignored" or propagated (and terminate) through the observation flow.
In many cases, these failures are accompanied by a connection loss, in which case it makes sense to ignore them as it is expected the library consumer will reconnect and the observation will be re-wired (and everything will carry on). But, in the case where the connection isn't lost, then the library consumer needs to be made aware that their flow observation did not spin up correctly.
The dilemma is that at the time of failure, we don't know with certainty that the connection will soon be dropped — so we can't accurately make a decision to ignore the failure.
Some kludgy options are:

When observation flow failure occurs, asynchronously wait for a set timeout to see if connection drops: if it drops then ignore failure, if it doesn't then propagate the failure through the flow

Timing based solutions feel especially error-prone to me, plus it feels too opinionated for Kable to handle failures in this way

Add an observationExceptionHandler option to the Peripheral builder — it would allow library consumers to decide how observation failures are handled

e.g. re-throw in the handler if you want the exception to propagate through (and terminate) the observation flow

Introduce a sealed class for observe (that carries either the data or the failure)
Other?

Settled on option 2 in #254.


Adds option to pass token end locations

Hi there,
I've been working on an expression parsing language with syntax highlighting and thus found a need for the end locations for each rule application to be passed to the postprocessor functions.  Not sure if there's a better alternative here, but it seemed sensible to thread the parser options reference down to the Column and State objects for future configuration flexibility.
Not sure if this is the best approach, as I've just started familiarizing myself with this project yesterday, so please let me know if there is a preferable alternative way to achieve this.

Hello! Thanks for working on this :-)
Unfortunately I don't think we can merge it—it's quite invasive, and passing the options down to individual States makes me sad and really isn't something we want to do!
Ideally, you would combine location information with your characters/tokens before passing them to nearley, something like this:
parser.feed(Array.from(source).map((char, index) => ({ char, index })))

Unfortunately it then becomes harder to match them in nearley, since the "tokens" are no longer equal === to the literals defined in your rules. :-(
Custom tokens is actually something we've been thinking about very recently -- @hardmath123 I think this is another argument for allowing user-defined marchers! This seems like a case where adding a custom test() function to each one of your literals is clearly less convenient than supplying a custom match function.

Out of curiousity—what are you using position for in your postprocessors? :-)

Returning full token location information in each AST node - which gives the ability to easily do semantic highlighting of various node types in the original input string.
As far as passing options through, the easiest (read HACKY) way to achieve this functionality was just to thread the location through and pass it as a 4th argument to the postprocessor functions.  However, the resulting signature:
(data, start, reject, end) => {}
Leaves a bit to be desired.
Have you guys addressed any ideas of how to pass a global context through to the postprocessors?  Seems like a very useful thing to be able to support w/o having to resort to arbitrary globals.  That was my motivation for trying to add options references, but usually I'd see that sort of thing achieved by a closure context instead of needing to explicitly assign a reference to each object type.

how to pass a global context through to the postprocessors

Smells like #63. That might be something we should revisit.

(data, start, reject, end) => {}

Hold on; I'd forgotten postprocessors already take start as an argument! Given that's the case, you can work out the end index yourself as part of your AST building :-)

It's not possible, afaics, to calculate the end index at each node without requiring that you return that information from every parsed terminal - which is a major performance hit/grammar complexity when dealing with discarded whitespace terminals.

Have you considered using a tokenizer?

In stricter languages I certainly prefer to, but token boundary classification would be fairly challenging for this particular DSL, unfortunately.

@hardmath123 How about in postprocessors binding this to the Parser? (Or making the Parser the fourth argument?) Massive potential for abuse, of course; but it would stop us from adding a potentially unbounded number of arguments to State :-)
It would trivially solve @EricMCornelius's problem; you could just readthis.current.
It might even make the people who want context happy...

As an aside, the PEG.js semantic predicates provide the full location information for rule applications, which is what I've used in the past / am most familiar with: https://github.com/pegjs/pegjs#--predicate-
It certainly does make quality error messages significantly easier to generate when you want to do (lazy) context-sensitive error generation during parsing (undefined variable names, etc.)

It certainly does make quality error messages significantly easier to generate when you want to do (lazy) context-sensitive error generation during parsing (undefined variable names, etc.)

Nearley doesn't allow giving a rejection reason, since many postprocessors may run or parsing may even continue after a rejection—see #195

I'd argue that valid production matches with invalid context are great times to generate quality errors. Undefined variable names being one of the canonical examples.
That being said, it's off of the main topic, which is that there's definitely value in having the end positions of production matches available, if only for applications like syntax highlighting and making semantic modifications to original input strings.

I might be misunderstanding, but can't you get the "end" offset by subtracting 1 from the "start" offset of the next item in your AST?

I don't want to clutter up the AST generating nodes for whitespace and other punctuation in this particular case (operators, parentheses, etc.), and whitespace could be arbitrarily long. This makes it impossible to determine which section of the input was actually matched by a given production rule in a general manner.

Example:
AND (field2=value2  || field3=value3)

Here I'd want to have an AST representing the boolean expression tree, with leaf nodes representing comparison operations.  Don't need to know location information about the parentheses or the arbitrarily structured whitespace components.

I'm closing this since we're not going to merge it; however you're welcome to continue the discussion here or on my proposed solution here: #203

Yep.


[WIP] Move ci to flatiron institute

Summary
This PR will handle Jenkins CI migration to Flatiron Institute. Currently WIP until we iron out errors, plugins and other requirements.
Tests
We will run mc-stan and flatiron Jenkins in parallel until it's stable and most of the main jobs are workings, after that we will decomission mc-stan and migrate entirely to Flatiron Institute.
Side Effects
There may be side effects where two jobs would try to do the same objective like updating a submodule, will try to avoid this as much as possible.
Release notes
Checklist

[ ] Math issue #(issue number)

[ ] Copyright holder: Toptal
The copyright holder is typically you or your assignee, such as a university or company. By submitting this pull request, the copyright holder is agreeing to the license the submitted work under the following licenses:
- Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
- Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

[ ] the basic tests are passing

unit tests pass (to run, use: ./runTests.py test/unit)
header checks pass, (make test-headers)
dependencies checks pass, (make test-math-dependencies)
docs build, (make doxygen)
code passes the built in C++ standards checks (make cpplint)

[ ] the code is written in idiomatic C++ and changes are documented in the doxygen

[ ] the new changes are tested

I will close this PR and open it in https://github.com/stan-dev/math/pull/2633 because I think clang-format messed up the branch in the initial phase when I've tested alpine vs ubuntu Docker base.


Where is the loading csv.file on MLP_workers

Hi,
Great work! It was such an outstanding job. I am just beginning to view your script. Will you pardon me for so naive question?  where is the matr_all.csv on the following line? I assume it was saved by the sleeping position data. Is it a combination of all metadata on experiment-i or experiment-ii, which was downloaded from this URL?
a = np.loadtxt('data/sleep/pressure/matr_all.csv')
Thanks for your patience.
Irving

'matr_all.csv' is the preprocessed file of the sleep data, you can download the data from the website 'PhysioNet'. Please check the readme file in the  'data' folder.

'matr_all.csv' is the preprocessed file of the sleep data, you can download the data from the website 'PhysioNet'. Please check the readme file in the  'data' folder.

Hi,
Great work! It was such an outstanding job. I am just beginning to view your script. Will you pardon me for so naive question? where is the matr_all.csv on the following line? I assume it was saved by the sleeping position data. Is it a combination of all metadata on experiment-i or experiment-ii, which was downloaded from this URL?
a = np.loadtxt('data/sleep/pressure/matr_all.csv')
Thanks for your patience.
Irving

'matr_all.csv' is the preprocessed file of the sleep data, you can download the data from the website 'PhysioNet'. Please check the readme file in the 'data' folder. 'matr_all.csv' is from the experiment-ii, it is a combination of two types of mattresses.

Hi,
Great work! It was such an outstanding job. I am just beginning to view your script. Will you pardon me for so naive question? where is the matr_all.csv on the following line? I assume it was saved by the sleeping position data. Is it a combination of all metadata on experiment-i or experiment-ii, which was downloaded from this URL?
a = np.loadtxt('data/sleep/pressure/matr_all.csv')
Thanks for your patience.
Irving

'matr_all.csv' is the preprocessed file of the sleep data, you can download the data from the website 'PhysioNet'. Please check the readme file in the 'data' folder. 'matr_all.csv' is from the experiment-ii, it is a combination of two types of mattresses.


Gorp new sql context support

Hey when are we expecting to support context for gorp and if no one else is working can I give it a try, It seems easy to workaround.

@soniabhishek Heya -- any updates on this? I think it would be nice to have that.

d'oh, this is probably something I should have commented on.  There are no current plans, but feel free!  If you don't get to it, I'll keep it in mind for the rearch I've been working through.

I'm also interested in this as I've just started using tracing libraries. If I had some guidance on the desired API, I may be able to take a swing at it.

Looks like it might be pretty simple to pipe through.
What are you thinking in terms of the change to the API?
(1) Add new FooContext methods that copy the existing methods.
type SqlExecutor interface {
	Get(i interface{}, keys ...interface{}) (interface{}, error)
	GetContext(ctx context.Context, i interface{}, keys ...interface{}) (interface{}, error)

	Insert(list ...interface{}) error
	InsertContext(ctx context.Context, list ...interface{}) error

	Update(list ...interface{}) (int64, error)
	UpdateContext(ctx context.Context, list ...interface{}) (int64, error)

	Delete(list ...interface{}) (int64, error)
	DeleteContext(ctx context.Context, list ...interface{}) (int64, error)

	Exec(query string, args ...interface{}) (sql.Result, error)
	ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)

	...
}

(2) Add a WithContext(ctx) which attaches the context to the dbMap.
type SqlExecutor interface {
	WithContext(ctx context.Context) SqlExecutor

	Get(i interface{}, keys ...interface{}) (interface{}, error)
	Insert(list ...interface{}) error
	Update(list ...interface{}) (int64, error)
	Delete(list ...interface{}) (int64, error)
	Exec(query string, args ...interface{}) (sql.Result, error)
	...
}

(3) I guess it's possible to do something backward incompatible that forces context, but I assume that's not desirable.
(1) is probably most similar to how go changed the underlying sql.Db, but it add the most new methods.

I would currently choose #2. I have ideas to mess with the syntax to make
gorp more flexible, but that'll be for later. For now, returning a new
SqlExecutor that uses the context is probably the best choice.
In the distant future, I have a really vague thought of something like
dbmap.Query(someSQL, gorp.Args(arg1, arg2, arg3), gorp.WithContext(ctx), gorp.SomeOtherCoolOption()).Unmarshal(&foo, gorp.SomeCoolUnmarshalOption()).
But for now, #2.
On Aug 30, 2017 18:46, "Matthew Dolan"<EMAIL_ADDRESS>wrote:
Looks like it might be pretty simple to pipe through.
What are you thinking in terms of the change to the API?
(1) Add new FooContext methods that copy the existing methods.
type SqlExecutor interface {
Get(i interface{}, keys ...interface{}) (interface{}, error)
GetContext(ctx context.Context, i interface{}, keys ...interface{})
(interface{}, error)
Insert(list ...interface{}) error
InsertContext(ctx context.Context, list ...interface{}) error

Update(list ...interface{}) (int64, error)
UpdateContext(ctx context.Context, list ...interface{}) (int64, error)

Delete(list ...interface{}) (int64, error)
DeleteContext(ctx context.Context, list ...interface{}) (int64, error)

Exec(query string, args ...interface{}) (sql.Result, error)
ExecContext(ctx context.Context, query string, args ...interface{})

(sql.Result, error)
...

}
(2) Add a WithContext(ctx) which attaches the context to the dbMap.
type SqlExecutor interface {
WithContext(ctx context.Context) SqlExecutor
Get(i interface{}, keys ...interface{}) (interface{}, error)
Insert(list ...interface{}) error
Update(list ...interface{}) (int64, error)
Delete(list ...interface{}) (int64, error)
Exec(query string, args ...interface{}) (sql.Result, error)
...

}
(3) I guess it's possible to do something backward incompatible that forces
context, but I assume that's not desirable.
(1) is probably most similar to how go changed the underlying sql.Db, but
it add the most new methods.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/go-gorp/gorp/issues/344#issuecomment-326157816, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AA-QBDn3zi_so5fO7qxyjrXGvyTCrGZCks5sdgJ8gaJpZM4MLQAc
.

@srenatus @nelsam I would like to work over this, just wanted to confirm that above-mentioned approach (i.e. 2) is what needs to be implemented

@soniabhishek yeah, the WithContext method on SqlExecutor is the desired approach.  @MatthewDolan is working on a solution in #352.

This is merged.
@nelsam would it be possible to get a new release (2.1.0) associated with this?

Sure thing, I'll do that a little bit later today (ideally)

So, WithContext does return a new Gorp with a context, but the SQLs won't be executed with that ctx apparently?


Traversing in a Linked List

Description 📜

Hii everyone myself VIREN VARIYA , I try to explained how to traversing in a linked list in best way with description and sample code too , hope u will like it !!
Domain of Contribution 📊

[x] Competitive Programming

/ assign Documentation

/assign Documentation

I want to work on this issue

ok fine

Please assign it to me

but bot is not assign this to me also

@preetvadaliya i am closing this

/ assign Documentation

@preetvadaliya  this is my issue u can create your own if u want

try again @veerviren

/ assign Documentation

@ravireddy07 it still not assigning me

/assign

It takes 1-2 min to get assigned. Just /assign will work

Treaversing in a Linked List
 If you are new to **Linked List** not a issue first you have to learn about basic of **Linked List** then this discussion will be helpful for you. No worry I will discussed throughly about traversing in **Linked List** it may be reverse traversing or simple traversing from first to last element.
What is traversing ?
 In simple word traversing mean visiting each an every elements at once present in your set, for example of sets :- linked list,array,etc. In progmming world we used word traversing for this process.
Talking about traversing in your data structure that is Linked list is that we start from first Node or start Node or head Node and passing next Node address and till reach end of your List. Now you might have doubt about What is Node ?
What is Node ?
 Well Node is like userdefined data type . Node can be created by using structure in c and structure or class in c++ progmming languages. In Linked list we want Node which cointained two type of data members one for storing data and another is for storing address of next node.
For example;-
  struct Node  //we create structure Node using struct keyword
  {
    int data; // for storing integer datatype
    Node next; //for storing address haveing Node datatype
  };  // semi-colon is compulsory which show end of structure
Now using this concept of structure in our program we create linked list, don't worry about the creation of linked list your main focus on travelling in a linked list so you
  can make focus on display function in given example code.
#include
using namespace std;

// for creating abstract datatype
struct Node
        {
    int data;
    Node *next;
        };

Node *first=NULL;

// creating a linked list
void create(int a[],int n)
{
    Node *t,*last;
    first=new Node;
    first->data=a[0];
    first->next=NULL;
    last=first;

    for(int i=1;idata=a[i];
        t->next=NULL;
        last->next=t;
        last=t;
    }
}

//For display a linked list
void Display(Node *p)
{
    while (p!=NULL)
    {
        cout<data<<" ";
        p=p->next;
    }
}

int main()
{
    int a[]={1,4,6,8,10,12};

    create(a,6); //call for create function

    Display(first);  //call for Display function

    return 0;
}
Here in display function we are using Traversing concept only. we start from first element and reach to last element using p->next pointer in while loop once we reach then we stop at that point. During that process we print p->data so finaly we print your entired linked list.
Thanks for reading give your precious feedback for my work and comment down your queries and out I will surely reach out

** **  here I want to make linked list in bold letter but it not working

** ** here I want to make linked list in bold letter but it not working

If it's not working manually, then just select and use bold tool present on top of this comment section.

@ravireddy07  please help me for creating pr i am not able for my work

@ravireddy07 please help me for creating pr i am not able for my work

Refer this and use discord to communicate: https://github.com/CatsInTech/Rezume/blob/master/CONTRIBUTING.md


forecast.get_data doesn't allow extra kwargs

Describe the bug
forecast.get_processed_data accepts **kwargs (good) and passes these to get_data (good) and process_data (good):
https://github.com/pvlib/pvlib-python/blob/91c6a559feab740a346099f020fedf828ad9a557/pvlib/forecast.py#L306-L306
but get_data doesn't allow superfluous keyword arguments (bad):
https://github.com/pvlib/pvlib-python/blob/91c6a559feab740a346099f020fedf828ad9a557/pvlib/forecast.py#L202-L204
Is the fix just to add **kwargs as the last argument to get_data? If so, you can assign this issue to me and I'll make a PR.
To Reproduce
import datetime
import pandas
from pvlib import forecast

forecast.NDFD().get_processed_data(
    38.238875, -117.363598,
    pandas.Timestamp(datetime.datetime.now(), tz='US/Central'),
    pandas.Timestamp(datetime.datetime.now(), tz='US/Central') + pandas.Timedelta(hours = 12),
    how = 'liujordan'
)

Yields
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File "/anaconda3/envs/tonopah/lib/python3.7/site-packages/pvlib/forecast.py", line 306, in get_processed_data
    return self.process_data(self.get_data(*args, **kwargs), **kwargs)
TypeError: get_data() got an unexpected keyword argument 'how'

Expected behavior
I expect that get_processed_data is equivalent to:
model = forecast.NDFD()
data = model.get_data(
    38.238875, -117.363598,
    pandas.Timestamp(datetime.datetime.now(), tz='US/Central'),
    pandas.Timestamp(datetime.datetime.now(), tz='US/Central') + pandas.Timedelta(hours = 12)
)
model.process_data(data, how = 'liujordan', extra_kwarg=False)

Note how I can pass extra_kwarg without any problem.
Versions:

pvlib.__version__: 0.6.3
pandas.__version__:  0.24.2
python: 3.7.3

Good catch. I'm surprised that we've not seen this until now.
I agree that adding **kwargs to get_data is the cleanest way forward. I try to avoid using kwargs in the pvlib API, but we're already using it extensively within forecast.py and I don't see another good option.


Enhancement: support Nano syntax for open at line

Nano (as well as vi and macs), supports opening a file at a line or column:
nano +15 my_file will open my_file at line 15
nano +15:4 my_file will open my_file at line 15 and column 4
It would be nice if micro supports this as well!

run micro -h

Yes, while -startpos LINE,COL is a thing, it's not compatible with the other editors, which makes setting micro as my EDITOR undesirable since whenever $EDITOR +100 filename is called, micro will open an empty file +100 first, which I need to close before actually reaching the desired file.

This will not be supported. Instead either use -startpos or filename:line:col.

@zyedidia I'd love to know the reasoning, because this is a reason why I don't set micro as my EDITOR, which I'd love to do.

You know, since I'm going to the trouble of supporting the file:line:col convention I might as well do this one too. This is now supported.


libclang doesn't respect NIX_CFLAGS_COMPILE

Issue description
libclang is a compiler in its own right. Unlike clang or GCC, it is not wrapped to respect our NIX_CFLAGS_COMPILE variable. This means that dependencies are not pulled in correctly leading to unexpected behavior. A few places where this is worked around currently:

https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/browsers/firefox/common.nix#L117
https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/tools/misc/cquery/default.nix#L34
https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/editors/jucipp/default.nix#L51

Possible solution
Create a "libclang-wrapper" or patch that forces the NIX_CFLAGS_COMPILE & ${stdenv.cc}/nix-support/*-cflags flags to be added automatically.

We will also need to do something similar for libgccjit.

Hi @matthewbauer, is this a good issue for a first-time contributor?

Running into this in my attempt to package the Kotlin/Native compiler, which uses both the clang wrapper and libclang, obviously blowing up when libclang is invoked.
Was the plan to introduce patches to emulate the cc-wrapper behavior in libclang itself? Or some kind of LD_PRELOAD hijacking for the entry points, such as clang_parseTranslationUnit and friends?


Cross tenant access activity Insights Workbook

PR Checklist

[X ] Explain your changes, so people looking at the PR know what and why, the code changes are the how.

This workbook allows tenant admins to visualize event data in the Azure AD signInLogs to determine the inbound and outbound activity currently in their tenant.   By using these insights they can be aware of the activity and make decisions about how they want to apply policies to the inbound and outbound cross tenant access and not impact the business unexpectedly when not aware of the activity.
If adding or updating templates:

[X ] post a screenshot of templates and/or gallery changes
[ X] ensure your template has a corresponding gallery entry in the gallery folder
[ ] If you are adding a new template, add your team and template/gallery file(s) to the CODEOWNERS file. CODEOWNERS entries should be teams, not individuals
[X ] ensure all steps have meaningful names
[X ] ensure all parameters and grid columns have display names set so they can be localized
[ X] ensure that parameters id values are unique or they will fail PR validation (parameter ids are used for localization)
[ X] ensure that steps names are unique or they will fail PR validation (step names are used for localization)
[ X] grep /subscription/ and ensure that your parameters don't have any hardcoded resourceIds or they will fail PR validation
[X ] remove fallbackResourceIds and fromTemplateId fields from your template workbook or they will fail PR validation

Updates made after design review,  and verbiage has been reviewed with team.


error #1576 - Recursion of EVENT DDL statements is forbidden when body is present

hi. I´ve mysql 5.5, and i´ve this error when run  my2.sql, after CREATE PROCEDURE collect_daily_stats().
problem with events into procedures in mysql version < 5.7 ?

MySQL 5.5 is a quite old version... I'm sorry I can't check it. Can You upgrade to a newer and supported release?


Make used disassemblers optional

For example I had a lot of trouble running/installing capstone, and it might have been a useful run to only use the other two, so maybe autodetect which are supported and then only use them?

Thanks for that idea. I will see If I can incorporate that on my fork.


Automated Package Upgrade

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Value filters should allow for validation of the value

Consider a Users table with a role column. role is one of three values, "member", "admin", "staff". We may wish to create a filter table that only lets users search for members and admins.
role:member or role:admin but not role:staff. If we used a Value filter, someone could enter role:staff and return staff members.
One option is to suggest using static filters for role:member and role:staff. Another option that likely provides other benefits is to somehow allow validation of the value. This could be simple inclusion for value filters or something more complex like pulling in all of ActiveSupport::Validations.

We currently only allow explicit options that must be matched exactly. This means that a user could not add an arbitrary value and get back results.


Can't launch with latest Rails version

Hey Jesse, I tried running LazyMigration.run with rails <IP_ADDRESS> and I hit this error:

ArgumentError: wrong number of arguments
from ~.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/activerecord-<IP_ADDRESS>/lib/active_record/migration.rb:1028:in `initialize'

I assume it comes from this line:
https://github.com/jesseduffield/lazy_migrate/blob/498c66273c9111380a0937ec6718c39bde043864/lib/lazy_migrate/new_migrator_adapter.rb#L18
And is a consequence of this change https://github.com/rails/rails/commit/7cc27d749c3563e6b278ad01d233cb92ea3b7935#diff-8d3c44120f7b67ff79e2fbe6a40d0ad6R1018

Same issue with Rails6

Interesting, I'll take a look

Any update ? ;)

I got this monkey patch
LazyMigrate::NewMigratorAdapter.class_eval do
  def initialize
    # TODO: consider making this a method rather than an instance variable
    # considering how cheap it is to obtain
    @context = ActiveRecord::MigrationContext.new(Rails.root.join('db', 'migrate'), ActiveRecord::SchemaMigration)
  end
end

Tested on rails <IP_ADDRESS>

Maybe we should consider #3 sooner since rails 6.1 is on RC already?


Make the message posted to automatic watch/blacklist pull requests include a link to the metasmoke search

On automatic pull requests generated from non-privileged watch or blacklist requests, the user metasmoke comments on the request with the number of TPs, FPs, and NAAs.
It would be nice if this also included a link to the metasmoke search for the keyword in question, so users handling the request can easily see which exact posts were involved, or if there were any more posts after the request was filed.

There are normally two comments on each automatically generated !!/watch or !!/blacklist-* PR. The first comment from SmokeDetector contains links to a search on MS and a search on SE. The second comment contains the results of a search.
The linked searches are not exactly what they should be. In many cases, they are substantially different compared to what the watch or blacklist will detect, but the links are at least there.
Note: To find out what a watch or blacklist-keyword will detect actually requires at least 3 different searches on MS: one each for title, username, and body (more searches may be required for complex regexes, and variable length look-behind is not supported). Only one search is linked. The searches should also reflect the bookending which exists for watches and blacklist-keywords, along with setting the s flag.
Were you wanting us to improve those links?

I completely overlooked the links in the SmokeDetector comment. It would be nice to also have a link in the metasmoke comment, so that it's much easier to find.

The MS comment is implemented as a GH hook, which won't differentiate between blacklist/watch PRs from other PRs like code modification; it can be more easily implemented on the SD side.

...except it does differentiate between auto blacklist PRs and others.


Updated jmpq3

The old old jar was causing some bugs, which should be fixed now. See #421

"should be" or did you actually test it for once?

I was able to reproduce the bug inside the jmpq libary. After the fix the same piece of code was working. I aswell tested the new .jar inside the we without any problems.

This breaks maps for ghost bots again, pls fix.

Ghost can host maps compiled with the new jar now.

I will confirm this and then merge.


0_1_3 growth rate improvements

growth_rate output as files not while folders to solve overwrite issues
dev_configs centralised

Already reviewed by Lisa


Oracle database support

How can I confiure Spark server to work with Oracle & SQL Server as Storage?

While this is most certainly possible there is no official package for this right now. There is some unfinished code for Sql using Entity Framework here: https://github.com/FirelyTeam/spark/tree/master/src/Spark.Store.Sql if you want to take a look.
In addition to this you can use Spark as a facade letting it handle the request/response pipeline and you as the implementer taking care of storage, search etc. This should hopefully be easier with the new packages I'm making available.


fix: adjust the order of t:urlDecodeUni and t:utf8toUnicode in 941160 PL1

Adjusting the order of t:urlDecodeUni and t:utf8toUnicode transformations in rule 941160 to prevent FPs.
Fixes #3449.

Hi @bxlxx. Thank for this PR. Can you, please, correctly set subject and description?

changelog comment:
feat: Adjusting the order of transformations in rule 941160 (bxlxx)

This is a change that needs to be discussed with regards to other rules as well. Let's hold back until we have discussed this.

Adding this to the agenda for meeting next Monday.

BTW, no decision was taken in the March meeting. No one volunteered to take a more holistic look on the order of transformation yet.

Here is my interpretation of what is happening:
Old: utf8toUnicode,t:urlDecodeUni
/index.html´%2F%2E%2E%2F -> /index.html%u2019%2F%2E%2E%2F -> /index.html´/../
New: t:urlDecodeUni,t:utf8toUnicode
/index.html´%2F%2E%2E%2F -> /index.html´/../ -> /index.html%u2019/../
If this interpretation is correct, then I do not see the PR as the desired behavior.


After pop VWidgetGuard still in the _vWidgetGuardMessagesRoot

I have quite a simple login on the stacked page, do not pop (system pop) until some requirements are met. And it works. Unfortunately, even after popping the page, the same login is called even on the parent pages.
Of course, it ends with the exception:

Looking up a deactivated widget's ancestor is unsafe.
At this point the state of the widget's element tree is no longer stable

System pop is not longer working ;)

Could you provide a small reproducible example ? :)

I believe the problem is (but just after quick reading a code) that in the push you are trying to decide which guard are already deactivated and which reused, in the systemPop (and pop, btw) you are using all of them). I'll try to create something quick.

Oh I think I see your issue.
Yes currently every onPop of the current route is called even if they don't pop. That's not a bug but definitely something I want to change.

import 'package:flutter/material.dart';
import 'package:vrouter/vrouter.dart';

void main() {
  runApp(
    VRouter(
      routes: [
        VWidget(path: '/', widget: HomeScreen(),
        stackedRoutes: [
          VWidget(path: 'settings', widget: SettingsScreen(),
              stackedRoutes: [
                VWidget(path: 'no_pop', widget: NoSystemPopWidget())
              ]
          ),
        ]),
      ],
    ),
  );
}

abstract class BaseWidget extends StatelessWidget {
  String get title;

  String get buttonText;

  String get pushTo;

  @override
  Widget build(BuildContext context) {
    return Material(
      child: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            Text(title),
            SizedBox(height: 50),
            ElevatedButton(
              onPressed: () => context.vRouter.push(pushTo),
              child: Text(buttonText),
            ),
          ],
        ),
      ),
    );
  }
}

class HomeScreen extends BaseWidget {
  @override
  String get title => 'Home';

  @override
  String get buttonText => 'Go to Settings';

  @override
  String get pushTo => '/settings';
}

class SettingsScreen extends BaseWidget {
  @override
  String get title => 'Settings';

  @override
  String get buttonText => 'Go to No Pop';

  @override
  String get pushTo => 'no_pop';
}

 class NoSystemPopWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return VWidgetGuard(
      onSystemPop: (vredirector) async {
        vredirector.stopRedirection();
      },
      child: Material(
        child: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Text("Non system pop"),
              SizedBox(height: 50),
              ElevatedButton(
                onPressed: () => context.vRouter.pop(),
                child: Text("Do pop"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

NO, this is not what I meant. There are called onPops even of the pages that where already poped. In the example above, systemPop works when you get the first time to the settings page. Then on the NoPop page systemPop is distabled, by design, you can only call pop method and get back to the settings page. But now, event on the settings page, systemPop is not longer available, VWidgetGuard is called even here, despite the NoPop page is already 'poped'.

By the way, love your package :D

Thanks, I can reproduce this and this is definitely a bug. I'm not sure why this happens but I'll look into it !

It looks like after the pop the list of _vWidgetGuardMessagesRoot is not modified (I thought it can be somehow marked and reused, but since there might be some references to the current state of the widget, it just needs to be removed from the list).

Yes I agree but I tried removing them just now and it does not work I don't know why.I'll need a bit more time to look into it.in the meantime you can use VPopHandler as a VRouteElement, this works like a charm.

I'm using guard for some modification in the page (stepper, back button get back to the previous step, and not pop the page itself, at least until the first step) - having this logic outside of the widget might be harder to implement, and I can wait :D at least if you say it can be handled this way 😄
thanks for help

btw, there was an exception thrown in my guard, since the state of my widget was no longer available. This exception was somehow caught and handled and not even a message about it was mentioned in logs - I had to debug to find what is wrong. And it took me a while since I was not aware that this going to another page was a reason ;)

I think this should be fixable. Otherwise it means throwing out VWidgetGuardwhich I really don't want!
I don't know why the error did not show either, I'm not handling many errors on my end but I'll look into it too.

Oh ok nevermind this was easy. I just forgot to remove them when needed.
I'll ship the fix soon

Fixed in v1.1.1

Some problem on flutter 2.0.5
../../../flutter/flutter/.pub-cache/hosted/pub.dartlang.org/vrouter-1.1.1+1/lib/src/vrouter/cupertino_vrouter.dart:457:7: Error: No named parameter with the name 'scrollBehavior'.
scrollBehavior: widget.scrollBehavior,
^^^^^^^^^^^^^^
../../../flutter/flutter/packages/flutter/lib/src/cupertino/app.dart:181:9: Context: Found this candidate, but the arguments don't match.
const CupertinoApp.router({
^^^^^^^^^^^^^^^^^^^

Can you provide a small snippet ?

Oh nvm got it !
Thanks!
I'm spending too much time in master ^^


(#265) round default template

#265
Changes include:

Added migration to add two new columns in hr_rounds table. To store confirmed and rejected mail template.
View changes to save these default templates from the settings tab.
Showing template when the user clicks on send mail button from the application round screen.

Checked this PR :

[ ] For duplication.
[ ] For performance.
[ ] Usage of recursive methods, loops and algorithms.
[ ] For readability and understanding.
[ ] For functions with multiple responsibilities.
[ ] For scope of refactoring.
[ ] For coupling
[ ] For alternative approaches to the implementation.
[ ] For how the change impacts other parts of the system.
[ ] For validations. client side and server side validations are present.

For more insights on code reviews checkout our guidelines.

Also, @rathorevaibhav please ensure that the travis check have been approved before merging.

@bohraji done with the changes.


feat: pass provider by model name

By passing the provider through the model parameter without needing to change the request header, it can be more conveniently used in various AI code editors and other AI services.

@VisargD / @roh26it thoughts on this PR?

It's definitely an interesting way to think about it.
Curious why @sternelee closed it

@VisargD any thoughts on this?


Not able to pick .GLB file type in iOS

Description of the bug
Not able to select .glb file from storage in iOS devices.
Reproduction steps
Use file picker code with following condition
if (fileExtension == ".glb" || fileExtension == ".gltf" || fileExtension == ".obj")
its working fine in Editor / Android but not working in iOS , not able to select .glb file.
Platform specs

Unity version:  Any
Platform:  iOS
Any iOS version
How did you download the plugin:  Github

Can I see your code?

Okay let me create demo project and will share that here.

I only need to see your usage of PickFile function. You can copy your C# code here.

It seems a deprecated method is used to acquire UTType:
https://github.com/yasirkula/UnityNativeFilePicker/blob/da3f797fd86ca715236632d8d8f0d8ae3d8f4578/Plugins/NativeFilePicker/iOS/NativeFilePicker.mm#L100
The initializer is now the correct way to do this:
https://developer.apple.com/documentation/uniformtypeidentifiers/uttype-swift.struct/init(tag:tagclass:conformingto:)
I made a test in xcode, without deploying to anything. Using a basic Swift project:

Using the new initializer seems to fix the issue.

GLB and GLTF don't exist in the filetype lists I've posted: https://github.com/yasirkula/UnityNativeFilePicker?tab=readme-ov-file#a-importing-files. The only possible solution is to allow picking all files and then check the returned files' extensions in the callback function.


If tables have same ids, yadcf breaks

If we have one table and we destroy it and then we init new table with same id, but with different columns, filtering breaks.
jsFiddle: http://jsfiddle.net/1jkufqta/4/
click on reinit and than type value in range filter, filtering won't work and  in console there is an error.
So far i tried to add $.fn.dataTableExt.afnFiltering = [] to removeFilters function, but it is not working either.

Hi
Till I do the commit you can add this code

if ($.fn.dataTableExt.afnFiltering.length > 0) {
    $.fn.dataTableExt.afnFiltering.splice(0, $.fn.dataTableExt.afnFiltering.length);
}

Inside the function removeFilters(oTable) { function before the destroyThirdPartyPlugins(oTable); line

updated according to comment, PR #551
Thanks for quick fix

tx for the PR

@vedmack  could you please publish new beta ? thanks

@misanek done


1.13 something wrong

The lightsaber does not turn, but it can be thrown out. The grip and pad of the vive controller do not work

you do realize its not for 1.13.0

Lol


Fix bundle size test after webpack 5 update

PR #10186 upgraded to webpack 5, which caused the output of the bundle-size-test to be all 23 bytes with all export removed.
See https://github.com/microsoft/FluidFramework/pull/10186#issuecomment-1121833208
Adding output.library in the webpack config fixes the issue.

Is it practical to make this test fail if it's clearly not working in this way? Maybe check the bundle is valid/works, or check for a minimum size?


Get dbadatabase ptest

Let's try this again. start your fork from Dev. then paste in that single file.


support noConflict mode

I want to integrate an external amd packages which uses requirejs. The problem is that
the Ember loader is conflicting with the AMD loader.
How can i use the 'No conflict' mode with the Ember loader?

I am having a similar problem, wanting to use no conflict because ArcGIS JS uses dojo require under as the global require which is not compatible with loader.
While the noConflict mode would be great to use nobody in slack/discord has any idea of how/if it would work and (it seems like nobody who maintains this repo knows either). If that is the case why even mention it in the documentation?
I would be willing to document this if I can get it successfully working, but would need help.

No conflict mode in the loader itself does work fine, the issue (when talking about a normal ember-cli app) is that many other parts of the system assume global require and define (we could come up with a checklist). I totally think it would be a great thing to make a nice abstraction to allow ember-cli apps work well with no conflict mode. It largely just needs some TLC...

@ggayowsky Did you looked at either:

https://github.com/Esri/ember-esri-loader
https://github.com/Esri/ember-cli-amd

@ffaubry I am using those addons and trying to find a way around them because I dont like the solution. (doesnt work with ember-auto-import, cannot self host arcgis files on version >0.4.9, cannot use decorators or other experimental features because of the esprima dependency, breaks source maps and thus cannot debug using VS code).
If I ever find out how to use babel to do the transformation and only have it affect the ember app files I will contribute to those repositories.

@ggayowsky See comments under https://github.com/Esri/ember-cli-amd/issues/39
Let's move the conversation under that repo.


fix(ObserverLocator): enable adapter installation after instantiation

This change also streamlines the ObjectObservationAdapter API, resulting in an easier to implement and more performant interface.
Fixes jdanyow/aurelia-computed#8

@EisenbergEffect could you review these changes to the adapter API?
I removed the All.of(ObjectObservationAdapter) in favor of a simple addAdapter(adapter) method.  I also remove the handlesProperty method in favor of a single getObserver method on the adapter that returns null when it can't handle the object/property.
I figured while we're making changes to binding that will impact observation adapters we might as well streamline this interface.
I couldn't remove the dep on dependency-injection because it's used in a static method on the BindingExpression class.

Yep, I'm cool with this. Please go ahead and merge it.
Also, regarding removing DI, I think it would be good to create a static interface for the binding library. I can see lot of uses for it. I'm thinking of maybe export an object bindingSystem and then having some APIs on that:
let const bindingSystem = {
  getObserver(object, propertyName);
  observe(object, propertyName);
  parseExpression(expr);
  addBindingAdpater(adapter);
};

We can flesh that out. But basically, I think we should offer this without having to go through the DI. That would simplify our infrastructure in a number of places, particularly related to testing components. It would also make this usable without a reference to DI and enable using this library easier outside of Aurelia. The framework could still register all the underlying services with the Aurelia DI as well though. So, there could be an api like this on the binding system.
let const bindingSystem = {
   registerWithContainer(container) {
    //register all underlying services
  }
};

Actually, BindingSystem, should probably be a class that we instantiate and then export a singleton instance of so we can also register it with the container, as well as all the underlying pieces.
The result is much easier to use API for observation, much more like Object.observe. Instead you could have BindingSystem.observe(myObject, 'someProp', callback) for example.
Ok, this was just thinking out loud so sorry if this isn't all clear. We can discuss it more when you both can sync up. Think about it and let me know what you think.

Ok, here's something a bit clearer. We can create something like this:
export class BindingSystem {
  static instance; //singleton instance

  constructor(parser, observerLocator,...all binding services here...) {}

  //static api
  static observe(obj, propName, callback) {
  let observer = BindingSystem.instance.observerLocator.locate(obj, propName);
  observer.subscribe(callback);
  }
}

BindingSystem.instance = new BindingSystem(...create services...);

The framework would also initialize the binding system in the DI container so it's all available both ways. Does this make sense?

This is nice!  Will be useful both externally in user code and unit tests as well as internally in the templating and binding tests.

Yep. After you merge these new changes, maybe we could add this. I can review your PR and give you feedback on the final API.


[fix][reflection][msvc]: warning C4127

Why
MSVC: Compiler Warning (level 4) C4127, conditional expression is constant.
Example
struct TestReflected
{
    int a;
};
constexpr auto name = ylt::reflection::get_struct_name<TestReflected>();

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

LGTM


Duplicate ID (Network Topology and Connectivity)

There appears to be a duplicate checklist ID D06.06 and D01.03.  Both essentially ask the same question.
D01.03:  "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones."
D06.06:  "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks."
Its not entirely clear why these need to be called out separately based on the text framing.  On top of that D01.03 'more info' sends a reviewer to the following URL:  https://learn.microsoft.com/en-us/azure/web-application-firewall/ag/ag-overview which has no discussion about DDoS at all but focused on AppGW WAFs.  I'm wondering if D01.03 is supposed to be focused on WAF not DDoS based on this link, however, later sections (D06:05) already address WAFs.

@hgotar1 to review

I am reviewing this

@hgotar1 are you able to review the duplicates here?

PR merged & closing as no response


buildNpmPackage: patch npm to always use bundled node-gyp

Description of changes
Some npm packages depend directly on node-gyp, causing our patched version (which allows building addons on macOS without xcbuild) to be sidestepped.
Things done

Built on platform(s)

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

[x] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Superseded by #206477.


compiling gmc

Hello,
I'm not having success at compiling gmc. When i install a fresh conda environment with python 3.8 and opencv (4.6), i get a linking error ... Can you advise on the best way to build this?
(sportstrack) atao@atao-i9:~/devel/public/sportstrack/gmc$ cd build
(sportstrack) atao@atao-i9:~/devel/public/sportstrack/gmc/build$ cmake ..
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /home/atao/.miniconda/envs/sportstrack (found version "4.6.0")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/atao/devel/public/sportstrack/gmc/build
(sportstrack) atao@atao-i9:~/devel/public/sportstrack/gmc/build$ make
Scanning dependencies of target gmc
[ 50%] Building CXX object CMakeFiles/gmc.dir/main.cpp.o
[100%] Linking CXX executable gmc
/usr/bin/ld: /home/atao/.miniconda/envs/sportstrack/lib/libQt5Core.so.5: undefined reference to<EMAIL_ADDRESS>/usr/bin/ld: /home/atao/.miniconda/envs/sportstrack/lib/libopencv_core.so.4.6.0: undefined reference to<EMAIL_ADDRESS>/usr/bin/ld: /home/atao/.miniconda/envs/sportstrack/lib/libQt5Widgets.so.5: undefined reference to<EMAIL_ADDRESS>/usr/bin/ld: /home/atao/.miniconda/envs/sportstrack/lib/libQt5Core.so.5: undefined reference to<EMAIL_ADDRESS>collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/gmc.dir/build.make:98: gmc] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/gmc.dir/all] Error 2
make: *** [Makefile:84: all] Error 2```

I resolved this by compiling opecv locally.


[wrt] Update test description for upgrademanu

Impacted TCs num(approved): New 0, Update 8, Delete 0
Unit test Platform: Android
Android test result summary: Pass 0, Fail 0, Block 8

Block reason: xwalk-3473

LGTM


Update ci.yml

@sammyfilly did you mean to create this PR in this repo? If yes, then what issue are you aiming to solve with it please?


Nodes next to each others are not connected some times

How to reproduce the problem: Execute:
roslaunch heuristic_planners planner.launch algorithm_name:=thetastar map:=$(rospack find heuristic_planners)/resources/maps/mbzirc_challenge3.bt

And call the service to find a path between these points:
rosservice call /planner_ros_node/request_path "start:
  x: 20.0
  y: 20.0
  z: 3.0
goal:
  x: 40.0
  y: 40.0
  z: 3.0"

These points should not be there.

Found another strange behavior when requesting a obstacle-free straight line path:

roslaunch heuristic_planners planner.launch algorithm_name:=lazythetastar

rosservice call /planner_ros_node/request_path "start:
  x: 20.0
  y: 20.0
  z: 2.0
goal:
  x: 24.0
  y: 16.0
  z: 2.0"
path_points:
  -
    x: 24.00000035762787
    y: 16.00000023841858
    z: 2.0000000298023224
  -
    x: 23.800000354647636
    y: 16.20000024139881
    z: 2.0000000298023224
  -
    x: 23.600000351667404
    y: 16.400000244379044
    z: 2.0000000298023224
  -
    x: 23.400000348687172
    y: 16.600000247359276
    z: 2.0000000298023224
  -
    x: 23.20000034570694
    y: 16.800000250339508
    z: 2.0000000298023224
  -
    x: 23.000000342726707
    y: 17.00000025331974
    z: 2.0000000298023224
  -
    x: 22.800000339746475
    y: 17.200000256299973
    z: 2.0000000298023224
  -
    x: 22.600000336766243
    y: 17.400000259280205
    z: 2.0000000298023224
  -
    x: 22.40000033378601
    y: 17.600000262260437
    z: 2.0000000298023224
  -
    x: 22.20000033080578
    y: 17.80000026524067
    z: 2.0000000298023224
  -
    x: 22.000000327825546
    y: 18.0000002682209
    z: 2.0000000298023224
  -
    x: 21.800000324845314
    y: 18.200000271201134
    z: 2.0000000298023224
  -
    x: 21.600000321865082
    y: 18.400000274181366
    z: 2.0000000298023224
  -
    x: 21.40000031888485
    y: 18.600000277161598
    z: 2.0000000298023224
  -
    x: 21.200000315904617
    y: 18.80000028014183
    z: 2.0000000298023224
  -
    x: 21.000000312924385
    y: 19.000000283122063
    z: 2.0000000298023224
  -
    x: 20.800000309944153
    y: 19.200000286102295
    z: 2.0000000298023224
  -
    x: 20.60000030696392
    y: 19.400000289082527
    z: 2.0000000298023224
  -
    x: 20.40000030398369
    y: 19.60000029206276
    z: 2.0000000298023224
  -
    x: 20.200000301003456
    y: 19.80000029504299
    z: 2.0000000298023224
  -
    x: 20.000000298023224
    y: 20.000000298023224
    z: 2.0000000298023224
  -
    x: 20.000000298023224
    y: 20.000000298023224
    z: 2.0000000298023224
explored_nodes:
  data: 20
time_spent:
  data: 2
line_of_sight_checks:
  data: 20
path_length:
  data: 5.656853675842285

Update: It happens when the start and goal Z coordinates are equal:
It happens with this path
rosservice call /planner_ros_node/request_path "start:
  x: 20.0
  y: 20.0
  z: 1.0
goal:
  x: 24.0
  y: 16.0
  z: 1.0"

but not with this one
rosservice call /planner_ros_node/request_path "start:
  x: 20.0
  y: 20.0
  z: 1.0
goal:
  x: 24.0
  y: 16.0
  z: 2.0"

Checked that the problem is not related with the LineOfSight::bresenham3D function. In both cases above it returns true in every check

This also happens with costawarelazythetastar. To reproduce the problem you have to execute:
roslaunch heuristic_planners planner.launch algorithm_name:=costlazythetastar map:=$(rospack find heuristic_planners)/resources/3dmaps/mbzirc_challenge3.bt
And call the service to find a path between these points:
rosservice call /planner_ros_node/request_path "start:
x: 20.0
y: 20.0
z: 1.0
goal:

x: 40.0
y: 40.0
z: 4.0"
These consecutive nodes should not here. Lazy Theta* should connect the first and last node of them. This only happens when the path passes through the window.

Finally it was not a bug!


mgmt/imgmgr: Allow upgrade-only requests

This commit adds an additional boolean field to the "image upload" request: upgrade.  If this field is true, the firmware will only accept an upload attempt if the new image's version number is greater than that of the currently running image (using a semver-compatible comparision).
If the upgrade field is false or missing, no version check is performed.
The firmware only processes the upgrade field on the first image chunk.  It is harmless, but pointless, for a client to specify upgrade in any subsequent chunks.
Note: There is a sibling newtmgr PR: https://github.com/apache/mynewt-newtmgr/pull/120

can we please make the corresponding change to mcumgr as well to keep them in synch?

Thanks, @sterlinghughes.  I have submitted a PR to mcumgr (https://github.com/apache/mynewt-mcumgr/pull/25).


Recurring Payments

Implementation of the Recurring Payments use case.
The Subscription sample has been implemented in the subscription-example folder.

@gcatanese I'm missing the updated gitpod.yml file with the subscription-example, gitpod fails build
A problem occurred configuring root project 'subscription-example'.

Could not resolve all files for configuration ':classpath'.
Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.0.1.

@Kwok-he-Chu This should be addressed now (I have corrected a few inconsistencies in the .gitpod.yml


starts hoodie/camp#78

completed a test that deletes /accounts/123?include=foobar that should return http response 400, but we got 500 when we ran the test.
added lodash dependency
fixed typo in mockCouchDbDeleteResponse method to having matching id
all the test will not pass because it's suppose to return 400, but the code currently returns 500. additional code changes are required :)
===
Made at CodeLabOC 🍊 🎃

@dinhjeffrey these are the git aliases i use https://github.com/robbyrussell/oh-my-zsh/wiki/Plugin:git


Solved doxygen issues

minor issues introduced within last commits.

Merging, as code changes shouldn't have an impact on functionality


[WIP] Container detail page

TODO:

[x] Add tabs
[x] Detail tab - README editor and display
[x] Activity tab
[x] Activity table
[x] Heat map - followup PR
[x] Instructions
[x] Images tab/table
[ ] API

@ZitaNemeckova on the header there should be an Edit button (to edit the repo). The description should be place in a tooltip (black bkg).
I'll look into the ReadMe empty state message and button placement. But for the time being, I don't believe you need the "Please add README" text above the Save & Cancel action buttons.

@sbuenafe-rh Thanks for review :) I want to add Edit button with a modal form in followup PR to make it easier to review codewise.

@ZitaNemeckova tooltip looks good! thanks for the note on the other Edit button with modal. I'll try to draft up an empty state message for the readme.


fix: 8525 - fixed issue of datasource icon missing

Description

fixed icon missing issue of datasource icon over property pane

Fixes #8525
Type of change

Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Please follow linked issue

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes

Test coverage results :test_tube:
:red_circle: Total coverage has decreased
// Code coverage diff between base branch:release and head branch: fix/8525-datasource-icon-mission-on-propertypan

Status
File
% Stmts
% Branch
% Funcs
% Lines

:red_circle:
total
54.9 (0)
36.58 (0)
33.85 (-0.01)
55.45 (0)

:red_circle:
app/client/src/components/ads/TreeDropdown.tsx
59.62 (-1.49)
58.82 (0)
38.89 (-3.22)
58 (-1.62)

/ok-to-test sha=3e157b3


Updates to JMLC Memory Profiling

Following the conversation in https://github.com/apache/systemml/pull/794 with @mboehm7 I have a made a couple improvements to the method used to profile memory use in JMLC:

Removed the use of SoftReference to track when an object has been garbage collected. Objects are now removed (i.e. the memory used by them is subtracted from the total) when ExectutionContext.cleanUpCacheableData is called. This ensures that we always get a consistent maximum memory use which does not change depending on the max heap size used to initialize the JVM.
Removed some unneeded code which won't be called during JMLC execution.

Documentation was also updated accordingly.

Closing this PR and creating a new one to deal with merge conflict issues.


FYI - forked due to name collision with SoftCircuits.CsvParser

Hello, I just wanted to let you know that I have forked this project because it has the same assembly name and namespace as the following project: https://github.com/SoftCircuits/CsvParser
I am trying to test both libraries (and more) in my CSV parsing benchmark project here:
https://github.com/joelverhagen/NCsvPerf
My fork is here:
Package: https://www.nuget.org/packages/Knapcode.FastCsvParser
Repository: https://github.com/joelverhagen/Knapcode.FastCsvParser
I could not find an easier way to make both the "FastCsvParser" package (yours) and the "SoftCircuits.CsvParser" package run in the same project. I kept running into errors because both packages have "CsvParser.dll".
I tried to comply with your MIT license by referencing the original license in the package and I noted my changes.

Хорошая работа. Моя реализация уже давно устарела и требует полной переработки под новые возможности фреймворка позволяющие работать со срезами без лишних аллокаций памяти.

Хорошая работа. Моя реализация уже давно устарела и требует полной переработки под новые возможности фреймворка позволяющие работать со срезами без лишних аллокаций памяти.

Good job. My implementation has long been outdated and requires a complete rework for the new framework capabilities that allow working with slices without unnecessary memory allocations.

Good job. My implementation has long been outdated and requires a complete rework for the new framework capabilities that allow working with slices without unnecessary memory allocations.


[FLINK-3054] Remove R (return) type variable from SerializationSchema

I removed the JavaDefaultStringSchema, DummyStringSchema, StringToByteSerializer and used the SimpleStringSchema everywhere.
I removed the RawSchema, it was not used anywhere.

Big +1 from my side.
It is API breaking, though, so we should add this to the list of API changes for 1.0

Thank you for the review. I'll merge it to master

Now is there any easy way to get raw byte array from Kafka when using FlinkKafkaConsumer*?

I think you can use this class as a reference: https://github.com/apache/flink/blob/2c507f93300ad1b53c477e0939f1f2232187b37f/flink-streaming-java/src/main/java/org/apache/flink/streaming/util/serialization/RawSchema.java


Popover panel with hover mode issue

Description
At present, the Popover component is configured so that its mouseenter event is limited to the HPopoverButton. This setup can lead to functionality problems; specifically, if the user's mouse movement from the button to the panel deviates slightly, the panel will close, despite the mouse being positioned over the panel.
Additional context
No response

Hi @vptill,
Can you please provide a basic reproduction of this. Not sure if I understand you?

Just create a simple Popover with hover mode and set closeDelay to 1s. When you hover on the PopoverButton the panel shows. However, if you move away from the button first, then back to the panel before it closes, the closeTimeout will still run and will close the panel, even though the users mouse is on the panel. This is because the mouseenter event is only set on the button.

@vptill It's my bad, I've removed this event in this commit: https://github.com/nuxt/ui/commit/b50fbcf760e908579e81f6e57234f2080e2bf035. I'll put it back!