[Doc] Should implement debugging documents for Admin API

Search before asking

[X] I searched in the issues and found nothing similar.

What issue do you find in Pulsar docs?
There is no documentation that explains how to debug, pulsar standalone or pulsar-client/shell. We should implement these comments to make easier to work on the Apache Pulsar.
What is your suggestion?
Adding required comments and options with examples. So that, developers can easily debug their improvements.
Any reference?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

Documentation has been added.


Add support for descendant/multi-level wildcard (**.object)

Add support for the ** wildcard as described in JSONata Documentation here

Hi @wnm3,
this is another feature which would be rather important for our use case. Do you have an idea when this will work?
Aloha
Lutz

I will try to get to this later this week. It is a bit more involved as it affects the ANTLR parsing, etc. I'll post status here by Friday CoB. Thanks for the reminder.


Add circular indeterminate to progressDialog

How could add circular indeterminate to progressDialog?

Hi, you can try this code:
ProgressDialog progressDialog = new ProgressDialog(WidgetActivity.this, "Loading");
progressDialog.show();

Keep getting NPE:
Caused by: java.lang.NullPointerException
at com.gc.materialdesign.widgets.ProgressDialog.onCreate(ProgressDialog.java:50)
at android.app.Dialog.dispatchOnCreate(Dialog.java:361)
at android.app.Dialog.show(Dialog.java:262)
at com.gc.materialdesign.widgets.ProgressDialog.show(ProgressDialog.java:77)
at com.jam01.littlelight.MainActivity.onCreate(MainActivity.java:32)

Thanks Ivan. Its working.
But size of the text ("Loading") looks big. Can I modify it?

I tried to change text size by following but getting java.lang.NullPointerException
progressDialog.getTitleTextView().setTextSize(10);


Fix Labeller config file to new v5 syntax

Somewhere along the lines we moved to v5 which has totally new syntax https://github.com/actions/labeler/issues/712

Presumably this is the cause of the labeler failures on every PR at the moment?
The configuration file (path: .github/labeler.yml) was not found locally, fetching via the api
Error: Error: found unexpected type for label 'ghActions' (should be array of config options)
Error: found unexpected type for label 'ghActions' (should be array of config options)

#872 attempts to fix this


Sending messages CC and BCC

@aakashlpin thanks for the tip, but that has the same effect as not specifying bcc at all. I have the same recipients in 'to' and 'bcc' and every recipient sees every other recipient's email!?

@fabyeah that's expected right?
Here's the code snippet from my codebase that might help.
var mailcomposer = new MailComposer();
var message = {
    'from': ('Aakash Goel <aakash@'+ domain +'>'),
    'to': payload.to,
    'bcc': payload.bcc,
    'html': payload.html,
    'subject': payload.subject,
    'h:Reply-To'<EMAIL_ADDRESS>};
mailcomposer.setMessageOption(message);
mailcomposer.buildMessage(function(mailBuildError, messageSource) {
    var dataToSend = {
        to: payload.to,
        message: messageSource,
        'h:Reply-To'<EMAIL_ADDRESS>    };

    if (payload.bcc) {
        dataToSend.to = (payload.to + ',' + payload.bcc);
    }

    mailgun.messages().sendMime(dataToSend, function (err, responseStatus) {
        if (err) {
            callback(err);
        } else {
            callback(null, responseStatus);
        }
    });
});

@aakashlpin thanks for the reply. So your BCC recipient doesn't see other BCC recipients email adresses? For me, they do, which is not how it should be? Though 'to' and 'bcc' are the same in my case, maybe that causes the problem that there is no dedicated 'to' recipient that's not a 'bcc'.

Ah. Now I understand your use case. The BCC for me is always just one email ID. So, yeah, maybe what you saying is what's happening.


Execution time of one callback gives incorrect elapsed time in another

This probably has the same root cause as https://github.com/d3/d3-timer/issues/26.
https://bl.ocks.org/magjac/d187319570dcdcf3beb39ae0aec75d81
See the console output. The second callback is called with the same elapsed time as the first one, even though the first one has a considerable execution time. On my computer the elapsed time error is as much as 376 ms.

This is the expected behavior. Both of your timers are scheduled to fire at the same time (at one-second intervals after page loads). If one of these timers then blocks the execution of JavaScript, it doesn’t affect the apparent elapsed time the other timers see, since conceptually the timers are firing at the same time. The intent of this design is that you can schedule multiple timers to file simultaneously, and their elapsed times will be exactly synchronized, even if some of those timers do something computationally expensive. This is useful in implementing synchronized animations of many elements, for example.

Thanks for the fast response. Here is what I really tried to do:
https://bl.ocks.org/magjac/79e67c1d2f13b830594f5aef46e04a34.
See the console. The first transition works fine, but it affects the second because of the way timers work.
Is there a problem with the way transitions use timers or am I (you) using transitions in a wrong way in this example?
I really do appreciate your help, but just say the word and I will go to Stack Overflow tag d3.js and ask for help as I know I should :grin:.

When you say “it affects the second” what you mean? If you want my help, please be very specific about what the expected versus actual behavior is. I can’t tell just by clicking on your link what if anything is wrong. Thanks.

Also if you want infinitely-repeating transitions, you shouldn’t call selection.transition within the end event of another transition. Instead, you should use transition.transition to schedule a new transition exactly after the specified transition ends. Perhaps that’s what you were getting at…
Here is an example of chained transitions using d3.active.

Sorry for being unclear. What I meant was that the second execution of the transition(path, d0, d1) function in the example, which is called from the end event of the first d3.transition(), affects the second d3.transition() because of its computational intensive pre-calculation of the resampled path and the way timers work.
From the console log I could see:
1st transition:
Init -> start delay: 2352.72ms
Start -> end delay: 1997.29ms
which is roughly ok since I set the delay to 2000 and the duration to 2000.
2nd transition:
Init -> start delay: 3267.92ms
Start -> end delay: 1025.27ms
which is not ok
This occurs because the last tick timer that fires the end event of the 1st transition and the schedule timer of the 2nd transition fires at the same time and the pre-calculation performed in the end event callback takes 1264.32ms, which is not taken into account in the elapsed time the schedule function receives, causing it to consume 1264.32ms of the beginning of the 2nd transition's duration, which in turn causes a jump when the 2nd transition starts ticking.
Regarding calling selection.transition from the end event of another transition, I just copied that from your own example and drift wasn't an issue for me.
I will now try to used chained transitions instead as you suggest.
Again, thanks for your help :smile:.

Sorry, I have accumulated well over a thousand examples over the years, and it’s simply not feasible for me to keep all of them up-to-date with the latest version of D3; I try to update them when I have time, but I expect there will always be old examples out in the wild.
At any rate, I’ve updated https://bl.ocks.org/mbostock/3916621.
Thank you!

Thanks.
Since yesterday,  I've created a very simple test case with chained transitions that shows the problem much more clearly. I'll have a look at your new example and see if I can show you the same problem with it.
In my simple test case, there are two chained transition, both with a delay of 500 ms and a duration of 1000 ms. The only thing it does is to measure the delay and the duration of each transition. In the end event callback of the first transition I'm doing "work" that takes around 100 ms. This causes the actual delay of the second transition to become ~600 ms and the duration to become ~900 ms. This is not what I would expect, albeit there is no drift, just a phase shift of the start of the second transition which is what causes a jump in my previous example.
The reason for the problem is what I tried to describe in my previous comment.
You can see the source code and run it here. Open the console and look for messages.
I've instrumented d3-transition/src/transition/schedule.js with some debug logging. The full log including my local debug messages is here and a git diff showing the local instrumentation of schedule.js is here
Below is the full log

Here's your new example modified to show the problem:
https://bl.ocks.org/magjac/70eec8e83d96f36509b9220566c3abf0

I’m not seeing a problem, but again I’m not entirely sure what your expectations are. If I remove the busy loop, here’s the timing I see (using d3.now):
start 1 1165
end 1 3166
start 2 4168
end 2 6168
start 1 7168
end 1 9166
start 2 10163
end 2 12164
start 1 13164

So I see that transition 1 (d0 ↦ d1) takes two seconds, followed by a one second delay, followed by transition 2 (d1 ↦ d0) taking two seconds, followed by another one second delay, and repeating.
If I restore the busy loop, I see:
start 1 1089
end 1 3091
start 2 4581
end 2 6094
start 1 7096
end 1 9095
start 2 10573
end 2 12096
start 1 13095

So the busy loop delays the start of transition 2 (d1 ↦ d0) by about 400 ms, but the duration of transition 2 is correspondingly shortened by the same time so that transition 2 ends roughly five seconds after transition 1 starts, as expected.
Are you suggesting that the problem is that transition 2 should be unaffected by the busy loop, since there is enough “idle time” between transition 1 and 2 to accommodate the busy loop?
Here is the timing code:
d3.select("path")
    .attr("d", d0)
  .transition()
    .delay(1000)
    .duration(2000)
    .on("start", function repeat() {
      console.log("start 1", Math.round(d3.now()));
      d3.active(this)
          .attrTween("d", pathTween(d1, 4))
          .on("end", function() { console.log("end 1", Math.round(d3.now())); for (i = 0; i < n; i++); })
        .transition()
          .delay(1000)
          .on("start", () => console.log("start 2", Math.round(d3.now())))
          .on("end", () => console.log("end 2", Math.round(d3.now())))
          .attrTween("d", pathTween(d0, 4))
        .transition()
          .delay(1000)
          .on("start", repeat);
    });

This seems like a plausible bug since in sleep we compute the desired sleep duration using clockNow, which was computed when we last woke, and thus may have drifted from clock.now() due to expensive calculations.

Fix proposed in #28.

I guess you answered the question yourself, otherwise; Yes! The consequence is clearly visible in https://bl.ocks.org/magjac/70eec8e83d96f36509b9220566c3abf0.
Thanks you!

I thought I posted this in the beginning of the week, but apparently I must have missed to actually send it.
Anyway, thanks very much for fixing this so fast. I really appreciate it! I tested your fix and it worked just like I expected.
With the help you gave me, I also managed to find a good workaround to the issue (that I'm anxious to remove once you've made a new release 😃).
If you're interested, I released a new plugin to D3, d3-graphviz. You can see demos (with the workaround) here:

Demo
Shape Tweening Demo (This is the heavy one, computationalwise)


CDK data-table does not functioning with spring back-end data service

I implemented md-table (CDK) in my project connecting mysql db through spring backend. Initially I intigrate md-table sample code (https://material.angular.io/components/table/examples) with its sample data. I worked fine. But when I connect my actual data comming through the spring service, data view in the table correctly and filter option not function. It gives script error as mentioned below.
ERROR TypeError: Cannot read property 'slice' of undefined     at MapSubscriber.project (client-list.component.ts:148)     at MapSubscriber._next (map.js:77)     at MapSubscriber.Subscriber.next (Subscriber.js:89)     at MergeAllSubscriber.OuterSubscriber.notifyNext (OuterSubscriber.js:19)     at InnerSubscriber._next (InnerSubscriber.js:23)     at InnerSubscriber.Subscriber.next (Subscriber.js:89)     at BehaviorSubject._subscribe (BehaviorSubject.js:28)     at BehaviorSubject.Observable._trySubscribe (Observable.js:171)     at BehaviorSubject.Subject._trySubscribe (Subject.js:97)     at BehaviorSubject.Observable.subscribe (Observable.js:159)
I publish my code here because it wont work in plunker without my spring data service.
clilent-list-component.html
`

<!-- Position Column -->
<ng-container cdkColumnDef="id">
  <cdk-header-cell *cdkHeaderCellDef  class="example-header-cell"> No. </cdk-header-cell>
  <cdk-cell *cdkCellDef="let element" class="example-cell"> {{element.id}} </cdk-cell>
</ng-container>

<!-- Name Column -->
<ng-container cdkColumnDef="fname">
  <cdk-header-cell *cdkHeaderCellDef class="example-header-cell"> Name </cdk-header-cell>
  <cdk-cell *cdkCellDef="let element" class="example-cell"> {{element.fname}} </cdk-cell>
</ng-container>

<!-- Weight Column -->
<ng-container cdkColumnDef="lname">
  <cdk-header-cell *cdkHeaderCellDef class="example-header-cell"> Last name </cdk-header-cell>
  <cdk-cell *cdkCellDef="let element" class="example-cell"> {{element.lname}} </cdk-cell>
</ng-container>

<!-- Color Column -->
<ng-container cdkColumnDef="email">
  <cdk-header-cell *cdkHeaderCellDef class="example-header-cell"> email </cdk-header-cell>
  <cdk-cell *cdkCellDef="let element" class="example-cell"> {{element.email}} </cdk-cell>
</ng-container>

<cdk-header-row *cdkHeaderRowDef="displayedColumns" class="example-header-row"></cdk-header-row>
<cdk-row *cdkRowDef="let row; columns: displayedColumns;" class="example-row"></cdk-row>

`
client-list-component.ts
`import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from "@angular/router";
import {ClientService} from "../../services/client.service";
import {Client} from "../../data/client";
import {DataSource} from "@angular/cdk/collections";
import {Observable} from "rxjs/Observable";
//import {MdTableModule} from '@angular/material';
import 'rxjs/add/observable/of';
import {BehaviorSubject} from "rxjs/BehaviorSubject";
@Component({
selector: 'app-client-list',
templateUrl: './client-list.component.html',
styleUrls: ['./client-list.component.css']
})
export class ClientListComponent implements OnInit {
sampleData : Client [] = [{ id:13,
fname:'carkade',
lname:'wijesinghe',
<EMAIL_ADDRESS>title:'2',
dob:'2017-08-28',
gender:'1',
mobile:'0714809448',
countryCode:'LK',
createdDate:'1504593982000',
status:0}];
displayedColumns = ['id', 'fname', 'lname', 'email'];
dataSource: ExampleDataSource | null;
constructor(private route: ActivatedRoute,
private router: Router,
private clientService: ClientService) { }
@ViewChild('filter') filter: ElementRef;
ngOnInit() {
this.dataSource = new ExampleDataSource(this.route, this.clientService);

Observable.fromEvent(this.filter.nativeElement, 'keyup')
  .debounceTime(150)
  .distinctUntilChanged()
  .subscribe(() => {
    console.log("-event start : "+this.filter.nativeElement.value)
    if (!this.dataSource) {
      console.log("dataSource null");
      return;
    }
    this.dataSource.filter = this.filter.nativeElement.value;
  });

}
}
/** An database that the data source uses to retrieve data for the table. */
export class ClientDatabase {
dataChange: BehaviorSubject<Client[]> = new BehaviorSubject<Client[]>([]);
get data(): Client[] { return this.dataChange.value; }
constructor(clientDataBase: Client[]) {
this.dataChange.next(clientDataBase);
}
}
export class ExampleDataSource extends DataSource {
/** Connect function called by the table to retrieve one stream containing the data to render. */
clients: Client[];
clientDatabase: ClientDatabase;
_filterChange = new BehaviorSubject('');
get filter(): string { return this._filterChange.value; }
set filter(filter: string) { console.log("filter 2 : "+filter); this._filterChange.next(filter); }
constructor(private route: ActivatedRoute, private clientService: ClientService) {
super();
}
connect(): Observable<Client[]> {
console.log("------------ ExampleDataSource connect --------------");
this.route
  .params
  .map(params => params['status'] || '-1')
  .subscribe(status => {
    console.log("ExampleDataSource connect 1");
    if (!this.clientService.clients) {
      this.getClients(status);
    } else {
      this.clients = this.clientService.clients;
    }
    console.log("ExampleDataSource connect 2");
    this.clientDatabase = new ClientDatabase(this.clients);
  });

const displayDataChanges = [
  this.clientDatabase.dataChange,
  this._filterChange,
];
console.log("data from backend > : "+JSON.stringify(this.clientDatabase));

  return Observable.merge(...displayDataChanges).map(() => {
    return this.clientDatabase.data.slice().filter((item: Client) => {
      let searchStr = (item.fname + item.lname).toLowerCase();
      return searchStr.indexOf(this.filter.toLowerCase()) != -1;
    });
  });

}
disconnect() {}
getClients(status: number) {
if (true)
this.clientService.getClients(status).then(
res => {
this.clients = res;
});
return this.clients;
}
}
`
console log for "data from backend" prints:
connect this.clientDatabase : {"dataChange":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null,"_value":[{"id":13,"fname":"carkade","mname":null,"lname":"wijesinghe","title":"2","email":"carkade@gmail.com","emailNew":null,"dob":"2017-08-28","gender":"1","mobile":"0714809448","country":{"code":"LK","name":"Sri Lanka"},"token":"ca5a33d2-fe73-41a8-aeab-368ce9e7ecfc","createdDate":1504593982000,"status":0,"password":"b83027a303a5f7dc20fb1a2d6ad2e046","salt":"iqTdlhHC+1j6/akmbVzOeg=="},{"id":19,"fname":"Sanka","mname":null,"lname":"wijesinghe","title":"4","email":"sanka@gmil.com","emailNew":null,"dob":"2014-12-29","gender":"1","mobile":"0714809448","country":{"code":"LK","name":"Sri Lanka"},"token":"f5a57f2e-e4fa-4286-ac0f-3c99d2233894","createdDate":1505802532000,"status":0,"password":"7f67762dc47ea8caa9db115bc84ad7de","salt":"9MBDaNArbBKDOEvv8lsXgg=="},{"id":20,"fname":"Sanka","mname":null,"lname":"wijesinghe","title":"4","email":"sanka.w@gmail.com","emailNew":null,"dob":"2010-12-27","gender":"1","mobile":"0714809448","country":{"code":"LK","name":"Sri Lanka"},"token":"2060e276-c64b-422e-9183-620042288e7c","createdDate":1505802706000,"status":0,"password":"915e307a8cf467767d6adbc60d868df7","salt":"puOmRu0RtGuiSGkfoS7F3g=="},{"id":22,"fname":"Sanka","mname":null,"lname":"wijesinghe","title":"2","email":"info@carkade.com","emailNew":null,"dob":"2017-09-06","gender":"1","mobile":"0714809448","country":{"code":"LK","name":"Sri Lanka"},"token":"788ea560-7e8d-43bd-86fc-5e8d55842c2c","createdDate":1506444003000,"status":0,"password":"0b08fd68bcf839fc3564a025e1f97c20","salt":"CrReLqA8VQvyTwxtcAWZRA=="},{"id":23,"fname":"Sanka","mname":null,"lname":"wijesinghe","title":"2","email":"sdasdasd@ddd.com","emailNew":null,"dob":"2017-09-13","gender":"1","mobile":"+94-1111111111","country":{"code":"LK","name":"Sri Lanka"},"token":"33af7107-dfe3-48cd-9c60-063480870889","createdDate":1506588235000,"status":0,"password":"9376bcf20a1b5ff1d7f6887944997b80","salt":"nBj6VsCmIlj5NJYRZUksBA=="}]}}

Looks like this.clientDatabase.data is undefined when you try to slice it.
For help with troubleshooting your project, please refer to our community on StackOverflow, Gitter, Google Groups, etc.

Hi,
I tried with community but no help came up. No any guidance found about loading data from database to the cdk table. as my log connect() function fired 5 times before filling the table. I dont understand why its repeatedly executing 5 times. 4 times my table data source array prints as
{"dataChange":{"_isScalar":false,"observers":[],"closed":false,"isStopped":false,"hasError":false,"thrownError":null}}
with above mentioned error.
I'm getting data from mysql database as follows.
getClients(status: number) {
if (true)
  this.clientService.getClients(status).then(
    res => {
      this.clients = res;
    });

return this.clients;

}
clientService getClients() method imlementation
getClients(status:number) {
const url = ${environment.admin_client_url}/clients/${status};
console.log("ClientService url : "+url);
return this.http.get(url)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
pls provide proper documentation about filling cdk table with data coming from a back-end database. It will be a great help .

@sanka76811 some things that may help you,

Try keeping the observable chain alive instead of transforming it into a promise. Since the data table uses observables to connect your data to the table, I personally find it easiest to exclusively use observable streams
Take a look at the example here. It demonstrates using Github's api to retrieve repo issues and populate the table

@andrewseguin any reason that example hasn't made it on the docs site yet?

@willshowell appreciate ur respond. I found the bug. I change the code follows. When we getting data from backend, we should initiate the cdk table datasource class inside the service data extraction. otherwise, datasource class initiated early as possible and call connect() method until backend pass the data. That why my previous code fired connect() several times.
getClients(status: number) {
if (true) //!this.clientDatabase.dataChange.isStopped
  this.clientService.getClients(status).then(
    res => {
      this.clients = res;

      this.dataSource = new ExampleDataSource(this.clientService, this.status,new ClientDatabase(this.clients));
    });
return this.clients;

}


typo in OtherWorld.js

Please check file OtherWorld.js. It is requiring ./ScenarioStore, which should be ./scenarioStore.
For me, it prevents the whole thing from working. Too bad I couldn't see this in action, looked promising.
core-integration                      | Error: Cannot find module './ScenarioStore'
core-integration                      |     at Function.Module._resolveFilename (module.js:536:15)
core-integration                      |     at Function.Module._load (module.js:466:25)
core-integration                      |     at Module.require (module.js:579:17)
core-integration                      |     at require (internal/module.js:11:18)
core-integration                      |     at Object.<anonymous> (/app/node/integration/node_modules/reuse-cucumber-scenarios/OtherWorld.js:1:17)

Hi @lpatoyst,
I'm sorry about that. I just fixed it in v1.1.5.
Thanks for your feedback.
P.S: I'll upload a working example today and I going to add the link in a new section "Examples" in the docs.

NEW EXAMPLE: Now you can clone this repo...
https://github.com/Virgomax/RCS_EXAMPLE1
...and experiment with the step patterns that this library provides.
Enjoy! :)


Integration with Zuul

integrate with zuul
rename to avoid conflict with existing package on pypi
add basic tox with flake8 test

Depends-On: https://github.com/opentelekomcloud-infra/zuul-config/pull/42
Depends-On: https://github.com/opentelekomcloud-infra/gitstyring/pull/72

recheck


Are you requesting a new package or reporting an issue on an existing one?
This is an issue with an existing package.
If reporting an issue on an existing one, what is the name of the package?
Please use the name as it appears in https://www.nixhub.io
helm: https://www.nixhub.io/packages/helm
What changes are you requesting?
Summarize your request. If it's for an existing package that is not
working as expectd, provide a concise explanation of what is going wrong.
Helm is not available on darwin:
$ devbox global add helm

Installing package: helm@latest.

[1/1] helm@latest
error:
       … in the condition of the assert statement

         at /nix/store/qwc46x93rwg2cjmkv2x0nwvddpybs4dk-source/lib/customisation.nix:228:17:

          227|     in commonAttrs // {
          228|       drvPath = assert condition; drv.drvPath;
             |                 ^
          229|       outPath = assert condition; drv.outPath;

       … while evaluating the attribute 'handled'

         at /nix/store/qwc46x93rwg2cjmkv2x0nwvddpybs4dk-source/pkgs/stdenv/generic/check-meta.nix:447:7:

          446|       # or, alternatively, just output a warning message.
          447|       handled =
             |       ^
          448|         {

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: Package ‘helm-0.9.0’ in /nix/store/qwc46x93rwg2cjmkv2x0nwvddpybs4dk-source/pkgs/applications/audio/helm/default.nix:52 is not available on the requested hostPlatform:
         hostPlatform.config = "x86_64-apple-darwin"
         package.meta.platforms = [
           "aarch64-linux"
           "armv5tel-linux"
           "armv6l-linux"
           "armv7a-linux"
           "armv7l-linux"
           "i686-linux"
           "loongarch64-linux"
           "m68k-linux"
           "microblaze-linux"
           "microblazeel-linux"
           "mipsel-linux"
           "mips64el-linux"
           "powerpc64-linux"
           "powerpc64le-linux"
           "riscv32-linux"
           "riscv64-linux"
           "s390-linux"
           "s390x-linux"
           "x86_64-linux"
         ]
         package.meta.badPlatforms = [ ]
       , refusing to evaluate.

       a) To temporarily allow packages that are unsupported for this system, you can use an environment variable
          for a single invocation of the nix tools.

            $ export NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1

        Note: For `nix shell`, `nix build`, `nix develop` or any other Nix 2.4+
        (Flake) command, `--impure` must be passed in order to read this
        environment variable.

       b) For `nixos-rebuild` you can set
         { nixpkgs.config.allowUnsupportedSystem = true; }
       in configuration.nix to override this.

       c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
         { allowUnsupportedSystem = true; }
       to ~/.config/nixpkgs/config.nix.
[1/1] helm@latest: Fail

Error: There was an error installing nix packages
source: error running "nix profile install": exit status 1

Error: There was an internal error. Run with DEVBOX_DEBUG=1 for a detailed error message, and consider reporting it at https://github.com/jetpack-io/devbox/issues

Additional context
Add any other context or screenshots about the feature request here.
$ uname -a
Darwin MacBook-Pro-von-D2iQ.local 22.4.0 Darwin Kernel Version 22.4.0: Mon Mar  6 21:00:17 PST 2023; root:xnu-8796.101.5~3/RELEASE_X86_64 x86_64 i386 Darwin
➜ ~
$ devbox version
0.5.7

Yes - you are right.
I discovered this afterwards by accident - but decided to leave that issue open as it is still true.
If you feel we can close this feel free to close it.

From what I can tell the nixpkg index is working properly, but Nix does not currently have a Darwin version of Helm packaged. Closing this since the solution would be to repackage the Helm synthesizer in nixpkgs.


[0.48.0]: Error: Redefinition of RCTMethodInfo

After upgrading from 0.47.2 -> 0.48.0, I can't get XCode to build anymore. I've tried clearing out derived data, cleaning the project, etc. It's consistently failing with this error, across various react-native-* modules I have installed.

FWIW, I downgraded to 0.47.2, cleared derived data, cleaned the project, and now I'm operational again. There's something funky going on in the new 0.48.0 release.

Probably dupe for https://github.com/facebook/react-native/issues/15762

Hmm. I saw that but didn't think so because the project in #15762 actually compiles, and then crashes, whereas this straight up won't compile.

Not a duplicate - I couldn't reproduce this issue.

React Native 0.48.1
Same issue here with a third party module

Previous definition is here: https://github.com/facebook/react-native/blob/master/React/Base/RCTBridgeModule.h#L54

Resolved, by changing import priority: https://github.com/yonahforst/react-native-permissions/issues/137

Same issue

@exentrich clean project, rebuild [CMD] + [CTRL] + [SHIFT] + [K]

I fix the issue by changing in all module #import "RCTBridgeModule.h" into #import <React/RCTBridgeModule.h>

Fixed in https://github.com/facebook/react-native/pull/15783

Even with this fix i try #import <React/RCTDevMenu.h> and #import "RCTDevMenu.h" clean rebuild nothing change i still have the issues and the parallelize build is disabled.

@MatthieuPeyrot Please, review https://github.com/facebook/react-native/pull/15788

Even with this I have RCTDevMenu.h file not found

@iegik , I have applied your fix how ever it didnt work for me , still have redefinition of RCTMethodInfo,

@kozillla do you have react-native-permissions in your project included?
https://github.com/yonahforst/react-native-permissions/pull/138/files

@iegik no,I do not use it.

@kozillla I had the same issue. I dont know if its the correct way to fix the issue but here it is: change the React.podspec (node_modules/react-native) line "React/DevSupport/" in ss.exclude_files of subspec "Core" to "React/DevSupport/.{c,m,mm,S}". Run pod install and should work.

Same error here with RCTDevMenu.h, when upgraded RN from 0.47 to 0.48.1. From XCode:
[project]/node_modules/react-native/React/Base/RCTTVRemoteHandler.m:25:9: 'RCTDevMenu.h' file not found

@jorgefspereira's workaround works and my app builds! Though obviously not a proper fix.

@grabbou please note that RN 0.48.1 seems to have fixed this issue's original RCTMethodInfo error, but error with RCTDevMenu.h is persisting in 0.48.1 and is a showstopper

@jorgefsereira thx for sugestion but I dont use pods to manage react-native, also problem persist in RN 0.48.1

@kozillla I was right, you found that module, which conflicts with React Native.
Whatever, the problem, that third-partly modules import React Native modules as #import "RCTBridgeModule.h" first and <React/RCTBridgeModule.h> as failback. But should be otherwise.

I had the same issue from a Ble lib. If I change the imports from the header module from:

#import "RCTBridgeModule.h"
#import "RCTEventEmitter.h"

to:
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>

it fix my problem.

https://github.com/Polidea/react-native-ble-plx/pull/136

@iegik ,thanks for pointing issue, you are right, fixing import sequence in third part modules resolve this problem

+1 - RCTDevMenu.h file not found

RCTDevMenu.h file not found is happening for me too, in RCTTVRemoteHandler.m

Is this issue getting looked at? No tag or assignment, and this should be priority considering it's build breaking.
Shouldn't RN releases pass basic build tests before being released in the first place? 😢

as per latest document
pod 'React', :path => '../node_modules/react-native', :subspecs => [
'Core',
'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText',
'RCTNetwork',
'RCTWebSocket', # needed for debugging
# Add any other subspecs you want to use in your project
]
Adding DevSupport in Podfile fixed RCTDevMenu.h not found issue.
As point out by others, Changing
import "RCTBridgeModule.h" to import <React/RCTBridgeModule.h> fixed the RCTBridgeModule not found error.

Confirmed fix, with adding 'DevSupport' line to pod 'React' in Podfile fixes RCTDevMenu.h not found issue.
This needs to be better documented, as previous to RN 0.48, build didn't break without the 'DevSupport' line in Podfile.

Thanks for the comments everyone, I was able to get past this issue by using some code forks that the community has created the various third-party modules that are not yet compatible with RN 0.48.x. For me, it was these two:
"react-native-oauth"<EMAIL_ADDRESS>
"react-native-permissions"<EMAIL_ADDRESS>
I will use these forks for now, until official fixes land on the master branch for these two projects.

Also possible to just add DevSupport instead of specifying all modules from the React pod:
  pod 'React', :path => '../node_modules/react-native'
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'DevSupport'
  ]

To solve this issue I updated all my dependencies and link again. Then, I change all  #import "RCTBridgeModule.h" to #import <React/RCTBridgeModule.h>.

@joncursi are you still using the patched version for react-native-oauth? Cheers!

Yes
On Sun, Feb 25, 2018 at 5:43 PM jp pincheira<EMAIL_ADDRESS>wrote:

@joncursi https://github.com/joncursi are you still using the patched
version for react-native-oauth? Cheers!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/facebook/react-native/issues/15775#issuecomment-368352103,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEvoEQ9kYdB_tzfjvj97FYffhw0foMVEks5tYeH1gaJpZM4PLSLF
.

@kinber95 - in which file do we have to change the import order? I am not able to find it

@iegik I get ld: framework not found DCTAuth

FWIW I made the change shown here : https://github.com/yonahforst/react-native-permissions/issues/137
It didn't work. So I reverted the changes, rebuilt, and the app is running now. Ofc, I also had manually linked libOAuthManager.a prior to all of this.

just write
#ifndef CODE
#define CODE               //  at the top of the file
.
.
.
.
#endif                            //at  last

Refer to this SO Q/A for an accurate solution -
https://stackoverflow.com/questions/46813090/react-native-error-redefinition-of-rctmethodinfo-after-installing-the-plugin


NDataTable should have an option for horizontal floating scrollbar.

This function solves the problem (这个功能解决的问题)
When there are many columns in Data table and table height is fixed to (say for example) 600px, I need to always go to down to find the horizontal scrollbar to see content to the right.
So, if there are a floating scroll bar, I can see the right content without need to go down.
Expected API (期望的 API)
<NDataTable
****
: horizontal-floating-scroll="true"
****
/>

track in https://github.com/tusen-ai/naive-ui/issues/1573


update Maven security

Description
This PR includes the following proposed change(s):

update security based on mvnrepository.com and inspection code menu in IntelliJ

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Refactoring / Documentation

if your change is a breaking change, please add breaking change label to this PR
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] New and existing unit tests pass locally with my changes

it looks good to me.  close it.

@jianmingtu When you are done with a pr it needs tp merge not close. Close is for when you no longer want to use the code.


Add French Language

upload fr lang

Ok I'm just gonna hope the formatting m encoding works when I merge.


Docs: Minor inconsistencies in description and example for "Applications" chapter

Summary
These are small inconsistencies I spotted while reading this chapter.
Using state as kwarg for on_startup and on_shutdown:

Link: https://docs.litestar.dev/latest/usage/applications.html#using-application-state
Paragraph: "As seen in the examples for the on_startup / on_shutdown , callables passed to these hooks can receive an optional kwarg called state, which is the application’s state object."
Problem: The examples at the top of the chapter do not use the state kwargs argument. Instead they use app and then fetch the state from that object .
Suggested solution: Since use of state as reserved kwarg is documented elsewhere, I assume the example file just needs an update.

The after_exception hook:

Link: https://docs.litestar.dev/latest/usage/applications.html#after-exception
Paragraph: "The after_exception hook takes a sync or async callable that is called with three arguments: the exception that occurred, the ASGI scope of the request or websocket connection, and the application state."
Problem: Documentation states that 3 arguments need to be passed, example only uses 2 arguments: exc and scope
Suggested solution: Again, I assume the example is just outdated.

The before_send hook:

Link: https://docs.litestar.dev/latest/usage/applications.html#before-send
Paragraph: "The hook receives the message instance and the application state."
Problem: The example receives scope instead of state
Suggested solution: Not sure if this is even a problem or just fuzzy wording. But since the sections before referred to the kwarg state I think this should be made more consistent by either using state instead of scope in the example or to update the description to use scope instead of state.

[!NOTE]
While we are open for sponsoring on GitHub Sponsors and
OpenCollective, we also utilize Polar.sh to engage in pledge-based sponsorship.
Check out all issues funded or available for funding on our Polar.sh dashboard

If you would like to see an issue prioritized, make a pledge towards it!
We receive the pledge once the issue is completed & verified
This, along with engagement in the community, helps us know which features are a priority to our users.

Thanks for the report @aranvir!
The examples are actually correct in all of those cases and it's the documentation that's wrong. This has changed in 2.0 and it seems that the docs haven't been updated (the examples are actually ran and tested, that's why they're correct).
Would you want to open a PR to fix those issues?

Yes, can do!
For my understanding: Is state then still a valid kwarg for these cases (e.g., on_startup hooks)? Or only for Router Handlers which is why it is documented there.

For my understanding: Is state then still a valid kwarg for these cases (e.g., on_startup hooks)? Or only for Router Handlers which is why it is documented there.

No, it's not valid there anymore. It used to be that you could pass different signatures, but that functionality has been removed. The state arg you mention is only available as part of the dependency injection, so in route handlers or injected dependency callables.


Clojure / general lisp support

Any plans for supporting Clojure and/or lisps generally?

I would be happy to support lisp-like filetypes, but I don't have practical experience with them, so I don't know what kinds of splits and joins would make sense, what settings to provide, etc. If you use a lisp yourself, do you have any specific transformations you do often that the plugin could support? Maybe a few before/after examples of code snippets?

Absolutely. My only experience is as a novice Clojure/ClojureScript
user. Source consists of "forms" which are delimited by () [] and
{}. Even a function call is just a (fn arg1 arg2) which means the
syntax is extremely general.
Simple examples, this calls the function +:
(+ 2 3 4 5)

(+
  2
  3
  4
  5)

guns/vim-sexp provides indentation.
From my project, this is properly indented and the brackets appear where they should:
(dispatch [::events/insert-staff-entry
            day-ord
            shift
            unit
            @why
            @who])

Would be nice to go to this, and back:
(dispatch [::events/insert-staff-entry day-ord shift unit @why @who])

If you need more discussion/research, I will help.

I've added some basic support to the main branch -- could you pull and try it out? If it works well for some of your real code, I'll write up some documentation, and if there's edge cases I haven't considered, I'll see what I can do to work them out.

Thanks, very cool. I'll play with it at work next week and collect my experience.

Want to thank you for this, I had to move away from using Clojure at work for a while but I still intend to report back here.

This is already useful as is—thank you.
 So at least I know what the issue is -- it should be fixed now.

It does look fixed. I'll let you know what else I come across this week as I'm back at my Clojure/Script projects.


reassembly: Update skip count in Assember.cleanSG

As cleanSG iterates through byteContainers to convert them to pages, it needs to update the skip count (number of bytes to skip from the start of each container). Failure to do so may result in a panic, as demonstrated with the unit test.

Thanks!


无法登陆

Issue Type: Bug
我无法登陆微软账户或github账户，显示vscode.dev阻止连接，
VS Code version: Code 1.67.2 (c3511e6c69bb39013c4a4b7b9566ec1ca73fc4d5, 2022-05-17T18:15:52.058Z)
OS version: Windows_NT x64 10.0.22621
Restricted Mode: No

感谢您创建此问题！
然而，由于您没有使用英语，我们很难进行处理。如果可能，请您将此问题描述修改为英文。请您直接编辑此问题，不要提交回复或新问题。
请注意，机器翻译服务通常无法处理用于讨论软件问题所需的技术性语言，所以我们推荐您寻找一位熟悉相关技术的人来协助翻译。
如果您无法做到，没有关系。此问题已经被标记为需要翻译，等待社区成员志愿进行翻译。

Thanks for creating this issue!
Unfortunately, as the description is not in English, it's hard for us to work on. If possible, please edit the original issue to be in English.
In our experience, automatic translation services are not able to handle the technical language needed to effectively communicate about software issues, so we recommend finding a human translator who is familiar with our technology to help.
Otherwise, we have marked this as needing translation and a community member may be able to help out.

I can't log in to Microsoft account or GitHub account to display vscode Dev blocked connection,

@TylerLeonhardt, could you please take a look? Thanks!

I also have this problem and here is my gif

@TylerLeonhardt

I also fail to sign in with my microsoft account when I try to set sync.

/duplicate of https://github.com/microsoft/vscode/issues/149538

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!

Issue Type: Bug
我无法登陆微软账户或github账户，显示vscode.dev阻止连接，
VS Code version: Code 1.67.2 (c3511e6, 2022-05-17T18:15:52.058Z) OS version: Windows_NT x64 10.0.22621 Restricted Mode: No
I can't sign in to a Microsoft account or GitHub account. Vscode dev shows that the connection has been rejected,

I can't sign in to a Microsoft account or GitHub account. Vscode dev shows that the connection has been rejected,


Ask about credentials.code

Hello,
Please, tell me. I have a problem.
With  request in func login, I get an SMS with the code, that I registered in credentials.code = "121332".
I can’t send this code back. How to do it? What am I doing wrong?
This is my code
class ViewController: UIViewController {
let handler = APIHandler()
override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {
    var credentials = Credentials(username: "username", password: "password", verifyBy: .text)
    credentials.code = "121332"

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()

            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

You need to move credentials.code = "121332" after the authentication handler returns .failure(let error).
Doing it async inside the if error.requiresInstagramCode { } might be a good option.

Problem still exists
https://prnt.sc/pgyf15
apparently does not send this code

Try without the breakpoint. Cause this way you're actually stopping the code as it reaches that row. :blush:

https://prnt.sc/pgynah
Problem still exists. I would like to draw your attention, I pass the credentials to .user, because if there is .credentials (as in the example), then an error occurs

Where are you getting the .credentials case at? 🤔
It's not even defined… did you implement it yourself?
Cause otherwise, what's the error you get with .user? Cause it feels like that's the actual problem here…

.user is the correct way.
.credentials was used in development and I forgot to change it. Thanks for pointing out. I'll change it right now.
I still don't get the error though cause I'm testing it my way and everything works as intended 🤔

Since I can't see it in your last screenshot. Does it really not work with persisting the credentials that way, and then updating code after it returns the Error requiring it?

If I us .credentials, i have this error https://prnt.sc/pgyvlx
I posted all my code in the main message.
Am I doing something wrong?

how do you test sending a message back?

.user is the right one, .credentials was kept in the documentation by mistake.
Move your decleration of credentials below the handler one. As a "retained" property.
It should work then.

its all code, there is an error anyway (
import UIKit
import SwiftyInsta
class ViewController: UIViewController {
let handler = APIHandler()
var credentials = Credentials(username: "username", password: "password", verifyBy: .text)
override func viewDidLoad() {
    super.viewDidLoad()
    login()
}

func login() {

    handler.authenticate(with: .user(credentials)) { [weak self] in
        switch $0 {
        case .success(let response, _):
            print("Login successful.")
            guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
            UserDefaults.standard.set(key, forKey: "current.account")
            UserDefaults.standard.synchronize()
            self?.getCurrentUser()
        case .failure(let error):
            if error.requiresInstagramCode {
                self!.credentials.code = "178063"
            } else {
            }
        }
    }
}

func getCurrentUser() {
    self.handler.users.user(.me) { ( result: Result<User?, Error>) in
        switch result {
        case .success(let user):
            let username = user?.name ?? "John Doe"
            print("success, username: \(username)")
        case .failure(let error):
            print("failure, error: \(error.localizedDescription)")
        }
    }
}

}

And what is the error this time? @rmelnik7777

That actually looks like some sort of Xcode warning, not something SwiftyInsta generated 🤔

I have a similar problem. It is not clear how to get into the failure block to set an authorization code from SMS. Can you help with an example?

Hello I have same problem too. Can you share a working sample application for two factor auth ?

@sbertix will post a clear example soon.
be patient.

Sorry I haven't managed to post an example yet, I've been really busy.
I hope I can post one soon.

I'm totaly new with swift but maybe I found the bug:

Here, you create a mutable copy of the Credentials and set the value of the handler property.
But in this line, it's the original Credentials, so the value of handler property is not set. The line is skipped [https://github.com/TheM4hd1/SwiftyInsta/blob/b5d90e3b42696fbcb54211353803bc2e95c0fda0/SwiftyInsta/Local/Authentication/Credentials.swift#L35]

I didn't have a chance to investigate it further but it might be as well be. Apparently on the current commit Credentials are declared as a struct and not a class, which was the premise of the all the passing by reference thing.
It's apparently something I either fixed along the way in my local version, or some changes that I pushed to the master along the way.
I'll try to review everything in time for #96, but I haven't had any time as of lately. Apologies.
@Lyusan


embeddings

are the embeddings created each time? I gues will be much easier to store them and re-use them...is it possible?

yeah, in this simple setup they are generated on each startup. But should be pretty easy to store them for future use if you need too:)


Project conversion to Paket and current version of ProjectScaffold

Here's a big and scary pull request for you. This implements the following changes:

Update the base build.fsx and friends to the current version of fsprojects/ProjectScaffold (as per commit afdb450, 4/27/2016)
This adds the following goodies:

Ability to use Paket
Adds documentation generators. This should address #39
Some boilerplate test code
Successfully builds with AppVeyor

Converted build to Paket (easy, thanks to auto-migration).
I manually fixed the example projects to use Paket-style references

There is some need for review. Particularly:

I am not sure why the examples are in a separate solution. Personally, I would throw it all into the main one, but there is probably a good reason.
Also, you may want to put the examples under src/
Is the FsXaml.Demos.2012.sln still required? I tested this with VS 2013 Premium, don't have 2012 anymore.
Are the F# compiler version and .Net versions in the individual fsproj files corrcect?
The version specifications of the individual nugets imported by Paket should be checked for correctness.
The way the AssemblyInfo.fs are handled seems to have changed with the newer version of ProjectScaffold. Check to make sure this does what you want.
Generation of nuget-based releases is completely untested and probably broken. Good thing you just did a release! :-)

Let me know if anything needs fixing.

Jan:

I am not sure why the examples are in a separate solution. Personally, I would throw it all into the main one, but there is probably a good reason.

With Type providers, you can't have them together, or you can't use the provider. You have to basically compile the TP, then start up demos, shut it down, make changes, start it up (in separate VS).
Also, conceptually, the demos project is more for "end users" to see vs. the main project "developers of FsXaml"

Also, you may want to put the examples under src/

I see src/ as the main source for FsXaml itself. Prefer to keep it separate.

Is the FsXaml.Demos.2012.sln still required? I tested this with VS 2013 Premium, don't have 2012 anymore.

It's only required if we want to support VS 2012. I know of at least one user still there, but now that power tools moved off, I'm okay dropping it.

Are the F# compiler version and .Net versions in the individual fsproj files corrcect?

They should be. Did you see something weird in there?

The version specifications of the individual nugets imported by Paket should be checked for correctness.

For these purposes, I don't think they matter much.

The way the AssemblyInfo.fs are handled seems to have changed with the newer version of ProjectScaffold. Check to make sure this does what you want.

Project Scaffold was never really intended to work with type provider projects, so I was always doing it manually.  Would be nice to make it work.

Generation of nuget-based releases is completely untested and probably broken. Good thing you just did a release! :-)

I've done this manually - I don't mind doing it.  I'd probably like to either remove or fix the automatic nuget support - but I'm fine with either route.
Thanks for all of this - I think I'll merge it, but would you be willing to help with the remaining stuff above?

Thanks for the clarifications. I am still at the point where Type Providers contain an element of Magic, so this is helpful.
I am certainly happy to help with the rest of these issues. The only thing that struck me as odd about the versions is that the FsXaml components are built with F# 3.0, the demos are built with F# 3.1 and the (autogenerated and mostly empty) FsXaml.Tests project is targeted for a version <IP_ADDRESS> of the F# runtime (which I think goes with F# 4.0). Regardless of what the targeted runtime is, it would probably be good to have the same one everywhere. The targeted .Net framework version is 4.5 everywhere, which is probably a good choice.
I think it would be nice to automatically build a nuget binary every so often (with automatically increasing build number), but I can't say I understand the special considerations for type providers. I'll play around with this a little and see whether I can figure it out.

@jschiefer We have F# 3 in the type provider to give it the furthest "reach".
For tests project (which didn't exist until this PR) and demos, it really doesn't matter. We could switch all of the demos to using F# 4, if we wanted to do so. I had the demos on 3.1 because it's much nicer to use than 3.0, but 4 would be even nicer there - so maybe we should switch those across.  They're not deployed, so it's really less important, but 4 would require VS 2015 to use, where keeping them 3.1 lets VS2013 users try the demos.


No Internet Connection to Add the Splunk Repo

What happened:
There's no internet connectivity at my cluster so I am unable to run the below command in my cluster :
helm repo add splunk https://splunk.github.io/splunk-connect-for-kubernetes/
Pls suggest how to add the splunk repo..??

you can download chart package from release page. https://github.com/splunk/splunk-connect-for-kubernetes/releases
and transfer this file to it. but it will need internet to access docker image.
in that case, you would have to set up your own internal docker image registry and host iamges there and pull it from there.


Adding services.nginx.http.server. option

which can be used to define servers in the http section

I wonder why isn't httpConfig enough, I'm able to add servers with httpConfig as I wish.

@lethalman isn't the added documentation worth it alone? Anyway I like it as long as I have to option to just pass a flat text config

The reason I did it was separating port configuration from server path configuration

Closing as the powerline fonts have been added since April 2015. 76dcf48b13c27b7a2fc2373e2bf2e2e1e95ab120

Sorry wrong PR

PIng all and cc @domenkozar. LGTM

:-1: for now, I want to review this carefully, but haven't got the time at this moment.
(We have started building something similar, but is not in a mergeable state, yet, as some things are very opinionated and I'd like to merge the efforts)
Those interested, may want to look at the following, feel free to cherry-pick valuable commits into the branch or improve on our ideas :)
https://github.com/mayflower/nixpkgs/commit/1031c3af6af0d0a95cddee7d54b3f972d8e5bb29
https://github.com/mayflower/nixpkgs/commit/d587e789fc12e4ad2de8183c676f59c960732e0a
https://github.com/mayflower/nixpkgs/commit/d9bd2da67fb5c50d7e7f4214f5ebeef937faef67
https://github.com/mayflower/nixpkgs/commit/f89d5e4774e493c2e88dfe91213cb9241fb36444
https://github.com/mayflower/nixpkgs/commit/d7681dbba838667c280a61dcd1fe84eb1b621b00
https://github.com/mayflower/nixpkgs/commit/4de5cdfa2ed82e294c94a217a73179c4c6c4f714
https://github.com/mayflower/nixpkgs/commit/a88b7379c5457f19f450902c44c39dc24dd2de3a
https://github.com/mayflower/nixpkgs/commit/c50e243831854b3c08a80e827b8c9dd82844aea8
https://github.com/mayflower/nixpkgs/commit/0b7b77a925f3ffb95fd78d0c615d1b5c838e1202
https://github.com/mayflower/nixpkgs/commit/e3bcf876c7d39d4d8b45f6b0cc5bc050407db564
https://github.com/mayflower/nixpkgs/commit/bd77646a64df6c295ee43050a7a975d3def9bc0a
https://github.com/mayflower/nixpkgs/commit/3ce06d5877ff7f863dea552f5a03340c87abd8c9

ping @globin any updates / time frame on your efforts?

Here is our proposal for the nginx module: #15862

i'm closing this PR due to the work at #15862


With Flutter 2.8 some apps cannot be built when targeting iOS simulator

In Flutter 2.8, we have one app which cannot be run in an iOS simulator (the others are fine).
Steps to Reproduce
I didn't find steps to reproduce this issue.
Expected results:
The app build and can be run in a iOS simulator
Actual results:
The app cannot be built on a iOS simulator, but it's fine on a real iOS device (No problem with Android either)

Logs
Failed to build iOS app
Error output from Xcode build:
↳
    ** BUILD FAILED **
Xcode's output:
↳
    [APP_FOLDER]/ios/Runner/GeneratedPluginRegistrant.m:12:9: fatal error: module 'app_settings' not found
    @import app_settings;
     ~~~~~~~^~~~~~~~~~~~
    1 error generated.
    note: Using new build system
    note: Planning
    note: Build preparation complete
    note: Building targets in parallel
Could not build the application for the simulator.
Error launching application on iPhone 13.
Exited (sigterm)

[✓] Flutter (Channel stable, 2.8.0, on macOS 11.6 20G165 darwin-arm, locale fr-FR)
    • Flutter version 2.8.0 at /Users/letsar/dev/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision cf44000065 (5 days ago), 2021-12-08 14:06:50 -0800
    • Engine revision 40a99c5951
    • Dart version 2.15.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
    • Android SDK at /Users/letsar/Library/Android/sdk
    • Platform android-31, build-tools 30.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.2

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2020.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)

[✓] VS Code (version 1.60.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.27.0

[✓] Connected device (3 available)
    • iPhone 13 (mobile) • C0486835-91E7-4837-87E6-18E8C53F623E • ios            • com.apple.CoreSimulator.SimRuntime.iOS-15-0 (simulator)
    • macOS (desktop)    • macos                                • darwin-arm64   • macOS 11.6 20G165 darwin-arm
    • Chrome (web)       • chrome                               • web-javascript • Google Chrome 96.0.4664.93

• No issues found!

I noticed that almost no pods header are copied to build/ios/Debug-iphonesimulator that's why the module cannot be find. But I don't know why these files are not copied.
I downgraded to Flutter 2.5.3 and I can build and run this app on an iOS simulator, but it doesn't work with Flutter 2.8.0 or with the master channel.
I know this is not much, let me know how I can provide more information.

Check your dependencies some packages haven't been upgraded to flutter 2.8 and are causing app to break. Example: google_sign_in is causing iOS device to break.

See if this helps: https://github.com/flutter/flutter/issues/94914#issuecomment-992898782 – it sounds like the same problem.

Hi @letsar, can you provide the following information?

ios/Podfile
pubspec.yaml & pubspec.lock
ios/Runner.xcodeproj/project.pbxproj
and flutter run -v

Thank you

Hi @danagbemava-nc, I'll provide you what I can:

ios/Podfile
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', {
  'Debug' => :debug,
  'Profile' => :release,
  'Release' => :release,
}

def flutter_root
  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
  unless File.exist?(generated_xcode_build_settings_path)
    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
  end

  File.foreach(generated_xcode_build_settings_path) do |line|
    matches = line.match(/FLUTTER_ROOT\=(.*)/)
    return matches[1].strip if matches
  end
  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}.

Kindly update when you are able to.
I suspect this may share a root cause with #94914. But the full logs would help to determine that

Still not working :(

Hi @letsar, there's a cherry-pick request for this in https://github.com/flutter/flutter/issues/94914.
It is being evaluated, kindly follow up there for more information.
Closing based on https://github.com/flutter/flutter/issues/95197#issuecomment-994499098.
Thank you


large polygon intersection performance issues

issue: given a small set of polygons (the whole db is 5mb) in tile38, checking for intersection of another polygon takes ~700ms alone, and more than 1 minute when queries are running concurrently
data: appendonly.aof.zip
save this as test.sh:
tile38-cli 'INTERSECTS boundaries IDS OBJECT {"coordinates":[[[[-122.647034001118,47.0899370579489],[-122.647031736625,47.0892849802177],[-122.647028649253,47.0883237290569],[-122.647028239162,47.0883119209585],[-122.647027084432,47.088300135343],[-122.647025186863,47.0882883937944],[-122.64702255095,47.0882767196949],[-122.647019134425,47.0882649880388],[-122.647014972363,47.088253368798],[-122.647010071058,47.0882418853548],[-122.647004506053,47.0882306887953],[-122.647436424352,47.0881232108176],[-122.648094505957,47.0879593453475],[-122.651042646401,47.0872252116743],[-122.651507205593,47.0871095300808],[-122.651510831659,47.0871086280608],[-122.651695829399,47.0870625548931],[-122.651699432083,47.087061658269],[-122.653838766346,47.0865288720099],[-122.653855029686,47.0865245462708],[-122.653859695369,47.0865232251668],[-122.653876392182,47.0865194318264],[-122.653951140233,47.0865007672966],[-122.653964785646,47.0865082037906],[-122.653978910398,47.0865152769585],[-122.653993471322,47.0865219229485],[-122.654008444134,47.0865281282706],[-122.65402379826,47.086533882133],[-122.654039504919,47.0865391719453],[-122.654055535335,47.0865439896135],[-122.65407185803,47.0865483261444],[-122.654088442428,47.0865521707461],[-122.654105255253,47.0865555180228],[-122.654122266829,47.0865583607798],[-122.654139442981,47.0865606954198],[-122.654156753132,47.086562513849],[-122.654174162208,47.0865638169666],[-122.654191637834,47.0865645993768],[-122.654209146735,47.0865648601802],[-122.654226655636,47.0865645993768],[-122.654244132161,47.0865638169666],[-122.654261541237,47.086562513849],[-122.654278851388,47.0865606954198],[-122.65429602664,47.0865583607798],[-122.654313039115,47.0865555180228],[-122.654329851941,47.0865521707461],[-122.654346549654,47.0865482982654],[-122.657664019179,47.0857219571027],[-122.657741724201,47.0857025991957],[-122.657854724016,47.0856746851387],[-122.657966732778,47.0856474779488],[-122.65803182391,47.0856319349659],[-122.65803267197,47.0856317317191],[-122.658079097672,47.0856206466756],[-122.658191866362,47.0855941832251],[-122.658304603575,47.085568187422],[-122.658347994065,47.0855583569327],[-122.658348980621,47.0855581348001],[-122.658417847106,47.0855425369585],[-122.65853111402,47.0855173388542],[-122.658644311686,47.0854926155918],[-122.658758007576,47.0854682421657],[-122.658872053303,47.0854442518508],[-122.658986062157,47.0854207255861],[-122.659100088998,47.0853976516804],[-122.659160776149,47.0853856151541],[-122.659214622157,47.0853749312082],[-122.659329085169,47.0853526792828],[-122.659443847655,47.0853308212605],[-122.659560685777,47.0853090315866],[-122.659576569603,47.0853058282015],[-122.659592246585,47.0853021787526],[-122.65960856928,47.085297843121],[-122.659624598796,47.0852930245535],[-122.659640306355,47.0852877347412],[-122.659655659581,47.0852819808788],[-122.659670632394,47.0852757755566],[-122.659685193317,47.0852691295667],[-122.65969931627,47.0852620572982],[-122.659712974274,47.0852545686435],[-122.659726141248,47.0852466815891],[-122.659738792012,47.0852384096249],[-122.659750902282,47.0852297698381],[-122.659762448678,47.0852207757183],[-122.659773409615,47.0852114470507],[-122.659783766208,47.0852018000231],[-122.659793495074,47.0851918544206],[-122.659802580924,47.0851816282296],[-122.659811003975,47.0851711412352],[-122.659818749835,47.0851604123232],[-122.659825803218,47.0851494630773],[-122.659832149734,47.0851383150812],[-122.659837778591,47.0851269881201],[-122.659841996411,47.0851171072687],[-122.65988967307,47.0851087903384],[-122.659957579978,47.0850973248817],[-122.660056008078,47.085080701813],[-122.660222923149,47.0850534379658],[-122.660270534158,47.0850459232308],[-122.660271493734,47.0850457721447],[-122.660389709617,47.0850271139103],[-122.66055720565,47.0850016037411],[-122.66072471967,47.0849770009879],[-122.660825718032,47.0849627251497],[-122.660893990965,47.0849530709276],[-122.669778133554,47.0837207398204],[-122.671117141343,47.0835350046368],[-122.673305503046,47.0832314537686],[-122.674185592191,47.0831093761968],[-122.674196718604,47.0831077196456],[-122.67420777307,47.0831058490558],[-122.674544648317,47.0830453480644],[-122.67455840075,47.0830426986616],[-122.674572005693,47.0830397174091],[-122.674664048607,47.0830183009539],[-122.674921267303,47.0830183576112],[-122.674845365421,47.0864544378221],[-122.674716444009,47.0898687490436],[-122.669964633161,47.0897440148744],[-122.669949201694,47.0897438116277],[-122.669931691894,47.0897440733304],[-122.669914215369,47.0897448548412],[-122.669896805393,47.0897461579589],[-122.669879494343,47.0897479772874],[-122.669862316393,47.0897503110281],[-122.669845303918,47.0897531537851],[-122.669828489293,47.0897565010617],[-122.669811904895,47.0897603456635],[-122.669795581301,47.0897646821944],[-122.669779549986,47.0897694998626],[-122.669763842427,47.0897747896748],[-122.669748485604,47.0897805444366],[-122.669733512791,47.0897867488594],[-122.669718950969,47.0897933948493],[-122.669704826217,47.0898004680172],[-122.669691167313,47.0898079548733],[-122.66967799944,47.0898158419276],[-122.669665346878,47.0898241138918],[-122.669653235708,47.089832754578],[-122.669641688413,47.0898417477985],[-122.669630724778,47.0898510773654],[-122.669620368185,47.089860724393],[-122.66961063842,47.0898706699955],[-122.66960155167,47.0898808961865],[-122.669593127721,47.0898913831808],[-122.669585380961,47.0899021120928],[-122.669578326678,47.0899130613388],[-122.669571979263,47.0899242093349],[-122.669566348608,47.089935536296],[-122.669561448202,47.0899470197392],[-122.669557285241,47.0899586389801],[-122.669553867817,47.0899703706361],[-122.669551239998,47.0899820042661],[-122.669549346025,47.0899937044459],[-122.669548188598,47.0900054477933],[-122.669547771313,47.0900172154222],[-122.669519026282,47.0970367468485],[-122.665107413676,47.0970278696405],[-122.665082025815,47.0936323893234],[-122.665081578852,47.0936207799751],[-122.66508041333,47.0936091949085],[-122.665078529251,47.093597654808],[-122.665075932009,47.09358617766],[-122.665072513686,47.0935744460039],[-122.665068350724,47.0935628267631],[-122.665063450318,47.0935513433199],[-122.665057818763,47.0935400163587],[-122.665051471348,47.0935288683626],[-122.665044417066,47.0935179191167],[-122.665036670306,47.0935071902047],[-122.665028244558,47.0934967032103],[-122.665019157808,47.0934864770193],[-122.665009427143,47.0934765314169],[-122.664999069651,47.0934668843893],[-122.664988106016,47.0934575548224],[-122.664976556923,47.0934485616019],[-122.664964444853,47.0934399209157],[-122.664951792291,47.0934316489515],[-122.664938624418,47.0934237618972],[-122.664924962817,47.0934162750411],[-122.664910838065,47.0934092018732],[-122.664896274443,47.0934025558833],[-122.664881299832,47.0933963505612],[-122.664865943908,47.0933905966987],[-122.664850234551,47.0933853068864],[-122.664834202337,47.0933804892182],[-122.664817877843,47.0933761535867],[-122.664801291646,47.0933723089849],[-122.664784476123,47.093368960809],[-122.664767461849,47.093366118052],[-122.664750282999,47.0933637852106],[-122.664733944116,47.0933620531163],[-122.664717514402,47.0933607832736],[-122.664701020835,47.0933599747831],[-122.664684493095,47.0933596321414],[-122.654295936708,47.0932898429519],[-122.654293949206,47.0932898330594],[-122.647016399587,47.0932649766974],[-122.647034000219,47.0899386983123],[-122.647034002018,47.0899377063601],[-122.647034001118,47.0899370579489]]]],"type":"MultiPolygon"}'

running one query:
$ sh test.sh
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"652.940459ms"}

running 1000 queries in parallel batches of 100 (write the last command to test.sh):
$ parallel -N0 -j100 sh test.sh ::: {1..1000}

{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"3.082833808s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"2.558584174s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"2.80975919s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"1.976939971s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.018884319s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.576470115s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.521234967s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.149337203s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.310545036s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"4.836360865s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"5.399522789s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"5.182009147s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"6.087325189s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"6.015644608s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"6.500364239s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"8.778744214s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"8.917659266s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"9.053223614s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"9.968221763s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"10.444428779s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"11.416430736s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"11.703691015s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"12.187361445s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"12.832945691s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"13.010095585s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"13.904847537s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"13.640739004s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.42547465s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.034711299s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.616634312s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.249860353s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.833183001s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.547409747s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.882957865s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.613486954s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.153866396s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.808721787s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.961588382s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.403397251s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.521312052s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"18.195681938s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.266105593s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"13.2929794s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.666107916s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.763498471s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.610196427s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.302484908s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.376121672s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"18.122655003s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.977419248s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.351658579s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"18.115921466s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.51835791s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.519010885s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.481488974s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.914119911s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"13.613081773s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.812483658s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.011833662s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.191907725s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.556651284s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.580683646s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.279573789s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"20.101686843s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.672965083s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"19.273339291s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.740515613s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.147723387s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"18.44793932s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"19.072725036s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.43820253s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.296930539s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.104731226s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.081945215s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.74538216s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.631052185s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"14.310308587s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.372074139s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.535906458s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"20.576981837s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"16.262812826s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"21.034093946s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"19.723692497s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"17.616777802s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"20.070543891s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"19.525775617s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"19.71609525s"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"20.017285427s"}

interestingly enough the time it takes as this runs actually grows over time, so the first ones in took ~3 sec and halfway through it grows to 20s and sits there for the rest of the test.
the concurrency vs max time looks like this:
100 = 20s
200 = 30s
300 = 1m 30s

Hi contra,
The attached aof file is failing to load. I think it actually belongs to a Redis instance, not Tile38.

I think the slowness is because of the size of the shapes. Both the number of points and the geographic size.
The most basic algorithm that Tile38 uses for detecting intersecting shapes is:

Reduce the query shape to it's minimum bounding rectangle.
Search for the collection r-tree for intersecting rectangles.
Raycast the actual shapes against one another.

A large minimum bounding rectangle will cause a lot of hits from the r-tree.
A lot of points in the shape will complicate the raycasting process.
The USA shape alone is over 2MB and nearly half the size of the database.
When I load it on a map:
https://gist.github.com/tidwall/e665429e2ffe7f4716bd6d994030fdc7
I can see that it includes all states and territories. It's MBR encompasses more than half the world. And it has a lot of points.
A couple of idea to reduce query time:
Simplify the shapes
When I used the simplify-geojson tool on the USA geometry the ./test.sh went from 550ms to 130ms.
cat usa.geojson | simplify-geojson -t 0.01

For some reason the simplify-geojson requires Feature types, so I had to wrap the USA MultiPolygon in a Feature
Break up geographically large MultiPolygons into separate geometries
This will ensure that the each polygon will get its own rectangle in the r-tree. So the lower 48, Alaska, and various islands won't share the same rect.
Perhaps there're other tricks that could help. These are the two ideas that came to mind.

@tidwall We're using it to legally determine where things are in countries/cities/etc. so simplifying would have things pop up in the wrong places sometimes. The country shapes are already simplified to maritime borders which removes most of the complexity (normal borders are 12MB for the USA) so it's about as small as it can get.
Is it possible that tile38 could have an optimization where it breaks down multipolygons into separate bounding boxes, making step 2 more selective? I could see this being really useful for anyone working with complex geometries.

Perhaps a good first-step optimization would be to change the memory layout of the MultiPolygon.
Right now the points are stored as a [][][]Position. But if we instead store it as []Polygon we may be able take advantage of the of bbox separation that comes built-in with all objects. It'll take up a little more memory but should help complex geometries.

I just pushed an update to master using the separate bounding box idea.
$ sh test.sh
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"15.426825ms"}

$ parallel -N0 -j100 sh test.sh ::: {1..1000}

{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.425412ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.688069ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"27.109546ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.389352ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.811838ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.094466ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.594458ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"26.315128ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"26.35796ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.923305ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"28.456937ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"29.889519ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.781063ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"28.619942ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"27.134521ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.879232ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"27.036367ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"26.341822ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.794387ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.371693ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"38.207006ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.279381ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.333678ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.098771ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"29.584999ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.64945ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.657102ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.131046ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"34.403827ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.859966ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.859089ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.228497ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"30.953587ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.010212ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.113372ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.276619ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.520024ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.400704ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.317942ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.750889ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.034372ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.66489ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"21.882846ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.24911ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.808271ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.392985ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.861074ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"27.543324ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.259123ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.595463ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.943864ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"27.445268ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.009951ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"22.374159ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"28.236124ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"25.631607ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"39.850402ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"31.925068ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"38.800466ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"33.962937ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"33.975492ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"23.317421ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.505824ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.182655ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"39.367853ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"26.772535ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.680694ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"34.393907ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"24.310378ms"}
{"ok":true,"ids":["usa","earth"],"count":2,"cursor":0,"elapsed":"26.048343ms"}
...

Stays steady and finishes in about 12 seconds.

@tidwall Wow - that is quite the improvement, almost a 2000x reduction. Easily makes tile38 the fastest for doing multipolygon intersections. Possible to get this out in a release? I can give it a solid test on some staging systems today and report back.

I can add it to the next patch release. I'll wait until you finish your tests on staging. I also want to add a some more unit tests.

@tidwall Still have a significant number of requests that are spending ~22s on tile38. You can replace test.sh with this:
./tile38-cli 'INTERSECTS boundaries IDS OBJECT {"coordinates":[[[[-75.1264107875263, 39.946586232976635], [-75.12670313192828, 39.945590164921335], [-75.12700499439612, 39.94456163518478], [-75.12721954350499, 39.944575015700075], [-75.12692989481853, 39.945561938336546], [-75.1266174628429, 39.946626461326616], [-75.1264107875263, 39.946586232976635]]]],"type":"MultiPolygon"}'

Having a hard time reproducing 22s locally but I can at least get it up to a second or two per call, so I can see how under high concurrency it would start to grow like the original ticket. We're doing ~8k requests per minute. Based on traces this happens with all input geometry types.

I'm not seeing the high number of seconds locally either.
With your latest command:
$ time parallel -N0 -j100 sh test.sh ::: {1..1000}

real	0m7.768s
user	0m9.539s
sys	0m13.624s

I could be off base here and without knowing anything about your staging server; I'm wondering if there isn't something else causing the bottleneck on the staging server, such as network ulimit, cpu, etc.
There's the dev command SLEEP seconds for debugging purposes. This puts the server to sleep and idly blocks other incoming connections for N seconds. I just pushed an update moments ago that allows for sub-seconds, so you'll need to pull the latest
I started the server with the --dev switch.
./tile38-server --dev

Updated test.sh to block for 1ms per connection.
./tile38-cli 'SLEEP 0.001'

And ran your parallel command.
$ time parallel -N0 -j100 sh test.sh ::: {1..1000}

real	0m6.424s
user	0m7.695s
sys	0m12.076s

On my system the INTERSECTS script is not much slower than SLEEP script. Which makes me think that the INTERSECTS command is preforming well.
I'm curious if the staging server is getting low numbers with SLEEP but high with INTERSECTS. If they are both similarly high then it might be the network, otherwise it's possibly due to cpu or slow query on Tile38.

One more thing, Tile38 likes to run on a multicore system. It does work fine single-threaded, but you'll see occasional spikes in command duration.
To run Tile38 single-threaded:
GOMAXPROCS=1 go run cmd/tile38-server/main.go

Then run the script locally and you'll probably see a few spikes, maybe even in the seconds.

Oh and one more thing... 🤪
The tile38-cli command isn't the most efficient way to communicate with the server. For low frequency it's fine, but if you executing lots of commands then I recommend use a Redis client with connection pooling. Tile38 (like Redis) is optimized to handle lots of commands over fewer connections.
I use Redigo.

@tidwall We're just running the repo dockerfile on a kube cluster, so only getting 1 core. That would explain the huge gap between local (8 cores) and staging (1 core). Is there a point of diminishing returns for # of cpus given to tile38?
We're using https://github.com/phulst/node-tile38 to run queries.

Good question. I'll try to get an answer to you, but first I want to look into why the single threaded blips are so big. Using GOMAXPROCS=1, my computer shows all is running smoothly at 25ms, then does a quick jump to 700ms  and back down again, at one second intervals.
Something doesn't smell right.

@tidwall Adding more cores did help somewhat - went from 1 to 4, avg time dropped from ~8s to ~3s (ignore the missing chunk in the middle).

That's good info. My testing is showing, at least for your multipolygon query, that 3+ cores can handle the load pretty smoothly.
But something else might help is minimizing the number of concurrent connections. I think that the -j100 flag starts up 100 connections at the same time, and then Tile38 needs to fire up 100 goroutines and do a lot of context switching. With 4+ cores it doesn't seem to matter much, but with less cores I found that lowering the -j100 down to something the server can manage smoothed out the load.
For example, I ran a single-threaded server:
GOMAXPROCS=1 ./tile38-server

And then...
time parallel -N0 -j4 sh test.sh ::: {1..1000}

real	0m14.193s
user	0m7.567s
sys	0m11.089s

Most responses where around 12ms-15ms with the max occasionally jumping to 45ms.
But with...
time parallel -N0 -j100 sh test.sh ::: {1..1000}

real	0m15.224s
user	0m8.630s
sys	0m13.630s

It was actually a little slower, with min around 12ms-15ms and the max shooting over a 1 second.
So if you do go with less cores on the server, then try to keep your client connections not much more than 2-4x that number. I think that this will ensure a more constant response time.
Also use connection pooling. :)

@tidwall Yeah, my next step is forking node-tile38 and adding connection pooling. Right now it uses stock node-redis to talk to tile38 which pipelines everything over 1 connection. I'll post once I've done that with the results.

Tile38 does handle pipelining very well. This is where the a single packet contains multiple commands. You should see some big boosts when you use it for small commands. You'll also want to have some type of connection pooling that reuses existing connections in conjunction with pipelining.
You probably won't see a boost with pipelining for big commands (over 4096 bytes) since the routers will often break up the packets before they reach the server.

I pushed a minor release that includes this a fix to this issue.

I think this is resolved so I'm going to close this - we're seeing some slowdowns for this case but I think they are unrelated.


Error download eggnog.db

Hi. I am trying to download  eggnog database, but I got the following error:
aws s3 cp  s3://fh-ctr-public-reference-data/tool_specific_data/geneshot/2020-06-17-eggNOG-v5.0/eggnog.db .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
Is there another way to download the database?
Thanks!

Ah, my apologies -- that file is only accessible within the Fred Hutch network.
For all other users, we've made a workflow which will download and configure the needed databases. Take a look and let me know if you have any questions.
https://github.com/Golob-Minot/geneshot/blob/master/make_reference_databases.nf


chore: update releases.json

1. Why is this change necessary?
it is out of date
2. What does this change do, exactly?
3. Describe each step to reproduce the issue or behaviour.
4. Please link to the relevant issues (if any).
5. Checklist

[ ] I have rebased my changes to remove merge conflicts
[ ] I have written tests and verified that they fail without my change
[ ] I have created a changelog file with all necessary information about my changes
[ ] I have written or adjusted the documentation according to my changes
[ ] This change has comments for package types, values, functions, and non-obvious lines of code
[ ] I have read the contribution requirements and fulfill them.

Everything after <IP_ADDRESS> is also missing

Everything after <IP_ADDRESS> is also missing

Patch releases are not listed in that file.

@keulinho the update of releases.json should be part of the tasks for each release, shouldn't it?


Add Makefile with cmd for previewing rendered specs.

This (or something like it) might be a nice tool for authors/reviewers of specs.
Adds a Makefile with a preview command that grabs the latest scientific-python.org site, embeds the local specs in it, and serves it locally. This is a nice tool to have to be able to preview changes to the specs locally prior to opening a PR.
This implementation isn't necessarily the best, but I think something along these lines would be nice to include in the repo.

This is probably fine to merge as is.  But before merging I want to think about it a bit and discuss it with Stefan.  (I am wondering how hard it would be to set up a simpler way to render these without Hugo and the rest of the site.  My initial thought is that would be a huge pain and not worth the effort, but I want to think about it more.)

This is probably fine to merge as is.  But before merging I want to think about it a bit and discuss it with Stefan.  (I am wondering how hard it would be to set up a simpler way to render these without Hugo and the rest of the site.  My initial thought is that would be a huge pain and not worth the effort, but I want to think about it more.)

Agreed - this certainly isn't very efficient and probably doesn't work on all platforms (e.g. windows). I think the end goal is useful though, and having it run with hugo server is nice because then you get the live updating in the browser when you edit the spec files.

Agreed - this certainly isn't very efficient and probably doesn't work on all platforms (e.g. windows). I think the end goal is useful though, and having it run with hugo server is nice because then you get the live updating in the browser when you edit the spec files.

Thanks for this, Ross!


How launch fedoraware ?

i have the case but i dont understand how to inject

https://github.com/Fedoraware/Fedoraloader/releases/latest


Compiled Elm code is not friendly to JS modules

Current JS best practices have abandoned the 1990s-era practice of slapping another <script> tag on the page, expecting that script to mutate the global window object, and moving on. Today, the best practice is to use a module system (e.g. RequireJS, AMD, ES6 modules) and a build tool (e.g. browserify, webpack) to combine them.
At the moment, compiled Elm code supports only the 90s approach: add Elm to the global object and move on. As such, there is no way to (for example) require an Elm module from within Node, short of an extra wrapping step. The best practice to avoid this is to add a snippet of boilerplate which detects the JS module environment and proceeds appropriately. Here is an example from a popular JS library.
This would enable the following, in either Node or in the browser (when using something like Browserify):
var Elm = require("scripts/elm.js");

...as opposed to the current "add it to the page and expect the Global to be there."
Concretely, this would mean adding the following boilerplate (adapted from the aforementioned Q snippet) to compiled Elm output:
 (function (definition) {
    "use strict";

    // This file will function properly as a <script> tag, or a module
    // using CommonJS and NodeJS or RequireJS module formats.  In
    // Common/Node/RequireJS, the module exports the Elm API and when
    // executed as a simple <script>, it creates an Elm global instead.

    // Montage Require
    if (typeof bootstrap === "function") {
        bootstrap("promise", definition);

    // CommonJS
    } else if (typeof exports === "object" && typeof module === "object") {
        module.exports = definition();

    // RequireJS
    } else if (typeof define === "function" && define.amd) {
        define(definition);

    // SES (Secure EcmaScript)
    } else if (typeof ses !== "undefined") {
        if (!ses.ok()) {
            return;
        } else {
            ses.makeElm = definition;
        }

    // <script>
    } else if (typeof window !== "undefined" || typeof self !== "undefined") {
        // Prefer window over self for add-on scripts. Use self for
        // non-windowed contexts.
        var global = typeof window !== "undefined" ? window : self;

        // Get the `window` object, save the previous Elm global
        // and initialize Elm as a global.
        var previousElm = global.Elm;
        global.Elm = definition();

        // Add a noConflict function so Elm can be removed from the
        // global namespace.
        global.Elm.noConflict = function () {
            global.Elm = previousElm;
            return this;
        };

    } else {
        throw new Error("This environment was not anticipated by Elm. Please file a bug at https://github.com/elm-lang/elm-compiler/issues");
    }

})(function () {
  var Elm = {};

  // Current emitted code goes here...

  return Elm;
});

This might seem like a lot, but:

Minified, it adds about 0.6 KB. Considering this is the best practice by popular JS libraries, that seems to be a consensus acceptable overhead.
It now means your Elm code "just works" in best-practice JS, in both the browser and on Node.
When transitioning from an existing JS codebase to Elm, you can now introduce multiple Elm modules to the same page, piecemeal, by calling require multiple times. Each will be namespaced separately with no conflicts.

I think that this would be a very valuable approach to adopt.

Seems reasonable. Can this be done as part of the larger codegen overhaul?

Wow. I don't know what SES is, or why we need the noConflict function.
I have seen a much simpler version used by Bacon.js which handles Node, RequireJS and script tag with just a few lines:
https://github.com/baconjs/bacon.js/blob/master/dist/Bacon.js#L3424

noConflict is definitely not necessary. (In case it wasn't clear, it lets you includevia a <script> on a page that is already using a global called Elm without overriding that global.)
A trimmed-down version like Bacon seems fine. I'd say the main thing is that Node, CommonJS, AMD, and <script> all "just work."

Can we close this down and open an issue on elm-make just outlining the smaller recommendation and linking here. When Joey and I get to this, we will use that snippet.