ECharts server-side rendering SVG contains invalid font property

Version
5.2.2 (and 5.2.1)
Reproduction link
https://codesandbox.io/s/echarts-ssr-uxfju
Steps to reproduce

Create a server-side rendering of ECharts (5.2.2) with JsDOM and Node Canvas
Configure to render a simple chart to SVG

const echarts = require("echarts");
const { JSDOM } = require("jsdom");
const { createCanvas } = require("canvas");
const fs = require("fs");

const config = {
  option: {
    animation: false,
    fontSize: 10,
    fontFamily: "Arial",
    xAxis: {
      data: ["1493190351122"],
      axisLabel: {
        fontSize: 10,
        fontFamily: "Arial"
      }
    },
    yAxis: {
      name: "Y Axis",
      type: "value",
      nameTextStyle: {
        fontWeight: "bold",
        fontSize: 10,
        fontFamily: "Arial"
      }
    },
    series: [
      {
        type: "line",
        name: "Series 1",
        data: [39]
      }
    ]
  }
};

function render() {
  const ctx = createCanvas(1920, 1080);

  if (ctx) {
    ctx.font = "Arial";
  }

  echarts.setCanvasCreator(() => {
    return ctx;
  });

  const virtualDom = new JSDOM();
  global.window = virtualDom.window;
  global.document = virtualDom.window.document;
  const root = global.document.createElement("div");
  if (root) {
    root.style.cssText = "width: 1920px; height: 1080px;";
    Object.defineProperty(root, "clientWidth", { value: 1920 });
    Object.defineProperty(root, "clientHeight", { value: 1080 });
    let chart = echarts.init(root, null, {
      width: 1920,
      height: 1080,
      renderer: "svg"
    });
    if (chart) {
      chart.setOption(config.option);
      let result = root.querySelector("svg")?.outerHTML ?? null;
      chart.dispose();
      return result;
    }
  }
  return null;
}

const buffer = render();
console.log(buffer);

fs.writeFile(`output.svg`, buffer, function (err) {
  if (err) return console.log(err);
});

What is expected?

The SVG <text> elements should have the correct font family as specified.
The <text> elements inside the resulting SVG should have valid font specification inside style="".

<text xml:space="preserve" style="font: normal sans-serif 12px;">

What is actually happening?

The SVG <text> elements do not have the correct font family as specified.
The SVG's <text> elements contain invalid font specification so that the SVG text will be rendered incorrectly.

<text xml:space="preserve" style="font: sans-serif 12px normal normal normal 12px;">

Per CSS font  property (see https://developer.mozilla.org/en-US/docs/Web/CSS/font), it should be
[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar

I found this bug when I tried to configure the Y axis nameTextStyle to bold and small size and realised that the font styles and weight I set there do not affect the outcome at all.
This issue is only seen with server-side rendering. I use an identical configuration for a React front-end, it works fine, produces valid CSS.
<text xml:space="preserve"
  fill="#101010"
  fill-opacity="1"
  stroke="none"
  transform="matrix(0,-1,1,0,27,122)"
  dominant-baseline="central"
  text-anchor="middle"
  x="0"
  y="-8.5"
  style="font: bold normal normal 12px Arial;">Axis Title
</text>

After a few tests around setting font for server-side ECharts rendering, I realised it's pretty broken. For instance, I set the fontFamily property of chart option as 'Liberation Sans' which is available on Linux/AWS Node.js Lambda. The rendering produces something like style="font: Sans 9px normal normal normal 9px;", which drops Liberation. Due to spaces?

Just confirmed the bug regarding a font family with spaces. When I set fontFamily to FreeSans, it's correctly rendered to  style="font: FreeSans 9px normal normal normal 9px;" in the <text> elements of the resulting SVG.

The font issue has been raised by #15064 and we've improved it in ecomfe/zrender#836. Please feel free to try to build from the next branch and then check if it works. Also, we add a new SSR in #15880, which needs no third-party framework to work.

@plainheart thanks for your info. Unfortunately, the nightly build breaks my current implementation which worked fine with 5.2.2. The new built-in feature SSR looks interesting though. I will look into it.

Made a simple example, it's easy enough to get started. https://codepen.io/plainheart/pen/RwLbqye

Confirm that the font issue seems to be fixed with "echarts-nightly": "^5.3.0-dev.20211128". I'm wondering, when do you plan to release 5.3? Thanks

Maybe about 1 month.

@plainheart a bit off topic but the new SSR function with renderToSVGString() requires that echarts.init() must have width and height (maybe the same when using canvas). The generated SVG has width and height, how does that scale when a fixed width and height is set? Does that defeat the purpose of SVG, supposed to be scalable? Thanks

@htr3n We are planning to provide an option that can use viewport instead of fixed width and height.

@pissang @plainheart Regarding the nightly build that you recommended, I've noticed a strange issue. I tried to load the legend icons as dataURI per documentation here: https://echarts.apache.org/en/option.html#legend.data.icon.
    legend: {
        show: true,
        data: [
            {
                name: 'LegendIcon',
                icon: 'image://data:image/svg+xml;base64,PHN2ZyB4bWxuc....'
            }
        ]
    }

The React UI can render successfully the icon but the new server-side rendering implementation renderToSVGString() raised an error: ReferenceError: HTMLImageElement is not defined. It seems it could not load the dataURI?

It may be related to this line. https://github.com/ecomfe/zrender/blob/next/src/svg/graphic.ts#L207

@plainheart Does that mean my guess is correct? The legend icon needs a Canvas to render properly, doesn't it?

Perhaps I can provide more details into the error after catching it
Failed to render graph due to ReferenceError: HTMLImageElement is not defined
    at brushSVGImage (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:41046:30)
    at brush$1 (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:41131:20)
    at SVGPainter._paintList (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:41772:31)
    at SVGPainter.renderToVNode (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:41692:18)
    at SVGPainter.renderToString (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:41719:39)
    at ECharts.renderToSVGString (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/node_modules/echarts-nightly/dist/echarts.js:29889:24)
    at n (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/dist/dev.js:2:36414)
    at c (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/dist/dev.js:2:37712)
    at n (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/dist/dev.js:2:50942)
    at l (/home/alext/Projects/DigitalCharts/sago-render-lambda/lambda/dist/dev.js:2:51931)

Following up on the legend icon issue, if I use SVG path data path://M..., the rendering works and ECharts generates some SVG code like this
<path d="M 0 3.7391 L 5.4348 7 M 0 10.2609 L 5.4348 7 L 7.6087 7 M 9.7826 7 L 11.9565 7 M 14.1304 7 L 16.3043 7 M 18.4783 7 L 20.6522 7 L 25 3.7391 M 20.6522 7 L 25 10.2609" fill="#5f4890" fill-opacity="1" stroke="none" transform="matrix(1,0,0,1,616.5208,5)"></path>

How do I set  the attributes stroke or stroke-width of that SVG element <path d="..."/> as it seems ECharts render engine (zrender) already transformed the input SVG path into something else?
I've looked left and right into the documentation https://echarts.apache.org/en/option.html#legend.data.icon but could not find any settings?

@htr3n It seems to be a bug of the new renderer.

Should I report a bug regarding the legend icon image://data:image... with the new engine implementation?

No need to do that. We will look into this issue.

@plainheart Is this fixed in the release 5.3.0?

@htr3n It should be fixed in 5.3.0. Please try it again. Let us know if you still have issues.

@plainheart Just confirm the issue with invalid font properties is fixed in 5.3.0. I think we should split the issue with the legend icon image://data:image... so that this ticket can be closed?

@htr3n Sorry for my late reply. Just checked this icon issue with the latest version, it seems to be working for me. How is it on your side?

@plainheart Hi, sorry for my late reply. I can confirm it's fixed in 5.3.0


[Question] How to get a list of currently monitored regions

@martinklimek hello, i was wondering how can i get a list of currently monitored regions?
Thanks

@okonon Checkout the ESTBeaconManager. In that class there is a monitoredRegions attribute which should let you do exactly what you are trying to do.

Thanks!


"Jodd failed to parse into a valid AST" error occures while performing a check on response body

Hi, I faced the following issue in 3.0.0RC2.
I have a check in my request:
.check(jsonPath("$.ResponseHeader.responseCode").find.is("200"))
Sometimes, I get the following error:
Request:
/request123: KO jsonPath($.Response.responseCode).find.is(200) preparation crashed: Jodd failed to parse into a valid AST: j.l.ArrayIndexOutOfBoundsException: 12996
As I have this check in every request my assumption is that error depends on the size of response body. Can't remembered anything similar in 2.3.1.
I uploaded full response on which an error occures to google disk.

Thanks, your sample helped a lot!
This is indeed a Jodd issue: https://github.com/oblac/jodd/issues/637


please make networking restart optional

hello, thanks for your module
I can tell it works fine on debian jessie :+1:
please make optional the network service restart as it cut all my other interfaces even when network_manage_devices: no is configured

Hey, I am pleased that you like this little module.
If we suppress the network service restart how do we get the configuration changes into effect?
Thinking a bit about it, it seems very rude to restart the service - but we could not figure out a better way so far.

in my playbook i manually start the interfaces
  roles:
    - role: dresden-weekly.network-interfaces
      network_manage_devices: no #if yes all other interfaces are deleted
      network_interfaces:

       - device: eth1
         auto: true
         family: inet
         method: manual
         pre-up: [ifconfig eth1 up]

       - device: eth2
         auto: true
         family: inet
         method: manual
         pre-up: [ifconfig eth2 up]

  tasks:
    # start the nics
    - command: '/sbin/ifup eth1'
    - command: '/sbin/ifup eth2'

you can do the same in the module

Thats not idempotent
Simplest was is to use a handler (or chained handler but I don't recommend it should you loose connection and not be using fireball/localhost)..
I recommend a handler gets triggered if the config file changes..
Make that simply reload all using shell: ifdown -a ; ifup -a
I'm using ansible-pull on my hosts (which connects on localhost) so I don't run any risk of loosing connection but I prefer to reload all the network.. if its gonna break the networking on next boot.. I want to know now.

@gfa Thank you :+1: for pointing out your use case. I guess we need a way to restart the devices individually. Also we do not have to trigger them if auto is false. Unfortunately I do not know how to do that. Handlers do not have options.
@starkers Welcome to the discussion. I never used Ansible-pull. I could not find your fork but I am looking forward to your pull request. Can you give me an estimation?
I will try to do some tests to find a better solution to the restarting issue.

@starkers  no, don't shutdown all my interfaces (ifdown -a) that's the same as restarting networking service.
@arBmind I'm just starting with ansible, so I can't comment on handlers.
I would do ifdown $INTERFACE && ifup $INTERFACE for each modified interface.

I played with the code a bit... no time for real tests.
It seems that the role is already quite defensive with restarts. It restarts only the changed network devices.
Of cause the first application will trigger the restart of all the configured devices.
I proposed a pull request that delays the restarts to the end of the play and also to suppress them or adapt them to your needs.
All untested so far.
Please take a look at pull request #19 - would you use this?

I further improved and merged #19


Update version to 2.0 dev

While I could have done 1.7, I think it's pretty safe to say that our next release is going to be 2.0.

I recommend we stick to 1.7 dev and flip it later right before we merge breaking changes in

(not feeling too strongly about it though)

I recommend we stick to 1.7 dev and flip it later right before we merge breaking changes in

I'm sure we'll forget to flip the version until the release, but whatever.

SYCL failure only due a timeout. Otherwise, good.


terraspace plan return error bad URI.

I have upgraded terraspace from 2.0.0 to 2.1.4 and terraform 1.2.5 then I tried to "terraspace plan ", I got an error like this.

I'm not sure that what function interact with my git remote url?
When I downgrade to 2.0.3, it work fine.
My Environment

Software
Version

Operating System
wsl ubuntu 20.04

Terraform
1.2.5

Terraspace
2.1.4

Ruby
3.0.3p157

Fixed in #255 and released in 2.1.5. It would be useful you can email<EMAIL_ADDRESS>the general form of the git repo, so can improve that logic in the future. No sweat either way. Thanks for the report.


Chemistry, handedness, secondary position, and trait filters

Chemistry and handedness can apply to both career and season stats
Secondary position and traits should only apply to season stats

As part of this, I am also going to add a start/end season selector to view player stats for a given range
Also going to add the same start/end season selector on the team page

The season selector is already on the season stats grids, but this would give the ability to select a range, just for clarification

Just have to integrate this on season batting and figure out the behavior for the trait filter, then good to go


Add limit support to queries without order by.

Queries without order by can have a limit clause. The limit operator returns the first N rows of its input.
Adds physical and logical limit nodes to the optimizer.
Adds a limit physical operator to the execution engine.
**Note: some files appear to have many changes but most of the changes are code reformating with an automated tool.

Fixes #29


Feature Request: Allow to run a (shell script) wrapper for cmake

Brief Issue Summary
This issue is slightly related to https://github.com/microsoft/vscode-cmake-tools/issues/809 but not the same. We have a use case where users should not execute cmake directly from the shell, but instead should use a small wrapper bash script. This is due to a number of environment constraints that help isolate the build from the rest of the system.
Everything works perfectly well on all kinds of Unix (Linux, macOS) where shell scripts are executed native. But it breaks on Windows. We use Cygwin bash for implementing the wrapper and that seems not supported. I tried
"cmake.cmakePath": "C:\Scripts\bin\vscode-cmake-wrapper.sh"

and
"cmake.cmakePath": "C:\Cygwin64\bin\bash.exe C:\Scripts\bin\vscode-cmake-wrapper.sh"

but both will not work. Admittedly I did not try a cmd script.
Are there known workarounds? Or could this be implemented, for example by supporting a full command line in "cmake.cmakePath"?

@emmenlau, thank you for this feature idea. We may not be able to implement this immediately and we will monitor the reactions from the community to evaluate where this fits best in our backlog.
One way we can support this is to extend what "cmakePath" can do, as you stated.
Just to explore all possibilities, if we add a setting to run the "environmentSetupScript" every time before configure and/or build (opposed to what is doing now, being run only when a kit is set or when the project is loaded), would that work? You can try now by resetting your kit (change to a different one then back to the original) before you do the operation that needs this script to be run. If you find that running the kit "environmentSetupScript" each time is causing things to work, then maybe we prefer to implement this support this way.

The issue is not completely gone but I have sufficient workarounds (as mentioned above) to say that this is not a problem for us any more. Closing the issue as "low relevance"...


Consider moving NetworkTimeout to HttpPipelineTransportOptions

          > Again to ground my understanding - if a caller sets a RetryPolicy, does that mean we completely ignore RetryOptions? (It sounds like what you're saying above, but I want to confirm I'm understanding correctly.)

Nope, we still will thread the NetworkTimeout through to the ResponseBodyPolicy. I agree that the story is a bit confusing with how we are presenting RetryPolicy as an override to RetryOptions. I would suggest we consider moving NetworkTimeout somewhere that is more sensible (perhaps TransportOptions) as @christothes suggests.
Originally posted by @JoshLove-msft in https://github.com/Azure/azure-sdk-for-net/pull/37715#discussion_r1268607356

Consider applying EBN to the one on RetryOptions and putting new property on HttpPipelineTransportOptions which would take precedence over the RetryOptions one.


Add elastic 8 support via github.com/elastic/go-elasticsearch/v8

Closes #30752
github.com/elastic/go-elasticsearch/v8 only support Elasticsearch v8, so the previous code is kept for v7 compatibility.

Also update the action:
https://github.com/go-gitea/gitea/blob/ad4e902d5a1430c0c1df18bf404537df5ded1dba/.github/workflows/pull-db-tests.yml#L94

elasticsearch 7 is still supported until 9.x is released. I think we should support both

Ok in that case it's fine to test the minimum supported version. We do this for databases too.

IIRC github.com/elastic/go-elasticsearch/v8 doesn’t support (at least) older Elasticsearch v7 clusters, nor OpenSearch.
Additional work is required to maintain compatibility with these distros.

I'm adding a ELASTICSEARCH_VERSION setting. Not sure if it's the best option, and not sure if we can auto detect the major version of ElasticSearch used

The REST API returns version at root as version.number:
https://opster.com/guides/elasticsearch/how-tos/check-elasticsearch-version/

Fixing up last few issues, probably Elastic REST API authentication related.
Somehow the Elastic related test with Postgres db test is not running. I'm testing on my own fork right now

Regarding opensearch (and I'm fine leaving that out in this PR), I think the status quo is:
olivere/elastic/v7 should be compatible with elasticsearch 7 and opensearch 1
elastic/go-elasticsearch/v8 is only compatible with elasticsearch 8
opensearch-project/opensearch-go is compatible with opensearch 2 and maybe opensearch 1
So unfortunately, it seems to support them all I'm afraid we need 3 modules, it's a mess.

Hmm, is TestESIndexAndSearch in modules/indexer/code not triggered? there should be a few errors with that test


Definition of public & private API

Definition of packages for private and public API

This change is

Changes Unknown when pulling 7fdf6d51ebae696d8c4ea25ffd2df5a58ff87366 on private-public into ** on master**.

I think it will be easier to redo this instead of a merge


Only set .onboarding-focus class when onboarding is enabled

Whenever the onboarding is not (yet) active, the onboarding-focus class is set on the element of the first step. This might conflict with some existing z-index attributes, yielding unwanted behavior (as it did in my case).
This PR runs the update logic on changes to index as well as enabled, and only sets the onboarding-focus class on elements when the onboarding is active.

@adamalbrecht
Attached item is not focused in case of  tags sometimes even in

Sorry to ask this here as issues tab is disabled. . . . .
Thanks for the awesome plugin.


conside change private-repo to seperate directory

Observed behavior
private repo include private init.el and some private module, thou if I add private module I need link to .emacs.d/... manually. and if I want try anothers config ,then I shoud unlink all my private repo init.el and module dir. then  link others all assets.  when restore then repeate do again .it's  inconvenient.
Expected behavior
please conside seperate these private file in one directory like spacemacs for VC and switch  handly.

upvote.

As of b3dcba5, if you have :config private enabled, you can now put your private module in ~/.doom.d (and sub-modules in ~/.doom.d/modules/).
If you'd like to adhere to XDG conventions, use the +xdg flag: (doom! :config (private +xdg)).
It's still a little experimental. Let me know if it gives you trouble.

thanks for code, it works fine


Standardize naming

Request description
The need for such a ticket initiated in https://github.com/openxla/stablehlo/pull/335#issuecomment-1279538623.
Let us use this ticket to collect opportunities to apply uniform naming across various StableHLO artifacts like the entities in the ODS.
From https://github.com/openxla/stablehlo/pull/335#pullrequestreview-1143225138
... ensure that: 1) the opset has uniform naming style, 2) all C++/Python breaking changes related to naming are done at once instead of spread over weeks or months of breakages.

Some ops have inconsistent naming with our standard e.g. using "output" instead of "result" in the ODS. The spec, ODS example, and pretty-print currently defaults to "result" even if the ODS name is "output". These ops are (in no particular order):

Constant
Iota
DynamicIota
CreateToken
BatchNormTraining
DynamicBroadcastInDim
DynamicReshape
RngBitGenerator
ReducePrecision

Looks like log_plus_one is a misnomer. Unlike exponential_minus_one, which computes exp(x) - 1, this op computes log(1 + x), so I think that it should be renamed to log_one_plus.

Some more ideas for standardizing names:

input vs operand (output vs result already called out above).
Consistent use of singulars and plurals (e.g. TupleOp::val should be vals, etc).
IotaOp::iota_dimension (and multiple similar cases) vs ReverseOp::dimensions.
Specifying the "result" name explicitly vs relying on TableGen to provide name it implicitly.
Same thing as above but for derived unary and binary ops.
IsFiniteOp:x/y - can we use standard names?
CompareOp::compare_type - why not comparison_type, given that this is how the enum is called?
CholeskyOp::a - can we use standard name?
DotGeneralOp::dot_dimension_numbers vs ConvolutionOp::dimension_numbers.
CompareOp::comparison_direction/FftOp::fft_type/etc vs just direction/type/etc.
Compare names with HLO and see if that exposes more inconsistencies. Would be good to align with HLO if possible.
Compare op names and op mnemonics. E.g. why SinOp has the "sine" mnemonic? Can we have op names and op mnemonics be the same (modulo case).

The mnemonic for CrossReplicaSumOp is cross-replica-sum, which is not consistent with other mnemonics which uses underscore case: cross_replica_sum. This needs to be changed in status.md, StablehloOps.td, and other related files (e.g. including tests/mlir files).

Naming affects serialization, and this changes the project for this ticket from the P1 priority Public API to the P0 priority Specification Compliance. We'll need to sort this out before the release of v1.0.

Another instance where naming can improve in TupleOp.

Another instance where change in attribute name is suggested.


[BUG]: Unable to use AzureOpenAI embedder

How are you running AnythingLLM?
Docker (remote machine)
What happened?
Failed to embed using AzureOpenAI embedder. Always returns 'Failed to load resource: the server responded with a status of 504 (Gateway Time-out)'
I tried my key offline and it seems like api_version is a required parameter, and its missing from the settings page. Could that be the reason?

Are there known steps to reproduce?
Change your embedding provider to AzureOpenAI.
Upload any file and it'll fail.

Upload any file and it'll fail.

When you mean upload, do you mean embed? The embedder is not called during file upload, only embedding

@ehengtan Okay so i am fairly certain this is due to a bad client configuration - here is my walkthrough that does not replicate the reported bug:
First in the AnythingLLM UI i fill out the endpoint and key, which i acquire from this screen:

Then in the Azure OpenAI studio I create an embedder model deployment

I put the text-embedder label into AnythingLLM.
Embedding documents works successfully.


Add pytest

This adds pytest. Tests can be run with python setup.py test
Currently there is only a single dummy test as proof that the tests are running

Should probably be added somewhere in the travis-ci script as well. Not sure where you see as the best place in there.


Accounts with f64 values yield the trait bound f64: std::cmp::Eq is not satisfied in rust clients

Rust intentionally does not implement Eq for float types, yet floats are supported by both borsh/anchor.
Is there a way to avoid rendering that derive trait when the accounts/structs include f64 values?

This is a really good point. Currently there is no way manually specify the derive traits, but we should add one. I will have a look at it.

@kevinrodriguez-io PR #242 added configuration options to customize the traits implemented by a type – this change is in the latest release of the Rust renderer package.


Removing MicroK8s sometimes leaves iptables rules behind

I had a MicroK8s instance that was running some services on port 80. After running sudo snap remove microk8s --purge to remove it, I was unable to have anything else running on port 80. As an example, I would run this:
$ sudo python -m http.server 80
Serving HTTP on <IP_ADDRESS> port 80 (http://<IP_ADDRESS>:80/) ...

Which would result in this:
curl -v http://localhost:80/
*   Trying <IP_ADDRESS>:80...
* connect to <IP_ADDRESS> port 80 failed: Connection refused
* Failed to connect to localhost port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 80: Connection refused

After poking around a bit, I found that there were some iptables rules left behind, even though MicroK8s had been uninstalled:
$ sudo iptables-legacy-save | grep k8s
    -A CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"ea1eb612eac9d554d5d4bd81aa92bc7dfe3f2bd5cb71a27c54b480e7906f4caa\"" -m multiport --dports 80,443 -j CNI-DN-75cbb066bb1e01246e284
-A CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"39b7985bb76e28765f8c57569a6c487cca0c50edf8dfd4ec228d50f7c27a4ec6\"" -m multiport --dports 80,443 -j CNI-DN-c55474bc55530749bbd04
-A CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"df4ba89a451649be1cd20224decf041f58ce80c0886af5e70440c3ee9be24df5\"" -m multiport --dports 80,443 -j CNI-DN-01bb7e67bd4e1e4f1f3b0

I then ran these commands to remove the rules:
$ sudo iptables-legacy -t nat -D CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"df4ba89a451649be1cd20224decf041f58ce80c0886af5e70440c3ee9be24df5\"" -m multiport --dports 80,443 -j CNI-DN-01bb7e67bd4e1e4f1f3b0
$ sudo iptables-legacy -t nat -D CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"39b7985bb76e28765f8c57569a6c487cca0c50edf8dfd4ec228d50f7c27a4ec6\"" -m multiport --dports 80,443 -j CNI-DN-c55474bc55530749bbd04
$ sudo iptables-legacy -t nat -D CNI-HOSTPORT-DNAT -p tcp -m comment --comment "dnat name: \"k8s-pod-network\" id: \"ea1eb612eac9d554d5d4bd81aa92bc7dfe3f2bd5cb71a27c54b480e7906f4caa\"" -m multiport --dports 80,443 -j CNI-DN-75cbb066bb1e01246e284

And running sudo python -m http.server 80 started working again. This only happens sometimes, and I haven't found a cause for it. I did find this bit of documentation that says

There is a top-level chain, CNI-HOSTPORT-DNAT which is always created and never deleted.

Maybe this chain should be explicitly deleted on snap removal?

Thank you for reporting this @knkski and for diving into this issue. We could try to update the remove [1] hook to include your recommendation. I hope I will have news for you soon.
[1] https://github.com/canonical/microk8s/blob/master/snap/hooks/remove

Hi @knkski, we just merged a fix on our removal hook. It should be available on latest/edge within the day. If you have time it would be great if you told us if it works for you. Thanks.

Hi, this is still a problem for me in 1.24/stable. Deploying an ingress resource, removing it, removing microk8s, installing it again, and deploying the same resource does not work.
Grepping the ip tables shows plenty rules being left over still after removing the snap.

This is a problem for me with microk8s 1.28/stable

actually after stopping and purging, the iptables config file itself was intact, however the rules weren't applied, a reboot fixed it


Fix/add physical card

This PR adds the Order Physical Card link in card settings.
Testing:
Should ONLY be visible if no valid physical card exists.
Should open the IAB (NOT the WebView, so should see Chrome/Safari custom tabs within the app) and request authentication
After authenticating, should be redirected to the order physical flow as usual

https://bitpay.zendesk.com/agent/tickets/434584
https://bitpay.zendesk.com/agent/tickets/433952


Add storage for spent UTxO index

Closes #1427
Pre-review checklist

[ ] All code has been formatted using our config (make format)
[ ] Any new API features or modification of existing behavior is covered as defined in our test plan
[ ] The changelog has been updated under the ## Unreleased header, using the appropriate sub-headings (### Added, ### Removed, ### Fixed), and the links to the appropriate issues/PRs have been included

Closing because this idea is unfeasible. Weak guarantees for a huge increase in complexity + hard to test.


Which waymo dataset should i download. Can you share dataset format?

Thanks for your issue, we use waymo percetion v1.4.0 to test our model, you can download the dataset here https://console.cloud.google.com/storage/browser/waymo_open_dataset_v_1_4_0 and we update our readme to detail the dataset format as follow
clip root
  |-- images
  |     |-- ${cam0 name}
  |     |   |-- t0.jpg/png
  |     |   |-- t1.jpg/png
  |     |   |-- ...
  |     |
  |     |-- ${cam1 name}
  |     |-- ...
  |
  |-- lidars
  |     |-- ${lidar0 name}
  |     |   |-- t0.pcd
  |     |   |-- t1.pcd
  |     |   |-- ...
  |     |
  |     |-- ${lidar1 name}
  |     |-- ...
  |
  |-- transform.json
  |-- annotation.json

Thank you for your work. We have three cameras on front and one lidar, do you think this repo fits our data?

We have fitten 6 cameras in our dataparser, it can be helpful to change the --filter_camera_id to use other cameras referring to scripts/shells/train.sh.
best


fix: update schema-utils-js to latest

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


first work on the call list

@emanuelschuetze Please look at this. One thing to decide: should changes be saved immediately (like the list of speakers) or do we want a save button (the one I put there will be removed then and exchanged with a nice button in the head bar)?
Also this is just for a planar list. Tree-like sorting is a huge todo for OS as a whole.

Looks good. Save button is ok for the moment. But please show also the motion identifier in the sort view. Currently there is the motion title only.

@emanuelschuetze Ok, added identifier and make the save button nicer. The last commits are just style things; If the call list is ok, we can rebase.

@jsaalfeld All done.

The wrong save button is used. If changed, this will be merged.

@jsaalfeld Done and rebased


Pingcap repo has too many commits on staging

Describe the bug
When I look in the DB here: <IP_ADDRESS>:44306, I see this:
SELECT count(*) FROM lake.github_commits; = 133958
SELECT count(*) FROM lake.commits; = 21059
But in github, I see 16610 commits

Assumptions
I think 133958 is too many. I also think that there is something up with the situation where 133958 commits are not in domain layer?
Is this what we expect @klesh @Startrekzky ?

From git, we can see that 21070 is the correct number of commits to have

Summary of Current Status:
The domain layer seems to have the right commits. So this is not release blocking in my opinion.
What seems broken
The tool layer having too many commits. This needs to be further validated to find out why this happened on staging.
What we can try next

We can run the gitrepo extractor on its own locally to see if we get 138k commits again or a different number
We can ask @klesh if he collected the data from different repos
We can look at the 138k commits and see which ones are not in the tidb repo and see if we can figure out which repo they came from
We can look at all the correct commits in the github_commits table and see if they all happened in the same time interval for collection based on created_at. Maybe this was several attempts at collection or the DB was not clean when we started?

commits from PRs are more than commits from repo is expected IIRC, and that information came from .... you @joncodo and @kevin-kline during github pull request commits collection development

I am closing this issue since @klesh believes this is not a real issue we need to solve.

@joncodo I could be wrong though, it would be greate if you could fact check @😊

Will do

So I think these commits still exist in githubs database but no longer exist in the main project. When I clone the project, I do not see 133k commits. I think what has happened is that there were too many commits in the project and it took too long to download.  If you look here:
https://github.com/pingcap/tidb/search?q=squash&type=issues
You can see the maintainers asking contributors to squash their commits. This leads me to believe that this practice is used in their workflow. I think they even use the merge and squash option in github. I can prove that here:
So this user has made a PR that was merged: https://github.com/pingcap/tidb/pull/31984/commits
It has 9 commits

None of them are in the main git repo with git show <sha>
However, if you search all commits for the name of the PR,
git log --all --grep="executor"
You can find the single merge commit in the code

Therefore, I believe the code we have is working as expected


Laravel 11 support

vinkla/hashids should be version 12 to support laravel 11

Fixed in https://github.com/rinvex/laravel-support/pull/85


Indirect modification of properties causes no effect

Following code will currently crash StrictPhp:
class Foo
{
    public $bar = [];
}

$foo = new Foo;
$foo->bar[] = 'baz';

This is due to lisachenko/go-aop-php#232

This should be closed, implemented in https://github.com/goaop/framework/pull/281 since version 2.0.0 😃

Thank you @lisachenko

Can't close yet, as we didn't bump the dependency


Stuck at popups

Script stops at the start of the game event popups:

Hey there Fandy! Thank you for this issue.
When did it pop up? Right at the beginning when you launch the game, or did it pop up during script execution?

Hey there Fandy! Thank you for this issue.
When did it pop up? Right at the beginning when you launch the game, or did it pop up during script execution?

Right when I launched the game.

I see. It's always a bit difficult to take care of things like these, as they are very hit and miss. I do have an idea how to fix it, I'll just have to test it out. For now I ask you to open the game before running the script and simply making sure to close any open pop ups. This should prevent them from appearing when running the script afterwards.

With the error handling it's working a bit better :p
But the clean way should be looking for the color in the blurry button at the bottom & tap while it's this color

A dirty way could be to simply tap on the campaign button three times to close anything that pops up.


Trigger reflow with new layout programmatically

Description of the new feature / enhancement
Add an API call for FancyZones to reload the config from its files and apply the new layout to windows it currently manages. I have no preference for this interface, but it seems like COM IPC should be easy to add.
Scenario when this would be used?
I'd like to programmatically adjust the spacing parameter of custom zone layouts over time to vary the load on my OLED display. I would make a program and schedule it to run every hour and change the spacing in my saved layouts and notify FancyZones so it can apply them.
This should reduce the probability of burn-in as static elements like window borders would migrate slowly over time.
Supporting information
I have found the custom-layouts.json file I need to modify the spacing parameter in. I then tried restarting the FancyZones process, but it's not enough for it to apply the new settings. I have to go into the layout editor for it to properly reload the spacing parameter and offer to layout windows based on it. Besides, restarting the process seems to make it forget about the windows it managed, so it would be ideal to reload the configuration in the running process.

Let's forget about this issue. I found the setting During zone layout changes, windows assigned to a zone will match new size/position which makes it listen for file changes and reload the settings automatically. Even better!


Attach to pid picker - bodyblock users who are not in the new debugger experiment

Work item created from the attach-to-pid spike #8909
@karthiknadig @luabud We need to decide what we want to show to users who manually add an attach-to-pid debug config, but are not in the DA experiment.

The idea is that starting on next release every user will be on the DA experiment. We would only have that problem for insiders users then, right?

Apparently it should be in the ptvsd experiment. So let's display the following prompt:
"Attaching the debugger to a local process is a feature under experimentation, and unfortunately this experiment is not available to you yet."
And then add a "More info" button that would redirect to this link: https://github.com/microsoft/vscode-python#data-and-telemetry, which will have some words about A/B test once I merge a PR for https://github.com/microsoft/vscode-python/issues/8949.

Validated.


Improve UI to display all schedule related fields

environmentVariables, container (along with it's sub fields) and probably other fields are not viewable let alone editable in Chronos UI.  They should be.

Opened this issue in mesos/chronos, https://github.com/mesos/chronos/issues/346


Empty outline window

Hi, I used the extension Better Objective-C Syntax and Better Objective-C++ Syntax. I use Visual Code on Linux. I would like to ask for guidance on how to display the list of functions in the OUTLINE window. For file types (also for *.h, *.mm, *.m) If I select Language Mode as Objective-C or Objective-C++, the outline window is empty. But if I give the header file a language mode of c++, I can see at least typedef, member variables, but not functions. Thanks in advance for any advice

Hmm I'm actually not sure how or why that might be happening. I don't know much about what VS Code uses for creating outlines, so I'd have to look into that.


Phantom, Coinbase, Atomic.. Solana wallets

Hi,
First of all thank you for the amazing job. Do you plan to support Phantom soon?
Trying to connect and sign message through Solana but the two main wallets are not available.
Thank you

Hello @samuel2629!
The wallets you don't see listed is are those wallets that doesn't use WalletConnect's secure protocol. It is not on us to add them rather to them use our protocol, once they do it they get listed our SDKs.
That being said, we do support Coinbase Wallet in our AppKit (Web3Modal, not WalletConnectModal) because Coinbase do provide an SDK that we can install on our SDKs and provide functionality, however we still don't support Solana on AppKit Flutter (soon to arrive). As far as I know, Phantom and Atomic they don't provide an SDK so there's nothing we can do about it.
If you want to provide Solana communication then this SDK (WalletConnectModalFlutter) is your best option until we provide support for Solana in our AppKit (migration then will be simple)
Hope this clears the issue out! 👌

Thank you for the really quick and clear answer.
Just another quick question please : what's the difference between Web3Modal and WalletConnectModal ? You mentioned that Solana should arrive soon on the AppKit (so Web3Modal) should i migrate from WalletConnectModal to Web3Modal to get the last updates the soonest ?
Thank you

So,
WalletConnectModal is a protocol-centric SDK, you get there all the benefits of our chain-agnostic protocol, therefor you can use it with Solana, Polkadot and other non-EVM chains but it is pretty basic UI/UX wise, you'll get a QR code and the list of wallets. For many people that is enough, for other ones we have AppKit...
AppKit (Web3Modal), on the other hand, is a more complex and "cross functional" SDK where you get not only the benefits of our protocol but also

Coinbase Wallet integration
Email/Social Wallets
SIWE
Smart Accounts *
Non-EVM chains *
On Ramp/Swaps *
And more... you can test it out here https://lab.web3modal.com

However, native mobile SDKs (such as Flutter) of AppKit are a bit behind in comparison with the Web ones so you will not have those ones marked with *
Read more about it here https://walletconnect.com/appkit
Thanks!

Hey,
Thank you a lot for the clear explanations. I think it might be a good idea to add these in the read.me, anyway thank you again.

Totally! Thanks @samuel2629 !


icon not showing on device

Hello , i using this package to display some icon.
It work fine on ios and android emulator but when i try on a real device with npm run android, i don't see any icon.
How does that work ? it this normal ?
thanks alll

Hi, some more information would be great. Have you followed the installation instructions with Gradle? I'd also suggest uninstalling the app from your device before running it again (sometimes large changes seem to need this).

Hi , thanks for the reply , i did create the apk and install it on my mobile it work fine, icon is here and everything.
I thinks is was a issue with my cable when i did do "npm run android", it didn't transfer everything

use
implementation project(':react-native-vector-icons')
instead if
compile project(':react-native-vector-icons')
i

Had the same issue after upgrading and I was able to 'fix' the issue by manually copying the fonts over to the android/app/src/main/assets/fonts folder.
I haven't dug into it, but I suspect the fonts.gradle is not working as expected.


Pass value to error message

Hello!
As a developer I would like to use attribute value in error message. On my opinion it's very usable for forms validation.

@tukataka When defining an error message, you can use :value as a placeholder to get the attribute value:
$validator = new Validator;

$validation_a = $validator->make($dataset_a, [
	'age' => 'required|min:18'
]);

$validation_a->setMessages([
	'age:min' => ':value is too young. 18+ only',
]);

$validation_a->validate();

Sorry, I haven't founded this information in vendor dir (I don't know why). So, I decided that it's not possible.
Thank you!


Bugfix/issue95

Fixes https://github.com/OpenMined/OpenMined/issues/95

If someone with a Windows machine would be kind enough to test this ticket - the following notebook should return the correct GPU calculations
https://github.com/OpenMined/OpenMined/blob/4cad2aee1a812af44819cb79150281315e210c14/notebooks/Syft Tensor Example Notebook.ipynb

Looking good:


Pull request

Hi Dave,
I have done some extensive changes to your code. If you  would like to go over them with me, let's meet.
Erik

This is a quite extensive rewrite of the whole project, so it's not possible to merge it with the existing one. My suggestion is just to replace the old one with this. This project contains a comprehensive documentation of the API and many examples of use, including multi-threaded examples, and control of the robots via key events. For more information, see the README file.


Update web4 deploy to treasury-testing.near

@race-of-sloths include

⏸ This repository is on pause
@petersalomonsen please reach out to the maintainer to unpause this repo with @race-of-sloths unpause command

@race-of-sloths include

@race-of-sloths score 3


As a Candidate, I want to be notified of any changes that the employer makes to the job application I have applied to. So I can review the requirements and prepare for the role.

User Story for Epic #11

Hi. I want to collaborate with you. I am Senior React / React Native Developer. Please DM me for more detail. Have a nice day.


Add example module

Add Kafka-IoTDB demo
Add RocketMQ-IoTDB demo
Add readme

I suggest you organize the examples into two different projects: examples/kafka; examples/rocketMQ

I modify the pom.xml files to set example as a module.


Replace images with actual text/code

Much easier to copy/paste examples
Easier to maintain

(If you guys OK with it, I could replace more images)

Now I see why.. no colors :(
https://deploy-preview-1607--vuejs.netlify.com/v2/guide/single-file-components.html

Will experiment tomorrow.. maybe html would be OK

The reason we made these code examples images was to demonstrate the syntax highlighting you can get in .vue files (which unfortunately isn't available through highlight.js). We haven't had a problem maintaining these (they essentially never have to change) and for these particular examples, I'm not sure it's as common for users to want to copy them, so I do appreciate the recommendation, but I think I have to close, unfortunately. Thanks for the PR! 🙂


compile using continuous integration

CIS enables greater trust in binary distribution.  May I suggest appveyor?

I understand the initial reaction, however consider the added benefit of cloud compilation.

On Aug 19, 2018, at 6:19 PM, Konstantin Nosov<EMAIL_ADDRESS>wrote:
Not planned. I'm not following fashion useless things. Also, most likely it won't work with custom build system.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.


Skeleton / Placeholder Guidelines

As a user of the design system, I want to have the option to use a skeleton in my application, so that it helps the user with loading times.

https://getbootstrap.com/docs/5.1/components/placeholders/

Modus Bootstrap 2 Preview:
https://modus-bootstrap.netlify.app/docs/5.3/components/placeholders/

Closing as this is a duplicate of https://github.com/trimble-oss/modus/issues/432


\cite not work

Thank you for the amazing project!
But I meet problems in citation. I use \cite to cite references in .bib file. References can't be found in TeXpresso. The same project works well in Overleaf.

TeXpresso only runs LaTeX at the moment, not BibTeX.
The citations need to be built separately, for instance by compiling your file with tectonic. See https://github.com/let-def/texpresso/issues/40.

In case you are not familiar with the build process of LaTeX, the different tools, including LaTeX itself, produce auxiliary files, which can be picked up later.
TeXpresso will use files produced by BibTeX and the citation should be displayed correctly, it's just that this part is not interactive.
After updating the auxiliary files, you can tell the viewer to pick up the changes by sending signal SIGUSR1, e.g. killall -SIGUSR1 texpresso should do the job. This is still experimental and I will document the process later. Don't hesitate to report related issues.

Apart from updating .bib files, I think TeXpresso doesn't build .bib file correctly in the first compiling time.
I am not an expert of LATEX, but I think in the first compiling time, the auxiliary files should be generated automatically? When execute texpresso main.tex, the produced pdf is without references. In other words, texpresso is expected to work the same as overleaf in static compiling scenario, in my opinion.

TeXpresso doesn't produce any auxiliary files, that's by design. It picks up files produced by an existing build system. Maybe I might revisit this design later, but this maximizes compatibility for now.
If you don't have any build setup yet, recommend that you use the following build command in your editor:
tectonic -k root_file.tex && killall -SIGUSR1 texpresso

tectonic with -k flag produce auxiliary files (bibtex and latex), and look for a fixpoint (repeat the process to solve all references). After that the killall command tells texpresso to load the new auxiliary files.
With this setup, you have texpresso that gives live feedback and tectonic to update the auxiliary files on demand.

I will close the issue since things are working as expected. Feel free to comment of you have other questions or remarks.

Sorry for late response. It works well with command tectonic -k root_file.tex && killall -SIGUSR1 texpresso. Thanks a lot!


How to create user with curl having admin user credentials?

Hello there. Sorry if this already been asked, but I couldn't find solution in existing issues.
Well, I have installed riak, riak-cs, stanchion and riak-cs-control.
Everything is working fine. I am now able to create user through riak-cs-control web interface.
But, I don't know how to create user through curl command line.
As described here:

By default, only the admin user may create new user accounts.

Yes, I do have admin user credentials, but how can I use it with curl to access http://my-riak-cs.backend:8080/riak-cs/user ?
PS: I don't have s3curl installed on my Macbook. Or should I install it? Can I get it worked with curl only?

Sorry, if my issue became duplicated. I found answer here.
Well, I was calling riak-cs API via Python requests. Can you guys just provide how it can be used with curl ?


Cannot read property 'date' of undefined

A fix for the issue https://github.com/charliekassel/vuejs-datepicker/pull/800


Different names in the packages

What's the reason to the different names in the packages? It should be libsdl2-2.0-0 instead libsdl2, or the PPA will not update the packages already installed. Same problem with libsdl2-image, libsdl2-mixer, libsdl2-ttf and libsdl2-net. Only the dev packages are updated.
I got a lot of errors here... there is no way to purge libsdl2-2.0-0 first, it'll purge a lot of programs here.

Man, programs expect to find libsdl2-2.0-0 in the system. Does someone manages to use your PPA?

I left the names unchanged from the original Debian package specs that shipped with SDL itself, so it sounds like it changed at some point and I never noticed.  I definitely would prefer them to match what's currently in Ubuntu.
To be honest, I'm surprised anybody's using the PPA anymore -- it was set up originally to bridge the gap until a stable SDL2 was included in Ubuntu.  The SDL2 versions in the PPA are almost a year old now.

It appears that Ubuntu Precise never got a version of SDL2. I found your PPA while trying to get GZDoom to compile via Travis CI's new container system, which uses Ubuntu 12.04.5 LTS. Is it possible you could update this to the latest version and include libsdl2-dev?


enable (almost) all flake8 warnings

out.txt

14    E101 indentation contains mixed spaces and tabs
1     E115 expected an indented block (comment)
1     E116 unexpected indentation (comment)
106   E122 continuation line missing indentation or outdented
4     E123 closing bracket does not match indentation of opening bracket's line
5     E124 closing bracket does not match visual indentation
5     E125 continuation line with same indent as next logical line
30    E126 continuation line over-indented for hanging indent
73    E128 continuation line under-indented for visual indent
1     E129 visually indented line with same indent as next logical line
5     E131 continuation line unaligned for hanging indent
87    E201 whitespace after '['
25    E202 whitespace before ']'
137   E203 whitespace before ','
1     E211 whitespace before '('
29    E221 multiple spaces before operator
14    E222 multiple spaces after operator
49    E225 missing whitespace around operator
592   E226 missing whitespace around arithmetic operator
13    E227 missing whitespace around bitwise or shift operator
5     E228 missing whitespace around modulo operator
347   E231 missing whitespace after ','
203   E241 multiple spaces after ','
111   E251 unexpected spaces around keyword / parameter equals
170   E261 at least two spaces before inline comment
19    E262 inline comment should start with '# '
129   E265 block comment should start with '# '
35    E266 too many leading '#' for block comment
2     E272 multiple spaces before keyword
4     E301 expected 1 blank line, found 0
376   E302 expected 2 blank lines, found 1
64    E303 too many blank lines (2)
65    E305 expected 2 blank lines after class or function definition, found 1
6     E306 expected 1 blank line before a nested definition, found 0
2     E401 multiple imports on one line
45    E402 module level import not at top of file
27    E502 the backslash is redundant between brackets
3     E701 multiple statements on one line (colon)
2     E702 multiple statements on one line (semicolon)
1     E703 statement ends with a semicolon
9     E704 multiple statements on one line (def)
1     E711 comparison to None should be 'if cond is not None:'
3     E712 comparison to False should be 'if cond is False:' or 'if not cond:'
6     E713 test for membership should be 'not in'
9     E722 do not use bare 'except'
8     E731 do not assign a lambda expression, use a def
20    E741 ambiguous variable name 'l'
14    W191 indentation contains tabs
3     W291 trailing whitespace
3     W292 no newline at end of file
4     W293 blank line contains whitespace
20    W391 blank line at end of file
2     W503 line break before binary operator
46    W504 line break after binary operator


Document how to generate pluginrpc clases

As far as I know, we don't have documentation about how the volume, networking and other external driver proxies are generated. I don't think we have a make command to generate them. We should add documentation and a script to facilitate those tasks.

Hi!
Please read this important information about creating issues.
If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
This is an automated, informational response.
Thank you.
For more information about reporting issues, see https://github.com/docker/docker/blob/master/CONTRIBUTING.md#reporting-other-issues

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
uname -a:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

@cpuguy83 I'd really appreciate to have this. Otherwise, the generators are not very useful if people don't know who to use them, specially me :smile_cat:

Sure, I'll work on this.


api server url showing double and breaking the plugin

directus version: 10.8.2
directus-extension-api-viewer-module version: 1.2.3

oh i just found out that this occurs when the ENV variable PUBLIC_URL isnt present


Cannot retrieve value of field

Hi ! Help needed 😄
I don't understand how to retrieve the value from the field, considering the controller inside of it is private. How can i provide a controller to the field so that i can listen to changes ?
Thanks in advance

Hi @artandor , thank you for use this package.
you can listen the value changes from onQtyChanged
InputQty(
    maxVal: 100,
    initVal: 0,
    minVal: -100,
    steps: 10,
    onQtyChanged: (val) {   <<<<<<<<< here
      print(val);
    },
  ),

Isn't it a fairly bad practice to setState inside a onChange ? Sorry for the questions, i'm mostly junior with flutter

can you provide any snippet code? i may can help based on your code

For sure, here it is
InputQty.int(
                            minVal: 10,
                            maxVal: 100,
                            initVal: 10,
                            steps: 10,
                            onQtyChanged: (quantity) {
                              setState(() {
                                _creditsToBuy = quantity;
                              });
                            },
                            messageBuilder:
                                (num minVal, num maxVal, num? value) {
                              if (value == null) return null;
                              if (value > minVal) {
                                return Text(
                                  "Value must be higher than $minVal",
                                  style: const TextStyle(color: Colors.red),
                                  textAlign: TextAlign.center,
                                );
                              } else if (value < maxVal) {
                                return Text(
                                  'Cannot buy more than $maxVal credits',
                                  style: const TextStyle(color: Colors.red),
                                  textAlign: TextAlign.center,
                                );
                              } else {
                                return null;
                              }
                            },
                            qtyFormProps:
                                const QtyFormProps(enableTyping: false),
                            decoration: const QtyDecorationProps(
                                isBordered: false,
                                borderShape: BorderShapeBtn.circle,
                                width: 12)),

in that case, you are right. calling setState will rebuild  the widget.  actually there is some options

use ValueNotifier  read this https://api.flutter.dev/flutter/widgets/ValueListenableBuilder-class.html
separate your widget into different classes

hi @artandor , I just released new version. now you can use your own controller.  I will close this issue.
feel free to re-open or raise new issue if you need any helps. Thank you


Docker-In-Docker failure

Description of the bug
This pipeline is not compatible with Docker-in-Docker using Docker version >=26 due to a deprecation of the schema that the BLAT image uses.
More info: https://docs.docker.com/engine/deprecated/#pushing-and-pulling-with-image-manifest-v2-schema-1
To my knowledge, the only fix is for the BLAT maintainer to update their image to meet the new standards or to pin the supported docker version to 25 or earlier.
Command used and terminal output
[DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release. Suggest the author of docker.io/feathj/fake-sqs:latest to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/

Relevant files
No response
System information
No response

Hey there, sorry for the slow reply on this.
Could you explain a bit more about why this might be important? I am not familiar with docker-in-docker usage, and so curious if this is something like to become an issue, or if it's a less common practice.
Cheers
Ian

I have an HPC that runs docker containers. I need to run the Nextflow environment in a docker container, which itself uses the PipeSnake docker container, which necessitates the docker-in-docker nesting. To resolve the above issue, I created pulled an image of Docker pinned to version 25, installed Nextflow within the container, and then continued with the PipeSnake installation instructions to get around the above problem. So, just a mild frustration.
The real "solution" is for the BLAT maintainer to maintain their Docker image or for PipeSnake to use an alternative BLAT image that follows Docker's new standards around Docker Image manifest/schema rules. I'm not sure if you all were interested in looking for an alternative BLAT image that conforms to these standards, or if this comment would simply serve as an FYI to community in case they run into this problem too.


Allow CELERY_CONFIG module to be set

Rather than adding support for various types of config params through endless ENV variables, I thought it would be easier to specify a configuration module, which could be added as a volume.
Whilst I was there I also changed the user and WORKDIR to something that felt more intuitive (as most people will probably be mounting their own tasks to /celery).
An example use-case I had in mind: docker run --rm -it -v /some/tasks:/celery -e "CELERY_CONFIG=config.qa" celery
The only confusion I could foresee would be if somebody set BROKER_URL in their configuration module and additionally the CELERY_BROKER_URL envvar, where BROKER_URL would win out.
Thanks, Phil.

What's the advantage to this over just bind-mounting your config file over the top of the one in the container, or making a simple Dockerfile that's FROM celery and does COPY or RUN to add custom configuration?

My motivation at the time was to be able to have multiple environments switchable from the base image given a single mounted volume, which would remove the requirement to have a potentially stale FROM celery child image. As you point out thought, a repository with a custom COPY or/or RUN and link to the parent celery image would resolve that though.
One thing I believe this change does still address is an undesirable behaviour where a BROKER_URL provided in celeryconfig.py will be overridden by the CELERY_BROKER_URL envvar by default. This leads to splitting configuration management between both celeryconfig.py and through having to set the envvar. Would you like me to create a PR or issue separately for that?

The override from the environment variable only happens in the provided config file, if a user provides their own config file, then the value of CELERY_BROKER_URL will not matter.

Perhaps this is more of a Celery problem, but unfortunately there's undocumented behaviour where CELERY_BROKER_URL envvar will always trump BROKER_URL as provided in a config file, as can be seen at https://github.com/celery/celery/blob/master/celery/app/utils.py#L106 which I believe results in the behaviour I encountered above.
There's a similar issue already been raised with Celery months ago https://github.com/celery/celery/issues/2765, but in the meantime I wonder if there's a way of restructuring this Dockerfile to avoid confusion?

Oh, then it seems reasonable to use a different environment variable name, or just get rid of the variable and put the value in the config file since users can just use CELERY_BROKER_URL anyway and it should just work.

:+1:

ENV CELERY_BROKER_URL= or -e CELERY_BROKER_URL= will reset this property too, but I'm +1 to updating our default config to just set the default value and let Celery handle the env var override.

I was going through old PRs, and ended up filing https://github.com/docker-library/celery/issues/12 as a result -- if you've got time, please go check my assumptions before we deprecate this image entirely. :heart: :pray:

See https://github.com/docker-library/docs/pull/880 for more details of the deprecation of this image.


Add env example and update readme file.

Updated frontend run command to npm run start and added a section on secrets using the .env.example file.

@jaydhulia I think you had told me about something else wrong with the readme file but I forgot to wrote it down - what was it if you remember?

@ahmedhamodi Yeah it was about needing to do npm install first and adding a standardized node version to use. The other thing for this PR is, can you add instructions for steps to add a new dependency to the project? Similar to how we have it for cdc-backend.


move rule providers to providers package

As discussed in #131 this moves all rule providers together into the providers package.
Resolves #131

Awesome!


Remove docs test

Jsdoc2md is broken so I'm disabling the docs test until it gets fixed.

Don't merge yet. Still need to see if this fixes Travis.

Just tested it. It fixes the build:
https://travis-ci.org/g-ortuno/eddystone/builds/94925359


Option to include tagged commits on either beginning or end of range

I'm importing this package into my code and trying to generate a changelog with tags. It always excludes the tagged commits and includes everything between the beginning and end.
It would be nice if you could provide an option or flag to include the tagged commits into the changelog.
E.g.,
Currently
Commit1
Commit2
Commit3
Commit4
 Commit5
Commit1 and Commit 5 are excluded from the changelog.
It would be nice if you could provide an option to include them.
Can I put out a PR for that change?

If I'm not mistaken, this is supposed to be run before the tag is created.

This is meant to be used so that for every patch, minor, or major version, you update the changelog prior to running npm version so that the git tag contains the commit that updated both the changelog and version.

from https://github.com/lob/generate-changelog#generate-changelog

It's a suggestion,
How about specifying the latest tag and the previous tag as options?
like
generate-changelog $(git tag --sort version:refname | tail -n 2 | head -n 1)..$(git tag --sort version:refname | tail -n 1) --file-


Results processing

ADC readings are filtered, then it can be processed, before sending to user. Generally, we have three possibilities:

convert readings to concentration values. This would require a lot of computations, because sensors may have non-linear characteristics and also temperature and humidity compensation is an issue. Sensor-related calibration parameters would have to be saved

convert readings to sensor-related output signal (electrical current or voltage). This would require less computations, and less parameters would have to be configured

do not convert readings, or simply calculate voltage

We've got mesurement every 1912 clock cycles (239 cycles measurement time * 8 prescaler). Running all the calculations on board would be the best way, but I don't think it would be possible with that big frequency. On the other hand with this frequency we've got about 1570 measurements per second, which is more than enough. We can calculate concentration values for smaller number of measurements, which I think will work correctly.

OK, we'll have to put some effort in configuration via UART (#11) and some math operations (it doesn't really matter if we implement it for MCU or PC).


Automate /moodle/html local copy on VMSS (naively fixes #59)

Issue #59 kept bugging me, so this is my naive & rudimentary trial to support the /moodle/html local copy feature.
Each VMSS VM will poll (every minute, using cron) the /moodle/html/moodle/.last_modified_time... file with /var/www/html/moodle/.last_modified..., and if they are different, the /moodle/html/moodle content will be synced to /var/www/html/moodle. Moodle admin should manually run /usr/local/bin/update_last_modified... script after every /moodle/html/moodle update.
This whole feature is controlled by a new boolean template switch (htmlLocalCopySwitch), and it's defaulted to false to retain the existing behavior. Both scenarios were tested and confirmed to work.

Couple of questions on this one...

Unless I'm missing it the VM will take around 1min for the first sync to complete. During this time is there a danger that the LB see the VM as avialalbe and route traffic to it?

Why use a manual "last modified" file rather than simply call rsync via the cron job? or using Is it simply to reduce the work overhead, or is there some other motivation?

In general I think this is OK as an optional feature. I do think it needs documenting though, nothing too fancy just the outline steps in a new file at docs/moodle_file_sync.md:

Update files in /moodle
Update last modified file
wait 1 minute

Thanks for your quick review! My answers to your questions...

The first sync is done always at the VM instance deployment time (setup_webserver.sh), and since the instance is not considered up, until the deployment is over, I think LB won't see that instance (newly scaled-out) before the first sync and there should be no traffic routed to that newly scaled-out VM instance. Does this make sense?
It's mostly to reduce the work overhead. I saw that each rsync call still traverses the entire directory, which could be costly for every minute, so I just wanted to minimize that overhead, by keeping such a timestamp. I know it's kind of ugly, but I think it's simple and enough... :)

Yeah, totally agreed with the documentation. Could you kindly create one for this? Thanks in advance!

Thanks, makes sense.
Re Docs. I'm about to hit 2 weeks of travel and vacations. I'll not be able to do it for some time. Can you provide the initial content. Just the basics to run, and where. No need for fully delineative test.

Sure. Filed issue #62 for tracking.
I'm also starting another perf test with gluster and this feature turned on.

Thank you. Once the skeleton is there l will improve when l return.

Happy to report that a load test run with this feature on and gluster as the file server showed much improved performance that's now comparable to NFS (row 28 in spreadsheet).


Darken buttons for accessibility

For WCAG 2.1, web components must have a 3:1 contrast ratio. I plan to verify the affected buttons on DEV manually.
Build: https://devdiv.visualstudio.com/DevDiv/_build/results?buildId=4095131&view=results
Release:
Darken nuget.org's "default" button
This darkens the "default" button, often used to cancel forms.

List of affected buttons...

Cancel create API key form
Packages

Cancel package upload on verify page
Accept new package owner
Reject new package owner

Account

Sign in using external account not linked to a nuget.org account
Register using external account
Sign in using external account
Link nuget.org account to external account (prompted after login)
Link nuget.org account to different external account on profile page
Cancel "Why did you choose not to enable 2FA?" survey
Enable 2FA on profile page
Transform to organization
Cancel transform to organization form
Cancel pending email change
Cancel email change form
Cancel change notifications form
Cancel change password form
Cancel link to external account form
Cancel delete account

Organizations

Cancel creating organization
Cancel deleting organization on organization profile page
Cancel deleting organization on confirm deletion page
Accept organization membership
Reject organization membership

Admin

Cancel editing a flight

Before...
Light n' almost invisible:

After...
Very dark. Very edgy:

Darken nuget.org's "warning" button
This affects both the "search" button and the "copy installation instructions" button.

Before...
Very bright. Very radiant:

After...
Very dark. Very edgy:

Addresses https://github.com/NuGet/NuGetGallery/issues/8195
Addresses https://github.com/NuGet/NuGetGallery/issues/8192

Wow, the gray is actually a much better button now. The light gray is hardly visible on my laptop screen.
The orange does pop less, in my opinion but it's still good looking and now accessible now so 👍.

I split the gray button out from this change as it will require a little more thought.


No support for UIPickerView?

 Is this not supported?
Is there a Way to return the Icon as a string?
thanks

Never Mind. I forgot you can return UIViews for a UIPickerView. For anyone out there struggling with this:
`
func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView?) -> UIView {
let label = UILabel(frame: CGRectMake(0, 0, 400, 60));
label.lineBreakMode = .ByWordWrapping;
label.numberOfLines = 1;
label.setFAIcon(icons[row], iconSize: 25)
label.sizeToFit()
return label
}
`


Feature request: Broadcast distributions / mean-field MvNormal?

At the moment it's challenging to define a mean-field Multivariate Normal distribution (ie, with a diagonal covariance matrix).
Eg, assuming I have a regression y=beta * X + eps, where beta is MvNormal of dimension dim_x
At the moment I would can easily use MvNormal and fit the full covariance matrix
beta  ~ MvNormalMeanPrecision(zeros(dim_x), diageye(dim_x))

for i in 1:n
    y[i] ~ NormalMeanPrecision(dot(X[i,:],beta), 1.)
end

If I wanted a mean-field MvNormal instead (eg, to have faster fitting), I would have to jump through a lot of hoops (eg, unroll dot product etc), which would ultimately give me no benefits
# create a RV with dimension `dim_x`
beta  ~ randomvar(dim_x)

# since I cannot use dot() with randomvar(), I would need to unroll it
# I would need some temporary variable
# because I cannot accumulate (+=), I would need to save intermediate results into a helper dimension
temp ~ randomvar(n,dim_x)

for i in 1:n
    # unsafe! just to show the needed steps
    # assumes dim_x>1
    temp[i,1]=X[i,1] * beta[1]
    for j in 2:dim_x
        temp[i,j] ~ temp[i,j-1] + X[i,j] * beta[j]
    end

    # and the use it for the normal likelihood
    y[i] ~ NormalMeanPrecision(loc[i,dim_x], 1.)
end

As a user, I'd like to define something like
beta ~ randomvar(Normal(0,1),n)

# or ala Turing when all dists are the same
beta ~ filldist(Normal(0,1),n)
# or if they are different
beta ~ arraydist([Normal(mu,1) for mu in mu_array])

Ideally, this object would then support all the operators like MvNormal (eg, dot product)
It would be helpful when dim_x gets large (eg, 1000s)

I will close this issue as a duplicate of https://github.com/biaslab/RxInfer.jl/issues/165


Fix "name lister" js

Hopefully restores original functionality!
#1897

coverage: 94.446%. remained the same
when pulling cb531475bf367b33cb22eb0ea3e8903f2ba6e119 on nimmo-fix-name-lister
into fbab1eef128fa3ae217e682b0c4215bc5a569639 on main.

@mo-nathan If you get a chance, please give this a spin and let me know if it behaves correctly.

Seems better after merging in the latest changes on main and running the usual update stuff.  However, the names are weird.  They appear to be coming from the test fixtures for some reason rather than mo_development as I would expect.  It's possible it's coming from mo_test which gets loaded with the test fixture, but I dropped that database and the weird names continue to show up.  It also doesn't make sense to me why the middle panel lists all the species for the genera that have been selected so far.

Weird names: On dev, these come from a static file Jason created long ago to test the name lister — they aren't intended to be up to date. On production, the names are generated via a nightly script from the live db.
I'll ask Jason, but I think it always listed the species names of all selected Genera in the middle panel.

Interesting.  I'm guessing this is coming from test/reports/name_list_data.js.  At this point I don't like the behavior in the center panel, but at least it seems to work reasonably.

Oh. Maybe i get it - you're expecting the middle column to ONLY show species of the currently selected Genus...
That was confusing me. Just changed it, this should do it.

Yes, that's exactly what I meant.  Awesome!  Thanks for fixing this.


[GLUTEN-7410][CORE] Add test args to run spark-ut with Java 17

What changes were proposed in this pull request?
Spark UTs need the above args to run with Java 17 and had to be supplied seperately while running the tests.
(Fixes: #7410)
How was this patch tested?
Ran Spark UTs

I checked the workflows that run spark-uts for velox backend in velox_backend.yml . All of them just use jdk 8 as the base where this is not a problem. I couldn't find any jdk 17 env that is running spark-uts. There are though jdk 17 envs that are just used to build and run tpc-h etc.

Looks like the ClickHouse CI failed with
[2024-10-04T13:15:16.346Z] GlutenParquetProtobufCompatibilitySuite:
[2024-10-04T13:15:16.346Z] - unannotated array of primitive type *** FAILED ***
[2024-10-04T13:15:16.346Z]   spark.test.home or SPARK_HOME is not set. (SparkFunSuite.scala:128)
[2024-10-04T13:15:16.346Z] - unannotated array of struct *** FAILED ***
[2024-10-04T13:15:16.346Z]   spark.test.home or SPARK_HOME is not set. (SparkFunSuite.scala:128)
[2024-10-04T13:15:16.346Z] - struct with unannotated array !!! IGNORED !!!
[2024-10-04T13:15:16.346Z] - unannotated array of struct with unannotated array *** FAILED ***
[2024-10-04T13:15:16.346Z]   spark.test.home or SPARK_HOME is not set. (SparkFunSuite.scala:128)
[2024-10-04T13:15:16.346Z] - unannotated array of string *** FAILED ***
[2024-10-04T13:15:16.346Z]   spark.test.home or SPARK_HOME is not set. (SparkFunSuite.scala:128)

SPARK_HOME not set.

Run Gluten Clickhouse CI

It seems to be because of -DargLine="-Dspark.test.home=/tmp/spark32"  set in jenkins CI. I cant find the file to edit this in since its not ideal. Would need some help here.

@zhztheplayer Could you help rerun the spark35 scala 213 test. Seems to be some flaky issue. Nothing in reports.

@zhztheplayer Thanks for the review. The failing test passed for the last two runs and failed because of transfer failed for https://repo.maven.apache.org/maven2/org/apache/maven/enforcer/enforcer-api/3.3.0/enforcer-api-3.3.0.jar: Connection timed out (Read failed). I think we should be good to merge.

@CodenameGHOST007 Have you tested the change locally? If yes we can merge in advance. The next move will be adding JDK17 GHA UT job then.

tested the change locally? If yes we can merge in advance. The next mov

@CodenameGHOST007 we can't add jdk17 in CI now. Will you run some jenkins job to track the UT on jdk17?

Note: I did a test with OpenJDK-17 locally and seems ok to run the unit tests. As we are migrating to Spark-400 JDK & scala-213 should be a must in CI/CD.
thanks, -yuan


Vertical scrollbar (in sample demo)

(Observed on Linux)
The right scrollbar is always visible, regardless the actual height of my browser window. It's still visible in Fullscreen.

Same for me on Debian, with Firefox and Chromium.
Fixed this by changing this line: https://github.com/dgageot/demoit/blob/51779bd37f3cfc1a67b828531f66f9af702d8c9d/sample/.demoit/style.css#L69
to
height: 90vh;

I think this is due to the top class being 100% vertical height + 1.5em of padding-top leading to > 100% height space and the appearance of the scrollbar.

This is fixed now


Use Power BI product-level header

Hello, this content needs to use the Power BI product-level header. Please let me know if you have any questions.
P.S., If you're wondering "What is a product-level header?" please see:  https://review.docs.microsoft.com/en-us/help/onboard/admin/navigation-product-level-header?branch=main#what-is-product-level-navigation-for

Closing this PR and replacing with a new one via Metadata Management Service


Doesn't support typing module

Doesn't support things like typing.Optional.
...Maybe this is why nobody's tried this before.
I'm going to hope there's a better option than trying all of the typing module stuff.
God forbid anybody has a custom type object...

Current master has partial support for the typing module.


feat: add update db example

Codecov Report

Merging #82 (4604390) into master (5390130) will increase coverage by 1.25%.
The diff coverage is n/a.

Additional details and impacted files

@@            Coverage Diff             @@
##           master      #82      +/-   ##
==========================================
+ Coverage   67.34%   68.58%   +1.25%
==========================================
  Files          76       78       +2
  Lines         946     1063     +117
  Branches        2       90      +88
==========================================
+ Hits          637      729      +92
- Misses        309      334      +25

Impacted Files
Coverage Δ

...rc/main/scala/zio/notion/model/common/Period.scala
75.00% <0.00%> (-25.00%)
:arrow_down:

...c/main/scala/zio/notion/dsl/DatabaseQueryDSL.scala
54.55% <0.00%> (-20.45%)
:arrow_down:

...ain/scala/zio/notion/model/common/TimePeriod.scala
80.00% <0.00%> (-20.00%)
:arrow_down:

...re/src/main/scala/zio/notion/model/user/User.scala
68.43% <0.00%> (-2.16%)
:arrow_down:

...rc/main/scala/zio/notion/model/page/Property.scala
40.99% <0.00%> (-0.39%)
:arrow_down:

...notion-core/src/main/scala/zio/notion/Notion.scala
82.36% <0.00%> (ø)

...otion-core/src/main/scala/zio/notion/package.scala
50.00% <0.00%> (ø)

...-core/src/main/scala/zio/notion/NotionClient.scala
0.00% <0.00%> (ø)

...core/src/main/scala/zio/notion/dsl/ColumnDSL.scala
100.00% <0.00%> (ø)

...model/magnolia/PropertyTypeEncoderDerivation.scala
100.00% <0.00%> (ø)

... and 9 more


#[157801301] Cards should be categorised by region

What this PR does?

This PR allows the selection of questions based on the region the users selects.

Description of Task to be completed?

Selection of desired region by users
Popping out of a region-selection modal just before the beginning of the game.

What are the relevant pivotal tracker stories?
pivotalTracker
Screenshots (if appropriate)

Pull Request Test Coverage Report for Build 238

4 of 6 (66.67%)  changed or added relevant lines in 3 files are covered.
38 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-3.8%) to 48.625%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

app/controllers/questions.js
1
2
50.0%

config/socket/game.js
1
2
50.0%

Files with Coverage Reduction
New Missed Lines
%

app/controllers/answers.js
1
26.67%

config/socket/socket.js
17
61.9%

config/socket/game.js
20
22.51%

Totals

Change from base Build 228:
-3.8%

Covered Lines:
560

Relevant Lines:
994

💛  - Coveralls

@OlatunjiYso Please resolve merge conflicts


update data workspace restart ADS to open workspace message

This PR fixes #17177

How about changing , "do this now" to something more specific?

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 41.632%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
26588

Relevant Lines:
57866

💛  - Coveralls


New Yosemite Planning Your Wilderness Permit page prevents automated access to the trailhead report

Currently, the trailhead report webpage that hackjohn uses at https://www.nps.gov/yose/planyourvisit/fulltrailheads.htm shows the following:

The "improved version" at https://yosemite.org/planning-your-wilderness-permit/ places the trailhead report behind a capcha:

So it looks like users will no longer be able to perform automated checks of the trailhead report, like Hackjohn used to enable. This is a bit of a bummer, but perhaps Hackjohn was a victim of its own success!
If anyone is aware of a workaround or finds the trailhead available from a public API endpoint, let us know below and Hackjohn might be able to resurrect itself.

There is a potential API call that returns the results at https://yosemite.org/wp-content/plugins/wildtrails/query.php?resource=report&region=ww.
In an authenticated browser, it returns JSON like::
{"status":{"type":"message","value":"report found."},
"response":{"id":"ww","values":[
  {"date":"2020-06-29","w03a":7,"w03b":10,"w03c":0,"w05":4,"w30":2,"w31a":11,"w31b":0,"w32":14,"w33":2,"w34":18,"w35":1,"w36":2},
  {"date":"2020-06-30","w03a":10,"w03b":19,"w03c":0,"w05":0,"w30":0,"w31a":6,"w31b":0,"w32":4,"w33":9,"w34":10,"w35":0,"w36":3},
  {"date":"2020-07-01","w03a":10,"w03b":11,"w03c":6,"w05":2,"w30":0,"w31a":0,"w31b":0,"w32":8,"w33":10,"w34":15,"w35":0,"w36":22},
  {"date":"2020-07-02","w03a":8,"w03b":25,"w03c":13,"w05":10,"w30":0,"w31a":9,"w31b":0,"w32":15,"w33":22,"w34":14,"w35":0,"w36":38},

But without authentication (which I assume requires not being a robot), it returns:
{"status":{"type":"error","value":"unauthorized"},"response":null}

Couple of solutions:

Integrate with a Recaptcha solving API (requiring people to add money to use the script): https://anti-captcha.com/
Ask users to re-authenticate periodically to gain the cookie value

Ask users to re-authenticate periodically to gain the cookie value

Interesting idea. I wonder how long the authentication cookie works for. Unless it lasts for a span of days, this would add little benefit... At that point, you might as well just look at the table manually.

There is a potential API call that returns the results at https://yosemite.org/wp-content/plugins/wildtrails/query.php?resource=report&region=ww.
In an authenticated browser, it returns JSON like::
{"status":{"type":"message","value":"report found."},
"response":{"id":"ww","values":[
  {"date":"2020-06-29","w03a":7,"w03b":10,"w03c":0,"w05":4,"w30":2,"w31a":11,"w31b":0,"w32":14,"w33":2,"w34":18,"w35":1,"w36":2},
  {"date":"2020-06-30","w03a":10,"w03b":19,"w03c":0,"w05":0,"w30":0,"w31a":6,"w31b":0,"w32":4,"w33":9,"w34":10,"w35":0,"w36":3},
  {"date":"2020-07-01","w03a":10,"w03b":11,"w03c":6,"w05":2,"w30":0,"w31a":0,"w31b":0,"w32":8,"w33":10,"w34":15,"w35":0,"w36":22},
  {"date":"2020-07-02","w03a":8,"w03b":25,"w03c":13,"w05":10,"w30":0,"w31a":9,"w31b":0,"w32":15,"w33":22,"w34":14,"w35":0,"w36":38},

But without authentication (which I assume requires not being a robot), it returns:
{"status":{"type":"error","value":"unauthorized"},"response":null}

Hi - I'm interested in seeing if I can help with this, but I don't understand what you mean by 'authenticated browser'? I don't see any sort of account creation mechanism or anything of the sort.

I don't understand what you mean by 'authenticated browser'

By authenticated I meant having competed the "Im not a robot" captcha.

Thats what I thought, but I couldn't view your link even after doing the robot verification. I can't seem to find any trailhead report on the site. Was it removed from the site?

On Aug 2, 2020, at 4:18 PM, Daniel Himmelstein<EMAIL_ADDRESS>wrote:

I don't understand what you mean by 'authenticated browser'
By authenticated I meant having competed the "Im not a robot" captcha.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Go to https://yosemite.org/planning-your-wilderness-permit/, do the captcha, and then select trail and entry point options.

At this point a table shows up for me:

Thanks for the screenshots. Got it to work, looks like all my ad blockers were preventing the site from loading the trailhead report

How would I read this?

August 19th is obviously the lottery quota available 15 days out. But what about the August 13 and August 24 dates? Are the dates before 15 days out still lottery? And What do the numbers after 15 days out mean?

How would I read this?

The lotteries for these days have already occurred. The lottery is drawn 168 days before the date. The spaces you see in your screenshot are vacancies after the lottery. This occurs if not enough people apply for a given date in the lottery, or more common those who won the lottery end up canceling.
In future, please open a new issue for questions that are not directly related to the topic.

Why not build it paid captcha solving and allow users to provide their credentials? If you're checking every 5 minutes it would cost around $0.20 per day for someone to run.
https://anti-captcha.com/mainpage

@dmca-faire It's a bit more involved than that. The JSON data in the API calls above aren't raw data, or at least I was unable to correlate it was the data being shown on the site. Something on the frontend seems to be interpreting it for rendering (some extra protection). One would also have to automate the page, navigate the dropdowns, etc and scrape off all the data in addition to solving the captcha with a service. It'd be a bit more fragile if the page design changes.

Just did a bit of looking...
https://yosemite.org/wp-content/plugins/wildtrails/query.php?resource=report&region=jm is the API call in question, the last region parameter is which radio button is selected. The result has an array of values, one for each date, in some kind of obsofucated format.
{
  date: "2020-08-17",
  j01a: 9,
  j01b: 30,
  j03a: 9,
  j19: 15,
  j24b: 35,
  d01: 20,
  d02: 18
},

The source for this processing script is here: https://yosemite.org/wp-content/plugins/wildtrails/scripts/ui.js?ver=5.4.2
This API call is made in the source from a function called queryReport_, which then calls processReport_. This updates the trailhead options, and, if you have a trailhead selected, calls updateTrailheadInfo which calls appendReportList, which actually creates the #wt-report-list element that has the dates that you see on the site.
From looking through that code, it looks like the j01a keys are for the different trailheads that are available for a given region. There's a second API call https://yosemite.org/wp-content/plugins/wildtrails/query.php?resource=trailheads that gets the trailhead data and j01a looks like this:
j01a: {
id: "j01a",
name: "Happy Isles to Sunrise/Merced Lake Pass Thru",
wpsName: "Happy Isles->Sunrise/Merced Lake (pass through)",
region: "jm",
latitude: null,
longitude: null,
description: "If you do not plan on exiting the park via Donohue Pass, please click here.",
quota: 6,
capacity: 10,
alert: null,
notes: "
You must camp beyond Little Yosemite Valley and Moraine Dome.

Bears have obtained food from backpackers in this area. There are bear lockers at Merced Lake backpackers camp.
"
}

Note this trailhead info also includes capacity and quota values. Looks like the entering the John Muir trail through the Happy Isles to Sunrise/Merced Lake Pass Thru allows for 10 people a day to enter.
Looking at the code, there's some kind of modifier on the capacity by a lottery value, which I don't quite understand. Further complicating the code it looks like there's a special case for the jm region and the j24b trailhead which I don't quite understand yet.
In short, the original region API gives you how many spots have been claimed by date and by trailhead. The trailhead API gives you the quota+capacity values for that trailhead. The below calculation (once unwound) will give you the available value, which is the number of available spots on a given day.
                var inverted = (dt <= invDays + 1 && invStart != null & date >= invStart);
                var c = inverted ? capacity : quota;
                var available = 0;

                var lottery = (inverted && invDays > 0 && invDays <= dt && dt <= invDays + 1);
                lottery = lottery || (maxReserveDays <= dt && dt < maxReserveDays + 1);

                if (dt < minReserveDays || dt > maxReserveDays + 1) {
                    available = 0;
                }
                else if (found) {
                    var occupancy = data['values'][i][th];

                    if (occupancy != null) {
                        available = c - Math.min(occupancy, lottery ? quota : c);
                    }
                }

                if (dh != null) {
                    var dc = inverted ? dCap : dQuota;

                    if (dt < minReserveDays || dt > maxReserveDays + 1) {
                        dAvailable = 0;
                    }
                    else if (found) {
                        var dOccupancy = data['values'][i][dh];

                        if (occupancy != null) {
                            dAvailable = dc - Math.min(dOccupancy, lottery ? dQuota : dc);
                        }
                    }

                    available = Math.min(available, dAvailable);
                }

Where invStart and invDays are derived from this resParams variable, where I'm not sure where that comes from.
"{
    "inversion_start": "2020-06-26",
    "inversion_days": 14,
    "max_reserve_days": 168,
    "min_reserve_days": 8,
    "base_url": "https://yosemite.org/wp-content/plugins/wildtrails/",
    "bg_image": "images/redpeak-sunrise.jpg",
    "contact_form_path": "/contact-us-wilderness/",
    "timezoneOffset": -25200,
    "monthNames": [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    ],
    "dayNames": [
        "Sun",
        "Mon",
        "Tue",
        "Wed",
        "Thu",
        "Fri",
        "Sat"
    ]
}"

Something about these "inversion" days makes it so it uses the capacity instead of the quota?
Anywho, I think we're close and this looks doable.

@bradtgmurray impressive digging. Since I've already done the hike and I'm a bit short on time these days, I'm not in a position to take the lead here. The reCAPTCHA combined with the new API make the scope of the project considerably greater.
So feel free to take the lead. You could even make a business that provides users alerts over vacancies. How quickly they are notified of a vacancy could depend on their service tier. Just an idea...

The logic seems pretty simple to recreate. My problem is I can't seem to figure out how the anti-captcha service to solve the captcha and access the API. Can anyone help me with that part?

Here's the core logic. For each date, the API that @bradtgmurray mentioned returns the number of permits that have already been reserved for each date. The entry for each date looks something like this:
{
    "date": "2021-08-06",
    "j01a": 5,
    "j01b": 18,
    "j03a": 6,
    "j19": 9,
    "j24b": 18,
    "d01": 20,
    "d02": 12
},

The "jxxx" keys represent trailheads and the values represent the number of permits that have been reserved for that date and trailhead. In this example, 5 permits have been taken from trailhead "j01a". We can use the trailhead API to see that j01a is the Happy Isles to Sunrise/Merced Lake trailhead, which has a quota of 6 permits.
So there are 6 permits available and only 5 taken... BUT we have to take the Donohue Pass exit quota into account. The "d01" and "d02" values show the number of permits reserved that allow for an exit over Donohue Pass. The quotas for these are 20 and 15, respectively (found in the trailhead API). The first four trailheads (j01a, j01b, j03a, j19) use the d01 quota and the other one (j24b) uses the d02 quota. Since the d01 quota of 20 has already been met, there are 0 available permits for the j01a trailhead.
The j24b trailhead (Lyell Canyon) has a quota of 21. Since we are below the quota for the trailhead (18 < 21) AND for the d02 Donohue Pass quota (12 < 15), there are 3 permits available for the j24b trailhead.
To summarize, once you get the data from the API the calculation boils down to this:

Calculate the available permits using the trailhead quota: trailhead_quota - trailhead_value
Calculate the available Donohue Pass exit permits using the d01 or d02 depending on your trailhead: d0x_quota - d0x_value
Take the minimum of 1 and 2.

Some additional details, which may or may not be necessary to know:

The quota for each trailhead is the number of permits that can be reserved in advance. The capacity is the total permits available for the trailhead. If capacity > quota, then some permits are reserved for walk-ups. Note: the only JMT trailhead that meets these conditions is Lyell Canyon (trailhead j24b, Donohue quota d02).
Each "jxxx" trailhead has a corresponding trailhead without a Donohue Pass exit. For example j01a <--> y01a. They have the same quota and capacity, and permit reservations count towards both trailheads. In the example above, there would be one permit available at y01a, but you couldn't book it for j01a because there are no Donohue Pass exit permits available.
Permits become available in the lottery 168 days in advance. No permits are available 2 days or less in advance (they become walk-up permits at this point). These are the "max_reserve_days" and "min_reserve_days" values in resParams.
I don't know what the "inversion" days are meant to represent, as @bradtgmurray also mentioned. Maybe something about the COVID policy last year? Like did they open up the walk-up permits to be reserved in advance once the date got closer? In any case, the "inversion_days" value in resParams seems to be set to 0 now, so I don't think it is relevant any more.

@djcunningham0 Nice summary.
I had an airflow job crawling this data a couple times a day a few months back - took it down though after covid because the whole permit situation changed due to covid. I was using this with 2captcha to bypass the captcha https://github.com/berstend/puppeteer-extra/tree/master/packages/puppeteer-extra-plugin-recaptcha

I figured out how to get it working using just the python requests library and a captcha solving service. I'll push changes to my fork in a few days and then submit a PR.
As for the "inversion days" mentioned a few times above, this reddit thread seems to confirm that it was a COVID policy. Last year there was an additional lottery starting 14 days before and ending 8 days before the hike date (that's why inversion_days was 14 and min_reserve_days was 8 at the time of bradtgmuray's post). That policy isn't in effect now, and that's why inversion_days is now 0 and min_reserve_days is now 2.

I'll push changes to my fork in a few days and then submit a PR.

Would be greatly appreciated!


Nginx ingress

addresses https://github.com/homedepot/spingo/issues/85

Is file halyard/hal-scripts/user-scripts.tar needed, or was is accidentally added?

Is file halyard/hal-scripts/user-scripts.tar needed, or was is accidentally added?

yes. otherwise terraform validate gets mad because there's nothing there. an actual one gets added as part of initial_setup.sh

Remember the fileexists function instead

/lgtm
Anyone else want to chime-in before we merge?