Identify subject for "view all X" items accessed via subject pages

When you browse to a Subject (Example: Engineering) and click on the "View All Related Category" button, it takes you to a browsable A-Z list limited to that subject. Currently, the subject is not identified on the that page.
It would be helpful to identify the subject at the top of the page. I would like to do that as a button. When the "X" on the yellow subject button is clicked, remove the blue area and show an unfiltered view of the standard Browse UI.
This capability should be applied to any type of content associated with the Subject that is too long to display all at once within the page (works, people).

Long subject example:

Right now clicking on the alphabet will re-run the search. The original search must be kept in place. Same for grants and people.

@sbagg - There are a number of  issues here:

For the rp-page-works.js page, we need to know if we have a subject query.  If we do, then we need to add the bar on the top of the page, that identifies the subject term.

If they click on the x, then that subject term is removed; eg https://rc.experts.ucdavis.edu/works/articles?az=d&subject=concept/FoR/09 => https://rc.experts.ucdavis.edu/works/articles/`

Right now, when users click the works type (eg articles), then the subject carries through.  This needs to work for the alphabet as well; eg
https://rc.experts.ucdavis.edu/works/articles?az=d becomes https://rc.experts.ucdavis.edu/works/articles?az=d&subject=concept/FoR/09

This works similarly for the people page.  However,
-though the subject term seems to be extended into the query, the query is not properly responding.

The counts do not include the search term

I don't see any changes--the list of researchers within a subject still cuts off at 10, without any options to view more.

The researcher problem is fixed in https://github.com/ucd-library/rp-ucd-client/issues/296.  @qjhart The alphabetic problem is fixed, but now segmenting the works into, for example, articles and conference papers and a letter of the alphabet together doesn't work. Try https://dev.experts.library.ucdavis.edu/works/articles?subject=concept%2FFoR%2F0913, switch to conference papers and click on "M".  I am OK with opening a separate issue for another release if this would take too much time to fix.

Functionally it appears to be working correctly.
Visually, I desire two changes:

I'd prefer about 5px more space between the X icon and the subject text so there's better visual separation. Right now it squishes into it almost like it is part of the word.
There's also extra white space above the blue block that shouldn't be there and should be removed (see search result for a correct example to compare to the "view all" subject results with extra white space below)


etcd backend - routes stop working when adding second one

Hello,
I'm using traefik 1.0.2, with etcd backend. I have the following directory structure:
[root@master ~]# etcdctl ls --recursive /traefik/backends/plamer
/traefik/backends/plamer/servers
/traefik/backends/plamer/servers/nginx
/traefik/backends/plamer/servers/nginx/url
/traefik/backends/plamer/servers/nginx/weight
/traefik/backends/plamer/servers/apache
/traefik/backends/plamer/servers/apache/url
/traefik/backends/plamer/servers/apache/weight

[root@master ~]# etcdctl ls --recursive /traefik/frontends/plamer
/traefik/frontends/plamer/routes
/traefik/frontends/plamer/routes/nginx
/traefik/frontends/plamer/routes/nginx/rule
/traefik/frontends/plamer/routes/apache
/traefik/frontends/plamer/routes/apache/rule
/traefik/frontends/plamer/backend

[root@master ~]# etcdctl get /traefik/backends/plamer/servers/nginx/url
http://<IP_ADDRESS>:80

[root@master ~]# etcdctl get /traefik/backends/plamer/servers/apache/url
http://<IP_ADDRESS>:80

[root@master ~]# etcdctl get /traefik/frontends/plamer/routes/nginx/rule
Host:nginx1.plamer.net

[root@master ~]# etcdctl get /traefik/frontends/plamer/routes/apache/rule
Host:apache1.plamer.net

[root@master ~]# etcdctl get /traefik/frontends/plamer/backend
plamer

Everything works fine until I add the second backend/frontend rule - then it starts returning 404 on both - "404 page not found".
View from the WebUI:
https://i.imgur.com/qT8ieK6.png
https://i.imgur.com/exes9iI.png
Any idea why this is not working? Is it a bug, or I'm trying to use traefik in a wrong way? It would be wasteful to need new frontend declared for every user's service (plamer in my example).

Yep, that's not how it is supposed to work ;) In a frontend, rules are linked with a logical AND. In your case, you should make one frontend with rule Host:nginx1.plamer.net and a second one with Host:apache1.plamer.net.

So, just to be clear it should look something like this:
[root@master ~]# etcdctl ls --recursive /traefik
/traefik/backends
/traefik/backends/rincewind-nginx
/traefik/backends/rincewind-nginx/servers
/traefik/backends/rincewind-nginx/servers/nginx
/traefik/backends/rincewind-nginx/servers/nginx/url
  - http://<IP_ADDRESS>:80
/traefik/backends/rincewind-nginx/servers/nginx/weight
  - 1
/traefik/backends/rincewind-apache
/traefik/backends/rincewind-apache/servers
/traefik/backends/rincewind-apache/servers/apache
/traefik/backends/rincewind-apache/servers/apache/url
  - http://<IP_ADDRESS>:80
/traefik/backends/rincewind-apache/servers/apache/weight
  - 1

/traefik/frontends
/traefik/frontends/rincewind-nginx
/traefik/frontends/rincewind-nginx/routes
/traefik/frontends/rincewind-nginx/routes/nginx
/traefik/frontends/rincewind-nginx/routes/nginx/rule
  - Host:nginx.plamer.net
/traefik/frontends/rincewind-nginx/backend
  - rincewind-nginx
/traefik/frontends/rincewind-apache
/traefik/frontends/rincewind-apache/routes
/traefik/frontends/rincewind-apache/routes/apache
/traefik/frontends/rincewind-apache/routes/apache/rule
  - Host:apache.plamer.net
/traefik/frontends/rincewind-apache/backend
  - rincewind-apache

Am I right? Or I'm missing something again :) And just curious.. why the rules have to be with AND? :)

I also ran into the same issue. Why call it routes if it can handle only one route? Would it make more sense to have:
/traefik/frontends/foo/route 'Host:foo.io'

Instead of
/traefik/frontends/foo/routes/test_1/rule 'Host:foo.io'

Especially since the wrong assumption here will make both routes inoperable (in our case this led to a few minute downtime in production..).

I'll close this issue, because I think the question is answered, but feel free to continue the conversation.


Make ESP_IDF standalone/offline capabel (IDFGH-14240)

Is your feature request related to a problem?
Problem: ESP-IDF v5.3.2 pulled via git seems to reel in much more component's subfolders than the also provided .tar archive. Using the .tar archive instead of the git version (with any working project or example taken from the examples folder) results in an error, like:
[...]
idf.py set-target esp32
...
CMake Error at
/usr/local/share/esp-idf-5.3.2/components/mqtt/CMakeLists.txt:3 (message):
Missing esp-mqtt submodule.  Please run 'git submodule update --init
--recursive' in ESP-IDF directory to fix this.

Call Stack (most recent call first):
/usr/local/share/esp-idf-5.3.2/tools/cmake/scripts/component_get_requirements.cmake:107 (include)
/usr/local/share/esp-idf-5.3.2/tools/cmake/scripts/component_get_requirements.cmake:127 (__component_get_requirements)

Call Stack (most recent call first):
/usr/local/share/esp-idf-5.3.2/tools/cmake/build.cmake:586 (__component_get_requirements)
/usr/local/share/esp-idf-5.3.2/tools/cmake/project.cmake:710 (idf_build_process)
CMakeLists.txt:9 (project)
Describe the solution you'd like.
Have a fully working .tar archive with all components necessary available.
Describe alternatives you've considered.
No response
Additional context.
No response

Hi @SB211,
tar.gz archives attached to Github Releases are automatically generated by Github. Unfortunately, Github doesn't offer an option to include submodules in those archives. However, we also upload a .zip archive for each release which has submodules included. You can find it in the assets list for each release.
For example, for release v5.3.2 the archive is https://github.com/espressif/esp-idf/releases/download/v5.3.2/esp-idf-v5.3.2.zip.


Implement PSF model with a physical layer

To address various issues in the modelling like centroid problem, chip misalignments, and including a prior a new PSF model class needs to be added to WaveDiff >v2.0.x.
It's implementation is illustrated in the far left in this image:

The PSF model class is in version 1.0 but requires refactoring to be included in v2.0.x

Hi @tobias-liaudat, I need a reminder about the implementation on padding the Zernikes. I see there is already a method for padding L321, which is implemented in the method compute_zernikes at L484.

Note, I am still making changes to psf_model_physical_polychromatic.py module as I begin to write unit tests and think about interfaces with the other parts of the pipeline.


Binance GetTickersAsync Slow response on every few calls

I've noticed that there is a big delay on every 3rd or 4th GetTickersAsync call.
I've wrote a simple app to measure the response times with Stopwatch.
using System.Diagnostics;
using ExchangeSharp;

var binanceApi = await ExchangeAPI.GetExchangeAPIAsync<ExchangeBinanceAPI>();
var sw = new Stopwatch();
var retriesCount = 1;

while (true)
{
    sw.Start();
    var tickerData = await binanceApi.GetTickersAsync();
    sw.Stop();
    Console.WriteLine($"Retry #: {retriesCount} | Ticker data retrieved for {sw.Elapsed.TotalMilliseconds} ms");
    sw.Reset();
    retriesCount++;
    await Task.Delay(5000);
}

Output:
Retry #: 1 | Ticker data retrieved for 18014.2488 ms
Retry #: 2 | Ticker data retrieved for 0.0376 ms
Retry #: 3 | Ticker data retrieved for 0.0165 ms
Retry #: 4 | Ticker data retrieved for 8706.018 ms
Retry #: 5 | Ticker data retrieved for 0.0205 ms
Retry #: 6 | Ticker data retrieved for 0.0165 ms
Retry #: 7 | Ticker data retrieved for 0.0158 ms
Retry #: 8 | Ticker data retrieved for 19169.7104 ms
Retry #: 9 | Ticker data retrieved for 0.0233 ms
Retry #: 10 | Ticker data retrieved for 0.0302 ms
Retry #: 11 | Ticker data retrieved for 0.0229 ms
Retry #: 12 | Ticker data retrieved for 9606.9587 ms
Retry #: 13 | Ticker data retrieved for 0.0466 ms
Retry #: 14 | Ticker data retrieved for 0.021 ms
Retry #: 15 | Ticker data retrieved for 0.0193 ms
Retry #: 16 | Ticker data retrieved for 13773.2705 ms
Retry #: 17 | Ticker data retrieved for 0.0142 ms
Retry #: 18 | Ticker data retrieved for 0.014 ms
Retry #: 19 | Ticker data retrieved for 0.018 ms
Retry #: 20 | Ticker data retrieved for 15893.759 ms
Retry #: 21 | Ticker data retrieved for 0.0189 ms
Retry #: 22 | Ticker data retrieved for 0.0135 ms
Retry #: 23 | Ticker data retrieved for 0.0212 ms
Retry #: 24 | Ticker data retrieved for 12843.4538 ms
Retry #: 25 | Ticker data retrieved for 0.0338 ms
Retry #: 26 | Ticker data retrieved for 0.019 ms
Retry #: 27 | Ticker data retrieved for 0.0141 ms
Retry #: 28 | Ticker data retrieved for 11724.1011 ms
Retry #: 29 | Ticker data retrieved for 0.0183 ms
Retry #: 30 | Ticker data retrieved for 0.018 ms
Retry #: 31 | Ticker data retrieved for 0.0145 ms
Retry #: 32 | Ticker data retrieved for 14661.0153 ms
Retry #: 33 | Ticker data retrieved for 0.0227 ms
Retry #: 34 | Ticker data retrieved for 0.0292 ms
Retry #: 35 | Ticker data retrieved for 15086.7355 ms
Retry #: 36 | Ticker data retrieved for 0.0146 ms
Retry #: 37 | Ticker data retrieved for 0.0321 ms
Retry #: 38 | Ticker data retrieved for 11840.5882 ms
Retry #: 39 | Ticker data retrieved for 0.0119 ms
Retry #: 40 | Ticker data retrieved for 0.0119 ms
Retry #: 41 | Ticker data retrieved for 18851.1393 ms
Retry #: 42 | Ticker data retrieved for 0.0155 ms
Retry #: 43 | Ticker data retrieved for 0.0225 ms
Retry #: 44 | Ticker data retrieved for 0.0204 ms
Retry #: 45 | Ticker data retrieved for 11742.3238 ms
I am excluding rate limiting, because we are calling the method every 5 seconds.
Any ideas?
I've just noticed that the same thing applies for all other exchanges as well, but not with such high response times, so I guess it is something inherited.

Since the delay is so long (10+ secs), can you pause the debugger to see what internal method it is waiting on?

Are we caching the tickers?

I think so, not sure.

Calling GetTickersAsync on BinanceCOM also calls GetMarketSymbolsMetadataAsync multiple times. Not sure why we even need that, also not sure from where it is invoked.
Calling GetTickersAsync on BinanceUS also invokes GetMarketSymbolsMetadataAsync, but just a single time.
That seems odd, because they both share the same OnGetTickersAsync from BinanceGroupCommon class.
We don't have GetMarketSymbolsMetadataAsync invocation when calling GetTickersAsync on other exchanges (I've tested Poloniex, OKX and KuCoin).
Here is the output:
# BinanceCom

2024-02-16 19:31:31.0701|INFO|ExchangeSharp.Logger|Executing OnGetTickerAsync
2024-02-16 19:31:31.1081|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.com/api/v3/ticker/24hr
2024-02-16 19:31:31.6712|INFO|ExchangeSharp.Logger|Executing CacheMethod | Args: GetMarketSymbolsMetadataAsync
2024-02-16 19:31:31.6712|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.com/api/v3/exchangeInfo
2024-02-16 19:31:33.8141|INFO|ExchangeSharp.Logger|Executing CacheMethod | Args: GetMarketSymbolsMetadataAsync
2024-02-16 19:31:33.8141|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.com/api/v3/exchangeInfo
2024-02-16 19:31:36.6626|INFO|ExchangeSharp.Logger|Executing CacheMethod | Args: GetMarketSymbolsMetadataAsync
2024-02-16 19:31:36.6626|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.com/api/v3/exchangeInfo
2024-02-16 19:31:39.5941|INFO|ExchangeSharp.Logger|Executing CacheMethod | Args: GetMarketSymbolsMetadataAsync
2024-02-16 19:31:39.5941|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.com/api/v3/exchangeInfo
Retry #: 1 | Ticker data retrieved for 11200.0951 ms

----------------------------

# BinanceUS

2024-02-16 19:32:16.6104|INFO|ExchangeSharp.Logger|Executing OnGetTickerAsync
2024-02-16 19:32:16.6453|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.us/api/v3/ticker/24hr
2024-02-16 19:32:17.6935|INFO|ExchangeSharp.Logger|Executing CacheMethod | Args: GetMarketSymbolsMetadataAsync
2024-02-16 19:32:17.6981|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.binance.us/api/v3/exchangeInfo
Retry #: 1 | Ticker data retrieved for 2350.1533 ms

----------------------------

# Poloniex

2024-02-16 19:32:56.6738|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://api.poloniex.com/markets/ticker24h
Retry #: 1 | Ticker data retrieved for 820.1662 ms

----------------------------

# OKX

2024-02-16 19:39:50.2474|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://www.okx.com/api/v5/market/tickers?instType=SPOT
2024-02-16 19:39:50.7454|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://www.okx.com/api/v5/market/tickers?instType=FUTURES
2024-02-16 19:39:50.9973|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://www.okx.com/api/v5/market/tickers?instType=SWAP
Retry #: 1 | Ticker data retrieved for 1207.2516 ms

----------------------------

# KuCoin

2024-02-16 19:40:35.4317|INFO|ExchangeSharp.Logger|Executing MakeRequestAsync | URL: https://openapi-v2.kucoin.com/api/v1/market/allTickers
Retry #: 1 | Ticker data retrieved for 931.5237 ms

First option sounds like the simplest. 4 hour delay is nothing in the grand scheme of things. For ppl who can't wait the 4 hours, they can always override.


How to set custom y-axis range?

I like the fact that the chart looks at minimum and maximum values and scales the y-axis so that it just shows the minimum and maximum values.
However, I have a situation where I'm drawing multiple charts.  They each have different data, and the min/max Y values will vary, but the domain of all them are related, and it would make more sense if I could determine the min/max of ALL the datasets, and then set the min/max of all of the charts to those values.  It will result in some charts showing points right at the bottom of the chart, but the consistency within the entire set of charts is more valuable.
It'll be easy enough to iterate through my datasets to determine the min/max values, but how do I set the charts to use those values?

I thought I'd figured this out, but it looks like this will be more complicated to make it "complete".  I noticed the example for setting "ticks: { min: N, max:N }", but this results in an odd looking Y axis.  I think I have to somehow compute a reasonable step size.  What is a reasonable algorithm to compute that?

I would think that since charts.js is computing a reasonable step size from the data, I should be able to just ask it to recompute a step size from the custom min/max value, instead of having to implement a similar algorithm to what the code is already doing.

Note that I'm using charts.js from angular-chart.  I noticed the "chart.update()" method, but as I'm using angular-chart, I'm not creating the Chart objects in my javascript, they're created declaratively (by me, at least).  In any case, despite the fact that it seems like calling "chart.update()" is the thing to do here, I would think that it would be unnecessary.

@davidmichaelkarr using ticks.min and ticks.max is the way to do this. What looks odd about it?
You can use ticks.stepSize for a fixed step size

The problem is, it's just not that simple.  A simple-minded approach results in an unpleasing rendering.  I can't just determine the max Y value of my data and set the ticks.max to that.  The proper value to set "ticks.max" to is some value larger than that value, which apparently the charts engine usually computes properly so it renders cleanly.
For instance, let's say a dataset has values ranging from 0 to 480.  When I render that normally, it shows Y axis values of 0, 200, 400, and 600, which looks good.  Essentially, what I need to set "ticks.max" to is "600", not "480".  The effect would be the same as if I had added an additional fake data value of the "max" value, with an X axis value one plus the last value.  That would make the chart engine render it in a reasonable fashion (except for one of the data points being fake).

Another way to look at is if I could set a "pretend" Y axis value, so the chart engine would render the chart with the provided data, but also using that pretend data point in the calculations for determining the Y axis labels.

Hmm, have you looked at ticks.suggestedMin and ticks.suggestedMax? They essentially change the data max and min before the auto fit algorithm runs

Bingo!  That's exactly what I needed.  It would be useful to rephrase the statement in the docs about these two fields.  What it says now is confusing and doesn't say what you said here, which was exactly what I needed to know.

Ok, I'll retag this as a documentation bug.

Fixed in #3751


Update pyproject file to be poetry 1.2 compliant.

Make extra dependencies opt-out instead of opt-in.

You can also mark an entire group as optional.

The CI still runs on Python 3.7?

You can also mark an entire group as optional.

Right but with the ability to now exclude groups and install only the main dependencies I don't think there's much reason to maintain the opt-in scheme we had before.

Hehe, the test fails because it's been written such that it should fail on pre-3.9 python. Either use 3.8 for the CI or remove the test.

Hehe, the test fails because it's been written such that it should fail on pre-3.9 python. Either use 3.8 for the CI or remove the test.

Equally, we could just remove the decorator and the associated test given that it no longer sees any use

Sure, I've never used it.


Adding wlay

Project description
Wlay helps to configure multiple monitors on wayland.
Metadata

homepage https://github.com/atx/wlay:
source https://github.com/atx/wlay:
license: mit
platforms: linux

@timsofteng Wlay is available in  nixpkgs-wayland. Should be relatively easy to port to nixpkgs

This issue can be closed: https://github.com/NixOS/nixpkgs/pull/242356


Update installation instruction to fit recent CUDA11 and torch 1.8+ push

…based approach

Checklist
GitHub

[X] I've given this PR a concise, self-descriptive, and meaningful title
[ ] I've linked relevant issues in the PR body
[X] I've applied the relevant labels to this PR
[ ] I've assigned a reviewer

PR contents

[X] I've consulted ivadomed's internal developer documentation to ensure my contribution is in line with any relevant design decisions
[ ] I've added relevant tests for my contribution
[X] I've updated the relevant documentation for my changes, including argparse descriptions, docstrings, and ReadTheDocs tutorial pages

Description

Current documentation has many branching path. It is best to use tabs to separate out these optional parallel contents.
This also introduce the additional sphinx tab for documentation building that can be used elsewhere as well.
RTD.org has been updated as well to use requirement_dev.txt to not necessitate end user to install sphinx related dependencies.
Linked issues

All feedback incorporated. As for validate installation success, I will probably have to do that in a separate PR. We currently have a GitHub Project to semi-automate the tutorials testings as well so it will likely be a collaborative effort from that front to allow users and devs to validate installation end results as well as the actual training performance.

Deprecated the environment.yml from installation instructions.
Also deprecated all the HDF5 instructions as PR#984 are deprecating them from repo imminently.

All changes incorporated. Thanks for all the detailed review y'all!

All changes incorporated and expanded. Just realized that WIndows further complicated the issue. Thank @joshuacwnewton and @mariehbourget for tireless detailed feedback. Greatly appreciated the insightful discussions and dozens of corner cases I didn't think of before. Please keep them coming!

Changes adopted. We are almost there!


Don't reuse JVM forks when running tests

Motivation
Use different JVM forks for each test (all tests within a class).
That should help avoiding interference between unit tests and reducing flaky tests, at the expense of a slightly longer build time (due to restarting the JVM many times).

pulsar-broker build time increased from 22 mins to 24 mins. so, I think not a big difference. 👍


Crash with Create and JEI on Forge

Minecraft Version: 1.20.1, Forge 47.3.5, running only Moderner Beta, JEI, Create and their dependencies.
So long as Moderner Beta is installed - even outside of Moderner Beta worlds - using JEI's recipe viewer to view a Create Bulk Washing recipe hard-crashes the game. Reporting it here since the crash report mentions Moderner Beta specifically, and because removing Moderner Beta solves the issue.
Crash Log attached.
crash-2024-07-16_11.03.33-client.txt

Can confirm
A similar issue occurs with EMI, thought instead of crashing, it says, "Render Error" and gives the same error in the console as seen in the crash log above.

Im running a fabric modpack with a Modern Beta worldgen mod, Create, and JEI and it auto crsashes when viewing bulk washing

the fix for this should be setting a position, because the crash happens because there is apparently no position in the water block create puts on the widget for jei/rei/emi
I don't know programming, but I think that's the solution.
The problem also happens to me with fabric, create, emi and moderner beta installed and it's pretty annoying
The Pos (position of the water) could be set to the player's position, or some random block in the world, or even 0, 0, 0.
The mod could also set the color for that without the need for a world position
That are my possible fixes, I hope this gets fixed soon!!!

The bug has been fixed in the next upcoming release of the mod.

Awesome! Tysm!!

Sweet, glad to hear it's been fixed ^w^


Slow autodiff at runtime -- unable to performantly linearise a linear function

JAX is unable to obtain the Jacobian of a linear function in an efficient manner.
import jax
import jax.numpy as jnp
import jax.random as jrandom
import timeit

A = jrandom.normal(jrandom.PRNGKey(0), (10000, 10000))
y = jrandom.normal(jrandom.PRNGKey(1), (10000,))
def f(x):
    return A @ x
jac = jax.jit(jax.jacfwd(f))
print(timeit.timeit(lambda: jac(y), number=1))  # compilation
print(timeit.timeit(lambda: jac(y).block_until_ready(), number=1))  # runtime
print(timeit.timeit(lambda: jnp.array(A).block_until_ready(), number=1))  # ideal runtime
assert jnp.all(jac(y) == A)

On CPU with JAX version 0.2.26 and jaxlib version 0.1.75 I get the printout:
5.859835999999632
4.756322400000499
0.08406309999918449

On GPU with JAX version 0.2.20 and jaxlib version 0.1.71 I don't get a printout at all -- compilation time exceeds several minutes. (I've confirmed that the install is otherwise working.)
So despite the fact that the matrix A already exists, and that all jac needs to do is return [a copy of] this existing matrix, it still takes two orders of magnitude too long to accomplish this task.
I'm providing this as a "benchmark MWE" -- my concern is that if even this example fails, how much else is also silently taking far too long?

Various notes:

On GPU the compilation happens in a reasonable amount of time if the size 10000 is reduced to e.g. 10. I'm a little surprised that compilation time isn't just O(1) in the size?

The CPU compilation time of 5.86 seconds seems surprisingly long as well.

For context I'm doing the above procedure -- using jax.jacfwd to obtain the matrix representation of a linear function -- on every step of a differential equation solver, so the above issue is hit repeatedly.

The benchmark version uses jnp.array to perform a copy, for fairness. (I don't think the benchmark does anything clever -- e.g. copy elision via copy-on-write -- as otherwise it would be even faster -- so I think this is a fair comparison.)

Here are the results of jax.make_jaxpr(jac)(y):

{ lambda a:f32[10000,10000]; b:f32[10000]. let
    c:f32[10000,10000] = xla_call[
      call_jaxpr={ lambda ; d:f32[10000,10000] e:f32[10000]. let
          f:i32[10000,10000] = iota[
            dimension=0
            dtype=int32
            shape=(10000, 10000)
          ]
          g:i32[10000,10000] = add f 0
          h:i32[10000,10000] = iota[
            dimension=1
            dtype=int32
            shape=(10000, 10000)
          ]
          i:bool[10000,10000] = eq g h
          j:f32[10000,10000] = convert_element_type[
            new_dtype=float32
            weak_type=False
          ] i
          k:f32[10000,10000] = slice[
            limit_indices=(10000, 10000)
            start_indices=(0, 0)
            strides=None
          ] j
          _:f32[10000] = dot_general[
            dimension_numbers=(((1,), (0,)), ((), ()))
            precision=None
            preferred_element_type=None
          ] d e
          l:f32[10000,10000] = dot_general[
            dimension_numbers=(((1,), (1,)), ((), ()))
            precision=None
            preferred_element_type=None
          ] d k
          m:f32[10000,10000] = slice[
            limit_indices=(10000, 10000)
            start_indices=(0, 0)
            strides=None
          ] l
        in (m,) }
      name=jacfun
    ] a b
  in (c,) }

I have seen something similar in other occasions.
I suspect that A is captured in the JAX's IR as a constant and somehow XLA is unrolling it and trying to optimise the huge blob that results from that.
If that's true, I  guess that if you look at how the compile time scales with the size of A you'll see that is scales at least quadratically...

@mattjj does JAX know that jac(A) is just A? Even so, we still need to do an xla_call and incur XLA compilation overhead right?

The compilation time is slow on all backends. Removing AD from the compilation time story, slow compilation time does not reproduce without the large constant array, e.g. not with:
import jax
import jax.numpy as jnp
import jax.random as jrandom
from jax import lax

x = jrandom.normal(jrandom.PRNGKey(1), (10000,))

@jax.jit
def f(x):
  i0 = lax.broadcasted_iota(jnp.int32, (10000, 10000), 0) + 0
  i1 = lax.broadcasted_iota(jnp.int32, (10000, 10000), 1)
  eye = (i0 == i1).astype(x.dtype)
  return jnp.dot(eye, x)

print(jax.make_jaxpr(f)(x))
print(timeit.timeit(lambda: f(x), number=1))  # compilation

But it does reproduce like this:
A = jrandom.normal(jrandom.PRNGKey(0), (10000, 10000))

@jax.jit
def f():
  i0 = lax.broadcasted_iota(jnp.int32, (10000, 10000), 0) + 0
  i1 = lax.broadcasted_iota(jnp.int32, (10000, 10000), 1)
  eye = (i0 == i1).astype(jnp.float32)
  return jnp.dot(A, eye)

print(jax.make_jaxpr(f)())
print(timeit.timeit(lambda: f(), number=1))  # compilation

In fact, it even reproduces like this:
A = jrandom.normal(jrandom.PRNGKey(0), (10000, 10000))
y = jrandom.normal(jrandom.PRNGKey(1), (10000,))

@jax.jit
def g(_):
  2 * _  # don't let jax skip xla compilation
  return A
print(timeit.timeit(lambda: g(y), number=1))  # 6.272046981030144

I'm not sure what's up with this compilation time. I'll raise it as an XLA issue.

As for runtime, indeed there is a missing AD optimization here which we've long known about but has never seemed very practically important. I'd phrase it like this: for a matrix A of shape (N, N), does jax.jacfwd(lambda x: A @ x)(x) require O(1) time to evaluate or O(N^3)? Currently the answer is O(N^3).  That is, we basically evaluate A @ jnp.eye(A.shape[0]) rather than just A.
The reason I say this optimization is uninteresting is that it only applies to pretty much just this exact case (of a function which consists of a single dot). It doesn't apply to general nonlinear functions, of course, but it doesn't even apply to general linear functions.
To effect the optimization we could imagine creating symbolic identity matrices, and maybe slightly more generally symbolic standard basis vectors. But so far no one's really asked for it. Are there really situations where we'd want to automatically discover that such special dense linearity structure exists, rather than a user just exploiting it directly? If you have a real application, I'd love to hear it!

Definitely glad to hear that the compilation time is being worked on; that's frequently more of an issue for JAX programs than runtime, from what I hear!

That is, we basically evaluate A @ jnp.eye(A.shape[0]) rather than just A.

Yeah, this is what I got from the jaxpr. I inspected the resulting XLA as well, and interestingly enough -- on small enough problems that it compiles in time -- this multiplication-by-overlapping-iotas gets optimised out on the GPU. Just not on the CPU.
I do think I would describe this as an interesting optimisation. For example consider a 2-layer MLP given by x -> A @ σ(B @ x). This has Jacobian A @ diag[σ'((B @ x)_0), ..., σ'((B @ x)_n)] @ B. Computing this Jacobian as A @ diag[σ'((B @ x)_0), ..., σ'((B @ x)_n)] @ B @ I represents a lot of extra work. So I think at minimum this optimisation applies to every nonlinear function that starts with a linear map, and with all the neural networks flying around the place that's probably most of them.
I do suspect symbolic basis vectors is probably overkill. That sounds like it'd be a lot of new abstractions just for this one use case. I feel like the best way to tackle this is to improve the compiler -- either in XLA:CPU (make the current XLA:GPU optimisation backend-agnostic) or to start improving the facilities around jaxpr manipulation. There's already DCE in a few places for jaxprs, maybe it's time to start adding pattern matching as well?

As for applications: absolutely I have applications! So this scenario appears when solving differential equations. The mathematics is pretty interesting so I'll write out a bit of it as I reckon you'll find it interesting too.
When you make a step of e.g. Euler's method on an ODE dy(t) = f(y(t)) dt then this is implemented as y_{n+1} = y_n + f(y_n) (t_{n+1} - t_n). That interaction between f(y_n) and t_{n+1} - t_n is multiplication. But when solving an SDE dy(t) = f(y(t)) dw(t) then we end up writing down y_{n+1} = y_n + f(y_n) (w_{n+1} - w_n) where now the analogous interaction is a matrix-vector product. If I wrote down the more general SDE dy(t) = [f(y(t)), g(y(t))] . [dt, dw(t)] then the interaction is a "dot product" which is a multiplication in one element and a matrix-vector product in the other element. In general, the interaction is a bilinear map.
The nature of this interaction is user-specified and unknown to the me (the library author) as it's a detail of the input differential equation. So at the level of the library it's an abstract bilinear map, which the diffeq solving code is generic with respect to. In Diffrax this is AbstractTerm.prod.
That works 99% of the time. But there are a few cases where we do need to materialise this abstract bilinear map explicitly.
Some solvers need this when backpropagating via the backwards-in-time continuous adjoint ODE. This is discussed in this comment and the Jacobian calculation occurs here.
Meanwhile another example is when using the Itô version of Milstein's method. This is actually a very complicated algorithm when you have abstract bilinear maps and PyTrees floating around. If you're feeling masochistic then the full algorithm is here. (And very heavily commented to be as readable as possible.) In fact this very issue is actually referenced here. The use of Jacobians to materialise the abstract (bi)linear maps occurs here and here.


[Documentation] Error in the example - 'Adding Custom Headers'

const httpClient = (url, options) => { // Error message: Cannot set property 'user' of undefined
    options.user = {
        authenticated: true,
        token: 'SRTRDFVESGNJYTUKTYTHRG'
    }
    return fetchUtils.fetchJson(url, options);
}

How are you using this httpClient ?

In this example, the error occurs because there is no default: options = {}
2017-07-28 16:08 GMT+05:00 Gildas Garcia<EMAIL_ADDRESS>
How are you using this httpClient ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/marmelab/admin-on-rest/issues/898#issuecomment-318625425,
or mute the thread
https://github.com/notifications/unsubscribe-auth/APwsWCkrrQBTpTaGgeVqUNlymjeEeUZCks5sScErgaJpZM4OlFw9
.


No response clicking "adopt" button

I am following the tutorial here: http://truffleframework.com/tutorials/pet-shop
At first, every step is successful, but when I finally test the pet shop in chrome, there is no response when I click the "adopt" button.
Truffle v4.0.3 (core: 4.0.3)
Solidity v0.4.18 (solc-js)
Chrome Version 62.0.3202.94 (Official Build) (64-bit)
MetaMask 3.13.2
Ganache 1.0.1
mac os 10.12.6

I'm having the same issue

Make sure you are running truffle develop in another terminal

I'm having the same issue I use Ganache.

There's a problem with the contract.
We have two methods:
// Adopting a pet
function adopt(uint petId) public view returns (uint) {
require(petId >= 0 && petId <= 15);
adopters[petId] = msg.sender;
return petId;
}
// Retrieving the adopters
function getAdopters() public returns (address[16]) {
    return adopters;
}

We cannot set the view in a method that modify the contract storage, we should use view only in method that get data from contract, so there's a mistake.
Change the methods to this:
// Adopting a pet
function adopt(uint petId) public returns (uint) {
require(petId >= 0 && petId <= 15);
adopters[petId] = msg.sender;
return petId;
}
// Retrieving the adopters
function getAdopters() public view returns (address[16]) {
    return adopters;
}

I'm having the same issue....

I have followed all the pet -shop tutorial.
Instead to use Ganache I have used "truffle develop".
In the web3 code I inserted

App.web3Provider = new web3.providers.HttpProvider('http://<IP_ADDRESS>:9545');
In MetaMask, I entered int the "New RPC URL" field  the address "http://<IP_ADDRESS>:9545"
The adopt button doesn't work.
Would you please help me.
thanks

same issue here. Everytime i click adopt, button become success. Ganache get no response.

below change worked for me......single quote to double quote
before
bindEvents: function() {
$(document).on('click', '.btn-adopt', App.handleAdopt);
After
bindEvents: function() {
$(document).on("click", '.btn-adopt', App.handleAdopt);

app.txt I had the same problem. Helped me a lot to check for missing or wrong ) } ; statements. Here's my app.js where the button works.

This is the result of referring to the official website and the above documents
Reference for anyone facing the same problem in 2022 : )
app.txt


Forbid additional properties in data index files

See: https://github.com/imperialCHEPI/healthgps/pull/404
I initially tried setting additionalProperties to false everywhere in the schema, but it broke validation so I didn't bother. I should have opened an issue at the time though, because we do also want to prevent users from adding additional properties (at least most of the time). In part this just makes the files cleaner, but it also prevents users from changing non-existent properties that won't actually do anything (including if they misspell the name of an actual property).

but it also prevents users from changing non-existent properties that won't actually do anything (including if they misspell the name of an actual property).

Precisely the cause of the last fiasco. We probably want to be as pedantic as we can get away with here. :+1:

Oh dear. Was that with the static data or the config files?

That was the static relative disease risk files, in that case.


kaf: init at v0.1.44

Description of changes
Package for kaf a command line tool for kafka
https://github.com/birdayz/kaf
Things done

Built on platform(s)

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

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

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

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

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

[ ] Fits CONTRIBUTING.md.

I keep the same derivation in my shell.nix, please merge :D

Result of nixpkgs-review pr 164175 run on x86_64-linux 1

1 package built:

kaf

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/474


Bounds Check and Test Refactor

Added bounds check mode:

When validating all elements, the new client can fill the locations surrounding the input/output data with invalid data, and check that the data was not used/overwritten.

Refactoring pytest:

All YAML-only tests are now automatically found and run via the
single test_config test function.
YamlBuilder now constructs documents via an object graph rather than
via text.
All tests that need a build directory can use one specified via the
command line.

Remaining test failures are architecture-specific and occurred before this PR


List of occurrences wrapped differently than xgettext

I think that xgettext --no-wrap does not apply to the list of occurrences, so polib and xgettext will format the #: lines differently.
If you have a structure like the following:
.
├── f
│   └── c.py
├── folder_medium_length
│   └── b.py
├── folder_name_with_a_very_long_name_and_in_any_case_longer_than_seventy_eight_characters
│   └── a.py

where all the files contain the same string to translate, polib with wrapwidth=0 gives something like
#: /tmp/x/folder_name_with_a_very_long_name_and_in_any_case_longer_than_seventy_eight_characters/a.py:4 /tmp/x/folder_medium_length/b.py:4 /tmp/x/f/c.py:4

while xgettext --no-wrap something like the following (that was somewhat unexpected for me :)
#: /tmp/x/folder_name_with_a_very_long_name_and_in_any_case_longer_than_seventy_eight_characters/a.py:4
#: /tmp/x/folder_medium_length/b.py:4
#: /tmp/x/f/c.py:4

I think this can be changed by editing polib.py l.1037 from
            if wrapwidth > 0 and len(filestr) + 3 > wrapwidth:

to
            if wrapwidth > 1 and len(filestr) + 3 > wrapwidth:

I'm not yet opening a PR, because these are my first steps in the "translations" world and I might be making stupid mistakes (so please be patient :slightly_smiling_face: )

Let me add a few more info on this: we use Django, which underneath uses xgettext; I tried the fix suggested by @gamboz but it didn't work: it is correct that when using --no-wrap, xgettext does still wrap "comments" (the original string location), but what worked for us was not to edit wrapwidth > 1, but rather to hardcode a width of 79 characters in polib.py#L1037:
1037,14c1,11
<             if wrapwidth > 0 and len(filestr) + 3 > wrapwidth:
<                 # textwrap split words that contain hyphen, this is not
<                 # what we want for filenames, so the dirty hack is to
<                 # temporally replace hyphens with a char that a file cannot
<                 # contain, like "*"
<                 ret += [line.replace('*', '-') for line in textwrap.wrap(
<                     filestr.replace('-', '*'),
<                     wrapwidth,
<                     initial_indent='#: ',
<                     subsequent_indent='#: ',
<                     break_long_words=False
<                 )]
<             else:
<                 ret.append('#: ' + filestr)
---
>             # textwrap split words that contain hyphen, this is not
>             # what we want for filenames, so the dirty hack is to
>             # temporally replace hyphens with a char that a file cannot
>             # contain, like "*"
>             ret += [line.replace('*', '-') for line in textwrap.wrap(
>                 filestr.replace('-', '*'),
>                 width=79,
>                 initial_indent='#: ',
>                 subsequent_indent='#: ',
>                 break_long_words=False
>             )]

I'm not sure this works on all use cases, though; with Django it worked.


[v6] Question. - form with multiple submit buttons, detect which button

At the moment I am attaching a handler to each submit button so that I can know in the submit handler which  one triggered the submit, using setState() to just track at component level only which button was pressed.
Just wondering if there might be some other way to detect which button as I have to thread this submit button clicked handler down through 2 layers of components.
Might there be some way I have missed to get the values object as given to submit via some other api possibly ?

For future visitors... this approach works on v6
http://stackoverflow.com/questions/37168954/redux-form-how-to-handle-multiple-buttons

@joewestcott thanks for the comment I think it will this will improve my solution.
It also seems to me the doc is better than it was few months back :) so glad to have gone back there again to.


Support logging received messages to a CSV file

[x] This contribution adheres to CONTRIBUTING.md.

What does this Pull Request accomplish?
Add initial support for logging received messages to a CSV file.
Currently only the logging directory is configurable; eventually the format of the output file name as well as the format of the logged data will be configurable.
The output file currently looks like the following:
time stamp,channel,label,sdi,data word
0.305688,0,124,0,2326440060
0.305688,1,125,0,178956413
0.306712,2,126,0,178956414
0.306712,3,127,0,2326440063
0.306712,4,128,0,2326440064
0.307736,5,129,0,178956417
0.307736,6,130,0,178956418
0.308760,7,131,0,2326440067
0.405688,0,124,0,2326440060

Why should this Pull Request be merged?
We want to eventually support logging all bus traffic. This is the first step.
What testing has been done?
Deployed to a Linux RT controller and confirmed that looped-back traffic was logged to a file.

[ ] Write to Hardware has no changes
[ ] Open Log File and Close Log File are each no op VIs that have an error case structure that does the same nothing for error in = True or False. If there is a good reason to have the no-op VIs, let's remove the unnecessary case structure.
[ ] Write Logger creates a DVR to a bundled class. What prevents creating a DVR to the class directly?
[ ] Open Log File opens the log file with 'Create or Replace' option. As you mentioned earlier, we likely don't want to overwrite log files. Have you already updated the log file naming such that losing a log is unlikely/impossible?
[ ] Write Logged Data

[ ] Recommend subVI to serialize data
[ ] Use fixed width (pad with zeros) for data word

There is a weird coupling here in Read from Hardware. We lose the full data contained in the record, but we still build a very specific cluster, build an array of that indexing out of the For Loop, and then write that array of cluster to the word log producer class data. How would we enable verbose logging with the current implementation? One alternative might be to write array of records to class data (to enable maximum flexibility in which columns get logged). How would we implement this for MIL-STD-1553 which supports word counts from 0 to 32? A different alternative could be to convert record to comma-separated string in the loop and send the array of strings to the logger (to provide greater decoupling between custom device implementation and logging implementation.

My top priority here was to minimize the impact on runtime performance. Logging should not impact the PCL rate, or should impact it to the minimum extent possible. To that effect, some amount of knowledge about what data is being logged is fundamentally required.
If we wanted to support verbose logging, the typedef of data we are bundling could easily be updated to include the extra fields.
I originally rejected the idea of writing it to class data because I wanted to minimize the number of allocations, and putting dynamic data in classes and building an array of those classes seemed fraught with peril.
Likewise, doing string formatting in the main thread seems like a bad idea, because they'll trigger allocations and are expensive. Doing that every time we read data is asking for trouble. IMO all string manipulation should happen on a separate thread, to the extent it is possible.
The idea that @buckd and I came up with is that the logging classes here would be code generated given a typedef for the data you want to log. For MIL-STD-1553, you would define a typedef of your data type which would include an array of words. This PR doesn't define a code generator, because I want to iterate on an instance of the logging classes before trying to programmatically generate them.

Open Log File and Close Log File are each no op VIs that have an error case structure that does the same nothing for error in = True or False. If there is a good reason to have the no-op VIs, let's remove the unnecessary case structure.

Are you referring to the VIs on Word Logger Interface.lvclass? The object is an interface, so we need the VIs, and conventionally interfaces provide empty implementations.
I can remove the case structures if you'd prefer, but the VIs and case structures were generated using LabVIEW's "New VI from Dynamic Dispatch Template". If the preference is to not have case structures in no-op VIs (which VIs on interfaces almost always should be), that seems like feedback for the LabVIEW team.

Write to Hardware has no changes

Good catch! Thanks.

Write Logger creates a DVR to a bundled class. What prevents creating a DVR to the class directly?

LabVIEW doesn't allow this (no, seriously!).
From here: If you need a class reference that lets you change the underlying object, create a reference to a cluster of the class. This gives you the ability to swap values at the cost of hierarchical casting.
We are using an interface, so we fundamentally need to be able to swap the runtime type.

Open Log File opens the log file with 'Create or Replace' option. As you mentioned earlier, we likely don't want to overwrite log files. Have you already updated the log file naming such that losing a log is unlikely/impossible?

No, my intent is to defer the configuration work out of this PR, and let this PR focus on the core logging behavior. I am okay with overwriting log files for now.

Write Logged Data: Recommend subVI to serialize data

Makes sense. My intent is to provide some flexibility around formatting in a later PR, so that subVI can handle the various formatting options as well.

Write Logged Data: Use fixed width (pad with zeros) for data word

Sure; I expect most people will opt for hex or octal instead of decimal anyways.

There is a weird coupling here in Read from Hardware. We lose the full data contained in the record, but we still build a very specific cluster, build an array of that indexing out of the For Loop, and then write that array of cluster to the word log producer class data. How would we enable verbose logging with the current implementation? One alternative might be to write array of records to class data (to enable maximum flexibility in which columns get logged). How would we implement this for MIL-STD-1553 which supports word counts from 0 to 32? A different alternative could be to convert record to comma-separated string in the loop and send the array of strings to the logger (to provide greater decoupling between custom device implementation and logging implementation.

My top priority here was to minimize the impact on runtime performance. Logging should not impact the PCL rate, or should impact it to the minimum extent possible. To that effect, some amount of knowledge about what data is being logged is fundamentally required.
If we wanted to support verbose logging, the typedef of data we are bundling could easily be updated to include the extra fields.
I originally rejected the idea of writing it to class data because I wanted to minimize the number of allocations, and putting dynamic data in classes and building an array of those classes seemed fraught with peril.
Likewise, doing string formatting in the main thread seems like a bad idea, because they'll trigger allocations and are expensive. Doing that every time we read data is asking for trouble. IMO all string manipulation should happen on a separate thread, to the extent it is possible.
The idea that @buckd and I came up with is that the logging classes here would be code generated given a typedef for the data you want to log. For MIL-STD-1553, you would define a typedef of your data type which would include an array of words. This PR doesn't define a code generator, because I want to iterate on an instance of the logging classes before trying to programmatically generate them.

Open Log File and Close Log File are each no op VIs that have an error case structure that does the same nothing for error in = True or False. If there is a good reason to have the no-op VIs, let's remove the unnecessary case structure.

Are you referring to the VIs on Word Logger Interface.lvclass? The object is an interface, so we need the VIs, and conventionally interfaces provide empty implementations.
I can remove the case structures if you'd prefer, but the VIs and case structures were generated using LabVIEW's "New VI from Dynamic Dispatch Template". If the preference is to not have case structures in no-op VIs (which VIs on interfaces almost always should be), that seems like feedback for the LabVIEW team.

Write to Hardware has no changes

Good catch! Thanks.

Write Logger creates a DVR to a bundled class. What prevents creating a DVR to the class directly?

LabVIEW doesn't allow this (no, seriously!).
From here: If you need a class reference that lets you change the underlying object, create a reference to a cluster of the class. This gives you the ability to swap values at the cost of hierarchical casting.
We are using an interface, so we fundamentally need to be able to swap the runtime type.

Open Log File opens the log file with 'Create or Replace' option. As you mentioned earlier, we likely don't want to overwrite log files. Have you already updated the log file naming such that losing a log is unlikely/impossible?

No, my intent is to defer the configuration work out of this PR, and let this PR focus on the core logging behavior. I am okay with overwriting log files for now.

Write Logged Data: Recommend subVI to serialize data

Makes sense. My intent is to provide some flexibility around formatting in a later PR, so that subVI can handle the various formatting options as well.

Thanks for answering questions and addressing feedback!

Write Logged Data: Use fixed width (pad with zeros) for data word

Sure; I expect most people will opt for hex or octal instead of decimal anyways.

Regardless of the format, let's make sure that we don't lose real (transmitted/received) zeros from the end of the word.


Docs search does not appear to be updating.

E.g. searching for "rate limit" should return results.

Algolia indexer was stuck


Notebook checks take forever

Describe the bug
I noticed that the notebook checks (the Run step) take a very long time after pushing changes to any branch. Moreover, they fail after running for around 5-6h.
From what I've seen, the mimic_2_fate.ipynb notebook takes the longest and fails almost every time. But there might be other issues with other notebooks as well.
To Reproduce
Steps to reproduce the behavior:

Commit a change
Push a change
See that it indeed takes forever...

Expected behavior
From older logs I see that the notebook checks should take around 12-15 minutes on average.

So it runs through flawlessly locally...
Maybe an environment issue?

This one even runs through in 15 minutes ??!?
https://github.com/theislab/ehrapy/actions/runs/3516528889/jobs/5893205650

Just closing because IDK what to do. I'll reopen if I find out more.


Bump chart version to get ready for release

Get ready for release 0.3.0

Codecov Report

Merging #18 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #18   +/-   ##
=======================================
  Coverage   90.00%   90.00%
=======================================
  Files           6        6
  Lines         110      110
=======================================
  Hits           99       99
  Misses          6        6
  Partials        5        5

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3f48312...408485b. Read the comment docs.


Rename layerType property to type

Was just looking at index.js#L76. If we used the same name as core here it would just be:
stackup.layers = stackupLayers

Since we now have a converter property in the cache users could pass it directly to core if they wanted to.
Alternatively we could rename the property to layerType in core.

Yeah, I was thinking yesterday it was kinda weird how core and main didn't line up. I think layer.type is fine, unless you can think of any other kinds of types we would want to add to a layer


add level icons for index

Working sort:

Correct merge is omitting sortBy line 50 in build.js.

rebased so that it can be automatically merged


Problems upgrading from 1.1.1 to 3.0.2

Hello,
I am trying to upgrade OpenSSL 1.1.1.x to 3.0.2 but i get an error on openssl version , please if anyone knows how to solve this would be much appreciated.
Steps for upgrade:
wget https://www.openssl.org/source/openssl-3.0.2.tar.gz
tar -xvzf openssl-3.0.2.tar.gz
cd openssl-3.0.2.tar.gz
./Configure
make
make test
sudo make install
sudo ldconfig
After this progress i used openssl version and got openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
uname -a = 5.4.0-74-generic #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
which openssl = /usr/local/bin/openssl
sudo find / -iname "*libssl.so.3" = /usr/local/lib64/libssl.so.3
echo $LD_LIBRARY_PATH = empty

Thanks!

Use ldd $(which openssl) to see what libraries it's trying to load (although the error message states the library).
Do ldconfig -p to print out the list of libraries, use grep to find libssl or libcrypto
Look in your /etc/ld.so.conf and /etc/ld.so.conf.d directory to see if changes need to be made, the configs in the directory are loaded alphabetically, so doing cat /etc/ld.so.conf.d/* will show what directories it's trying to load from. You may be missing /usr/local/lib64 from this list.

On ubuntu, x86_64 libraries should be installed in /usr/local/lib/x86_64-linux-gnu. But openssl 3.0 configure set up multilib postfix as 64. So you want to run ./configure --libdir=lib/x86_64-linux-gnu

Step by step fix for debian related OS based on tmshort answer:

make sure libraries are indeed found in /usr/local/lib64

ls /usr/local/lib64/
# >>  libcrypto.so.3  libssl.a  libssl.so ...

make sure the libraries path is missing from cat /etc/ld.so.conf.d/* output
configure the new path

# add it
sudo echo /usr/local/lib64/ >  /etc/ld.so.conf.d/openssl.conf

# load it
sudo ldconfig

you should see /usr/local/lib64 in the list

ldconfig -v |less

confirm openssl is working

openssl version
# > OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023)

thank you it worked. I just had to point it to the correct location inside the config.

On ubuntu, x86_64 libraries should be installed in /usr/local/lib/x86_64-linux-gnu. But openssl 3.0 configure set up multilib postfix as 64. So you want to run ./configure --libdir=lib/x86_64-linux-gnu

after I use ./configure --libdir=/usr/lib/x86_64-linux-gnu to configure my python and reinstall it. it fix my problerm.
thanks @tmshort provide useful infomation to help me find the real reason: when build python, it will build ssl module by default, but if it can't find the openssl package, the ssl module will not be included in result.


Date filter failing "Cannot read property 'map' or undefined at..."

When trying to use a date filter in a dashboard we're getting a javascript error "Cannot read property 'map' or undefined at...
TypeError: Cannot read property 'map' of undefined
at filter_box.885b5b9fd31f4d3caa48.chunk.js:2
at Array.forEach ()
at t. (filter_box.885b5b9fd31f4d3caa48.chunk.js:2)
at t. (filter_box.885b5b9fd31f4d3caa48.chunk.js:2)
at Qi (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
at Xi (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
at to (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
at Ro (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
at No (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
at ha (vendors-major.4f5a17619ab655ae0e0c.chunk.js:2)
It seems related to the 0,28,1 versión and fixed on next release https://github.com/apache/incubator-superset/issues/6165
They recommend using 0.29.0rc7 where this issue is fixed. It's possible to deploy this project with that image?

can belive it! I'm following your commits live!!!

Haha well I thought about saying "no" at first because this project isn't set up to install Superset from the source — just from packages available on PyPI.
But then I saw that the rc7 prerelease is in fact on PyPI and it built okay locally so I don't see a problem with it :)

Okay, amancevice/superset:0.29.0rc7 is now available for download

ooh to good to work on the first attempt ;-)
when trying to upgrade db or init superset I got and error
"pkg_resources.ContextualVersionConflict: (Werkzeug 0.12.1 (/usr/local/lib/python3.6/site-packages), Requirement.parse('Werkzeug>=0.14'), {'Flask'})"
updated on dockerfile and now testing

Thanks, try again now


Update flake lock

Since https://github.com/NixOS/nixpkgs/pull/283330, along with the go backend, grafana frontend is also built from source in nixpkgs. But the offline cache doesn’t support darwin, this can be fixed by overriding it:
{
  grafana = prev.grafana.overrideAttrs (oa: rec {
    offlineCache = oa.offlineCache.overrideAttrs (_ :{
      buildPhase = ''
        runHook preBuild
        export HOME="$(mktemp -d)"
        yarn config set enableTelemetry 0
        yarn config set cacheFolder $out
        yarn config set --json supportedArchitectures.os '[ “linux” “darwin" ]'
        yarn config set --json supportedArchitectures.cpu '[ “x64” “arm64" ]'
        yarn
        runHook postBuild
      '';
      outputHash = lib.fakeHash;
    });
  });
}

Note: replace the outputHash with whatever the offlinecache generates.

Even after fixing the frontend cache, the go backend fails to build due to: https://github.com/NixOS/nixpkgs/issues/273998
Looks like it is do with nix: https://github.com/NixOS/nix/issues/9977

As a workaround, we can use grafana < 10.2.0 until the case-insensitivity issue is resolved.

Turns out we can get the latest grafana build on darwin, thanks to: https://github.com/NixOS/nixpkgs/issues/129730

CI fails with: no space left on device 🙂

Until we self-host the runner, hope this helps: https://github.com/actions/runner-images/issues/2875

@conscious-puppet @shivaraj-bh What's the original reason for updating flake.lock in this PR? If we revert this, can we avoid having to build grafana on CI and locally?

some of the packages were old.

the default package for cassandra was cassandra 3. which had a dependency on python 2, and was no longer supported on aarch64-darwin
pgadmin4 also had an outdated version with different cli for setup db.

if we revert this, then we may not be able to test services flake against current package versions with just run <service> or just test <service>.

if build is an issue, can we overlay grafana to an older version for darwin?

can we overlay grafana to an older version for darwin?

This is what I'm trying now


Added script to remove all system icons from the dock

This script runs first so that newly installed apps can add their
icons to the dock

I would put this code in the configuration-osx.sh script. I can do that once I've had a chance to confirm the behavior on macOS Sierra

This commit removes everything from the dock which seems too aggressive to me. That being said, when I look at the list of items that are being removed, I can't argue for keeping any of them:
Siri, Launchpad, Mail, Contacts, Calendar, Notes, Reminders, Maps, Photos, Messager, FaceTime, iTunes, iBook, App Store
Perhaps adding iTerm and Chrome would make the dock feel less naked.
(Optional) I would have java.sh add IntelliJ, ruby.sh add RubyMine. This would suggest cloning dockutil into workspace so that the other scripts could use it. I'm on the fence on this one. I do not see Pivots using the dock to startup the IDE.

It only removes the "system" icons, which are indeed mostly useless for pivots.
I look into adding chrome and iterm, but that does mean we need to keep dockutil around until those are installed.
IMHO, few people will use RubyMine and IntelliJ, so why don't we leave it up to the user to add the one they want (if any).

Yes to Chrome and iTerm definitely.
I vote to keep App Store because it shows OS upgrade badges, but that's not a strongly held opinion.
I think RubyMine is relatively rare, but almost every Java project will use IntelliJ. But I'm happy to leave it up to the teams.


Dev

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@88fdc2c). Click here to learn what that means.
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #28   +/-   ##
=======================================
  Coverage        ?   42.34%
=======================================
  Files           ?       21
  Lines           ?      333
  Branches        ?        0
=======================================
  Hits            ?      141
  Misses          ?      192
  Partials        ?        0

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Make addition of quality content an explicit part of each milestone

For your user community to be able to adequately assess your system (or even use it in a realistic fashion), it has to be seeded with a significant amount of high quality content (i.e. routines and sets).
Please make the addition of specific routines and sets an explicit part of each milestone.  The content has to be "real", in the sense that it is of acceptable quality for a real end-user of the system.

Yes, we're on it.  We've already discussed seeding the in-memory database with some content.  I will be asking our 'Consulting Magicians' to add content as well.  We will be sure to specifically add this to all of our milestones.


Allow a custom favicon

It would be very nice to be able to allow a custom favicon. Possibly by putting a PNG in _static/favicon.png?
If need be I could possibly look into this myself, time permitting. Thanks for the awesome theme!

You can do it by subclassing the theme, I'll add some example to the readme soon.

There's an example here: https://github.com/ionelmc/sphinx-py3doc-enhanced-theme#custom-favicon


Localstack is failing with Python 3.10

https://github.com/localstack/localstack/pull/8184

Issue was fixed on localstack side

Error: creating lambda layer: ValidationException: 1 validation error detected: Value '[python3.10]' at 'compatibleRuntimes' failed to satisfy constraint: Member must satisfy enum value set: [nodejs12.x, java17, provided, nodejs16.x, nodejs14.x, ruby2.7, python3.10, java11, dotnet6, go1.x, nodejs18.x, provided.al2, java8, java8.al2, dotnetcore3.1, python3.7, python3.8, python3.9]
But we still have an error :(

https://github.com/localstack/localstack/issues/8374


Next steps - planning for v4

We're planning for v4 to be a major next step in the evolution of Data Populator. Our thinking currently revolves around:

A brand-new UI/UX to eliminate the need for complex syntax in layer names
A unified platform for managing and manipulating data sources to make finding the right data easier
A more stateful approach to selecting data sources for particular layers/groups

These are the core ideas but we'll update this issue as we get closer to v4 and the feature set is defined.
We'd love to hear your ideas and suggestions!

Very excited! ^_^

Would be amazing to have a new UI layer for setting the object keys for layers, instead of using layer name for an object key. Otherwise it makes layer list unreadable, this is especially bad for the Symbols.
I tried to edit the code, but this is way to complex for me 😅

Here's a suggestion that I think would help designers a ton:
For times when a JSON or API isn't publicly available, support fetching a URL and populating the data via CSS selectors.
Here's a quickly mocked-up example


Profiler

[FEATURE] Enable more configurable profiler
Add more configuration options for torch.profiler.profile in config files.
Currently torchtune.utils.profiler has hardcoded options.
This PR adds the ability to fully configure the profiler by expanding the accepted args under the profiler key in config files.
Features:

torch.profiler.profile settings such as with_stack, profile_memory, etc. can be specified under profiler.profile
Custom profiling schedule under profiler.schedule
Sensible defaults: the profiler is instantiated with sensible defaults such that user does not need to specify all sections

E.g., if only profiler.enabled=true but no other keys are included, will default to the current torchtune.utils.profiler

Works in both single device and distributed settings
API is identical to that of current torchtune profiler such that the only change required is to use the newly introduced setup_torch_profiler to instantiate the profiler within the recipe.

Usage
Changes needed to profile a recipe:

Add the a profiler section to config yaml (see below)
Call torchtune.utils._profiler.setup_torch_profiler within the setup method of the recipe with the top-level args
Wrap the training loop with the profiler and step the profiler after each optimizer step (per the current profiler recipe).

Profiler Config
profiler:
    enabled: bool

    #Output directory of trace artifacts
    output_dir: str

    #`torch.profiler.ProfilerActivity` types to trace
    CPU: bool
    CUDA: bool

    #`torch.profiler.profile` options
    profile:
        # _component_ is optional as the setup method will handle
        _component_: torch.profiler.profile
        profile_memory: bool
        with_stack: bool
        record_shapes: bool
        with_flops: bool

    #`torch.profiler.schedule` options
    schedule:
        # _component_ is optional as the setup method will handle
        _component_: torch.profiler.schedule
        wait: int
        warmup: int
        active: int
        repeat: int

Notes

All args are optional and if not specified, will default to minimal working set per torch.profiler.profile defaults (see the added _DEFAULTS in torchtune.utils._profiler)
Certain options are overridden to match requirements of the torch profiler

E.g., profile_memory requires with_stack and record_shapes so if user sets profile_memory: true, then the latter two will automatically be set within the setup method

Top-level cfg will be modified in-place by setup_torch_profiler to reflect updated profiler config for logging / debugging purposes

Examples

Run single device, same as current torchtune.utils.profiler:
tune run lora_finetune_single_device \
--config llama2/7B_lora_single_device \
profiler.enabled=True

Same as above but with profiler disabled:
tune run lora_finetune_single_device \
--config llama2/7B_lora_single_device \
profiler.enabled=False

Run single device, profiling on a 10-step cycle:
tune run lora_finetune_single_device \
--config llama2/7B_lora_single_device \
profiler.enabled=True \
profiler.output_dir=./profiler_outputs \
profiler.schedule.wait=5 \
profiler.schedule.warmup=4 \
profiler.schedule.active=1 \
profiler.schedule.repeat=0

At the end of each cycle, a tensorboard / chrome trace along with key averages table of operators ordered by cuda time will be dumped to profiler_outputs.

Run distributed, profiling for single cycle:
tune run --nnodes=1 --nproc_per_node=2 lora_finetune_distributed \
--config llama2/7B_lora \
profiler.enabled=True \
profiler.profile_memory=True \
profiler.schedule.wait=10 \
profiler.schedule.warmup=10 \
profiler.schedule.active=1 \
profiler.schedule.repeat=1

In addition to the previous outputs, additional memory usage info will be recorded and a viewable memory timeline will be exported as well.
Each trace will be marked with the rank of the process.
Note that profiling memory adds significant overhead (training time and large trace files) so the profiling schedule should be set accordingly.

Tests
See tests/test_profiler.py for unit testing of profiler instantiation with torchtune.config as well as the expected functionality of torchtune.utils.setup_torch_profiler.
Next Steps
This PR edits recipes/lora_finetune_single_device.py and recipes/dev/lora_finetune_distributed.py and their corresponding configs to demonstrate usage.
If there is interest, can additionally update other registered recipes and configs to reflect the expanded profiler API.

Hi @jeromeku thanks for opening this PR! The profiler experience is something we've been meaning to improve for a while so really appreciate you taking it on. A couple general comments on the setup_torch_profiler API: you probably noticed already but we don't really do nested instantiation of configs (hence why you have to hack around it a bit with OmegaConf.create).  We also tend not to pass cfg objects to utilities or other core library code (maybe we break that rule in a couple places, but we try our best not to). Do you think there's a world where you define a utility method in the recipe to unpack the config, then pass only primitive datatypes to setup_torch_profiler (basically all the leaf nodes in the profiler config) and build everything in there (e.g. just call torch.profiler.schedule directly without config-ifying it)? Or is that too cumbersome? We're trying very hard to keep things configurable without giving the config too much power, but would be interested to know if you find this to be something that slows down experimentation for you.
I will take a more thorough pass soon but wanted to hear your thoughts on this first.

@ebsmothers
Thanks for the response!
Regarding your questions, I'd initially considered just adding unpacking functions within the recipe per your suggestion.  However, I decided to abstract away the processing by passing the entire top-level cfg to a separate library function.  This reduces code duplication, as now all a recipe user / writer needs to do is to call the setup_torch_profiler function to handle entire the profiler setup.
The intent is to make it easy for users to add / tweak profiler configs with a few args, as the setup function implements a number of checks and defaults to ensure the profiler is properly set up regardless of how fully specified the profiler section is (see tests/test_profiler for validation of these conditions).
That said, happy to change to align more closely with the design philosophy of torchtune.

@jeromeku thanks for the response and sorry for the delay in getting back to you here. Regarding torchtune's philosophy, we are OK with a bit of code duplication (e.g. you can see we have a fair bit across our model and component builders under torchtune/models, we also have the tune cp CLI command to directly copy a recipe or config to a local path for modification).
I think the configurability you've added here is really nice so don't want to sacrifice on that. I would propose the following division: first define something like a _setup_profiler method inside the recipe. This will take the config and parse it into fields that can then be passed directly to setup_torch_profiler. setup_torch_profiler can then continue to handle all the validation you described (and of course the actual setting up of the profiler). I can imagine a signature roughly like this:
def setup_torch_profiler(
	enabled: bool,
	cpu: bool,
	cuda: bool,
	profile_memory: bool,
	with_stack: bool,
	record_shapes: bool,
	with_flops: bool,
	wait: int,
	warmup: int,
	active: int,
	repeat: int,
) -> torch.profiler.profile:

(with appropriate defaults as you've already defined inside the existing function). One nice thing about this is that it can then be imported in a standalone fashion outside of our recipes without users having to figure out which config fields are required.
Btw the testing you added is quite comprehensive, really appreciate you doing that.

@ebsmothers
Thanks for the feedback.  Will refactor per the comments!

Really appreciate the thoroughness of this PR and the code and the exhaustiveness of the testing. Your docstrings are very descriptive, awesome to see. Have a few overall comments:

Can we move _setup_profiler and all the config parsing to be within the recipe? One principle we maintain is that DictConfigs should be used only the recipe layer (and in torchtune/config). Once we get to the general setup_profiler utility all the params should be flattened and there should be no DictConfigs. It is totally ok if _setup_profiler is redundant across recipes
The defaults are awesome, I would encourage you to remove any config related items from these (such as component fields) for the principle mentioned above.
It's not clear to me why we need to create and return the profiler config again in setup_profiler?
In _setup_profiler, just pass in cfg["profiler"] directly and name the parameter cfg_profiler similar to the other setup methods. That way you don't have to keep indexing with PROFILER_KEY

Closing this and issuing a new PR as the commit history was corrupted after rebasing on main.


feat(guide): Update quality size FAQ and preferred info

Pull Request
Purpose

Updated quality size FAQ and preferred info
Approach

Updated quality size FAQ and preferred info, switched to tabbed option for standard and anime/animated/cartoons
Open Questions and Pre-Merge TODOs

[x] Update Radarr quality size FAQ and preferred info
[x] Update Sonarr quality size FAQ and preferred info
[x] Added animated/cartoons to the anime quality size
[x] Switched to single includes file location to prevent multiple places to edit the same info

Requirements

[x] These changes meet the standards for contributing.
[x] I have read the code of conduct.

#1831 I still don't understand why we should add this to the guide ?
shouldn't the info added be enough ?

@bakerboy448

would this cover issue #1831

I think we should include the preferred score in the table as the words will be skimmed over

added this to it, because if i set it to 399 we will get people complaining they can't set it to 399 and it reverts to 395.


Two translations the same? Dr. Mustafa Khattab and Dr. Mustafa Khattab, The Clear Quran

I believe these two translations are the same, correct?

Yes, they're the same. The first translation is a simple, second has footnotes.  The next release will remove the simple one.


Logic to filter displayed rows in one table based on column value in another

So the basic design of the app is one master table where all information is added, with several Boolean columns based on what users need to see the rows.  Basically, if the column is true, I want that row to be displayed in another table, and if the column is false, that row is omitted.  I have the master table and 5 of these sub tables that need to see the master rows when the appropriate columns are true.  Right now I have all the sub tables pointing to the master table for the RowFields() Base to sync the data between them, and to make sure that any edits to the subtables also change the master.  But what I need is the appropriate logic to edit what rows of the master table is displayed to the subs, again, based on columns in the master table that the sub tables don't get.

Sorry but i can't figure out question. Maybe give some sample tables, and final result you are trying to achieve

So the app is going to be an internal app for a machine shop.
The business need is for an admin to be able to put in orders in the master table along with what machines need to be used.
There are 5 terminals in the back that correspond to each machine, so I am planning on 6 users, one admin, and 5 terminal logins.  The terminals should only see the orders that have been marked to use their machine.
So the admin table will be something like:
orderID   Customer  Part   Due Date   Done   Machine1    Machine2    Machine3    Machine4   Machine5
and the terminals should see the
orderID   Customer   Part   Due Date  Done
but only for the orders that the admin has marked their machine for
The also need to be able to mark done and have that reflected on the admin table

So, make this machine number information a part of user table, like a MachineNumber field. Make it available in client side, through ScriptUserData, and remove Machine1..N columns if user has a machine number assigned, by overriding GetColumns method of the grid. Also filter rows depending on logged user MachineNumber server side, by overriding ApplyFilter of ListRequestHandler. If you want to hide Machine1..N fields from form, also override GetPropertyItems method of your dialog, and remove them by their field name etc, if user is not an admin.

What would the ApplyFilter override look like?

override ApplyFilter(SqlQuery query) {
    base.ApplyFilter(query);

   var machine = (AuthorizedUser.UserDefinition as UserDefinition).MachineAssigned;
   switch (machine) {
       case 1: query.Where(fld.Machine1 == 1); break;
       case 2: query.Where(fld.Machine2 == 1); break;
....
   }
}


optimize getFDCount with sync.Pool

What does this PR do?
Optimizes getFDCount by using a sync.Pool for the buffer passed to syscall.Readdirent.
Motivation
High number of allocations from this code path.
Additional Notes
I didn't use a single static slice, because I wasn't sure of the concurrency requirements of this code.
BEFORE
goos: linux
goarch: arm64
pkg: github.com/DataDog/datadog-agent/pkg/process/procutil BenchmarkGetFDCount
BenchmarkGetFDCount/self_proc
BenchmarkGetFDCount/self_proc-4         	   53605	     22115 ns/op	    8536 B/op	       7 allocs/op
BenchmarkGetFDCount/self_proc-4         	   54898	     22029 ns/op	    8536 B/op	       7 allocs/op
BenchmarkGetFDCount/self_proc-4         	   55078	     22459 ns/op	    8536 B/op	       7 allocs/op
BenchmarkGetFDCount/self_proc-4         	   54662	     21829 ns/op	    8536 B/op	       7 allocs/op
BenchmarkGetFDCount/self_proc-4         	   54435	     22127 ns/op	    8536 B/op	       7 allocs/op

AFTER
goos: linux
goarch: arm64
pkg: github.com/DataDog/datadog-agent/pkg/process/procutil BenchmarkGetFDCount
BenchmarkGetFDCount/self_proc
BenchmarkGetFDCount/self_proc-4         	   56757	     21069 ns/op	     344 B/op	       6 allocs/op
BenchmarkGetFDCount/self_proc-4         	   56272	     21257 ns/op	     344 B/op	       6 allocs/op
BenchmarkGetFDCount/self_proc-4         	   56191	     21107 ns/op	     344 B/op	       6 allocs/op
BenchmarkGetFDCount/self_proc-4         	   56752	     21188 ns/op	     344 B/op	       6 allocs/op
BenchmarkGetFDCount/self_proc-4         	   57037	     21043 ns/op	     344 B/op	       6 allocs/op

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Media stats and info

Please add the following details when viewing a video, audio or document in the LBRY app.

See how many nodes are hosting the file
File size
Transaction ID (WHere in the blockchain the file is stored)
Magnet Link
Metadata

Same reply as the Desktop thread

I cannot find any details of the file on the mobile app such as Claim ID, LBRY URL, Languages, Media Type, License, and file size.
I cannot find a magnet link anywhere on the content page for the data
By nodes, It would be nice to have a number on how many people are seeding the file and how many peers are there for the file just like in a bittorrent client to determine the strength of the file on the network


Upon returning to port, gear count reset but ship count

all themes
do sortie
ask RNG for a drop (at least two or more, for accurate result)
remember the number of equipment count before sortie (on my case, 450)
keep going until the sortie ends (on my case, 2 drops, 2 DD, 2 slots)
once first port call received, 452->450
once second port call received, 450->452 (this one is correct, and stops)

(ps: i'm afraid of resetting the pending counter is not allowed on the end of sortie...)

well, i guess its because the slotitem is called before port, and have "obsolete" data on it..
let's say my Hiyou have plane proficiency level of 4,4,4,4 upon returning sortie, it still 4,4,4,4, but when i check equipment page, it's already 5,4,4,4.
and its updated due to modernization for Yukikaze

ah maybe pendingGearCount is reset on end sortie?

well, but the thing that should be avoided that, pendingGearCount should not be kept after 2nd port call, because it's slotitem is already counted with the new ship one....

hm that's true

fixed along with referencing issue


Noto site issue: Malaysian are using Simplified Chinese mostly not Traditional Chinese

Moved from https://github.com/googlei18n/noto-fonts/issues/51

I looked at the site and http://www.google.com/get/noto/#sans-hans lists Malaysia among the SC countries. I believe it is fixed.


ring 0.16.20 fails on glibc for armv7-unknown-linux-gnueabihf

Checklist

[X] I've looked through the issues and pull requests for similar reports

Describe your issue
cross fails to build ring 0.16.20 (it is not a direct dependency) for armv7-unknown-linux-gnueabihf
What target(s) are you cross-compiling for?
armv7-unknown-linux-gnueabihf
Which operating system is the host (e.g computer cross is on) running?

[ ] macOS
[ ] Windows
[X] Linux / BSD
[ ] other OS (specify in description)

What architecture is the host?

[X] x86_64 / AMD64
[ ] arm32
[ ] arm64 (including Mac M1)

What container engine is cross using?

[X] docker
[ ] podman
[ ] other container engine (specify in description)

cross version
cross 0.2.1 (05c4490 2022-06-21)
Example
❯ cross build --target armv7-unknown-linux-gnueabihf
   Compiling libc v0.2.126
   Compiling ring v0.16.20
   Compiling anyhow v1.0.58
   Compiling protobuf v2.27.1
   Compiling typenum v1.15.0
   Compiling httparse v1.7.1
   Compiling crc32fast v1.3.2
   Compiling crossbeam-utils v0.8.9
   Compiling libsqlite3-sys v0.24.2
   Compiling encoding_rs v0.8.31
   Compiling brotli-decompressor v2.3.2
   Compiling lock_api v0.4.7
error: failed to run custom build command for `ring v0.16.20`

Caused by:
  process didn't exit successfully: `/target/debug/build/ring-c5ea9685f52c1129/build-script-build` (exit status: 1)
  --- stderr
  /target/debug/build/ring-c5ea9685f52c1129/build-script-build: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /target/debug/build/ring-c5ea9685f52c1129/build-script-build)
  /target/debug/build/ring-c5ea9685f52c1129/build-script-build: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.27' not found (required by /target/debug/build/ring-c5ea9685f52c1129/build-script-build)
warning: build failed, waiting for other jobs to finish...
error: build failed

Additional information / notes
No response

Have you tried running cargo clean? See #724.

Oh, yes that seems to work. Thank you!


[AI] if a player disconnects while being the target of an AI, Ai continue attacking for a while before returnign to patrol

this is tricky one, I spent a bit of time on this, but not sure what is wrong yet.

should be fixed, to be monitored


Improve the heuristics of the bold broken check

Putting a span straight in body is not a good check because it will only
succeed for a monospaced body font, where the monospace font selection
is more likely to be placed on .terminal. For better realism still,
I’ve put it as a span inside a div inside a div.terminal, which matches
what the real terminal will do, so it should be as sound a check as can
be done short of doing it on the actual terminal (though quite frankly I
don’t see why we don’t just do that).

Hmm, I figured non-monospace fonts would still increase the scrollWidth when boldened. Is this not the case for some browsers? It seems to work in practice.


Allow more flexibility in configuration filepath destination?

Hello,
First, thanks for tvnamer, quite a time saver!
Regarding moving file configuration, this would be great to allow more
flexibility in the path setup (move_files_destination option).
For example, today we can define:
...
"move_files_destination": ".../tvshow/%(seriesname)s/%(seasonnumber)d/",
...

I'd like to be able to set a more specific path still based on those
options, for example, splitting on the first letter of the tvshow:
...
"move_files_destination": ".../tvshow/%(seriesname[0])/s%(seriesname)s/%(seasonnumber)d/",
...

As far as i could see in the code, that part is static so we cannot
yet (checked doc, code and issues). The formatting uses a dict with
special keywords [1].
[1] https://github.com/dbr/tvnamer/blob/d4f52624353a9050708ae2b7c3cbd3cb16bb570d/tvnamer/main.py#L63-L74
To test the idea, i patched locally my installation to adapt that dict
accordingly (for all conditionals), for example:
 isinstance(episode, NoSeasonEpisodeInfo):
        seriesname = wrap_validfname(episode.seriesname)
        destdir = Config['move_files_destination'] % {
            'seriesname[0]': seriesname[0],
            'seriesname': seriesname,
	    ...

I found this rather limited but it works.
I don't really know how to apply this generically though (maybe some
users would want that on other keys and with more than 1 first
letter).

config:

Raspbian GNU/Linux 9.8 (stretch)
Python 3.5.3 (default, Sep 27 2018, 17:25:39)

tvnamer.version (2, 5)

Relatedly, other tools like flexget [2] uses jinja [3]. That allows
configuration to look like:
{{ tvdb_series_name | lower | first }}

(this is verbose but it's declarative enough ;)
Then again that adds a new dependency and possibly new issues for you
later down the line.
[2] https://github.com/Flexget/Flexget
[3] http://jinja.pocoo.org/
Cheers,

I found this rather limited but it works.
I don't really know how to apply this generically though (maybe some
users would want that on other keys and with more than 1 first
letter).

In the mean time, here is my actual proposal [1]
I have been using this successfully for a while now [2]
[1] https://github.com/ardumont/tvnamer/commit/d3012571b97aef2ae583eec9ce14e7ecb6b82acb
[2] https://gitlab.com/ardumont/nixos/-/blob/master/rpi4/pytools/default.nix#L31
Cheers,


Should this work in WebXR?

If I'm looking into the source code there is a lot code for WebXR. But It doesn't work in the Browser. Should this work?  In the "Sphere World" and in the "Origin Gravity" I can't move or turn. There is no SkyBox and the performance. Jesus why is this so slow. This simple worlds should have 200 FPS on the Quest 2.  And so much edge flicker.

The godot-xr-tools demo project uses a helper function in demo_scene_base.gd which patches in the WebXR inputs when WebXR is detected. It turns out some of the demo scenes weren't using demo_scene_base.gd, but were using the default scene_base.gd, and so the WebXR controls weren't being patched in. There's a pull request https://github.com/GodotVR/godot-xr-tools/pull/454 that fixes this.
As for the performance issues, there are currently performance issues with the Godot physics engine around complex convex colliders, and the Vulkan renderer isn't optimal for mobile renderers.

I found another bug on the Quest2. Often the Physic_Hands are not rendered properly. Mostly this happens if you switch between the worlds.

This is fixed in Godot 4.2 and will hopefully be backported to Godot 4.1.2.


development issues list

Getting error messages while opening the extension in extension host.

This is due to the commands that are present in the menus section but not registered in the commands section of the package.json file.

Getting an error message if the fileName_address.json file is not present for the contract that the user wants to select from the contracts section of the treeview.

Getting an error message if the deployed address is not inserted in the fileName_address.json file while calling a function.

Enter values of the parameter must be visible in the parameter tree of the ABI.

A watcher should be available to watch the new changes in compiled JSON file of the smart contract. it should automatically refresh the contract list in the contracts tree.

replace this icon with refresh button to manually refresh the contract list in contracts tree.

Whenever a user enters deployed address value in the address field of the fileName_deployed_address.json file then the state should be changed to the deployed address value from undefined.

Whenever a user selects a contract from the contract tree then the three files fileName_deployed_address.json, fileName_functionInput.json fileName_constructorInput.json for the selected contract should automatically create.

The contact list is not refreshing when the user is clicking on the refresh button of the contract tree.

getting this error pop up on start of the extension


IGNITE-12126 ODBC SQLNumResultCols() works after SQLPrepare()

According to ODBC Programmer's Reference, SQLNumResultCols can be called successfully only when the statement is in the prepared, executed, or positioned state.
However, it was not working when the statement is in the prepared state and not yet executed: column count returned was 0.
Fixed that.
The Contribution Checklist

[x] There is a single JIRA ticket related to the pull request.
[x] The web-link to the pull request is attached to the JIRA ticket.
[x] The JIRA ticket has the Patch Available state.
[x] The pull request body describes changes that have been made.
The description explains WHAT and WHY was made instead of HOW.
[x] The pull request title is treated as the final commit message.
The following pattern must be used: IGNITE-XXXX Change summary where XXXX - number of JIRA issue.
[x] A reviewer has been mentioned through the JIRA comments
(see the Maintainers list)
[x] The pull request has been checked by the Teamcity Bot and
the green visa attached to the JIRA ticket (see TC.Bot: Check PR)

Notes

How to Contribute
Coding abbreviation rules
Coding Guidelines
Apache Ignite Teamcity Bot

If you need any help, please email<EMAIL_ADDRESS>or ask anу advice on http://asf.slack.com #ignite channel.

Merged to master.