RFC *: introduce a new option --batch-append for controlling AppendEntrie…

…s() triggering
Raft algorithm itself and the raft package of etcd support batched
log appending because the RPC AppendEntries() is capable of appending
multiple log entries at once. However, current etcd doesn't have an
option for controlling the batching.
This commit adds a new option --batch-append for controlling the
behaviour, The form of its parameter is like this:
:. The first integer is interpreted as the maximum
number of log entries that will be appended at once. The second
duration is the duration for triggering AppendEntries(). If the
duration passes, AppendEntries() will be issued even if a number of
batched log entries is less than the number that is specified in the
first part of the parameter.
Below is a slack benchmark result on my single machine (the purpose of
the option is reducing synchronous log write in WAL and improving
write throughput, so benchmarking on a single box is informative for
estimating the affection):

--batch-append=0,0 (same to the current master branch):

$ ./benchmark --conns=10 --clients=10 put
Summary:
  Total:        32.2357 secs.
  Slowest:      0.4025 secs.
  Fastest:      0.0055 secs.
  Average:      0.0322 secs.
  Stddev:       0.0190 secs.
  Requests/sec: 310.2154

Response time histogram:
  0.0055 [1]    |
  0.0452 [8914] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0849 [952]  |∎∎∎∎
  0.1246 [79]   |
  0.1643 [8]    |
  0.2040 [19]   |
  0.2437 [9]    |
  0.2834 [8]    |
  0.3231 [8]    |
  0.3628 [1]    |
  0.4025 [1]    |

Latency distribution:
  10% in 0.0168 secs.
  25% in 0.0223 secs.
  50% in 0.0297 secs.
  75% in 0.0372 secs.
  90% in 0.0459 secs.
  95% in 0.0530 secs.
  99% in 0.0976 secs.
  99.9% in 0.3123 secs.

--batch-append=10,100us

$ ./benchmark --conns=10 --clients=10 put
Summary:
  Total:        26.2247 secs.
  Slowest:      0.1303 secs.
  Fastest:      0.0060 secs.
  Average:      0.0261 secs.
  Stddev:       0.0104 secs.
  Requests/sec: 381.3198

Response time histogram:
  0.0060 [1]    |
  0.0185 [1740] |∎∎∎∎∎∎∎∎∎∎∎
  0.0309 [6097] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0433 [1648] |∎∎∎∎∎∎∎∎∎∎
  0.0557 [443]  |∎∎
  0.0682 [11]   |
  0.0806 [0]    |
  0.0930 [15]   |
  0.1054 [9]    |
  0.1179 [18]   |
  0.1303 [18]   |

Latency distribution:
  10% in 0.0161 secs.
  25% in 0.0202 secs.
  50% in 0.0245 secs.
  75% in 0.0296 secs.
  90% in 0.0377 secs.
  95% in 0.0436 secs.
  99% in 0.0528 secs.
  99.9% in 0.1195 secs.

We can see some improvement of write throughput (surprisingly
latencies are also improved).
Configuring the option isn't so easy because the improvement (or
degrading) depends on a workload and performance requirement
(throughput vs latency). So the detailed evaluation isn't performed
yet. If the change can be acceptable, I'll perform more detailed and
realistic evaluation.

Ah, sorry, the above results didn't care about the endpoint is a leader or not... it isn't correct. I'll provide a correct version later.

i tried this idea a while ago. does not really bring a lot of benefits. etcd already does some smart batching internally. but i still encourage you to explore it more :P.
i believe the current bottleneck is actually processing client requests. if you batch requests at client side (batch normal put into txn or things like that), or batch at proxy side, it will be more efficient.

@xiang90 sorry for my late reply. As you said, current etcd is exploiting batch append and it seems to be contributing to throughput. But currently we don't have a way of controlling latency that is introduced by the batching. I tested --batch-append option a little bit:
default:
$ ./benchmark --target-leader --conns=1000 --clients=1000 --endpoints=<IP_ADDRESS>:2379 put --total=1000000 --sequential-keys --key-space-size 1000000 --val-size=1024

Summary:
  Total:        66.3036 secs.
  Slowest:      1.6798 secs.
  Fastest:      0.0009 secs.
  Average:      0.0649 secs.
  Stddev:       0.0707 secs.
  Requests/sec: 15082.1278

Response time histogram:
  0.0009 [1]    |
  0.1688 [953788]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.3367 [36675]        |∎
  0.5045 [8534] |
  0.6724 [2]    |
  0.8403 [0]    |
  1.0082 [0]    |
  1.1761 [0]    |
  1.3440 [0]    |
  1.5119 [0]    |
  1.6798 [1000] |

Latency distribution:
  10% in 0.0352 secs.
  25% in 0.0434 secs.
  50% in 0.0528 secs.
  75% in 0.0625 secs.
  90% in 0.0777 secs.
  95% in 0.1527 secs.
  99% in 0.3315 secs.
  99.9% in 1.5714 secs.

--batch-append 100,100us
$ ./benchmark --target-leader --conns=1000 --clients=1000 --endpoints=<IP_ADDRESS>:2379 put --total=1000000 --sequential-keys --key-space-size 1000000 --val-size=1024

Summary:
  Total:        79.0466 secs.
  Slowest:      0.7816 secs.
  Fastest:      0.0042 secs.
  Average:      0.0778 secs.
  Stddev:       0.0774 secs.
  Requests/sec: 12650.7730

Response time histogram:
  0.0042 [1]    |
  0.0819 [879299]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1597 [57617]        |∎∎
  0.2374 [19939]        |
  0.3152 [12371]        |
  0.3929 [9801] |
  0.4706 [8673] |
  0.5484 [6629] |
  0.6261 [3272] |
  0.7039 [2351] |
  0.7816 [47]   |

Latency distribution:
  10% in 0.0456 secs.
  25% in 0.0522 secs.
  50% in 0.0593 secs.
  75% in 0.0677 secs.
  90% in 0.0904 secs.
  95% in 0.2034 secs.
  99% in 0.4982 secs.
  99.9% in 0.6546 secs.

With the default mode (current master of etcd), 99.9 percentile latency is larger than 1 second. I think it would come from the batching.
Of course more detailed evaluation is required. But possibly the option would be useful for controlling latency?

1.6798 [1000] |

The exact 1000 slow requests looks suspicious. Can you try multiple tests to see if you can always get the same result?

Sure, I'll provide more results later.

BTW the environment is a cluster of 3 nodes on GCE. Each node is n1-standard-4 (vCPU x 4, 15 GB memory). benchmark is working on a single node of a same instance type.

I executed the same benchmark for each configuration 3 more times and results were listed in the tail. Oddly I could reproduce the exact 1000 slow requests once in the default configuration. But generally the default configuration can provide higher throughput and lower latency. On the other hand, the new option decreases the throughput and enlarge latency. But the latency seems to be a little bit stabler with the option. I'll do more benchmarks (hopefully my talk at the coming CoreOS Fest can include the results and analysis).
default:
Summary:
  Total:        66.8371 secs.
  Slowest:      0.4509 secs.
  Fastest:      0.0005 secs.
  Average:      0.0648 secs.
  Stddev:       0.0505 secs.
  Requests/sec: 14961.7413

Response time histogram:
  0.0005 [1]    |
  0.0455 [284930]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0905 [631704]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1356 [24200]        |∎
  0.1806 [15849]        |∎
  0.2257 [13711]        |
  0.2707 [9041] |
  0.3157 [8559] |
  0.3608 [6530] |
  0.4058 [4877] |
  0.4509 [598]  |

Latency distribution:
  10% in 0.0353 secs.
  25% in 0.0439 secs.
  50% in 0.0538 secs.
  75% in 0.0644 secs.
  90% in 0.0810 secs.
  95% in 0.1587 secs.
  99% in 0.3321 secs.
  99.9% in 0.3879 secs.

Summary:
  Total:        69.2896 secs.
  Slowest:      1.0790 secs.
  Fastest:      0.0049 secs.
  Average:      0.0668 secs.
  Stddev:       0.0563 secs.
  Requests/sec: 14432.1769

Response time histogram:
  0.0049 [1]    |
  0.1123 [931657]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.2197 [37839]        |∎
  0.3272 [21523]        |
  0.4346 [7980] |
  0.5420 [0]    |
  0.6494 [0]    |
  0.7568 [0]    |
  0.8642 [0]    |
  0.9716 [0]    |
  1.0790 [1000] |

Latency distribution:
  10% in 0.0412 secs.
  25% in 0.0482 secs.
  50% in 0.0552 secs.
  75% in 0.0628 secs.
  90% in 0.0792 secs.
  95% in 0.1556 secs.
  99% in 0.3198 secs.
  99.9% in 0.9716 secs.

Summary:
  Total:        68.4328 secs.
  Slowest:      0.6593 secs.
  Fastest:      0.0048 secs.
  Average:      0.0660 secs.
  Stddev:       0.0488 secs.
  Requests/sec: 14612.8859

Response time histogram:
  0.0048 [1]    |
  0.0703 [856396]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1357 [87027]        |∎∎∎∎
  0.2012 [21518]        |∎
  0.2666 [15745]        |
  0.3321 [11295]        |
  0.3975 [6728] |
  0.4630 [794]  |
  0.5284 [143]  |
  0.5939 [150]  |
  0.6593 [203]  |

Latency distribution:
  10% in 0.0407 secs.
  25% in 0.0482 secs.
  50% in 0.0553 secs.
  75% in 0.0628 secs.
  90% in 0.0795 secs.
  95% in 0.1517 secs.
  99% in 0.3178 secs.
  99.9% in 0.4167 secs.

--batch-append 100,100us
Summary:
  Total:        76.6649 secs.
  Slowest:      0.8072 secs.
  Fastest:      0.0041 secs.
  Average:      0.0742 secs.
  Stddev:       0.0746 secs.
  Requests/sec: 13043.7716

Response time histogram:
  0.0041 [1]    |
  0.0844 [896544]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1647 [42577]        |∎
  0.2450 [20202]        |
  0.3253 [14816]        |
  0.4056 [10153]        |
  0.4860 [6409] |
  0.5663 [5458] |
  0.6466 [2765] |
  0.7269 [717]  |
  0.8072 [358]  |

Latency distribution:
  10% in 0.0430 secs.
  25% in 0.0497 secs.
  50% in 0.0565 secs.
  75% in 0.0643 secs.
  90% in 0.0864 secs.
  95% in 0.2038 secs.
  99% in 0.4775 secs.
  99.9% in 0.6523 secs.

Summary:
  Total:        76.7120 secs.
  Slowest:      0.9534 secs.
  Fastest:      0.0041 secs.
  Average:      0.0742 secs.
  Stddev:       0.0741 secs.
  Requests/sec: 13035.7681

Response time histogram:
  0.0041 [1]    |
  0.0990 [915590]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1940 [32251]        |∎
  0.2889 [19244]        |
  0.3838 [14771]        |
  0.4788 [8837] |
  0.5737 [6398] |
  0.6686 [2291] |
  0.7636 [610]  |
  0.8585 [3]    |
  0.9534 [4]    |

Latency distribution:
  10% in 0.0432 secs.
  25% in 0.0501 secs.
  50% in 0.0568 secs.
  75% in 0.0641 secs.
  90% in 0.0838 secs.
  95% in 0.2042 secs.
  99% in 0.4710 secs.
  99.9% in 0.6436 secs.

Summary:
  Total:        76.9472 secs.
  Slowest:      0.9704 secs.
  Fastest:      0.0051 secs.
  Average:      0.0746 secs.
  Stddev:       0.0760 secs.
  Requests/sec: 12995.9321

Response time histogram:
  0.0051 [1]    |
  0.1017 [920515]       |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.1982 [28602]        |∎
  0.2947 [19418]        |
  0.3912 [11888]        |
  0.4878 [9503] |
  0.5843 [7171] |
  0.6808 [1625] |
  0.7774 [1152] |
  0.8739 [99]   |
  0.9704 [26]   |

Latency distribution:
  10% in 0.0430 secs.
  25% in 0.0503 secs.
  50% in 0.0572 secs.
  75% in 0.0649 secs.
  90% in 0.0822 secs.
  95% in 0.2013 secs.
  99% in 0.4888 secs.
  99.9% in 0.6896 secs.


Create adopters page for Flux 2 users

Create adopters page for Flux 2 users.

It'd be great if we could have a ADOPTERS.yml (it could live in f/flux2 as well?) where folks can add company name and url to logo and we auto-generate the page? Not sure if that's too much effort though...

💯 We could set up an issue template for this as well

100 We could set up an issue template for this as well

Ah, so instead of people adding an entry to the yaml, they'd file an issue for this? I think I'd prefer the PR approach, as it'll be easier to spot who added which entry?

@dholbach Yep agreed, ultimately this is what I meant 😸  https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository

ah yes!


Merged, thanks!

You are welcome. Thanks for your hard work to PHP. 😄


The reference link is break

Type of issue
Missing information
Feedback
Reference blogs is 403.
The link is https://blogs.msdn.com/b/shawnhar/archive/2009/11/06/premultiplied-alpha.aspx and https://blogs.msdn.com/b/shawnhar/archive/2009/11/07/premultiplied-alpha-and-image-composition.aspx
Page URL
https://learn.microsoft.com/en-us/windows/apps/develop/win2d/premultiplied-alpha
Content source URL
https://github.com/MicrosoftDocs/windows-dev-docs/blob/docs/hub/apps/develop/win2d/premultiplied-alpha.md
Author
@stevewhims
Document Id
6457a4ee-94a6-cef0-3bdf-cc3e07519393

Thanks, I've fixed those links.
-Steve


Replace or add text to a table cell paragraph without altering paragraph font properties

First of all, @scanny, thank you very much for all your work for python-docx. A lot of your answers here and on SO have been very helpful.
I wish to either replace existing text or add new text to each cell in a table without altering the font properties that have already been set for the cell paragraph. I have used the following approach to set the text at the run level (rather than at the cell/paragraph level).
for row in table.rows:
    for cell in table.cells:
        paragraph = cell.paragraphs[0]
        run = paragraph.add_run()
        run.text = my_text

This results in the following xml for each cell.
document.xml
<w:tc>
    <w:tcPr>
        <w:tcW
                w:w="4464"
                w:type="dxa" />
    </w:tcPr>
    <w:p
            w:rsidR="00494DA3"
            w:rsidRPr="006C725A"
            w:rsidRDefault="00494DA3"
            w:rsidP="00990A0D">
        <w:pPr>
            <w:jc w:val="left" />
            <w:rPr>
                <w:rFonts
                        w:ascii="ＭＳ 明朝"
                        w:hAnsiTheme="minorEastAsia"
                        w:cs="Courier New" />
            </w:rPr>
        </w:pPr>
        <w:r>
            <w:t>My text</w:t>
        </w:r>
    </w:p>
</w:tc>

Looking at the above xml, as far as I understand, due to the <w:rPr> tag, ascii text should be shown in the "ＭＳ 明朝" (MS Mincho) font, which is what I want. However, when the docx file is opened, the ascii text ("My text" here) is actually being shown in the "Courier New" font.
My guess is that the ascii font is being taken from the default Normal paragraph font given in style.xml shown below.
style.xml
<w:style
        w:type="paragraph"
        w:default="1"
        w:styleId="a">
    <w:name w:val="Normal" />
    <w:qFormat />
    <w:pPr>
        <w:widowControl w:val="0" />
        <w:jc w:val="both" />
    </w:pPr>
    <w:rPr>
        <w:rFonts
                w:ascii="Courier New"
                w:hAnsi="Courier New" />
        <w:kern w:val="2" />
        <w:sz w:val="24" />
    </w:rPr>
</w:style>

Do you have any ideas on what I should do here to add text to a paragraph so that the text is shown in the ascii font specified in that paragraph?
For example, when using add_run(), is it possible to somehow add the same <w:rPr> tag shown in each paragraph in document.xml to the new run using python-docx? For example:
<w:r>
    <w:rPr>
        <w:rFonts
            w:ascii="ＭＳ 明朝"
            w:hAnsiTheme="minorEastAsia"
            w:cs="Courier New" />
    </w:rPr>
    <w:t>My text</w:t>
</w:r>

Any help/advice would be greatly appreciated.
Thanks in advance!

What does the cell paragraph XML look like before you try to change it? If that looks the way you want it will show what needs to be preserved.
I think the trick here will be to preserve a run that looks the way you want and just change the text it contains.
Here is some code that might be helpful: https://github.com/python-openxml/python-docx/issues/980

Yes, before the change, there is a run that contains the font information that I want to preserve.
Thank you for the link, isolate_run() seems to be a good place to start here.
And huge thanks for the quick response too. Much appreciated!


merging multiple kedge definitions

I think merging multiple Kedge definitions for the same application will be a pressing use case for scenarios like -

applying patches to kedge files and deploy in real time
managing different values for different fields for different environments, e.g. env variables/secrets will differ for dev, staging, prod
storing the core application in one kedge file, and storing the other information like secrets, configMaps, in another patch file

I am looking at the implementation as using kubectl patch and kubectl apply under the hood as it is.
Essentially, unmarshal and convert both, main and patch file(s), to Kubernetes resources, and apply kubectl apply/patch, and deploy to the cluster.
This has been discussed in part in #164 and #223, but I'm either confused or unsure with how much those align with the concerns in this issue
Also, similar discussions back in the day in https://github.com/redhat-developer/opencompose/pull/149 and https://github.com/redhat-developer/opencompose/issues/47

applying patches to kedge files and deploy in real time

Don't understand this part, can you elaborate more?

I am looking at the implementation as using kubectl patch and kubectl apply under the hood as it is.

why do you need kubectl patch?

@kadel -

applying patches to kedge files and deploy in real time

By this I meant that the application has been deployed to the cluster, and we want to patch just a small part of it, let's say update the container image name. Then, the user should be able to write a patch file -
name: appname
containers:
- image: imagename:new

and tell kedge to patch the running application.

why do you need kubectl patch?
If I understand it correctly you want to merge two kedge files, one will essentially overwrite some values from the other. And you want to do that so you can have some values different for different environments (dev/test/prod). Am I right?

Yep, but instead of us defining the merge key, we should let Kubernetes' apply/patch operations to take of this, so we do not have to rewrite the merge logic.
I could be wrong here, but I think kubectl patch and apply, both use the 3-way strategic merge.

All this should be done on Kedge level. Output should be normal Kubernetes definition, that you can call kubectl apply on

Yes, kedge should be doing all of this, but to do this, Kedge should use upstream's apply/patch code.

By this I meant that the application has been deployed to the cluster, and we want to patch just a small part of it, let's say update the container image name. Then, the user should be able to write a patch file -
name: appname
containers:

image: imagename:new
and tell kedge to patch the running application.

If someone wants to update image they shouldn't crate patch. You just update original kedge file that was used to deploy given an application in the first time and call kedge apply.
Creating patches like this just create inconsistencies. Kedge file should reflect what is deployed.

If this is proposed solution for https://github.com/kedgeproject/kedge/issues/223 that we should discuss it there.
Otherwise, it looks like that issue doesn't have progress and also so James knows about it.

It would be nice to show it on an example and describe how it will look like from users point of view.
Kubernetes uses Strategic merge patch, which can be sometimes a bit tricky.
Some documentation about Strategic Merge Patch:

https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-strategic-merge-patch-to-update-a-deployment
https://github.com/kubernetes/community/blob/master/contributors/devel/strategic-merge-patch.md

If this is proposed solution for https://github.com/kedgeproject/kedge/issues/223 that we should discuss it there.  It looks like that issue doesn't have progress and also James will notice it there.


Fix single-quotes incorrectly escaped when dragging into script editor

Fixes #56263. Fundamentally the same as godotengine/godot#57085.
Opted to leave ustring.cpp alone, as suggested by rrohak, and instead add a method to ScriptTextEditor that escapes a String for drag-n-drop into the script window according to single-quote preferences. It does that by de-escaping single-quotes that were escaped by String::c_escape, only when relevant.

We don't use sentences like "Fixes [something]" in commits and PR names, please rename it to reflect the change itself like: "Fix ' in file name gets incorrectly escaped when dragged to script editor" or shorter, don't forget to amend the commit name as well as the PR name.

We don't use sentences like Fixes [link] in commits and PR names, please rename it to reflect the change itself like: Fix ' in file name gets incorrectly escaped when dragged to script editor or shorter, don't forget to amend the commit name as well as the PR name.

Done, and apologies. A lot to keep track of and messed that up. Hopefully fixed!

Looks good, couple small changes commented inline.
Applied the patch locally and it complained about a formatting issue would recommend setting up clang-format, can use the guide here: https://docs.godotengine.org/en/stable/community/contributing/code_style_guidelines.html

Agreed and implemented all the changes, squashed commit and force-pushed. First time doing all this, but it looks like it might've worked as expected :)
I am using Visual Studio 2022 and it's supposed to apply the .clang-format file automatically (even warns me of it), but I went ahead and force-formatted the .h and .cpp file, so hopefully we won't have any issues!

Thank you for fixing this! 🎉


Data freshness indicator

It would be nice to see when the data was last crawled, when cards were last fetched, etc.

Will be in next deployment


[Bug] Typo on JMESPath page (missing 'it')

Page link
https://kyverno.io/docs/writing-policies/jmespath/#:~:text=Whatever the value of the namespace key is will be inserted where the expression is written.
Description
The page has a sentence:
"Whatever the value of the namespace key is will be inserted where the expression is written."
Where a word 'it' is missing
Expected behavior
The sentence should be:
"Whatever the value of the namespace key is, it will be inserted where the expression is written."
Slack discussion
No response

Can I work on this issue?


base64Binary in Generated Classes

I have the following in the wsdl I'm dealing with:
<s:element name="AddFile">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="auth" type="tns:Authorization" />
            <s:element minOccurs="1" maxOccurs="1" name="productId" type="s:int" />
            <s:element minOccurs="0" maxOccurs="1" name="fileName" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="data" type="s:base64Binary" />
          </s:sequence>
        </s:complexType>
      </s:element>

Which results in the following __construct() signature:
public function __construct($productId = null, \Drupal\hol_goodway\Soap\Product\StructType\Authorization $auth = null, $fileName = null, base64Binary $data = null)

And base64Binary is undefined.  Searching through this repo and looking at some test files, should a StructType have been generated for base64Binary?  Am I missing a config setting?

Rewriting the relevant references to use string instead made for successful submissions to SOAP. I'm happy to offer a contribution if you point me in the right direction.

Sorry for my non response, the xsd_type.yml is responsible for mapping XSD types to PHP types. In the case of an unknown type, the XSD type is used (which is not perfect I must admit). Ideally, the default type should be a string.
So feel free to add the base64Binary type alphabetically in the file and its associated PHP type. Then provide a test according to the update.
Finally make a pull request on the soon-to-be-created feature/63 branch.
Thx

why does src/resources/config/xsd_types.yml differ from tests/resources/xsd_types.yml?  Does the new type need to occur in both?
As to testing, are you just looking for a method call in tests/ConfigurationReader/XsdTypesTest.php to verify the proper php type is returned or something more?

The goal is to be able to have different types in test that those that are really used (even if there is currently no addionnal type). Ideally yes, copy the type in both files.
Concerning the test, do as you wish. There is not many tests in the XsdTypesTest.php class so you can add one for the new type if you wish to ensure it behaves as expected when calling isXsd and phpType.


Update d3planner.com/kadala to 2.4.2

I want to know where did d07RiV get the data( weight of every item) in the kadala calculator!!

I have tools to parse game files and extract necessary information, I'll try to update it this week if I don't forget.

I am inserted into the data of D3. Is that possible for you to share your tools and how to extract information, or send a copy of the data to me?  Thanks d07RiV!


Completion popup should not move with the cursor, but stay with the beginning of the completed text

In most cases the completion does its best to not move with the cursor. However, due to some limitations in the editor it may not always be the case


Nest - No longer able to differentiate Home/Away from Eco

Home Assistant release with the issue:
0.96.3
Last working Home Assistant release (if known):
0.95.4
Operating environment (Hass.io/Docker/Windows/etc.):
Raspbian Buster
Component/platform:
Nest
Description of problem:
With the rewrite of the Climate system, we're now considering the Nest thermostat's Away and Eco concepts as simply presets that are mutually exclusive.  This is not correct.  Home/Away and Eco mode are two separate things.  The thermostat can be either Home or Away, and Eco mode can be either on or off.  Treating Away and Eco as nothing more than presets removes the ability to determine their states separately.  If the preset is set to Eco, I have no way of determining if my thermostat is Home or Away, and if the preset is set to Away, I have no way of determining whether Eco mode is currently active or not.

The other part of this, the presets dont even work:

"Eco" : Eco=on, Home mode
"Away": sometimes Eco=on, Away mode, HVAC error
"None": nothing as far as I can tell + HVAC error

I hate to do it because he is such a busy guy, but @baloob it looks like you were the guy who did all of the code changes for climate 1.0. would you mind helping us understand this please? I have a forum thread dealing with this already. https://community.home-assistant.io/t/new-climate-integration-nest/127794/3

@ryanwinter fixed the issue of not being able to turn off eco in #25472. That PR also adds support for hvac_action (idle, cooling, heating).
Re the issue: The only thing I can think of that is possible is that we create a preset for each permutation. "Away - Eco", "Home - Eco", "Away" and "Home".

Hi @balloob,
I rolled out this patch, it does turn eco on and off as expected (by setting preset to 'eco' and 'none'), although there is further wierdness.
Setting preset to 'eco', changes the mode to 'auto' (I use cool right now as it's summer).

@balloob is that going to scale well, though?  What if Nest adds some other option down the road?  Then we have to add even more presets to cover all possible permutations?  That seems messy to me.
I think it makes sense to have Eco mode as a preset, since really all it's doing is changing the high and low set points, but Home/Away seems like a different concept that doesn't really fit into a preset.  In the Nest, Home/Away isn't just a setting you can activate, it's also essentially a sensor since the thermostat can sense whether you're home or not based on its motion sensor or your phone's GPS, and update the Home/Away state accordingly on its own.

@ryanwinter it only sets the UI to auto, the actual Nest is still in cool mode. Because for Home Assistant eco is a preset, not a HVAC mode. So when Nest is in eco hvac mode, we return auto.
@joe248 I think that it will scale quite well. There are only so many ways one can approach heating. It is important that we as Home Assistant offer a single abstraction so we can build a UI and integrate with external services like Google/Alexa.

@ryanwinter @balloob does the #25472 also fix #25294 ?

@ryanwinter @balloob does the #25472 also fix #25294 ?

For #25294, yes I see the hvac_state and operation_mode states available (although I never saw them missing).

The behaviour I'm seeing.

The nest is in cool mode, with eco off
Turn on eco mode
Turn off eco mode
The nest is in auto mode, with eco off

I validate this through the home.nest.com website. What I would expect in step 4 is for the original operation mode (cool), to be reinstated.

Because in Nest world eco is a hvac mode, there is no such thing as "turning off" eco mode. Turning off eco mode for a Nest means you change it to a different hvac mode.
In Home Assistant eco is not a hvac mode, so we don't know how to restore it, so we're defaulting to the first HVAC mode in the operation list. Suggestions on how we can improve this are welcome.
Relevant code:
https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/nest/climate.py#L271

Hi @balloob,
Thanks for spending the time to respond.
Looking at the Nest API, I now understand what you are referring to. I didn't run into this problem in the past, as I was using the home/away mode, and had my Nest setup to enter eco mode automatically when away. I can see that this the away/home mode works as expected so I will use this again.
In terms of resolving the eco off mode reverting to the first HVAC mode, there is a previous_hvac_mode API call which appears to be for this exact purpose. There is some more information on the topic here.

Dumb question, but it might keep us down at the atomic level of this issue. Is the purpose of the "presets" in HA only to have two temperature settings (e.g. the "Home" preset sets the temp = 22º, temp_high = 24º, temp_low = 21º; "Away" sets the temp = null, temp_high = 30º, temp_low = 10º)?
If that is all that we need, then Nest users should only have two presets: home and away. The HA component should allow any hvac mode on home, but on away should force heat_cool mode and permit no other modes. Nest-server side, HA would report a change to "eco" mode.
Basically, why not hide the ugly, "What is the difference between away and eco" mode stuff behind the code, maybe with adequate comments for future development, and make the frontend limited to only what the Nest supports?

@balloob are there plans to add additional presets so that all permutations are covered?

Behaviour Nest side :
Setting Home / Away is for the whole structure and doesn't switch immediately to Away (it's a sort of auto mode and it switches to away when it has decided to do so).
The Eco mode is a thermostat HVAC mode and switches immediately to your pre selected eco target temperature.
I hope you'll find a solution before winter because I switch to Eco mode via a Home Assistant automation. :-)

Thanks @balloob!


Add line in README to recognize upstream inclusion

Address #11

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @alexcrichton (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

👍

@alexcrichton may also wanna close the issue while you're at it. Thanks for accepting this fairly useless PR :)


kind test can

Describe the bug

Hi there,
I created a feature branch "feature/externalnode" to maintain code changes for VM agent case. But after I created a PR on the new branch, I found that kind tests failed to run. Shall we has enhancement in CI scripts to support running kind tests on such feature branch?
To Reproduce

Expected

Actual behavior

Versions:

Additional context

@antoninbas @tnqn I add all "feature/*" branches to the filter. Or I can only add "feature/externalnode" branch. Do you have any suggestions?


(FInal) Fix some questing problem and improve some embeds message content reader

Final update for function. Still maintain if found a bug.
What did i do:
Change getquests inside the small quest doing function to make it get quest correctly
Remove a unused variable in questuseactioncommand that make bot unable to get quest
Make a new embeds content reader that will check the content more accurate (only apply to getquests and checklist function)
Make a interval for checklist so it will update without the need of restart bot
Make socket show a completed/locked quest message when bot cannot found any active quest or after complete a quest
Remove some \\ that mostly added by a bot in getquests function. In that place i used it to check the ```...
After all, thank you, mid0, and also this project to help me improve my coding skill. Or at least, js coding skill.

https://github.com/Mid0aria/owofarmbot_stable
can you contribute to this project?

isn't that project close source?
also how to update this new version?

more also what is mid0 service auth key use for?

isn't that project close source? also how to update this new version?

He posted the unobfuscated code recently for us to create PRs, since he's going to be away and can't contribute

@Mid0aria you didn't call the checkUpdate function inside bot.js
if user using v<IP_ADDRESS> they will know there are new ver but if they are using v<IP_ADDRESS> they will never know

when i mean never it actually never unless they go to this github page
even though v<IP_ADDRESS> only have a little questing bug but... yea, they will stuck in v<IP_ADDRESS> forever


Solana: it should be possible to pass seeds into function

This program causes a panic in solang.
import "solana-library/spl_token.sol";

contract c {

    // Invoke the token program to mint tokens to a token account, using a PDA as the mint authority
    function mintTo(address mint, address account, address authority, uint64 amount, bytes[] seeds) internal {
        // Prepare instruction data
        bytes instructionData = new bytes(9);
        instructionData[0] = uint8(7); // MintTo instruction index
        instructionData.writeUint64LE(amount, 1); // Amount to mint

        // Prepare accounts required by instruction
        AccountMeta[3] metas = [
            AccountMeta({pubkey: mint, is_writable: true, is_signer: false}),
            AccountMeta({pubkey: account, is_writable: true, is_signer: false}),
            AccountMeta({pubkey: authority, is_writable: true, is_signer: true})
        ];

        // Invoke the token program with prepared accounts and instruction data
        SplToken.tokenProgramId.call{accounts: metas, seeds: seeds}(instructionData);
    }
}

Should we have a specific syntax for slices? bytes[] is a vector of bytes.

This is the solution of the problem described in #1028


ASUS AX3000 failed to set channel

I don't know what is wrong. Changing channels with aircrack-ng was never a problem.
sudo hcxdumptool -i wlp4s0 -o Handshake.pcapng --disable_deauthentication --disable_client_attacks --enable_status=3
initialization...
start capturing (stop with ctrl+c)
INTERFACE................: wlp4s0
ERRORMAX.................: 100 errors
FILTERLIST...............: 0 entries
failed to set channel
terminated...

I am using an ASUS AX3000 wlan card btw

This is a way too less information.
Pleas stop all services that takes access to the device, Than run the following  commands and post the output:
$ hcxdumptool -v
$ hcxdumptool -I
$ hcxdumptool -i wlp4s0 --check_driver
Difference betweeen aircrack-ng and hcxdumptool:
aircrack use NETLINK and ioctl() system calls
while
hcxdumptool uso nly ioctl() system calls. The reason why I don't use NETLINK is described here:
https://www.quora.com/What-are-the-differences-between-netlink-sockets-and-ioctl-calls?share=1

BTW:
This looks like you're running an old version of hcxdumptooL.
$ sudo hcxdumptool -i wlp4s0 -o Handshake.pcapng --disable_deauthentication --disable_client_attacks --enable_status=3
initialization...

start capturing (stop with ctrl+c)
INTERFACE................: wlp4s0
ERRORMAX.................: 100 errors
FILTERLIST...............: 0 entries

failed to set channel

terminated...

As of 08.11.2021, hcxdumptool moved from channel handling to frequency handling (required by some drivers):
08.11.2021
==========
hcxdumptool: replaced channel scan engine by frequency scan engine
this is high experimental

This message is removed "failed to set channel" completely.

Some more information about WiFi drivers is here:
https://github.com/ZerBea/hcxdumptool/issues/234

According to this:
https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi?s[]=iwlwifi
It is an AX3000 Wifi 6 adapter that uses Intel's AX200 chipset.
There are a lot bugs reported on the iwlwifi driver:
https://bugzilla.kernel.org/buglist.cgi?quicksearch=AX200
especially this one:
https://bugzilla.kernel.org/show_bug.cgi?id=214291
As long as this bugs are not fixed, hcxdumptool will not work. There is nothing I can do.
That is noticed in README.md:
Not recommended WiFi chipsets (Broadcom, Intel, Realtek and Atheros), especially:
* Broadcom (neither monitor mode nor frame injection)
* Intel PRO/Wireless (due to several driver issues and NETLINK dependency)
* Realtek RTL8811AU, RTL8812AU, RTL8814AU (due to NETLINK dependency)


Hide sidebar at a higher width

I noticed that on my forum the sidebar appears for too long even after resizing for a bit
BEFORE:
Screen recording 2022-09-20 8.10.52 AM.webm
This PR Fixes that.
AFTER:
Screen recording 2022-09-20 8.18.29 AM.webm

Just saw the video myself, the sidebar DOES hide, it just doesn't hide fast enough so it doesn't look bad


pip install flask-sqlalchemy  Fails

Environment:

Python version:
Flask version:

This isn't an issue with Flask (or Flask-SQLAlchemy). It's an issue with your environment, something about pip, virtualenv, or Python. This tracker is for issues related to Flask itself.


xen fails to build on master

I tried updating it, but no luck. I think the new glibc 2.23 is the reason for configure fail: http://hydra.nixos.org/build/32552024/log/tail-reload
I've only been able to find arch having the same issue, no patch yet.
cc @vcunat

This is strange. I do reproduce the build problem, but when I compile the configure test and run it myself, it succeeds (and measures 2 bytes). (Of course I do compile it with the stdenv from 16.03.)

Comments on https://aur.archlinux.org/packages/xen/ note a workaround.

Temporary workaround on arch: https://gitlab.com/johnth/aur-xen/commit/980a43d96ac1aa8796d16956a2b244010a24a378

Fixed then?

FYI the fix to Xen build system is committed.
See
https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=668e4edf92fcf7cb929eed221059a3eeb02722c3


Outbound-restricted clipboard: initial implementation by skipping xorg selection events

This is a one-way clipboard basic implementation.
Discards clipboard selection event so they are not propagated to the client.
Feature needed for companies having to restrict the user ability to take data out from the server.

recreated after fixing commit history

Please take a look if changes are now up to standard :)

Manual page is in.

merged devel into branch to remove conflict on sesman.ini.5 man file

@speidy @proski can we go ahead with this? I don't think there will be more development on this.

I think the right approach would be to add support for private configuration flags. Xrdp sends message of type 1 (init) for successful login. 3 is used for configuration, but it always comest from RDP clients. We could use another number, say, 7003, for private configuration flags, with the same parameters. That message could be sent by xrdp immediately after the init message.

This would be an awesome feature. How can we get this moving again?

No feedback, no response to our change request. Out of scope now.


feat: enhanced match

The idea is to bring fuzzy matching capabilities of extended match to basic match and form this new matcher.
Problem Statement
If we query "pet par" on "Peter Parker" using basic match, it'll be matched. But the match won't happen if the query string is "par pet". That being said both query strings will result in a match if we are using extended match.
Then why bring this new (enhanced) matcher?
Consider an example where we need to look for "April O'Neil". With extended match set, we type apr nel. It matches. We type nel apr. It matches again. But if we type 'nel apr it doesn't match. What happened here? Turns out tick/quote (') is interpreted as a pattern to do exact matching in extended match. And there are many characters like these which are interpreted in a special way. So there are valid cases when we need to search for words of a string in an unordered manner (for eg. searching for names and putting last name in query first) but we don't want any character to be interpreted in a special way.
So none of the characters are interpreted in a special way in an enhanced match?
None except one. "\ " (backslash followed by a space) is still converted to a tab.
The name "enhanced" match is not yet finalized and is subjected to change.
To Do

[x] Convert limitToFuzzy to a feature toggle

Decided against to bundle this:

Requirements may arise in future to make extended match more flexible, eg. change pattern character, position end character ($) before instead of after the word, etc. This will ultimately make the code harder to follow and understand and users would be discouraged to copy pieces of the extended matcher and modify it to suit their needs. Accepting this PR also goes against the efforts that we've made to make the matcher pluggable - increasing flexibility will proportionally increase the bundle size.
We've seen users to type in a way that matches the character order present in the list items. For example, if the list items consist of names wherein last name is followed by first name, but the user is unaware of it (or forget it) and types first name first, they will move caret to start of input and fill last name chars to narrow down the list. This is contrary to what we thought: we expected user to put a space after typing first name chars and continue typing last name chars.


Call App Script function only once during Authorization in Google Apps script [Gmail Add-on]

Can someone please suggest how to make a Google Apps Script function execute only once during 'Authorize' button press from Gmail Add-on ?
@grant Any suggestions please ?
Thanks,

I'm not sure. @sqrrrl Do you know if there's an onAuth callback?
Other links:
https://developers.google.com/gmail/add-ons/how-tos/authorizing
https://github.com/gsuitedevs/gmail-add-ons-samples/issues

Depends on the context -- is this for authorizing access to a 3P service? And do you want to run before or after auth?
For 3P auth, yes, you can do it. There's a callback that you're required to provide anyway to complete the oauth flow (see the github example in https://github.com/gsuitedevs/gmail-add-ons-samples)
For authorizing the add-on itself, no, there's no specific callback that takes place. Authorization happens before any of the add-on code is run. The only signal would be that this is the first time your code is running for that user. Of course the question is then "how do I know it's the first time?". For that, you can leverage PropertiesService.getUserProperties(). Check for the presence of a flag. If not set, it's the first time the user has run the add-on. Call whatever code you need in that case and set the flag. Subsequent executions would then see the flag and skip that code.

Closed due to 30 day inactivity.


Select Paragraph () by default

When not in paragraph mode hitting enter inserts empty divs to create spaces in the markdown.

+1. Has anyone worked out how to do this yet?

As far as I can tell this could be done with a plugin like this very basic one:
// Generated by CoffeeScript 1.6.2
(function() {
  (function(jQuery) {
    return jQuery.widget("IKS.hallorequireparagraphs", {
      options: {
        blockElements: ["p", "h1", "h2", "h3", "h4", "h5"]
      },
      cleanupContentClone: function(el) {
        var results = [], newel
        // if the editable element has no block-level elements, wrap the whole thing in a P
        if(!jQuery(this.options.blockElements.toString(), el).length){
          newel = jQuery('

').html(el.html());
          return newel;
        }
      }
    });
  })(jQuery);

}).call(this);

However for some reason this isn't working - the contents of the field don't get replaced with the wrapped version. If @bergie could shed some light on it, that would help. Real documentation would be a tremendous help generally.

@davecranwell That doesn't seem to work all the time, e.g. if there's some existing content before adding that plugin, and in some other edge cases. The following wraps each text node one by one instead:
jQuery.widget('IKS.hallorequireparagraphs', {
  cleanupContentClone: function(el) {
    // wrap all immediate text node children in a paragraph
    el.contents().each(function(){
        if(this.nodeType == 3){
            $(this).wrap('
');
        }
    });
  }
});

That isn't actually how I did it eventually: https://github.com/torchbox/wagtail/pull/999/files
That solution may be just as broken though.

Thanks, I didn't see that one. And I've just noticed that my version has some weird issues too: sometimes it starts adding a new paragraph after each keystroke.


Include nfs-common package

Enhancement Type
Improve an existing feature
Describe the enhancement
Firstly, thank you for all your work on these images they are great! This is a bit specific to my setup, but I think it could be a good improvement in allowing these images to work as flexibly as possible.
Recently I've started storing my server data on an NFS share, and then mounting that into the running container. However when I start the server, I've been hitting an intermittent issue which leads to the error java.io.IOException: No locks available
Researching this error I stumbled across some some threads that imply all clients should have the nfs-common package installed:
https://github.com/moby/moby/issues/36313
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-20-04
Looking closer at the nfs-common package:
https://packages.debian.org/sid/nfs-common
"Programs included: lockd, statd, showmount, nfsstat, gssd, idmapd and mount.nfs."
So it makes sense to me that file locking on NFS shares may not work without this installed. I extended your container and installed nfs-common, and I've not run in this issue since.
Would you consider including this package in your images? It would provide better NFS support.
[init] Running as uid=1000 gid=1000 with /data as 'drwxrwsr-x 11 1000 1000 4096 Nov 23 19:14 /data'
[init] Resolved version given 1.19.2 into 1.19.2 and major version 1.19
[init] Resolving type given PAPER
[init] Removing old PaperMC versions ...
[init] Downloading PaperMC 1.19.2 (build 282) ...
[init] Disabling whitelist functionality
[init] Setting white-list to 'false' in /data/server.properties
[init] WARNING: whitelist enabled but not enforced. Set ENFORCE_WHITELIST=TRUE or update 'enforce-whitelist' in server.properties to enforce the whitelist.
[init] Setting view-distance to '10' in /data/server.properties
[init] Setting hardcore to 'false' in /data/server.properties
[init] Setting enable-rcon to 'true' in /data/server.properties
[init] Setting rcon.password to 'minecraft' in /data/server.properties
[init] Setting rcon.port to '25575' in /data/server.properties
[init] Setting level-seed to '-4060839488929676108' in /data/server.properties
[init] Setting pvp to 'true' in /data/server.properties
[init] Setting online-mode to 'true' in /data/server.properties
[init] Setting simulation-distance to '10' in /data/server.properties
[init] Setting enforce-secure-profile to 'true' in /data/server.properties
[init] Setting motd to 'A free Minecraft Server' in /data/server.properties
[init] Setting difficulty to 'easy' in /data/server.properties
[init] Setting mode
[init] Setting gamemode to 'survival' in /data/server.properties
[init] Updating ops
[init] Checking for JSON files.
[init] Setting initial memory to 1664M and max to 1664M
[init] Starting the Minecraft server...
Downloading mojang_1.19.2.jar
Applying patches
Starting org.bukkit.craftbukkit.Main
System Info: Java 17 (Eclipse OpenJ9 VM openj9-0.32.0) Host: Linux 5.10.0-0.bpo.15-amd64 (amd64)
Loading libraries, please wait...
2022-11-23 19:15:12,307 ServerMain WARN Advanced terminal features are not available in this environment
[19:15:15 INFO]: Building unoptimized datafixer
[19:15:16 INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[19:15:19 ERROR]: Failed to start the minecraft server
java.io.IOException: No locks available
	at sun.nio.ch.FileDispatcherImpl.lock0(Native Method) ~[?:?]
	at sun.nio.ch.FileDispatcherImpl.lock(Unknown Source) ~[?:?]
	at sun.nio.ch.FileChannelImpl.tryLock(Unknown Source) ~[?:?]
	at java.nio.channels.FileChannel.tryLock(Unknown Source) ~[?:?]
	at net.minecraft.util.DirectoryLock.create(DirectoryLock.java:31) ~[?:?]
	at net.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess.<init>(LevelStorageSource.java:398) ~[?:?]
	at net.minecraft.world.level.storage.LevelStorageSource.createAccess(LevelStorageSource.java:323) ~[?:?]
	at net.minecraft.server.Main.main(Main.java:185) ~[paper-1.19.2.jar:git-Paper-282]
	at org.bukkit.craftbukkit.Main.main(Main.java:302) ~[paper-1.19.2.jar:git-Paper-282]
	at io.papermc.paperclip.Paperclip.lambda$main$0(Paperclip.java:42) ~[app:?]
	at java.lang.Thread.run(Unknown Source) ~[?:?]
2022-11-23T19:15:19.740Z	INFO	mc-server-runner	Done

I don't mind adding it, but am a little unsure how adding that within the container makes a difference. Containers mount in the filesystem from the host and use the same kernel as the host, so installation at the host level makes more sense to me.
You can PR that if you want.

That makes sense.


logs should be json

Json logs are good for save to elasticsearch etc. Please consider.

Moved to https://github.com/pions/webrtc/wiki/Contributing#improve-logging
Feel free to re-open when someone starts working on this! Just trying to triage things (and get good issues in front of contributors)


Information Tensor for Universal Poker/ACPC is abstracted even when the game is fullgame

I noticed that the information tensor for Universal Poker works when the game is abstracted, but when the game is unabstracted (i.e. full game) the information tensor is still abstracted, and it doesn't differentiate between different bet sizes.
game = pyspiel.load_game('universal_poker', {'bettingAbstraction': 'fullgame', 'numRanks':4, 'numSuits':1})
print(game.num_distinct_actions())
print('   check', game.new_initial_state().child(1).child(2).child(1).information_state_tensor())
print(' bet 400', game.new_initial_state().child(1).child(2).child(400).information_state_tensor())
print(' bet 500', game.new_initial_state().child(1).child(2).child(500).information_state_tensor())
print('bet 1200', game.new_initial_state().child(1).child(2).child(1200).information_state_tensor())

outputs (stars around the relevant part):
1201
   check [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, **1.0, 0.0,** 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 bet 400 [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, **0.0, 1.0,** 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
 bet 500 [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, **0.0, 1.0,** 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
bet 1200 [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, **0.0, 1.0,** 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

Solutions: (1) properly implement a full infostate tensor for the unabstracted game, (2) print a warning about this issue to stderr when instantiating an unabstracted game or when getting an InformationStateTensor() from one, or (3) add a code comment to universal_poker.h about this issue.
I think (1) would be the best solution and should be feasible. Should tensors in openspiel only contain 0s and 1s? If not, the infostate tensor for poker could be succinctly and elegantly represented with integers for bet sizes.

Thanks for highlighting this. Solution 1 sounds like the way to go. There's no hard rule that the tensors should contain only 0s and 1s, though if possible it's preferred as it's a more natural input representation for neural networks. In the case of no limit poker I agree the most straightforward solution is to include the full bet size.
I think it would make sense to keep the fold, call, raise, all-in 2-bit notation that you have surrounded with **, and then add another entry with the full bet size. WDYT?

I think it would make sense to keep the fold, call, raise, all-in 2-bit notation that you have surrounded with **, and then add another entry with the full bet size. WDYT?

That sounds good to me.
While we're on the topic, I also noticed that the InformationStateTensor just lists all actions from all rounds, in order. An alternative, which requires more space, but seems more natural, is to have different sections of the tensor for different rounds. Actually, some parts of the code hint that this was planned at some point:
Line 361:
// Layout of observation:
...
...
  //   NumRounds() round sequence: (max round seq length)*2 bits

Line 424:
  // Move offset up to the next round: 2 bits per move.
  offset += game_->MaxGameLength() * 2;

A notable benefit is that an action at a specific spot in the tensor will always belong to the same player. I would guess that this makes it much easier for neural nets to understand the infostate, so I'd propose switching to that. What do you think?

I agree that this is more interpretable, but how much extra space does this require? If you're playing with 100bb you could imagine a pathological min-raise situation where player1 raises to 2bb, player2 to 3bb, player1 to 4bb etc...
Is there a max raises per round parameter? (It's been a long time since I looked at this poker code)

The current implementation requires O(max_actions_per_game) space. The proposed implementation would require O(num_rounds * max_actions_per_game) space. So if there are two betting rounds (preflop and postflop), then this would use 2x the space:
Current implementation:
[ ... card deals and stuff ..., action 1, action 2, ... action n]
Proposed implementation:
[... card deals and stuff ..., r1 action 1, r1 action 2, ...,  r1 action n, r2 action 1, r2 action 2, ..., r2 action n]

where "action i" is the ith action of the game, and where "ri action j" is the jth action of the ith round.
So with the 100bb, the current implementation would require a tensor of length O(100) anyways, and the proposal would require O(200) with 2 betting rounds or O(400) with 4 betting rounds.
If users of the library are in a situation where they need small tensors, they can still edit the OpenSpiel code back to what it is now, or they can take the tensor, remove blank spaces, and stitch it back together.
I'm curious now to see how true my guess is (i.e. "it's easier for neural nets to understand the infostate" ), so I may run some empirical tests.

Is there a max raises per round parameter? (It's been a long time since I looked at this poker code)
Yes, there is. By default it's maxint.

Thanks for clarifying, I agree with all of the above, and I'm also curious to see if it's easier for neural nets to understand the infostate this way. In either case, natural and intuitive structuring of the infostate tensor is important for us humans as it's an easy entry point for subtle bugs to slip in. These changes would be a welcome contribution :)

Thanks, guys.
Just linking the submitted PR for completion: https://github.com/deepmind/open_spiel/pull/1035

^ whoops, sorry for the confusion. #1035 isn't the issue discussed here, but contains a couple small fixes.

Oops :)

Hi @VitamintK, just checking: did you ever submit a fix for this?

No, not yet 😬 I ran those experiments and have the fix partially done, but haven't gotten around to finishing the PR yet!

Hi @VitamintK,
Just curious if you still have that code lying around and if you'd still be up for providing a PR fix for this, or if you'd even be willing to send us the relevant parts. It'd be great to finally fix the known issues in the poker implementation.


Member.Roles doesn't change when a member's roles change

The roles in the member struct stay the same, even though a member received a new role for example.

I don't mean as in the same struct
it is called from two separate occasions, but although the member has a new role the roles stay the same :/
member, err := session.State.Member(gid, uid)


Just trying out macOS support

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

nice. This is the same config as upstream has in the tests so I think skipping these IO tests on Mac is fine!

Note: this also includes the latest PHP version becaues the previous one had a test failure becausae of a cetr that expired in 2021.

@wolfv many thanks!


Loader fixes and improvements

[x] Use a better and safer alternative to IsBadReadPtr
[x] Fix loader for
[x] Fix hashmap poolAlloc

Linux good?

Linux good?

Fixed just now

lol answered my own question

Looks like Linux has been failing due to another issue too.

This fixed the issues I had with HashMaps on Win64.


doc: add missing Apple iMac entry

Description of changes
Things done

[ ] Tested the changes in your own NixOS Configuration
[ ] Tested the changes end-to-end by using your fork of nixos-hardware and
importing it via <nixos-hardware> or Flake input

@mergify queue


Use a switch in ProcStatement()

Doesn't really impact compiletime either way, but it means we no longer have to worry about the order we're parsing proc statements.

Doesn't really impact compiletime either way, but it means we no longer have to worry about the order we're parsing proc statements.

Did we ever have to worry about it if it doesn't impact compile time?

Did we ever have to worry about it if it doesn't impact compile time?

The order of proc statements in the original code did have a measurable impact on compile time (at least back when I first rearranged them based on frequency, dunno about current year).


test: coverage more cases

Codecov Report

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

@@          Coverage Diff           @@
##           master      #5   +/-   ##
======================================
  Coverage    82.5%   82.5%
======================================
  Files           1       1
  Lines          40      40
======================================
  Hits           33      33
  Misses          7       7

Continue to review full report at Codecov.

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


Couple of library fixes

Changes

Fixed a bug with backup not restoring "seen" endpoint of an episode
Fixed a bug with the wrong bottom bar showing up when selecting anime while in its library

When you are going to add a features that show size of episodes in your app

How do I download this ? The update never came


No constraints on the parameters of a sum node

Hi,
It seems that there are no constraints on the parameters (log probs for the children) of a sum node. It means that an input (adapted from the doc)
using ProbabilisticCircuits;

X1, X2, X3    = [InputNode(i, Indicator(true))  for i=1:3]
X1_, X2_, X3_ = [InputNode(i, Indicator(false)) for i=1:3]

pc = 1.3 * (X1_ *
             (0.2 * X2_ + 0.8 * X3)) +
     0.7 * (X1 *
             (0.4 * X2 + 0.6 * X3_));

data = Matrix{Union{Missing, Bool}}([missing missing true])
probs = loglikelihoods(pc, data; batch_size=3)
println(exp(first(probs)))

does not raise any error (or warning) and gives a probability of 1.58. Is it allowed by design ? Otherwise, a little check that the weights of the mixture sum up to 1.0 adds almost no overhead at creation time and avoid such situation.

Hi, yes we currently do not enforce constraints when user specifies the circuit manually. This is mostly because we almost always learn both the structure and paramters of the circuit from data which in those cases we do ensure paramters are valid and normalized.


Make twitter settings validation test more explicit

This allows you to have settings lying around in your development environment while allowing the test to run.

Automated message from Dropbox CLA bot
@DazWorrall, it looks like you've already signed the Dropbox CLA. Thanks!


[Improvement-15723][UI] Work out the issue that project preferences doesn't replace all places that they need to affect.

Purpose of the pull request
This PR will close #15723 .
Brief change log
Verify this pull request
This change added tests and can be verified as follows:

Manually verified the change by testing locally.

The test results is as follows:

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

Project coverage is 39.06%.  Consider uploading reports for the commit fd2d477 to get more accurate results

Additional details and impacted files
@@             Coverage Diff              @@
##                dev   #15724      +/-   ##
============================================
- Coverage     39.09%   39.06%   -0.04%
+ Complexity     4853     4848       -5
============================================
  Files          1316     1316
  Lines         45014    44978      -36
  Branches       4819     4795      -24
============================================
- Hits          17599    17571      -28
+ Misses        25506    25498       -8
  Partials       1909     1909

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


read data from hdfs

"Different node should owns different parts of all Train data. This simple script did not do this job, so you should prepare it at last. " I saw this in cluster training wiki. So, could paddle read data from hdfs and distribute data to each node automatically?

Distribute data to cluster is not added in PaddlePaddle now.  You can read data directly from a HDFS file path by PyDataProvider2.
PaddlePaddle not handle how to get data file remotely, just pass the file path into a Python function. It is user's job to OPEN the file (or SQL connection string, or HDFS path), and get each
sample one by one from it.
It is welcome to contribute a script to distribute data to cluster. Or we may add it soon if this feature is very necessary.


using DirectByteBuffers fails when running in java 8

Due to the overloaded ByteBuffer.position(int) method and the jar compiled with a jdk > 8, the 1.1.12 version of javaewah will cause a NoSuchMethodException when running in java 8. This can be verified by adding /path/to/java8 to the surefire plugin's configuration when the code is compiled with jdk9 or above. The following blog post provides more details about what's happening and how the compiler.release version makes a difference compared to compiler.source and compiler.target: https://www.morling.dev/blog/bytebuffer-and-the-dreaded-nosuchmethoderror/.

Let us try it out. Merging.

Issuing release.


in browser

Can you give me any pointers for modifying this such that it works in browser and not just node?

unforunately (as of right now) cohost's CORS policy prevents anyone from using their API from a browser


New install of my Conda environment on a completely clean VirtualBox Windows 11 install

Before submitting an Issue, please review the Issue Guidelines.
I have searched for the solution to my issue, and have found some things related to GeoPandas and RTree, but the solutions there did not solve my issue, which occurs after compilation by Nuitka. My script runs just fine otherwise, as a .py and in PyCharm. I am using the factory version of Nuitka, updated today (June 2, 2023). I installed Nuitka using pip, and all other packages with Conda. I executed the compilation using "python -m nuitka --standalone gdal_rewrite.py" and I would attempt to reproduce the error using simple code after I submit this issue, but something has happened to my Conda installation after compilation with Nuitka and I can no longer use Conda commands. That is certainly a troubling outcome!! Please see below for my output when I try and use a Conda command after using Nuitka. My Conda installation was working fine until I ran Nuitka.
For my initial issue, I assume that compiling a script that imports GeoPandas installed with Conda will reproduce the issue, but I am unable to verify at this time.
For my Conda issue:
(pyqgis) C:\pythonProject\gdal_rewrite.dist>conda deactivate
Traceback (most recent call last):
File "C:\Users\lbdas\anaconda3\Scripts\conda-script.py", line 11, in
from conda.cli import main
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\cli_init_.py", line 3, in
from .main import main  # NOQA
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\cli\main.py", line 34, in
from .conda_argparse import generate_parser
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\cli\conda_argparse.py", line 30, in
from ..base.context import context
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\base\context.py", line 53, in
from ..common.os.linux import linux_get_libc_version
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\common_os_init.py", line 10, in
from .windows import get_free_space_on_windows as get_free_space
File "C:\Users\lbdas\anaconda3\lib\site-packages\conda\common_os\windows.py", line 12, in
from ctypes import (POINTER, Structure, WinError, byref, c_ulong, c_char_p, c_int, c_ulonglong,
File "C:\Users\lbdas\anaconda3\lib\ctypes_init_.py", line 8, in
from _ctypes import Union, Structure, Array
ImportError: Module use of python39.dll conflicts with this version of Python.
Please be aware that I am using the initial install of Conda, and have changed nothing and done nothing but run Nuitka.
My Version information:
(pyqgis) C:\pythonProject\gdal_rewrite.dist>python -m nuitka --version
1.7rc1
Commercial: None
Python: 3.9.16 | packaged by conda-forge | (main, Feb  1 2023, 21:28:38) [MSC v.1929 64 bit (AMD64)]
Flavor: Anaconda Python
Executable: C:\Users\lbdas\anaconda3\envs\pyqgis\python.exe
OS: Windows
Arch: x86_64
WindowsRelease: 10
Version C compiler: ~\AppData\Local\Nuitka\Nuitka\Cache\downloads\gcc\x86_64\11.3.0-14.0.3-10.0.0-msvcrt-r3\mingw64\bin\gcc.exe (gcc).
 Thank you!!

I forgot to include my initial issue, which happens when I run the compiled file produced by Nuitka:
(pyqgis) C:\pythonProject\gdal_rewrite.dist>gdal_rewrite.exe
Traceback (most recent call last):
File "C:\PYTHON~1\GDAL_R~1.DIS\gdal_rewrite.py", line 34, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\geopandas_init.py", line 1, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\geopandas_config.py", line 109, in
File "C:\PYTHON~1\GDAL_R~1.DIS\geopandas_config.py", line 95, in _default_use_pygeos
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\geopandas_compat.py", line 251, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\rtree_init.py", line 9, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\rtree\index.py", line 17, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "C:\PYTHON~1\GDAL_R~1.DIS\rtree\core.py", line 74, in
File "C:\PYTHON~1\GDAL_R~1.DIS\rtree\finder.py", line 65, in load
OSError: could not find or load spatialindex_c-64.dll

I think most importantly, you forgot to include any kind of reproducer for the Nuitka compiled program. I couldn't care less about your Anaconda deactivate bug, you can report it Anaconda. A call stack is not a reproducer at all.

My apologies. I cannot test any code to provide an example, as my Conda install is now broken. I only included it here because I believe it is related to the Nuitka compile. My apologies if it is not, and I do not mean to waste your time in any way. However, it has now occurred twice, directly following a compile by Nuitka. I will investigate further, but I want you to know I only include it here because I believe it is related. Thank you very much for your time, in any case.
I will fix my Anaconda issue, and then attempt to discern whether it is related to the Nuitka compile, as I suspect. In addition, I will supply an example at the same time. I have included a zip file with the entirety of my code, and my yml file in the meantime.
You have my gratitude, and thank you again for the time you put towards this project.
pyqgis.zip

I cannot really run whole programs easily, I would have to audit them, if they contain attacks. People have tried to trick me into running exploits before. The code is full of absolute paths, etc. so I cannot use that. Please create a new issue when you have something that I work off.


Rename 'fern compile' to 'fern validate'

fern validate is more clear for what it does

Settled on fern check


Support for diffrent views eg. gallery view

Sometimes it is really handy to browse the parts by pictures.
Generally the support for viewing the data in diffrent ways (list, gallery, map/locations) would be a nice feature.
While changing the CSS for a gallery view seems to be easy at first, I think there is more underlaying work needed so that InvenTree is aware of the types of views and the currently selected view of the user.
The possibility for plugins to provide own views could also bring a big potential.

@Marioheld would you be able to provide a simple visual mock-up of what you are thinking here?
In general I'm on board with supporting this concept, if it is useful in the general case :)

The green arrow shows the new view switcher.
L stands for list mode. This is the currently used view.

G stands for gallery mode. Here you have much larger images and can spot the difference between parts, which have similar naming.
For example the two types of speaker are very similar but the left type is physically bigger.

That seems more than reasonable.
The current table view is handled using the bootstrap-table library
It appears there is already an extension which might support this feature:
https://examples.bootstrap-table.com/#extensions/custom-view.html

Taked a look on the custom view extension.
Looks promising.
Can I provide you anything else?

refer to https://github.com/inventree/InvenTree/pull/1622 and let me know what you think


postprocessTree never called when consumed by addon

I suspect this is an ember-cli issue, but when an addon uses ember-browserify, the consuming application will throw this error:
$ ember build
version: 0.2.5
Build failed.
Path or pattern "browserify/browserify.js" did not match any files
Error: Path or pattern "browserify/browserify.js" did not match any files
    at Object.multiGlob (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-kitchen-sink-helpers/index.js:202:13)
    at Class.module.exports.CachingWriter.extend.addFiles (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/concat-with-maps.js:74:13)
    at Class.module.exports.CachingWriter.extend.updateCache (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/concat-with-maps.js:52:12)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli-sourcemap-concat/node_modules/broccoli-caching-writer/index.js:92:34
    at lib$rsvp$$internal$$tryCatch (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:501:17)
    at lib$rsvp$$internal$$publish (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:472:11)
    at lib$rsvp$asap$$flush (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1290:9)
    at process._tickCallback (node.js:355:11)

This has something to do with the fact that postprocessTree is not called on ember-browserify, which is not a direct depedency of the app.
I reproduced this in a dummy app here: https://github.com/asakusuma/nested-ember-browserify

Yes, this is a general ember-cli limitation. It needs better support for recursive addon hooks. Conceptually I think it could be made it work without any changes to ember-browserify.

Ok I tried propagating the hook calls in the addon down to ember-browserify: https://github.com/asakusuma/uses-ember-browserify/commit/0a5a20605036e26b8fa67528733ee28c4317cef1
I don't quite understand the new error because postprocessTree seems to be passing a valid tree. @stefanpenner got any workarounds for recursive hook calls?
$ ember build
version: 0.2.5
Build failed.
Cannot read property 'rebuild' of undefined
TypeError: Cannot read property 'rebuild' of undefined
    at Builder.wrapIfNecessary (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:136:18)
    at readAndReturnNodeFor (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:44:17)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/broccoli/lib/builder.js:22:14
    at lib$rsvp$$internal$$tryCatch (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:501:17)
    at /Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1095:13
    at lib$rsvp$asap$$flush (/Users/akusuma/workspace/opensource/nested-ember-browserify/node_modules/ember-cli/node_modules/rsvp/dist/rsvp.js:1290:9)
    at process._tickCallback (node.js:355:11)

@stefanpenner got any workarounds for recursive hook calls?

nope

@chadhietala's pre-packager work supports nested NPM imports correctly.  https://github.com/chadhietala/ember-cli-pre-packager
The plan is for this eventually to part of ember-cli (once its complete)

Alright, I'll just bug @chadhietala to get it done faster haha
Closing, thanks guys

Alright, I'll just bug @chadhietala to get it done faster haha

i suspect you know where to find him ;)


fslogix file share - setting NTFS permission fails

Temp storage VM is unbale to resolve file share name (*.file.core.windows.net)

@nataliakon

Fixed by @nataliakon PR: https://github.com/Azure/avdaccelerator/pull/128


Make PARSEC a daemon

PARSEC should run as a daemon, running fully as a background process. Its logs should go at a convenient place and not on the standard output.
It should be possible to gracefully terminate it and wait for all of its threads to finish.

logging to stdout is the normal way for daemons to run now; systemd or whatever will handle redirecting logs to wherever, so it is not necessary to change that. We should have a clean shutdown.

Agree to both points.
I have written some research I made about the subject and what I think we should be doing:
There seems to be two kinds of daemons:

"traditional" SysV daemons which contain a double-forking mechanism to separate themselves from their parent process and the TTY they are linked to. They redirect themselves their standard file descriptors to a file or system wide logging. The crate daemonize works like that.
"modern" systemd daemons where systemd itself manages the daemons which do not have to do anything special apart from having a graceful shutdown mechanism. This can be done by implementing a SIGTERM signal handler (signal that is sent to the daemon when systemd wants to close it.) systemd needs a service file that describe the service type and its logging mechanism. Logs can be redirected easily so that they can be viewed with the journalctl, something like journalctl -u parsecd.service. There are also advanced features of systemd to automatically start-up the daemon whenever a connection is received on the socket, and not have it running all the time.

I am mostly inclined to follow the modern, systemd, process of daemonization and I see for that the following tasks:

Create a .service file and put it at the root of this repo (same way as containerd does)
Implement a handler of the SIGTERM signal to cleanly shutdown PARSEC (send to all thread a message through a channel for them to return and join them)
Adds CI tests where PARSEC is run as a daemon, with systemctl commands.

Separate but linked tasks:

With #36, replace all println calls with a real logging system (log + env_logger for example). (Possibly add log tests?)
Investigate socket activation of PARSEC

Note: systemd is a Linux only daemon manager, which is not on MacOS. The service will need to have OS dependant (#[cfg]?) code and still work by just running cargo run on other OSes. We will need to investigate daemon manager on the other OSes we want PARSEC to run on.
Ressources: simple description, daemon man page, types of services, Go example

The points above seem good, but I have a few questions/points:

Log tests are probably overkill. Manual checking should suffice
Given the architecture of PARSEC, how will the socket activation fit into it? I agree that it's a nifty tool, but only as long as it doesn't open us up to someone tricking the system
We should future-proof at least a tiny bit, in case we need to make PARSEC a Windows service too :)

Agree to all points.
I think socket activation is an advanced topic that will need more look into once a basic service is working. Will look into simple and notify services at first, with no socket activation (the service will initialise its own socket). Socket activation will also be socket dependant and I don't know how it would interact if we have other kinds of listeners.
I will make sure that the normal behaviour cargo run, still works on other OS.

CC @paulhowardarm for your information


chore: remove some unused files

Checklist:

[x] I have read and followed the contribution guidelines.
[x] I have read and followed the how to open a pull request guide.
[x] My pull request targets the main branch of freeCodeCamp.
[x] I have tested these changes either locally on my machine, or GitPod.

Related #47971

I have started removing unused files from the codebase.
Proceed with caution, and test carefully. I have run the tests, and looked around the site, everything still seems to work, but please also reviewers should test throughly.

Hi @ieahleen, thanks for helping out with the cleanup. Unfortunately the api-server is difficult to tinker with because it has hidden dependencies that knip misses. For example, we do need the ecosystem-config file, since that's used in deployment.
Since we're (relatively) close to being to removing the api-server entirely, I don't think it's worth spending time improving it. Particularly given how tricky that process is.

Since we're (relatively) close to being to removing the api-server entirely, I don't think it's worth spending time improving it. Particularly given how tricky that process is.

Ok, thank you. I also guess I removed something that was needed, but locally build and tests worked fine, so 🤷 I will leave the ./api-server/* files alone then

Yeah, there are some testing gaps. We need to run them against a more production-like build.


Tls failure

This script does not work. A serious bit of googling today confirms it's not working for anyone.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 69e3b74c-2e19-9963-bf78-2d0a01e6f906
Version Independent ID: 5fbd6b33-2af1-5f5d-b824-d3bbd5649956
Content: Configure a Point-to-Site (P2S) VPN on Linux for use with Azure Files
Content Source: articles/storage/files/storage-files-configure-p2s-vpn-linux.md
Service: storage
Sub-service: files
GitHub Login: @roygara
Microsoft Alias: rogarana

@fish-finger There are several scripts on the page. Which one were you having issues with? Could you also provide the specific error you are receiving when running the script?

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Allow explicitly-constructed Responses to use custom promises.

Fixes #585.

It's likely when we move onto node-fetch 3.x, custom promise support will be dropped as nodejs' promise implementation is now universal and fast.
Even micro benchmark show the general overhead is minimal, not to mention when you do actual work with promise.
http://bluebirdjs.com/docs/benchmarks.html


fix build errors now that IG-Publisher requires core vital-signs

New IG-Publisher forces conformance on Observations that are Vital-Signs. The changes made do not impact the normative part of PCF, just examples are not compliant to the FHIR core vital-signs.

reviewed in committee.


PoseAction velocity is always Zero

I am trying to use the poseAction[handType].velocity and always give me Zero, GetTrackedObjectVelocity worked in previous version in 2.5 gives zero vector3

Please make updates to improve things not to make it worse, i am getting a headache with steamvr

Comments like this are not helpful and will not get us to answer your questions faster

It sounds like you are also using Vive Input Utility which may be causing the issues you are seeing. Can you verify you see this behavior in a new project?

No, i am not using VIU anymore, anyways i just made my own method to detect velocity


Logger

Is TinyNetworking supporting logger to print all network requests on console?

No, not yet.
Sent with GitHawk


[profiling] Forward Blazesym's symbolization APIs

What does this PR do?
Forward C-APIs from blazesym.
There is an internal RFC doc around the choice of blazesym
Motivation
Within ddprof we will switch to using blazesym.
Additional Notes
In a similar way we can choose to forward the normalize APIs.
How to test the change?
There is a C test within the repository.
Blazesym also has some tests within the repository
For Reviewers

[ ] If this PR touches code that signs or publishes builds or packages, or handles credentials of any kind, I've requested a review from @DataDog/security-design-and-guidance.
[x] This PR doesn't touch any of that.

Ruby pulls in the shared library. This would have an impact on ruby binaries.


Update package-lock.json in script

The current update-version script only updates package.json and not package-lock.json.
This causes package-lock.json to be updated after npm install for future contributions like #297.
Hence this PR adds updating package-lock.json to the script.

Can you add a PR summary

Can you add a PR summary

@cygaar Updated.

Good work


Add junit-xml rules (both distribution-wise and PIP)

This package helps creating test output (in platforms where rostest cannot be easily used).

junit-xml

Two different rules have been done because of different versioning. PIP is currently on 1.7, but Ubuntu versions vary significantly. I am not sure if this is the correct procedure in this case.

Do you need the newer pip version specifically for your use case? In general we'd rather stick with the distribution version unless there's a specific reason to jump forward. Code that relies on the pip version is not releasable, and can end up conflicting with the code that depends on the distribution version.

@tfoote I just found a way around in my application that does not require these rules anymore (I was in fact using the PIP one). I am modifying the PR to include only the distribution version (so the time is not completely lost :) )

That's great. I've also added Debian and Fedora rules to make it generally releaseable.
Note that as of Stretch it's already at 1.7
Fedora: https://admin.fedoraproject.org/pkgdb/package/rpms/python-junit_xml/
stretch: https://packages.debian.org/stretch/python-junit.xml
jessie: https://packages.debian.org/jessie/python-junitxml
Actually now that I look deeper it seems that there's actually 2 different packages.
As of xenial there's: http://packages.ubuntu.com/search?keywords=python-junit.xml  (v 1.7)
compared to: http://packages.ubuntu.com/search?suite=default&section=all&arch=any&keywords=python-junitxml&searchon=names (v 0.6) Which bottom out to completely different projects. Not just different versions.
https://github.com/kyrus/python-junit-xml  is in the series 1.7 vs https://launchpad.net/pyjunitxml which is the 0.6 series.

That's as interesting as confusing, thanks for the info!

Since python-junitxml seems not to be available on debian stretch and it's latest commit is from 2011 I'd suggest that the junit.xml package is a better target. It's also what's in pypi.
It's not as available on older platforms but since you hadn't noticed that already it shouldn't be a problem to define the rules for xenial and newer, stretch, and fedora. So that's what I'd propose to do.


MultiAccount + MultiThreading like PokemonGo Map ?

Hi
I wanted to know if you can implements those feature to improve drasticly the scan search time. I just tried and it's super fast but I still prefer your version of pokemongo Map :+1:

You tried what?

I've created 3 PTC accounts and lined them up so only 1 corner would touch. I'm scanning entire cities like this and I never stand still longer than 15 minutes to catch a rare pokemon. Getting the positions right is a mess though, but the scanning works perfectly. I would love to see this automated to max 5 accounts so that you click 1 location, the other four accounts would automatically go round the center. This would solve the slow scanning and increase the effectiveness because smaller areas are scanned more frequently.  I love this app!

what setting do you use for this?

Yea, but by making only one corner touch, you also miss big parts of the area in between dont you? you could also use these multiple accounts to start the same spiral but in a kind of delayed manner of eg 12 steps so that you have the old form/structure of the algorithm and update every circle once a minute which should be sufficient to find the pokemon

This is what i do and was the best method before changes still is for me. Im thinking of going slow scan and even more accounts because its more accurate but dont have the patience.


Flow

Would you be ok with adding Flow types? I can create a PR if that's ok ...

After looking further into this, it looks like it’s not going to be as straightforward as I originally thought. I’ve noticed that there’s circular dependency in the Props type. When describing the Props you want to define shouldUpdate, didMount, etc... but they receive Props as an in input through getArgs(). Regardless of this flow type issue, I was wondering if this Component was meant to also receive other Props apart from the predefined ones as well.

Yeah, it can receive any kind of props, that's the only way you'd be able to do a comparison of prev/next props in some of the hooks.

tried to use this in typescript today and ran into this. i might try to write a .d.ts for this.

@tsiq-swyx There is a PR open for the Typescript definitions #11

Heres a .d.ts that I use with typescript that has all the great stuff you would want
declare module 'react-component-component' {
  interface Props<S> {
    // tslint:disable-next-line:no-any
    [key: string]: any,
    initialState?: S;
    didMount?: (
      opts: {
        state: S;
        setState: (state: Partial<S>) => void;
        props: Props<S>;
        forceUpdate: (callBack?: () => void) => void;
      },
    ) => void;
    shouldUpdate?: (
      opts: { state: S; setState: (state: Partial<S>) => void; nextProps: Props<S>; nextState: S },
    ) => boolean;
    didUpdate?: (
      opts: {
        state: S;
        setState: (state: Partial<S>) => void;
        props: Props<S>;
        forceUpdate: (callBack?: () => void) => void;
        prevProps: Props<S>;
        prevState: S;
      },
    ) => void;
    willUnmount?: (opts: { state: S; props: Props<S> }) => void;
    children: (
      opts: {
        state: S;
        setState: ((state: Partial<S> | ((state: S) => S)) => void);
        props: Props<S>;
        forceUpdate: (callBack?: () => void) => void;
      },
    ) => React.ReactNode;
  }
  export default class Component<State> extends React.Component<Props<State>, State> {}
}


Accessing dispatch from a stateless function

The validation examples get the dispatch function from this.props.dispatch and are implemented by extending React.Component.  I do not see how to do it with a stateless function.  I have a form
    const TheForm= (props) => {
         console.log('theForm props', props);
         return (
           <Form model="stuff" onSubmit={mySubmitFunc}>
              ...
            </Form>
         )
    }

This is rendered by
    <Provider store={store}
         <TheForm />
    </Provider>

This looks like what is in the examples, but props is an empty object.

That is correct. The dispatch, etc. props are passed into <Form>, not the outer <TheForm> container.


Cargo expand show redundant code

let fields =
                        &[{
                              let field = registry.arg::<String>("name", &());
                              let field = field; // why?
                              field
                          },

Or even
 let fields =
                &[{
                      let field = registry.field::<String>("id", &());
                      let field = field;
                      let field = field;
                      field
                  },

If this is issue of -Z macro debugger, than just close this

What is the input that produces this?

Looks like these are added here:
https://github.com/graphql-rust/juniper/blob/9313c7ca6dfecd287a2fd84117339a493041e25e/juniper_codegen/src/derive_input_object.rs#L151

Tnx


driver: host_uart: Add host-uart device in npcx.

In order to prevent user turns on the pin-mux of devices has io-pads unexpectedly, this CL added a new device definition for host uart device. The pin-mux of host uart interface is enabled only if we set its status as "okay" in dts file of board folder.
The following npcx7 drivers will meet:

Default status property of all npcx devices with io-pads such as espi, pwm, uart, host uart and so on should be "disabled".
Switch pin-mux by changing status property to "okay" in dts file of board folder.
Add necessary definitions in prj file of board or the other application folder.

Signed-off-by: Mulin Chao<EMAIL_ADDRESS>

Hi all:
This PR is pending for a while? Any comment is appreciated.

Hi all:
Regarding the rename of 'pinctrl' property, I have collected all the changes in the 29384. Since it's also related to macro functions here, I plan to do rebase after this PR, PR29144, and PR29035 are landed. Hope it is clearer to review.

need to rename pinctrl property to pinctrl-0

Since PR29384 has been merged first, I will rebase and change this property name later.

Hi @galak:
Rename stuff is done. Please review it. Thanks.

need to rename pinctrl property to pinctrl-0

Hi @galak:
I have finished the changes of renaming from pinctrl property to pinctrl-0. Any comment is appreciated. Thanks.

@galak can you mark your changes requested as complete so we can merge?

Hi @galak, @jettr, and @keithshort:
The changes for request has been submitted for a while, Might I know what I can do for merging? Thanks.

@nashif Can you help us figure out next steps to get this merged, please?

@MulinChao please remove @galak  from the review. I believe that his change request is blocking the automatic merge process (and you have address his feedback)

@galak can you please take another look?

The DT_ macros in soc_dt.h need to be renamed to not be DT_ prefixed, as we reserve that prefix for system DT macros/defines.
Hi @galak:
The change for the request is submitted. If you have further comments, please let me know. Thanks.

Hi @galak & @pabigot:
I have replaced all macros which prefix are DT_ or DT_NPCX_ with NPCX_DT. Please take a look and any comment is appreciated. Thanks.

Hi All:
Finally, hope this PR will be landed soon. Thanks for your comments. I really appreciate that.


Manually change whatInput

Great library, thanks for building it!
I have used what-input to remove the styles from buttons when they have focus and the user is using a mouse.
But I have a page with two buttons, and when the user clicks on Button1, I move the focus to Button2.  In this case Button2 should have the focus styles to guide the user's eyes.  It looks like there used to be a whatInput.setInput('keyboard'); but this no longer exists.  To get the functionality I want, when the user clicks on Button1 I am doing:
document.querySelector("html").setAttribute("data-whatinput", "keyboard");

Then later when they click elsewhere on the page I have to set it back (as it seems to get stuck on keyboard):
document.querySelector("html").setAttribute("data-whatinput", whatInput.ask());

Is there a built-in way to handle this?
Thanks!

Hi @jamiek-acl, thanks for using What Input! You are correct that I removed the ability to programmatically set the input type in favor of keeping those values as "sources of truth" for what is happening in the browser. The current input type is stored internally as a variable, so changing the data attribute wouldn't trigger the script to "know" that there was a change that needs to be tracked, so it makes sense that you wouldn't see it trip back to mouse.
The API is pretty light-touch and really only registers a change when the input type changes. It does update data-whatelement and data-whatclasses attributes whenever a new element receives focus, but there is no event that fires when this happens that you can hook into.
I'm wondering if there is a non-What Input solution to your problem? I admit I don't understand the full scope of what you've got, but I'm wondering if you could do:
const button1 = document.querySelector('.button1')
const button2 = document.querySelector('.button2')

button1.addEventListener('click', function() {
   button2.classList.add('keyboardfocus')
   button2.focus()
})

button2.addEventListener('blur', function() {
   button2.classList.remove('keyboardfocus')
})

And then in your CSS:
*:focus,
.keyboardfocus {
   /* focus sytles */
}

Hi @ten1seven. My example was a little contrived; in reality I am making a re-usable Button component and there's any number of ways a consumer could want to programatically give it focus (onClick another button, onLoad, after api returns, after 13 seconds, etc).
I may be able to do something similar to what you suggested, but do need to keep using what-input:
//button.js
...
forceFocus: {
  this.focus();
  this.classList.add('programatically-focused');
}

onBlur: {
  this.classList.remove('programatically-focused');
}
...

and
//button.scss
// when using mouse and not programatically focused, remove focus style
[data-whatinput="mouse"] &:focus &:not('.programatically-focused') {
  ...
}

Something like that. I'll play around. Thanks!


Raise exceptions on responses from slack

Slack responses and errors are standardized, why don't we raise a specific exception when something fails and do it "the ruby way" instead of returning a hash on failure that needs to be parsed every single time?
Happy to contribute that. For now I just monkey patch as such:
module Slack
  module Request
    private

    alias_method :_request, :request

    def request(method, path, options)
      response = _request(method, path, options)
      if response.is_a?(Hash)
        unless response['ok']
          fail response['error']
        end
      end
      response
    end
  end
end

@aki017 What do you think about this? I am happy to contribute a PR.

@dblock very nice idea!

@aki017 PR in https://github.com/aki017/slack-ruby-gem/pull/27.


(vbnet/vbscript?) Does not highlight correct vb code

Please check jsfiddle, the VB code does not accept colors in the correct places. why? Is it a bug?

Probably a bug. PR to fix welcome.

Could you provide a smaller example or clarify exactly what you feel is not colored correctly?

Ping.

Here  is a shorter example, as you can see the words: Imports, Public, Sub and other are not highlight correctly.

https://jsfiddle.net/ajoshguy/a1kntyg4/
Looks good to me.  I don't think you're loading the correct grammar extension.  Doesn't look like VB is built into the default distribution.  In my jsfiddle I load vbnet (as you should be doing) and the output looks MUCH better.

Your example works well with vb
And my example will not work with vbnet

I do not understand what you are saying.  You can call it "vb" or "vbnet" in the class css.  They both mean the same thing.  But you need to load the vbnet Javascript or none of it will work.
"vbnet" is the official name of the language in Highlight.js, not "vb".

When I load vbnet first it all works great.

@RachamimYaakobov Since you are NOT loading vbnet you're just getting RANDOM highlighting from whichever other language it might match...

SQL one time
"properties" another time...

Change the code, and the language it's highlighted with might change too, that's normal.
*If it's VB code you need to load vbnet (as my jsfiddle shows).  Otherwise "vb" means nothing and will just be ignored.*

See the instructions here: https://highlightjs.org/usage/
Please note:

The CDN-hosted package doesn't have all the languages. Otherwise it'd be too big. If you don't see the language you need in the "Common" section, it can be added manually:

Closing this issue as asked and answered.