Comparison of reflect.Value types

Here to annoy you again :P
I'm aiming to support the encoding of reflect.Type and reflect.Value in my encoding library.
go-testdeep has been amazing for tests, but test cases where I compare a reflect.Value values, go-testdeep compares them like a typical struct, and doesn't compare the underlying value inside reflect.Value.
This means a reflect.Value of a value is only equal if the underlying value is at the same pointer address, and the reflect.Value was created in the same way due to how reflect uses the flag field in reflect.Value.
In any case, I don't think the semantics of how reflect.Value works is important. For my use case, I'm looking to compare the value inside reflect.Value, and I don't care so much about the reflect.Value itself, e.g if both are addressable or if only one is, although an argument could be made for this. I believe something like
if got.Type() == reflect.TypeOf(reflect.Value{}) {
    return deepValueEqual(ctx, got.Interface().(reflect.Value), expected.Interface().(reflect.Value))
}

in deepValueEqual could work, but I'm unsure how this might work with the rest of the codebase. I also know that the ptr field of reflect.Value could introduce an infinite recursion, an extreme case being a reflect.Value that is the value of itself, but less contrived examples do exist.
I'd be happy to experiment implementing this and submit a PR. Is this something you'd want to support?

Hi,
So you want reflect.Value be handled specifically so that only their content should be compared, and not the reflect.Value itself.
a, b := reflect.ValueOf(1234), reflect.ValueOf(1234)
td.Cmp(t, a, a)    // should succeed like now, but...
td.Cmp(t, a, b)    // should succeed, but...
td.Cmp(t, a, 1234) // should fail

why not.

Or provide a pluggable mechanism (like we do with anchors) to allow a custom behavior for any type?

Yes, that's exactly what I mean.
I'm just wanting to compare the values inside, but it's possible someone may want to check that two reflect.Values are themselves the same. Perhaps they have a function returning a reflect.Value and they want to check that it's always addressable. Allowing custom behaviour for specific types could be quite powerful for this.

Could you tell me if the branch https://github.com/maxatome/go-testdeep/tree/hooks fills your needs?
func TestHooks(tt *testing.T) {
	got, expected := reflect.ValueOf(1234), reflect.ValueOf(1234)
	t := td.NewT(tt)
	t.AddCmpHook(func(got, expected reflect.Value) bool {
		return td.EqDeeply(got.Interface(), expected.Interface()) // or whatever test you want
	})
	t.Cmp(got, expected) // now succeeds
}

It is a quick proof of concept, it needs some docs + tests, but this feature could be available as is. What do you think about it?
AddCmpHook method only accepts a function matching the signature func (T, T) bool (it calls this one behind the scene).

Wow, that was fast!  I've imported it and am running some tests with it and it's working great, this definitely works. This library is revolutionising my testing :P
I did find something rather interesting. I noticed that CmpFalse in the test was failing. It took a while, but I figured out why. If I passed the number as a global variable to reflect.ValueOf it worked. Turns out the compiler is optimising the '1234' in got, expected := reflect.ValueOf(1234), reflect.ValueOf(1234) to the same address in memory on my machine.
e.g.
func TestHooks(tt *testing.T) {
	got, expected := reflect.ValueOf(1234), reflect.ValueOf(1234)

	// get ptr field in got
	gotElemPtr := unsafe.Pointer((*(*[2]uintptr)(unsafe.Pointer(&got)))[1])

	// get ptr field in expected
	expectedElemPtr := unsafe.Pointer((*(*[2]uintptr)(unsafe.Pointer(&expected)))[1])

	// Same address!!
	fmt.Printf("%p %p\n", gotElemPtr, expectedElemPtr)

	// Just to sanity check it is actually the correct pointer.
	fmt.Println(*(*int)(gotElemPtr), *(*int)(expectedElemPtr))

	ttt := test.NewTestingTB(tt.Name())
	t := td.NewT(ttt)

	// Not the same reflect.Value or not-comparable
	td.CmpFalse(tt, func() bool {
		// A panic occurs when -tags safe:
		//   dark.GetInterface() does not handle private unsafe.Pointer kind
		defer func() { recover() }() //nolint: errcheck
		return t.Cmp(got, expected)
	}())

	// Add a hook to compare what is inside the reflect.Value
	t.AddCmpHook(func(got, expected reflect.Value) bool {
		return td.EqDeeply(got.Interface(), expected.Interface())
	})
	td.CmpTrue(tt, t.Cmp(got, expected))
}

I'm not sure how the compiler would handle
n := 1234
got, expected := reflect.ValueOf(n), reflect.ValueOf(1234)

but I do know the compiler is guaranteed to not optimise global variables away irrelevant of their usage. It also appears as though this is non-deterministic, as clearing caches and trying again sometimes results in the test passing.

Yes I experienced the same behavior with master branch of go during my tests. I will remove this CmpFalse test as nothing can guarantee it always succeeds (or fails) whatever the go version is used. Anyway, thanks for the explanations, when I saw that only master failed, I went to bed without digging any further...
We have to keep in mind that reflect.Value have not to be compared deeply, that is why AddCmpHook is useful :)
Note that the same applies for reflect.Type, it should be:
t.AddCmpHook(func(got, expected reflect.Type) bool {
	return got == expected
})

I'll clean the code, write docs and some tests, and come back with a PR.
Do not forget to advertise go-testdeep! :D

Do not forget to advertise go-testdeep! :D

I will certainly be mentioning go-testdeep in the README for my encoding library :)
Thanks a lot, and let me know if I can help!

Could you check #108 please?
I added doc and tests, accepted signatures for a hook are now func (T, T) bool and func (T, T) error, and T cannot be an interface.
Do not hesitate to comment if you see a mistake, it's late here...


Add SessionStorage adapters for a bunch of databases

This PR adds implementations of the SessionStorage interface for a couple of databases:

SQLite (the new default)
MySQL
PostgreSQL
MongoDB
Redis

Still TODO:

[x] Write documentation for each adapter
[x] Security review for each adapter
[x] Significantly expand test suite for SessionStorage implementations
[x] Run tests for SessionStorage implementations on CI (relies on Docker 🤔 )

Cheers @teddyhwang!


remove dead code

Are you sure this can't be triggered with a loop join? Admittedly the logic is a bit weird (by definition the join condition should force the column to be non-lazy -- perhaps that's the objective here?), but I'm curious how you determined this to be dead.

I just noticed that we have ra_exe_unit.join_quals.empty() as a part of removed condition and it's also checked earlier. So A || (A && B) == A.


Change SLURM_VERSION to a number that works.

The original value fails to build.

docker-compose build --no-cache
mysql uses an image, skipping
postgres uses an image, skipping
Building slurmdbd
[+] Building 579.3s (38/46)
=> [internal] load build definition from Dockerfile.compile                                                                                0.0s
=> => transferring dockerfile: 45B                                                                                0.0s
=> [internal] load .dockerignore                                                                                0.0s
=> => transferring context: 2B                                                                                0.0s
=> [internal] load metadata for docker.io/library/ubuntu:22.04                                                                                0.7s
=> CACHED [ 1/42] FROM docker.io/library/ubuntu:22.04@sha256:4b1d0c4a2d2aaf63b37111f34eb9fa89fa1bf53dd6e4ca954d47caebca4005c2                                                                                0.0s
=> [internal] load build context                                                                                0.0s
=> => transferring context: 958B                                                                                0.0s
=> [ 2/42] COPY rstudio/create.R /tmp/create.R                                                                                0.0s
=> [ 3/42] RUN apt-get update -y &&  apt-get install -y gdebi-core curl wget &&  IFS=" "; for R_VERSION in 3.6.3 4.0.5 4.1.2 ;  do   curl -O https://cdn.rstudio.com/r/ubuntu-2204/pkgs/r-${R_VERSION}_1_amd64.deb  111.8s
=> [ 4/42] COPY rstudio/launcher.conf /etc/rstudio/launcher.conf                                                                                0.1s
=> [ 5/42] COPY rstudio/launcher.slurm.conf /etc/rstudio/launcher.slurm.conf                                                                                0.0s
=> [ 6/42] COPY rstudio/launcher.slurm.profiles.conf /etc/rstudio/launcher.slurm.profiles.conf                                                                                0.0s
=> [ 7/42] COPY rstudio/rserver.conf /etc/rstudio/rserver.conf                                                                                0.0s
=> [ 8/42] COPY rstudio/database.conf /etc/rstudio/database.conf                                                                                0.0s
=> [ 9/42] RUN chmod 0600 /etc/rstudio/database.conf                                                                                0.4s
=> [10/42] COPY rstudio/load-balancer /etc/rstudio/load-balancer                                                                                0.0s
=> [11/42] RUN apt-get update && apt-get install -y uuid &&  apt clean all &&  rm -rf /var/cache/apt                                                                                4.1s
=> [12/42] RUN echo uuid > /etc/rstudio/secure-cookie-key &&  chown rstudio-server:rstudio-server   /etc/rstudio/secure-cookie-key &&     chmod 0600 /etc/rstudio/secure-cookie-key                                 0.3s
=> [13/42] RUN openssl genpkey -algorithm RSA   -out /etc/rstudio/launcher.pem   -pkeyopt rsa_keygen_bits:2048 &&  chown rstudio-server:rstudio-server   /etc/rstudio/launcher.pem &&         chmod 0600 /etc/rstudi  0.4s
=> [14/42] RUN openssl rsa -in /etc/rstudio/launcher.pem   -pubout > /etc/rstudio/launcher.pub &&  chown rstudio-server:rstudio-server   /etc/rstudio/launcher.pub                                                    0.4s
=> [15/42] RUN curl -O https://cdn.rstudio.com/python/ubuntu-2204/pkgs/python-3.8.10_1_amd64.deb &&     apt-get update && gdebi -n python-3.8.10_1_amd64.deb && apt clean all &&     rm -rf /var/cache/apt && rm -f  42.7s
=> [16/42] RUN /opt/python/3.8.10/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter &&     /opt/python/3.8.10/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter &&     /opt/python/3.8.10/bin  1.6s
=> [17/42] RUN curl -O https://cdn.rstudio.com/python/ubuntu-2204/pkgs/python-3.9.5_1_amd64.deb &&     apt-get update && gdebi -n python-3.9.5_1_amd64.deb && apt clean all &&     rm -rf /var/cache/apt && rm -f p  36.9s
=> [18/42] RUN /opt/python/3.9.5/bin/jupyter-nbextension install --sys-prefix --py rsp_jupyter &&     /opt/python/3.9.5/bin/jupyter-nbextension enable --sys-prefix --py rsp_jupyter &&     /opt/python/3.9.5/bin/ju  1.5s
=> [19/42] COPY rstudio/jupyter.conf /etc/rstudio/jupyter.conf                                                                                0.0s
=> [20/42] RUN rstudio-server install-vs-code /opt/code-server/                                                                                10.3s
=> [21/42] COPY rstudio/vscode.conf /etc/rstudio/vscode.conf                                                                                0.0s
=> [22/42] COPY rstudio/vscode-user-settings.json  /etc/rstudio/vscode-user-settings.json                                                                                0.0s
=> [23/42] RUN /bin/bash -c "set -x     && groupadd -r --gid=105 munge     && useradd -r -s /bin/bash -g munge --uid=105 munge"                                                                                0.3s
=> [24/42] RUN set -ex     && apt-get update     && apt-get -y install        wget        bzip2        perl        gcc-9        g++-9        gcc        g++        git        gnupg        make        munge         33.7s
=> [25/42] RUN set -ex     && apt-get update     && apt-get -y install libcgroup-dev     && apt clean all     && rm -rf /var/cache/apt                                                                                4.1s
=> [26/42] RUN mkdir -p /tmp/build && cd /tmp/build     && bash -c "git clone --depth 1 -b slurm-${SLURM_VERSION//./-} https://github.com/SchedMD/slurm.git"     && cd slurm     && bash -c "./configure --enable-  327.3s
=> [27/42] COPY slurm/slurm.conf /etc/slurm/slurm.conf                                                                                0.0s
=> [28/42] COPY slurm/slurmdbd.conf /etc/slurm/slurmdbd.conf                                                                                0.0s
=> [29/42] RUN echo "CgroupAutomount=yes \nCgroupPlugin=cgroup/v1 \nConstrainCores=yes \nConstrainRAMSpace=yes" > /etc/slurm/cgroup.conf                                                                              0.3s
=> [30/42] RUN chmod 0600 /etc/slurm/slurmdbd.conf                                                                                0.3s
=> [31/42] RUN chown 105:105 /etc/munge/munge.key                                                                                0.4s
=> [32/42] RUN mkdir -p /tmp/singularity                                                                                0.3s
=> [33/42] COPY singularity/spank/* /tmp/singularity/                                                                                0.0s
=> ERROR [34/42] RUN cd /tmp/singularity && make && make install #&& cd && rm -rf /tmp/singularity                                                                                0.6s

[34/42] RUN cd /tmp/singularity && make && make install #&& cd && rm -rf /tmp/singularity:
#38 0.244 g++ -std=c++17 -I /usr/include/slurm -O2 -Wall -Wextra -fpic -shared -static-libstdc++ -static-libgcc -o singularity-exec.so main.cpp
#38 0.496 main.cpp: In static member function 'static int singularity_exec::start_container(Buttocks, const ArgumentVector&)':
#38 0.496 main.cpp:445:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
#38 0.496   445 |             if (env)
#38 0.496       |             ^~
#38 0.496 main.cpp:447:15: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
#38 0.496   447 |               s_container_name = s_container_path+"/"+s_container_name;
#38 0.496       |               ^~~~~~~~~~~~~~~~
#38 0.503 main.cpp: At global scope:
#38 0.503 main.cpp:513:44: error: 'SLURM_VERSION_NUMBER' was not declared in this scope; did you mean 'S_SLURM_VERSION_MINOR'?
#38 0.503   513 |   extern const uint32_t plugin_version   = SLURM_VERSION_NUMBER;
#38 0.503       |                                            ^~~~~~~~~~~~~~~~~~~~
#38 0.503       |                                            S_SLURM_VERSION_MINOR
#38 0.594 make: *** [Makefile:11: singularity-exec.so] Error 1

executor failed running [/bin/sh -c cd /tmp/singularity && make && make install #&& cd && rm -rf /tmp/singularity]: exit code: 2
ERROR: Service 'slurmdbd' failed to build : Build failed

As discussed, the issue is caused by the inclusion of the SLURM Singularity integration in https://github.com/sol-eng/slurm-docker-cluster/commit/37e7ae73cd132f21703014b49d3d1c63cd882be0. I will accept and merge the PR now and create a separate issue https://github.com/sol-eng/slurm-docker-cluster/issues/3 to make the SLURM integration more flexible/compatible with older SLURM Versions as well.


Derive the Annex A value set

I corrected a small typo.

Thanks! (Was result of copying from Pages.)

I think if we build the .json with an action and keep as the source of truth the table.tsv (not related to this PR)

Could do that, but seeing that this process takes some manual labour and checking anyway, I'm not sure it's worth it already.

I strongly prefer keeping the products here as JSON - it's easier to consume for most of the people who are using this repository and is consistent.

I'll have to re-create this PR to target the new release/2.11.0 release branch (to stay compliant with VERSIONING.md).


Issue 3731 - Can implicitly cast an immutable reference to a derived class

Ensure the modifier conversion is valid before allowing an implicit conversion to a base class.
http://d.puremagic.com/issues/show_bug.cgi?id=3731

Rebased and test case added.

This PR may have caused a new problem: https://issues.dlang.org/show_bug.cgi?id=15638

This PR may have caused a new problem: https://issues.dlang.org/show_bug.cgi?id=15638

?

Yeah, just confirmed with git that this PR causes https://issues.dlang.org/show_bug.cgi?id=15638 .

Originally deleted my comment 'cos I hadn't manage to substantiate it yet, and I just saw how old this was. :-P

FYI this code is most likely correct, and the bug is in the common-type deduction code.  Ie typeMerge or CondExp.semantic or wherever the seven copies of that code currently live.

Probably this PR just exposed a latent bug in the common-type code, I guess?

IIRC at the time this was merged the common-type code wasn't capable of finding the common type of two arrays of objects at all.

Hmm. Looking at src/dcast.d:typeMerge, it does seem to have proper merging of two const types into const... does CondExp actually have copy-pasta code for the conversion?!

Probably will have to step through the code to figure this out... gotta run now, will get back to this later.

Ah, found the point of failure. In src/dcast.d at label Lcc:, there's a while(1) loop that, in the case of classes, walks up the base classes and uses implicitConvTo to try to match a common base class. In the case of const classes, implicitConvTo fails because even though the correct common base class was checked at one point, a const derived class cannot implicitly convert to a non-const base class, so it fails to recognize the common base class.

Fixed: https://github.com/D-Programming-Language/dmd/pull/5450


Consider some strategy for handling "preview" files in TSServer that don't need full project information

Today, navigating to a file in another project for a preview will load an entire project. Bad! Much of the time, a user might only care about certain operations (e.g. outlining, brace matching, whatever).
There's basically two high-level ideas here:

A new file open request, or meta information, that tells the semantic server that it shouldn't try to fully load the full program until a semantic operation occurs
Editors will "know better" and only dispatch to a separate syntactic server. This requires no work from our end, but we should acknowledge that that's the path forward. (@mjbvz)

Let's talk about this at tomorrow's editor sync.

One question that came out was whether we could have a "naive mode" for preview tabs. The idea is that go-to-definition works on many constructs like exports and can jump across files and the like, but it might not work all the time, and things like quick info might not work at all. We might be able to get away with doing a lot of this from the syntax server.
Ultimately, this just needs some sort of user story spec'd out.

Closing in lieu of #39035


ImagePullBackOff error when install tiller by installer.Install

Hi, I just import helm package to my project and want ot install tiller with default version(v2.10). So I invoked installer.Install without any opts. It meant that generated tiller deployment shuold use default image gcr.io/kubernetes-helm/tiller:v2.10 which was generated by defaultImage + version.Versionv2.10. So it cannot pull image because right image tag is v2.10.0 in registry.
So I downloaded helm v2.10.0 binary which also contains version.Versionv2.10 but specfied v2.10.0 tag when ran init command. It disappoinited me.
Are I invoking installer package wrong? Please help me if you have any idea.
Thanks.
Output of helm version:
~/journey/ops/helm  version -c
Client: &version.Version{SemVer:"v2.10.0", GitCommit:"9ad53aac42165a5fadc6c87be0dea6b115f93090", GitTreeState:"clean"}

Output of kubectl version:
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.2", GitCommit:"81753b10df112992bf51bbc2c2f85208aad78335", GitTreeState:"clean", BuildDate:"2018-05-12T04:12:12Z", GoVersion:"go1.9.6", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

Cloud Provider/Platform (AKS, GKE, Minikube etc.):

At compile time, the version field is overridden to the tag being deployed. If you're trying to use pkg/version as a third-party package, I would not rely on this variable and instead use v2.10.0 directly.


Feature Request: Send byte[] overload with length and optional parameter offset = 0

Send(ipPort, byteBuffer, length, [offset = 0]);
There is an extremely popular serializer called CerasSerializer.  Its by far the best serializer I've ever seen.
It encourages the reuse of a single byteBuffer to eliminate garbage creation.  But that requires specifying buffer length when you want to transmit it.
Can we add an overload for length and optional offset?  Of course, this also benefits anybody who wants to reuse a buffer for sending.

Hi @pha3z I'm very sorry for the delay.  We moved in the past month and some other life priorities (all good things) got in the way.  Looking at this now.

Hi @pha3z please let me know if this works for you.  If any issues, please re-open.  Great suggestion.
Commit: https://github.com/jchristn/WatsonTcp/commit/2a6e7b28e0357649466fcdd75a727804f7f74255
NuGet: https://www.nuget.org/packages/WatsonTcp/4.8.9


Create heinrichheinedo.txt

@FilipZocktan Pull request merged. Please notice that free educational license for JetBrains tools is for high and higher schools students, i.e. those who are over 13 of age. Thank you!


⚠ Minecraft has degraded performance

In b2c2e43, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1290 ms

Resolved: Minecraft performance has improved in 7db1deb.


Frameworks

Current behavior
For example, Durandal is installed, and if you are using Durandal with any framework, you need to specify every component and page's view models.
Expected behavior
Maybe if I could specify a framework and send it to KOLint, so it would automatically pull in the expected view model.

Example scenario. I have a view in "app/views/view1.html" and it's corresponding viewmodel in "app/views/view1.ts".

I am using requirejs to load the viewmodel, loading it via the module path "viewmodels/view1".
I have also set up a corresponding path in tsconfig.json.
Durandal uses a convention to find the corresponding view by replacing "viewmodels" with "views" in the module path.

In this case i propose that we use the viewmodel path in requests to the knockout-lint cli. The cli resolves the module path against TS. The module path and the resolved physical path are both sent to a callback registered a kolintrc.js-file where we can create user-provided resolutions (all depending on what framework/library is used, conventions in finding). The user-provided algorithm could use either the physical path or the module path to generate it's view-path. The end result from the user provided hook should be both the "module path" to the HTML file along with the HTML file contents (it could be generated or fetched from completely different places.
The "module path" could be a physical path to the HTML file, or possibly a module path that is e.g. resolved by a web browser when locating the HTML file via a sourcemap

In this case, I propose that we use the [viewmodel path in requests to the knockout-lint cli]1. The cli resolves the module path against TS. The [module path and the resolved physical path]2 are both sent to a callback registered a kolintrc.js-file where we can create user-provided resolutions (all depending on what framework/library is used, conventions in finding). The user-provided algorithm could use either the physical path or the module path to generate its view-path. The end result from the user-provided hook should be both the "module path" to the [HTML]3 file along with the [HTML]3 file contents (it could be generated or fetched from completely different places).

Change the CLI to accept viewmodels instead?
The view or viewmodel module path? Do you mean absolute path (physical path)?
View?

@maskmaster In the case of using the "viewmodel" flag to the cli, should the cli only allow one viewmodel per flag, and should the viewmodel flag be able to be used multiple times?


Rolls for specific profession do not mention the profession in chatlog

Repro:

Add profession skill
Roll that profession
Note how chatlog does not mention the added profession at all, just unspecific profession.

Yep, I can totally confirm this one.

Fixed in f53e182 and will be in the next release.


Resolve errors in the check_vue_tsc

Issue Number
fixes #18
Describe the changes you've made
The check_vue_tsc has been added by the following PR.
https://github.com/INVIII/CloudStyle/pull/19
But occurred an following error.
https://github.com/INVIII/CloudStyle/runs/3791904608#step:4:3
In this PR add vue-tsc to package.json to resolve the error.
Describe if there is any unusual behavior (Any Warning) of your code(Write NA if there isn't)
NA
Additional context (OPTIONAL)
Confirmed that check_vue_tsc succeeds by this PR.
https://github.com/keita-hino/CloudStyle/runs/3913830252?check_suite_focus=true
Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[x] The title of my pull request is a short description of the requested changes.

Provide a Deployed link of route/page that needs to review
Preview: Deploy preview link here with the appropriate route
<!-- Please add deployed link to here text >

Thanks @keita-hino


refactor workspace to workingDirectory

Codecov Report

Merging #126 into master will increase coverage by 0.08%.
The diff coverage is 90.47%.

@@            Coverage Diff             @@
##           master     #126      +/-   ##
==========================================
+ Coverage   64.17%   64.26%   +0.08%
==========================================
  Files          44       44
  Lines        3654     3663       +9
  Branches      624      625       +1
==========================================
+ Hits         2345     2354       +9
+ Misses       1133     1132       -1
- Partials      176      177       +1

Impacted Files
Coverage Δ

...lugins/performance/build/PerformanceTestBuild.java
64.47% <90.47%> (+2.23%)
:arrow_up:

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 c8458cb...4d61201. Read the comment docs.


how to check other checkboxes when clicking on another checkbox

hi I'm using redux-form version 6.0.2 and I'm having trouble checking a group of checkboxes when a check is clicked on.
The html looks like this

When a user clicks on the parent checkbox the child checkboxes should check themselves, the way I have the code setup now is like this:

    {permissionsCheck.map((member, index) => {
        let template = [

                    <Field name={`category${member.id}`} label={"PERMISOS DE " + member.controller}  component={CheckBoxForm} onChange={(event) => {
                    this.props.dispatch(change(member.id+'-read',true));
                    this.props.dispatch(change(member.id+'-create',true));
                    this.props.dispatch(change(member.id+'-update',true));
                    }}></Field>

];
        member.childs.map((memberChild, indexChild)=>{
            template.push(<div className="row permission-subcategory" key={`${member.controller}-child-${indexChild}`}>

                <Field name={`${member.id}-${memberChild.action}`}  label={memberChild.action} component={CheckBoxForm} onChange={event => {
                    if(event.target.checked){
                        this.props.permissions.push({action:memberChild.action,model:member.id});
                    }else{
                        for (let i=0;i<this.props.permissions.length;i++){
                            if(this.props.permissions[i].model==member.id && this.props.permissions[i].action == memberChild.action){
                                this.props.permissions.splice(i,1);
                            }
                        }
                    }
                }}></Field>

)});
        return template;
    })}

the values in the other checkboxes do change but they are not checked and their onchange method does not fire, any help on this cause I've been going on it for a while without finding a solution.

This is a usage question, so it doesn't really belong on Github. In the future, you ought to ask questions like this on Stack Overflow or somewhere like that. However, to answer your question:
I suspect that one problem is your usage of the change() action creator. You're just passing the field name and the value to the action creator, but that function actually takes formId, fieldName, and value as arguments (in that order). You can see the docs for all action creators here: http://redux-form.com/6.0.2/docs/api/ActionCreators.md/

Because this issue saw almost no activity for almost a year, I'm closing it.


Thoughts on non-pure OSC syntax (expressions, variables, for loops, ...)

Do we really need expressions, variables, for loops and stuff like that?
Wouldn't it be easier to use GDScript functions directly? Maybe with a wrapper for the OSC message itself.
The biggest advantage would be that we don't need to implement a parsing system with all the work it implies of implementing and maintaing it.
I'm suggesting this because it feels a bit overkill to design a parser for an expression sub-syntax when we will only be using this from the embeded editor, from were we can use regural GDScript.
It might not be as elegant as embedded syntax, but that is not that elegant after all, because it's 2 syntaxes in one.
What do you think? Would you rather have the expression implementation we've been working on, or discard it and try using GDScript instead?
Sorry if you suggested this in the past and I argued against it. I cannot recall it.

I may or may not have suggested it in the past, but regardless I think it is a good idea. (-; However, our current "expression syntax" (stuff in {}) is already handled by GD, we're not doing our own parsing, except for $ variables. It's not exactly full GDScript either, more of a subset. It would be a separate thing to support general GDScript code, which would allow defining functions, doing loops, logic, etc. We'd have to talk about how to do this in a good way.

I may or may not have suggested it in the past, but regardless I think it is a good idea. (-;

What is, using GDScript or our expression sub-syntax?

Using GDScript.


Ambiguous behavior of IInvokedMethodListener

TestNG Version
6.14.3
IInvokedMethodListener Javadoc states:

A listener that gets invoked before and after a method is invoked by TestNG.
This listener will only be invoked for configuration and test methods.

However, it seems like actual behavior is a bit ambiguous (see #1602 and #1317)
Expected behavior
Listener methods should only be called when a method is invoked
Actual behavior
Even if method is skipped completely (because of a failed configuration for example), listener methods are still called
Test case sample
Run the following test class with the provided listener
public class SkippedTestMethod {
    @BeforeClass
    public void beforeClass() {
        throw new SkipException("Skippity Skip");
    }

    @Test
    public void testMethod() {
        // shouldn't ever be called
    }
}

public class SkippedTestMethodListener implements IInvokedMethodListener {

    @Override
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
        if(method.isTestMethod()) {
            throw new RuntimeException("beforeInvocation should not be called if no actual invocation occurs!");
        }
    }

    @Override
    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
        if(method.isTestMethod()) {
            throw new RuntimeException("afterInvocation should not be called if no actual invocation occurs!");
        }
    }
}

I realize that actually fixing this may introduce a regression with past behavior, so maybe the documentation should change.
However, I would prefer having the IInvokedMethodListener actually do what its name implies and listen to invoked methods

@dagansandler - As part of
https://github.com/cbeust/testng/issues/1883 we have now documented the existing listener invocation and order behavior.
beforeInvocation() and afterInvocation() will be invoked all the time for all methods be it they got executed or if they got skipped.  That is the behavior I have noticed with the existing code, which is now documented via the tests that can be referred to by users to understand the order.
I will raise a PR to fix the javadocs of this interface.

Sounds good!

@juherr @cbeust
I'm sad to read this issue.

Listener methods should only be called when a method is invoked

I realize that actually fixing this may introduce a regression with past behavior,
Actually fixing the #1602 was the regression with past behavior

For listener with name beforeInvocation I expect it will run before actual invocation.
There is official documentation http://testng.org/doc/documentation-main.html#invokedmethodlistener where with "black-on-white" is written:
"The listener IInvokedMethodListener allows you to be notified whenever TestNG is about to invoke a test (annotated with @Test) or configuration"
So
It is sad to say but starting from ~v6.11 we have many changes/PRs/isues which 'fix' testNG in the way that brokes compatibility.  Very often we fix the 'bugs' which are not actually bugs but the expected behaviour which is described in documentation (but who reads documentation? )
Time to switch to junit ((
Sorry for that spam in bugtracker

The codebase has evolved over a period of time and many contributors have
come in and gone. So it's not necessary that everyone remembers the
functionality from when it was introduced.
That basically means that contributors fall back to the cushion that the
existing unit tests give in terms of guarding the existing behavior. So as
a contributor one tries to keep the existing tests happy.
In terms of broken functionalities, if there are any specific issues please
help file issues with details.
With only a handful bunch of us working on the codebase, we are trying our
level best.
With respect to this particular issue, please let me know what the problem
is. I will try to get to it at the earliest.

--

Thanks & Regards
Krishnan Mahadevan
"All the desirable things in life are either illegal, expensive, fattening
or in love with someone else!"
My Scribblings @ http://wakened-cognition.blogspot.com/
My Technical Scribbings @ http://rationaleemotions.wordpress.com/

Hi @krmahadevan ,
I tend to agree with @kool79 in terms of the expectations from IInvokedMethodListener, which is why I opened this issue in the first place.
It's weird that an invocation listener gets called even if no invocations occur....
I regret my previous comment with regards to the solution, I should have tried to advocate my initial stance a bit more.
Since this is not released yet and there's work towards releasing 7.0.0 with standardizing listeners behavior, hopefully this solution can still be reversed?
The reasoning is that, as @kool79 mentions, there seem to be bug fixes, like #1602 which aren't really bug fixes. The issue there wasn't that beforeInvocation was not getting called for skipped tests, the issue was that afterInvocation was getting called.
So what happened was -

IInvokedMethodListener has always stated that it should be called for invocations of methods
There was a bug in the IInvokedMethodListener (afterInvocation was getting called for skipped tests)
#1602 Issue was reported but with the reverse actual and expected behavior
Bug was fixed with the wrong behavior, thus breaking consistency with the documentation
This issue was opened in regards to the inconsistency between the documentation and the behavior
The documentation was updated to reflect the current (and possibly incorrect) behavior

Thinking about it now, what is the difference (at the current state) between IInvokedMethodListener and ITestListener/IConfigurationListener ? What is the justification for IInvokedMethodListener's existence?

@dagansandler - Can you please take a look at https://github.com/cbeust/testng/issues/1883 which attempts at baselining testng listener invocation behaviors as of today (which means which documents  the best to my understanding and without breaking any tests). In specific you might want to take a look at this test which attempts at clarifying the behavior via unit tests.

ListenerInvocationDefaultBehaviorTest.java

ListenerInvocationListenerInvocationDisabledBehaviorTest.java

in conjunction with the new parameter viz., -alwaysrunlisteners which controls Should MethodInvocation Listeners be run even for skipped methods

Thinking about it now, what is the difference (at the current state) between IInvokedMethodListener and ITestListener/IConfigurationListener ? What is the justification for IInvokedMethodListener's existence?

IInvokedMethodListener is applicable to everything which means both @Test and a configuration method
IConfigurationListener is specific to configuration methods alone.
Also IInvokedMethodListener is agnostic of a method's result, whereas IConfigurationListener lets you handle specific results for a configuration method.
So request you to please revisit your use case using TestNG 7.0.0-SNAPSHOT and let us know what discrepancies are still existing for you.
Last but not the least, TestNG project encourages people to contribute. So if you or @kool79 for that matter aren't happy with how things are, please do help raise pull requests that attempt at fixing the problem. We can brainstorm/discuss/debate on the behavior in the PR and then bring it to closure.
@cbeust @juherr - Please help chime in, if I have missed anything here.

OK, so I took a deeper look at the tests as @krmahadevan suggested, specifically with the alwaysrunlisteners flag set to false.
In this scenario, I expect the IInvokedMethodListener to only be called if a method is actually about to be invoked.
They look OK except for one test method - test.listeners.ordering.ListenerInvocationListenerInvocationDisabledBehaviorTest#testOrderHasOnlyFailedAndSkippedConfigAndSkippedTestMethod, in which the expected result should not contain IINVOKEDMETHODLISTENER events for the skipped configuration methods because that method is not being invoked.
I can open a new issue regarding this, and I can also provide a PR with a more specific test for the invoked method listener which can be used as a better reference for the logic concerning this listener.
In addition, I believe the alwaysrunlisteners flag is unnecessary, or at least should not affect IInvokedMethodListener, as that listener (IMO) should ONLY be called for methods which ARE invoked and NEVER called for methods which aren't going to be invoked.

@dagansandler please open a new issue


Program panics on windows 10 with the message 'The system cannot find the file specified.'

When I try to run the following example code, it results in the program panicking with the message below:
Code:
fn main() {
    webbrowser::open("http://github.com").unwrap();
}

Error:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }'

I'm guessing it could be because my browser is located at C:\Program Files\.....\firefox.exe which has a space in its path.
Maybe that's messing up the command that's being executed?

That shouldn't be an issue. Can you enable TRACE level logging for webbrowser, and share the results? One way to do that would be to clone the webbrowser repo, and run cargo test -- --nocapture with RUST_LOG environment variable set to webbrowser=trace (i.e. set RUST_LOG=webbrowser=trace)

Sure, this is what I got:
running 4 tests
test test_open_chrome ... ignored
test test_open_firefox ... ignored
test test_open_safari ... ignored
test test_open_webpositive ... ignored

test result: ok. 0 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests\common.rs (target\debug\deps\common-367f292cf953440d.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests\test_android.rs (target\debug\deps\test_android-e1f0cfcd8321daf2.exe)

running 3 tests
test tests::test_android ... ignored
test tests::test_existence_default ... ok
test tests::test_non_existence_safari ... ok

test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.01s

     Running tests\test_ios.rs (target\debug\deps\test_ios-c7a017635bed60f4.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests\test_macos.rs (target\debug\deps\test_macos-c82337c3f49dc4d7.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests\test_unix.rs (target\debug\deps\test_unix-12f3947abb90d478.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests\test_wasm.rs (target\debug\deps\test_wasm-5934a00bc7ce7ed4.exe)

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

     Running tests\test_windows.rs (target\debug\deps\test_windows-16d2ff4f08590527.exe)

running 7 tests
test tests::test_open_internet_explorer ... ignored
test tests::test_existence_default ... ok
test tests::test_non_existence_safari ... ok
[2023-04-11T11:21:46Z TRACE webbrowser::os] trying to figure out default browser command
[2023-04-11T11:21:46Z TRACE webbrowser::os] trying to figure out default browser command
[2023-04-11T11:21:46Z TRACE webbrowser::os] trying to figure out default browser command
[2023-04-11T11:21:46Z TRACE webbrowser::os] trying to figure out default browser command
[2023-04-11T11:21:46Z TRACE webbrowser::os] default browser command: C:\Program Files\WindowsApps\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\VFS\ProgramFiles\Firefox Package Root\firefox.exe -osint -url "%1"
[2023-04-11T11:21:46Z TRACE webbrowser::os] default browser command: C:\Program Files\WindowsApps\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\VFS\ProgramFiles\Firefox Package Root\firefox.exe -osint -url "%1"
[2023-04-11T11:21:46Z TRACE webbrowser::os] default browser command: C:\Program Files\WindowsApps\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\VFS\ProgramFiles\Firefox Package Root\firefox.exe -osint -url "%1"
[2023-04-11T11:21:46Z TRACE webbrowser::os] default browser command: C:\Program Files\WindowsApps\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\VFS\ProgramFiles\Firefox Package Root\firefox.exe -osint -url "%1"
[2023-04-11T11:21:46Z DEBUG webbrowser::common] background spawn: "C:\\Program" "Files\\WindowsApps\\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\\VFS\\ProgramFiles\\Firefox" "Package" "Root\\firefox.exe" "-osint" "-url" "file:///C:/Programming/Rust/webbrowser-rs/target/tmp/test.1449585646.html"
[2023-04-11T11:21:46Z DEBUG webbrowser::common] background spawn: "C:\\Program" "Files\\WindowsApps\\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\\VFS\\ProgramFiles\\Firefox" "Package" "Root\\firefox.exe" "-osint" "-url" "file:///C:/Programming/Rust/webbrowser-rs/target/tmp/test.2837218721.html"
[2023-04-11T11:21:46Z DEBUG webbrowser::common] background spawn: "C:\\Program" "Files\\WindowsApps\\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\\VFS\\ProgramFiles\\Firefox" "Package" "Root\\firefox.exe" "-osint" "-url" "file:///C:/Programming/Rust/webbrowser-rs/target/tmp/test.283613868.html"
thread 'thread '[2023-04-11T11:21:46Z DEBUG webbrowser::common] background spawn: "C:\\Program" "Files\\WindowsApps\\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\\VFS\\ProgramFiles\\Firefox" "Package" "Root\\firefox.exe" "-osint" "-url" "http://<IP_ADDRESS>:60285/windows"
tests::test_local_file_abs_paththread 'tests::test_local_file_rel_path' panicked at 'thread 'tests::test_local_file_uritests::test_open_default' panicked at '' panicked at 'failed to open browser: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }failed to open browser: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }' panicked at 'failed to open browser: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }', ', ', tests\common.rstests\common.rstests\common.rsfailed to open browser: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }:::', 125125125tests\common.rs::::373737

97
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
:test tests::test_local_file_uri ... 36FAILED

test tests::test_local_file_abs_path ... FAILED
test tests::test_local_file_rel_path ... FAILED
test tests::test_open_default ... FAILED

failures:

failures:
    tests::test_local_file_abs_path
    tests::test_local_file_rel_path
    tests::test_local_file_uri
    tests::test_open_default

test result: FAILED. 2 passed; 4 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s

error: test failed, to rerun pass `--test test_windows`

Thanks. It does seem like it's the space that's causing the issue, but for a different reason than what you might imagine.
Under normal circumstances, the default browser command should've been found as "C:\Program Files\WindowsApps\Mozilla.Firefox_<IP_ADDRESS>_x64__n80bbvh6b1yt2\VFS\ProgramFiles\Firefox Package Root\firefox.exe" -osint -url "%1" (notice the quotes for the path to your firefox.exe). But yours is without the quotes, so the command is assumed to be C:\Program.
For example, on my windows sandbox, it's detected as "C:\Program Files\Google\Chrome\Application\chrome.exe" --single-argument %1.
I'll have to debug a little to figure out if this is a common issue. If it is, then I'll have to fix it in this library. If not, then it could be an installation bug at your end. I'm currently not very inclined to believe the latter, but the former is very weird to imagine as well.
I may tag you for some further clarification. Thanks for providing the details till now.

@UncertainProd, can you please check if the code in branch fix/issue-68 fixes the issue for you? If yes, I'll merge it and include this fix in the next release.

Yeah, that seems to work. Thanks!

FYI, this is now out as v0.8.9. Thanks for the report & for the help in debugging this.


Add DB examples to Readme

Adds some async operations to the examples for #581.

Personally, -1 / :-1:. would leave this out of the README since it's getting application-specific. That said, if we do include it, I recommend we change someDbOperation to someAsyncOperation (or someAsyncOp) to make it as generic as possible and avoid questions about what DB operation? :P

:+1:

-1 from me as well, it's out of scope for koa

Why not putting all these examples and extra documentation in the wiki? Keep the README light and simple.

:-1: for the README.
:+1: for putting it in the Wiki under a common use-cases section.
Maybe include a link to the wiki page in the README?

I agree with the comments here.

Pretty much what @MarkHerhold said

please put this example to https://github.com/koajs/examples :)


Improve docs with exposed information

Like commented in issue #28 I made this PR to improve the docs with the information :)

Looks great, thanks!

Merged?

oops

haha thats ok :)

Awesome! :tada:


Hide helper traits from calling code

Changes the name of the Display trait method to reduce the chance that an inherent method conflicts with the type in question, and wraps the helper trait and declarations into an anonymous const context, meaning the helper traits aren't visible to the calling context.

I didn't realize that this crate has a minimum supported rustc version of 1.31. The anonymous const _ wasn't stabilized until 1.37 in https://github.com/rust-lang/rust/pull/61347, meaning that this PR will break on earlier rustc versions.
If we want to continue to support earlier rustc versions, we'll need to take a similar approach to serde_derive, and define an ID for the const based on the type being implemented.
FYI, it appears as though CI isn't currently set to run on PRs, only on pushes, so this PR isn't noted as failing despite the minimum version being tested.

Ill set it up to run on prs, I think I'd prefer to keep supporting 1.31 but I'm open to bumping the MSRV


Adding compatibility with Big Sur (macOS 11.0)

ql also works in macOS Big Sur (11.0), but the current checker was not aware of it as only checked for the 10.X numbers.

Thank you very much for this fix!

Happy to help!


How do I add user id to the ref for FirestackModule?

I want to add user id to the data ref. Like
const inst = new FirestackModule('$id/events', {firestack});
If not this, is there any other way to separate data according to user?
By the way, you guys have done a terrific job. Thank you so much for this.

When you login you will get a userid in the user object which you can use


CI checks for cargo-sweep integration

Blocked by #30, spun out from #29 so it could be merged.
This extends the CI checks to test the cargo-sweep integration.

Closing due to inactivity.


Build fails on Windows 10

Hi. I found your project while reading about a related article on Hacker News. It looks fascinating, so even though I don't know much about RESTful APIs I thought I'd take a peak and try to build it.
It looks like a change made in this recent commit is causing the build to fail. I apologize for not having a proposed solution, but I can barely read Haskell (but with this project I have an excuse to really learn it :-) ). Anyways, here's the output from stack:
E:\> stack --version
Version 1.1.0 x86_64 hpack-0.13.0

E:\> stack build --install-ghc
postgrest-<IP_ADDRESS>: configure
Configuring postgrest-<IP_ADDRESS>...
postgrest-<IP_ADDRESS>: build
Preprocessing library postgrest-<IP_ADDRESS>...
[ 9 of 12] Compiling Paths_postgrest  ( .stack-work\dist\2672c1f3\build\autogen\Paths_postgrest.hs, .stack-work\dist\2672c1f3\build\Paths_postgrest.o )
In-place registering postgrest-<IP_ADDRESS>...
Preprocessing executable 'postgrest' for postgrest-<IP_ADDRESS>...
[ 9 of 13] Compiling Paths_postgrest  ( .stack-work\dist\2672c1f3\build\autogen\Paths_postgrest.hs, .stack-work\dist\2672c1f3\build\postgrest\postgrest-tmp\Paths_postgrest.o )
[13 of 13] Compiling Main             ( src\PostgREST\Main.hs, .stack-work\dist\2672c1f3\build\postgrest\postgrest-tmp\Main.o )

E:\Users\Doug\Projects\postgrest\src\PostgREST\Main.hs:70:21: Not in scope: `newIORef'

--  While building package postgrest-<IP_ADDRESS> using:
      E:\StackRoot\setup-exe-cache\x86_64-windows\setup-Simple-Cabal-<IP_ADDRESS>-ghc-7.10.3.exe --builddir=.stack-work\dist\2672c1f3 build lib:postgrest exe:postgrest --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1

Yep. Looks like that's a bug. There is a #ifndef mingw32_HOST_OS block that makes sure that Data.IORef isn't imported on Windows, while the newIORef call on line 70 is not in such a block.
Does the build succeed if you move line 30 (import           Data.IORef) to outside the #ifndef block?

It almost works:
E:\> stack build --install-ghc
postgrest-<IP_ADDRESS>: configure
Configuring postgrest-<IP_ADDRESS>...
postgrest-<IP_ADDRESS>: build
Preprocessing library postgrest-<IP_ADDRESS>...
In-place registering postgrest-<IP_ADDRESS>...
Preprocessing executable 'postgrest' for postgrest-<IP_ADDRESS>...
[13 of 13] Compiling Main             ( src\PostgREST\Main.hs, .stack-work\dist\2672c1f3\build\postgrest\postgrest-tmp\Main.o )

E:\Users\Doug\Projects\postgrest\src\PostgREST\Main.hs:14:1: Warning:
    The import of `Control.Monad.IO.Class' is redundant
      except perhaps to import instances from `Control.Monad.IO.Class'
    To import instances alone, use: import Control.Monad.IO.Class()

<no location info>:
Failing due to -Werror.

--  While building package postgrest-<IP_ADDRESS> using:
      E:\StackRoot\setup-exe-cache\x86_64-windows\setup-Simple-Cabal-<IP_ADDRESS>-ghc-7.10.3.exe --builddir=.stack-work\dist\2672c1f3 build lib:postgrest exe:postgrest --ghc-options " -ddump-hi -ddump-to-file"
    Process exited with code: ExitFailure 1

After I removed line 14, the build succeeded:
E:\> stack build --install-ghc
postgrest-<IP_ADDRESS>: build
Preprocessing library postgrest-<IP_ADDRESS>...
In-place registering postgrest-<IP_ADDRESS>...
Preprocessing executable 'postgrest' for postgrest-<IP_ADDRESS>...
[13 of 13] Compiling Main             ( src\PostgREST\Main.hs, .stack-work\dist\2672c1f3\build\postgrest\postgrest-tmp\Main.o )
Linking .stack-work\dist\2672c1f3\build\postgrest\postgrest.exe ...
postgrest-<IP_ADDRESS>: copy/register
Installing library in
E:\Users\Doug\Projects\postgrest\.stack-work\install\f1bd8486\lib\x86_64-windows-ghc-7.10.3\postgrest-<IP_ADDRESS>-CxgmZAgImNcJWADfYpJJJy
Installing executable(s) in
E:\Users\Doug\Projects\postgrest\.stack-work\install\f1bd8486\bin
Registering postgrest-<IP_ADDRESS>...

Thanks.

Sorry I broke the Windows build, it's the second or third time I've done that. Maybe there's a way to add a windows build test to CI to prevent it in the future.
Thanks for your debugging and deciphering Haskell! Would you please send a pull request with your fix?

Done! PR 593.

This was fixed and merged, should be closed


[Bug]  json When the character length is an even number, the auto-completion function is abnormal,

Reproducible in vscode.dev or in VS Code Desktop?

[X] Not reproducible in vscode.dev or VS Code Desktop

Reproducible in the monaco editor playground?

[ ] Not reproducible in the monaco editor playground

Monaco Editor Playground Code
monaco.editor.create(document.getElementById('container'), {
	value: "{}",
	language: 'json'
});

Reproduction Steps
Write json key.
Actual (Problematic) Behavior
When the length of the key is odd, there is auto-completion, and when it is even, there is no auto-completion.
Expected Behavior
The autocomplete function is normal.
Additional Context
No response

character length has nothing to do with the behavior, but whether the suggestion is opened or closed does.


fix: enforce contract negotiation request and transfer request consistency

What this PR changes/adds
This PR fixes two issues of the current implementation:

in contract negotiation request, the asset id part of the offer id can be different from the asset id provided in the target field of the Policy.
in transfer request, the asset id provided in the request can be different to the one referred by the contract id also provided in this same request. This leads to inconsistent EndpointDataReferenceEntry being generated.

Why it does that
Fix.
Linked Issue(s)
Closes #4239
Closes #4240
Please be sure to take a look at the contributing guidelines and our etiquette for pull requests.

Codecov Report
Attention: Patch coverage is 83.33333% with 2 lines in your changes missing coverage. Please review.

Project coverage is 62.44%. Comparing base (7f20ba5) to head (d2c2a9b).
Report is 298 commits behind head on main.

Files
Patch %
Lines

...lplane/contract/spi/types/offer/ContractOffer.java
66.66%
1 Missing and 1 partial :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #4260      +/-   ##
============================================
- Coverage     71.74%   62.44%   -9.31%
- Complexity        0     4444    +4444
============================================
  Files           919     1046     +127
  Lines         18457    20989    +2532
  Branches       1037     1172     +135
============================================
- Hits          13242    13106     -136
- Misses         4756     7423    +2667
- Partials        459      460       +1

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


fix: use cli internal for local setup-dev

Description of changes

Due to the package release starting from CLI at major version 8, the local setup-dev script needs to replace the old package
Issue #, if available

Description of how you validated changes
Checklist

[ ] PR description included
[ ] yarn test passes
[ ] Tests are changed or added
[ ] Relevant documentation is changed or added (and PR referenced)
[ ] Breaking changes to existing customers are released behind a feature flag or major version update
[ ] Changes are tested using sample applications for all relevant platforms (iOS/android/flutter/Javascript) that use the feature added/modified

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

Merging #410 (8d94c65) into master (7d2fdaf) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #410   +/-   ##
=======================================
  Coverage   85.21%   85.21%
=======================================
  Files         145      145
  Lines        6708     6708
  Branches     1731     1731
=======================================
  Hits         5716     5716
  Misses        901      901
  Partials       91       91

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Is there a way to pass NODE_OPTIONS ?

I'm using MUP with your image (zodern/meteor:latest)
I need to pass some options
I've tried
    env: {
      NODE_OPTIONS: '--max_old_space_size=8192'
    },

Sadly it doesn't work

I saw this issue https://github.com/zodern/meteor-docker/issues/22 but sadly it still does not work for me

Actually looks like it works
Here how I've checked
node -e 'console.log(v8.getHeapStatistics().heap_size_limit/(1024*1024))'


Check if animation is running

Hi,
I've got a button which is supposed to display a View on the screen using one of your animations and when pressed again it's supposed to dismiss it.
The problem I've got is whenever the button is pressed rapidly again and again, multiple Views are being displayed as my flag variable indicates that the View is gone but it's still being animated on the screen.
Therefore is there any way of knowing when the View is finished animating?

I meet the same problem. Have you ever solved?

Unfortunately not, sorry :(


HSTS/307 detected as 301

What happened?
I am crawling the site https://www.disfrutadubai.com and it is working great. I tried to change from HTTPS to HTTP, I got a 301 redirection but no further pages crawled. Then I crawled the same url in Screaming Frog and it returns all the pages and the Status for the first one (http://www.disfrutadubai.com) is 307 - HSTS POLICY. How can I handle this inside my crawler?
What should have happened?
I did not know about HSTS until now, so the expected behaviour for me is to move to HTTPS and continue crawling as a regular 301.
Steps to reproduce the problem
Crawl http://www.disfrutadubai.com and it must only crawl 1 page with 301 response.
Thanks guys! Amazing work!

The crawler behaviour is correct. You start crawling with http as the procotol, the server sends status code 301 and a Location header.
$ curl -I http://www.disfrutadubai.com
HTTP/1.1 301 Moved Permanently
Date: Thu, 10 May 2018 22:59:12 GMT
Server: Apache
Location: https://disfrutadubai.com/
Content-Type: text/html; charset=iso-8859-1

$ curl -I https://www.disfrutadubai.com/
HTTP/1.1 200 OK
Date: Thu, 10 May 2018 23:10:35 GMT
Server: Apache
Strict-Transport-Security: max-age=86400; includeSubDomains; preload
Upgrade: h2,h2c
Connection: Upgrade
Set-Cookie: currency=EUR; expires=Sat, 11-May-2019 04:59:21 GMT; Max-Age=31556926; path=/
Set-Cookie: _client_id=4B40D3F3-E0D1-38DC-8222-2E2E3EED37C5; expires=Mon, 27-Jul-2026 23:10:35 GMT; Max-Age=259200000; path=/
Last-Modified: Fri, 11 May 2018 02:35:00 CEST
Cache-Control: max-age=86400
Expires: Fri, 11 May 2018 23:10:35 GMT
Access-Control-Allow-Origin: https://ws-paylands.paynopain.com
Content-Type: text/html;charset=UTF-8

Crawler
const Crawler = require("simplecrawler");

const url = 'http://www.disfrutadubai.com/';

const crawler = new Crawler(url);

crawler.interval = 250;
crawler.maxConcurrency = 10;

crawler.maxDepth = 1;

crawler.on("fetchcomplete", function (queueItem, responseBuffer, response) {
    console.log("I just received %s (%d bytes)", queueItem.url, responseBuffer.length);
    console.log("It was a resource of type %s", response.headers['content-type']);
});

crawler.on("fetchredirect", (queueItem, responseBuffer, response) => {
    console.log("Received redirect");
});

crawler.start();

Prints
Received redirect
I just received https://www.disfrutadubai.com/sitemap.xml (38985 bytes)
It was a resource of type application/xml
Received redirect
I just received https://www.disfrutadubai.com/ (131003 bytes)
It was a resource of type text/html;charset=UTF-8

Crawler
const Crawler = require("simplecrawler");

const url = 'http://www.disfrutadubai.com/';

const crawler = new Crawler(url);

crawler.interval = 250;
crawler.maxConcurrency = 10;

crawler.maxDepth = 2;

crawler.on("fetchcomplete", function (queueItem, responseBuffer, response) {
    console.log("I just received %s (%d bytes)", queueItem.url, responseBuffer.length);
    console.log("It was a resource of type %s", response.headers['content-type']);
});

crawler.on("fetchredirect", (queueItem, responseBuffer, response) => {
    console.log("Received redirect");
});

crawler.on("queueadd", (queueItem, referrerQueueItem) => {
    console.log(`Added ${queueItem.url} to the queue. Referer ${referrerQueueItem.url}`);
});

crawler.start();

Prints
Added https://www.disfrutadubai.com/sitemap.xml to the queue. Referer https://www.disfrutadubai.com/robots.txt
Received redirect
Added https://disfrutadubai.com/ to the queue. Referer http://www.disfrutadubai.com/
I just received https://www.disfrutadubai.com/sitemap.xml (38985 bytes)
It was a resource of type application/xml
Received redirect
Added https://www.disfrutadubai.com/ to the queue. Referer https://disfrutadubai.com/
I just received https://www.disfrutadubai.com/ (131003 bytes)
It was a resource of type text/html;charset=UTF-8

As you can see it does queue https URLs . If you increase maxDepth to 3 or more you'll see that it crawler a lot more pages.

You're right mate, thank you so much! My only question is why other crawlers report it like 307 instead of 301.

Thanks, great explanation friend. Again, congratulations for the amazing work you are doing on this project!


angular 13: --code-coverage prints Coverage summary with Unknown%

🐞 Bug report
Command (mark with an x)

[ ] new
[ ] build
[ ] serve
[x] test
[ ] e2e
[ ] generate
[ ] add
[ ] update
[ ] lint
[ ] extract-i18n
[ ] run
[ ] config
[ ] help
[ ] version
[ ] doc

Is this a regression?

 Yes, the previous version in which this bug was not present was:
^12.1.0
Updated: It work well in new project with v13(even they use same karma.config.js, it still failed in older project, upgrade from 12 to 13), I'm checking the differences.
Description
 A clear and concise description of the problem...
$ ng test --no-watch --no-progress --browsers=ChromeHeadlessCI --code-coverage
// in 13.0.2, it will print messages below but it works well under angular v12.x
// I'm not sure if something wrong I configured or just some break changes happened in v13.x :(
=============================== Coverage summary ===============================
Statements   : Unknown% ( 0/0 )
Branches     : Unknown% ( 0/0 )
Functions    : Unknown% ( 0/0 )
Lines        : Unknown% ( 0/0 )
================================================================================

// karma.config.js
// Karma configuration file, see link for more information
// https://karma-runner.github.io/1.0/config/configuration-file.html

const tags = process.env && process.env['NG_TEST_TAGS'];
const processENV = require('process');
processENV.env.CHROME_BIN = require('puppeteer').executablePath();

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular', 'viewport'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-spec-reporter'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage'),
      require('karma-junit-reporter'),
      require('@angular-devkit/build-angular/plugins/karma'),
      require('karma-viewport')
    ],
    client: {
      jasmine: {
        random: false
      },
      clearContext: true, // leave Jasmine Spec Runner output visible in browser
      ...tags && { args: [tags] }
    },
    coverageReporter: {
      subdir: '.',
      dir: require('path').join(__dirname, '../coverage-report'),
      reporters: [
        { type: 'html' },
        { type: 'text-summary' },
        { type: 'lcovonly' },
        { type: 'cobertura' },
      ],
    },
    reporters: ['progress', 'kjhtml', 'spec', 'junit'],
    junitReporter: {
      outputDir: '../junit'
    },
    specReporter: {
      maxLogLines: 5,
      suppressErrorSummary: true,
      suppressFailed: false,
      suppressPassed: false,
      suppressSkipped: true,
      showSpecTiming: false
    },
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    customLaunchers: {
      ChromeHeadlessCI: {
        base: 'ChromeHeadless',
        flags: ['--no-sandbox']
      }
    },
    singleRun: false,
    browserNoActivityTimeout: 1000 * 60 // (Default: 10000)
  });
};

🔬 Minimal Reproduction

🔥 Exception or Error

...
Chrome Headless 88.0.4298.0 (Mac OS 11.0.0): Executed 1827 of 1831 (skipped 4) SUCCESS (54.073 secs / 37.689 secs)
TOTAL: 1827 SUCCESS

=============================== Coverage summary ===============================
Statements   : Unknown% ( 0/0 )
Branches     : Unknown% ( 0/0 )
Functions    : Unknown% ( 0/0 )
Lines        : Unknown% ( 0/0 )
================================================================================

🌍 Your Environment

Angular CLI: 13.0.2
Node: 14.17.5
Package Manager: npm 6.14.14
OS: darwin x64

Angular: 13.0.1
... animations, cdk, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... platform-server, router, service-worker

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.2
@angular-devkit/build-angular   13.0.2
@angular-devkit/core            13.0.2
@angular-devkit/schematics      13.0.2
@angular/cli                    13.0.2
@nguniversal/builders           13.0.1
@nguniversal/express-engine     13.0.1
@schematics/angular             13.0.2
ng-packagr                      13.0.3
rxjs                            6.6.7
typescript                      4.4.4

Anything else relevant?

I'm sorry, but we can't reproduce the problem following the instructions you provided. Can you setup a minimal repro please?
You can read here why this is needed. A good way to make a minimal repro is to create a new app via ng new repro-app and adding the minimum possible code to show the problem. Then you can push this repository to github and link it here.

I'm sorry, but we can't reproduce the problem following the instructions you provided. Can you setup a minimal repro please?
You can read here why this is needed. A good way to make a minimal repro is to create a new app via ng new repro-app and adding the minimum possible code to show the problem. Then you can push this repository to github and link it here.

Thanks for your reply, it only happens when --browsers=ChromeHeadlessCI is passed, I think something may be missing in my karma.config.js, I will try to find out what I missed or configured wrong, I will update this issue after that :)

Updated:
When I move my-lib/src/test.ts to my-lib/test.ts(also change the file path in tsconfig.spec.json and tsconfig.lib.json), Coverage summary will return Unknown%(test.ts in src works fine), I think it's related with webpack, still in progress...
angular.json
{
...
    "test": {
      "builder": "@angular-devkit/build-angular:karma",
      "options": {
        "main": "projects/my-lib/test.ts",
        "tsConfig": "projects/my-lib/tsconfig.spec.json",
        "karmaConfig": "projects/my-lib/karma.conf.js"
      }
    }
...
}

// It will show unknown% when I execute
`ng test --watch=false --progress=false --browsers=Chrome --code-coverage`
.
├── angular.json
├── my-lib // angular library
│   ├── src
│   ├── karma.conf.js
│   ├── polyfills.ts
│   ├── test.ts               // move from src/test.ts
│   ├── tsconfig.lib.json
│   ├── tsconfig.json       // extends ../tsconfig.json, custom angularCompilerOptions&compilerOptions here
│   └── tsconfig.spec.json // extends ./tsconfig.json above
├── package.json
├── tsconfig.app.json
├── tsconfig.json
└── tsconfig.spec.json

@simplejason, I am still unable to replicate this issue with the steps you provided above.
Please setup a minimal reproduction. A good way to make a minimal repro is to create a new app via ng new repro-app and adding the minimum possible code to show the problem. Then you can push this repository to github and link it here.
This might be related to your directory structure so its really important to get an accurate repro to diagnose this.

@simplejason, I am still unable to replicate this issue with the steps you provided above.
Please setup a minimal reproduction. A good way to make a minimal repro is to create a new app via ng new repro-app and adding the minimum possible code to show the problem. Then you can push this repository to github and link it here.
This might be related to your directory structure so its really important to get an accurate repro to diagnose this.

Fixed by this issue (https://github.com/angular/angular-cli/issues/19070)，I think we can close this one now, thanks again!


Fix #418 Send messages without id

Currently,  sending a message looks like this:
// sending
MyMessage msg = new MyMessage();
connection.send(MsgId, msg);

...
// receiving
public void MsgHandler(NetworkMessage netMsg) {
    MyMessage msg= netMsg.ReadMessage<MyMessage>();
    ...
}

connection.RegisterHandler(MsgId, MsgHandler);

This PR makes it so that we can send and receive messages without an explicit message id.  For example:
// sending
MyMessage msg = new MyMessage();
connection.send(msg);

...
// receiving
public void MsgHandler(MyMessage msg) {
    ...
}

connection.RegisterHandler<MyMessage>(MsgHandler);

This eliminates the possibility of mismatch between the message id and the data values, and makes it a lot easier to add custom messages since the user does not need to ensure message ids are unique or try to extend the enum.

could we put all 'short msgType = (short)typeof(T).FullName.GetStableHashCode();' in one place, e.g. UNetwork.cs Protocol? That would make it easier to modify / add a salt later, etc

@paulpach the only concern I can think of is about possible collisions. 1/65k chance for that. If it happens then we have a problem.

indeed,  I have added a TODO to change to int to reduce collisions.  I will do it after all the messages are converted.
That said,  it is not that big of a problem,  if a collision happens,  you get a warning.

not sure if 4 bytes int is worth it there. with 2 bytes, analyzing packets is relatively easy, e.g. 0xABCD = spawn packet. with 4 bytes, it soon becomes more difficult to remember / analyze.
if the average game has 50 packets then that's 50/65k chance of collision. = 1/1000 ish. = 0,01%.
as long as there is a warning, then that's probably okay?

I mean we could probably also keep an internal hashset<msgname,id> where id is just an increasing counter. in case collisions really become an issue.

not sure if 4 bytes int is worth it there. with 2 bytes, analyzing packets is relatively easy, e.g. 0xABCD = spawn packet. with 4 bytes, it soon becomes more difficult to remember / analyze.
if the average game has 50 packets then that's 50/65k chance of collision. = 1/1000 ish. = 0,01%.
as long as there is a warning, then that's probably okay?

make up your mind, lol.

as long as it shows a warning, 2 bytes should be fine

still better than current solution where two addons might accidentally use the same msgid for their messages

Actually your math is way off,    this is known at the birthday problem
https://en.wikipedia.org/wiki/Birthday_problem
if we have 50 messages and 65K possibilities,  the probability of a collision is actually very high,  around 63% according to the birthday problem.

Actually your math is way off, this is known at the birthday problem
https://en.wikipedia.org/wiki/Birthday_problem
if we have 50 messages and 65K possibilities, the probability of a collision is about 1.8%
if we increase to 32 bits,  the probability of collision goes down to 0.000029%
1.8% collision might be acceptable with the warning

1.8% collision might be acceptable with the warning.

hmmm,   actually this is not right.  That is the probability that 50 random messages will have at least 1 collision,  but we will ensure ourselves that the messages in mirror do not have collision amongst them,  which dramatically lowers this number.
So if people will add 2 or 3 messages,  the probability of collision goes way down.
So all right,  I'll revert that change.

as long as it is in one place where we could easily modify it if needed then we should be good.
and to be fair, 4 bytes wouldn't be the end of the world either later. we do that for Cmds too.

Could you  find the count of all the subclasses of MessageBase and increment from there?

Could you find the count of all the subclasses of MessageBase and increment from there?

That would require a weaver pass to search for all the MessageBase and assign a unique id to each one.  That would be very painful to implement/maintain.   The hashing is much simpler in comparison.

The message classes wouldn't change at runtime so if it was baked in from Weaver it would work with no fear of collision?

The message classes wouldn't change at runtime so if it was baked in from Weaver it would work with no fear of collision?

Yes,  that is right,   the weaver would just add an id per class at compile time.  If we ever do that,  we can do it as a separate PR.

I would avoid any changes that break old implementations of Unity Unet until it is officially removed, since this projects existence depends on it being a painless change from Unet. If you can add a message class that would in the future become the only class, that could be fine, as long as it doesn't break existing uses of message base. Collisions would only be a risk if developers start using both classes, which is fine. Once a dev starts using a new feature, then some requirements to make the rest of their code comply isn't unreasonable. It is more that radically different versions of Mirror shouldn't be floating around, or be coming too quickly.
I would caution against code breaking forks to Unet while it is still alive and large Unet implementations exist that may want to make the switch.
Code breaking deprecations are also personally a concern as an asset maker, as they kick off a day long process of fixing, testing and submitting - the Unity Asset Store is a real pain for fragmented projects with upgrade paths.

Will the Migration tool need to be updated to apply code changes where needed?

Mirror actually does have one of those that is always being updated. Are
you in the Mirror discord channel? If you are using Mirror you will def
want to visit often, they are constantly changing things.
https://discord.gg/adtqSs
-Davin
On Thu, Feb 21, 2019 at 2:23 PM Chris Langsenkamp<EMAIL_ADDRESS>wrote:

Will the Migration tool need to be updated to apply code changes where
needed?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/vis2k/Mirror/pull/422#issuecomment-466017426, or mute
the thread
https://github.com/notifications/unsubscribe-auth/Abi-_oaPaHMHFmr_-Etz_LreYWBwqQIrks5vPqvRgaJpZM4a_x6p
.

--
Please NEVER submit this email address (or any friends address) to any
website - no matter how respectable the site may seem. When mailing more
than a couple people, USE BLIND CC, do not type a ton of addresses into the
"To" box.

That is a very good question.
I dont know if the migration can be done automatically. If someone does something like this:
Connection.Send(MyMessageId, new StringMessage("Yo mama"));

The new code should be something along the lines of
Connection.Send(new MyMessage("Yo mama"));

And a new class MyMessage should be generated.
That is much more complicated than removing channels.  Basically all general purpose messages like EmptyMessage and StringMessages should be replaced by special purpose messages.  Under the new API, one class=one message id

Your question highlights something I missed: I need to update the migration guide and messages documentation

added some notes. additionally:

what else is missing for us to remove NetworkMessage entirely?
just to be clear: automated message ids are definitely needed to remove NetworkMessage, right?

added some notes. additionally:

what else is missing for us to remove NetworkMessage entirely?
just to be clear: automated message ids are definitely needed to remove NetworkMessage, right?

Yes,  it is definitely needed,  because the previous API required people to use it in order to receive messages.
To completely remove it, we need to change the dictionary of handlers as well as the LocalConnection methods.   This is all possible without affecting users if we get them to stop using the old API.

we talked about this in discord before: is it possible to have a 'send messages without id AND remove all obsolete stuff AND remove networmessage' PR? it would be very useful to see how this turns out in the end before basically merging the first half here

Why are we tying this to removing NetworkMessage?   This is an improvement wether we remove NetworkMessage or not.    Yes,  it makes it easier to remove NetworkMessage,  but even if we don't,  I would still merge this.

It would be good to be sure that the msgid change doesn't cause problems down the road when removing networkmessage. if we do such a huge change and break some user's projects then it's good to be sure that this is to stay.
for example, networkmanager currently passes networkmessage for some parameters like onserveraddplayer. it's not completely obvious how this will work if we remove networkmessage. it will depend on if messagebase is a struct/class/ etc. too

found issue,  don't merge yet

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Publish to Gradle Plugins repo

Can you publish this to the Gradle Plugins repo?

Found it here - https://plugins.gradle.org/plugin/com.bmuschko.nexus.

Found it here - https://plugins.gradle.org/plugin/com.bmuschko.nexus.

Be aware that the plugin will likely not work anymore with Gradle 7.x. I believe the plan is to remove the original Maven plugin from Gradle core. I would actually not recommend to use this plugin anymore.

Be aware that the plugin will likely not work anymore with Gradle 7.x. I believe the plan is to remove the original Maven plugin from Gradle core. I would actually not recommend to use this plugin anymore.

Alright, thanks!

Alright, thanks!


Triggerstring tips dissapear after some time

No idea why and when it happens 🙁. Only some hipothesis which require code clean-up.

There must be something wrong with the algorithm:

It's not possible to display shorter ListBoxes (Control) each time user enters new characters of triggerstring.
As a consequence each time user enters new character, the new GUI is created (old is distroyed). This could on a long run cause some issues.

H1: Check GUI creation / destroy process, catch errors (if possible).

Each time new GUI is created, new set of dynamic hotkeys are created.
As a consequence plenty new dynamic hotkeys are created. Each time GUI is destroyed they are not.

H2: Change that algorithm. Created hotkeys per class (AutoHotkey GUI) instead of just specific GUI.
H3: Check as many operations in F_OneChar as possible. Log as many as possible.
H4: Create automatic tester: SendLevel, InputLevel.

H1: Reworked code. No way to catch errors from GUI creation.
H5: Tooltips cause dead of thread. Switch off tooltips and give it a try.
Switched off tooltips on 2022-02-20
H6: CoordMode changed to Screen on 2022-02-20.

H7: Sound of tooltips or any other sound.
Switched off on 2022-02-21.
No, this is not thecase. Statement based on Log.
H8: Move ~Backspace processing from Hotkey section to InputHook section.
Accomplished on 2022-02-21.
It didn't help. Statement based on Log.
H9: Add Critical statement for InputHook function used to process Backspace events.
Accomplished on 2022-02-22.

Fixed in https://github.com/mslonik/Hotstrings/commit/70ca6456bc955412f0bdaa38c54007b4c69aa5c6
The core of a problem: if size of InputHook buffer is not explicite declared, its size is limited to 1037 characters (or close to this limit). So the buffer overrun have to handled properly. Other option: to apply L0. This is what I did.


Preferred language ISO 639-1 example

The preferred language hint (ISO 639-1, for example en-US) in the User object section is confusing as ISO 639-1 code would be 'en'. I believe it is the same case as reported here: https://github.com/MicrosoftDocs/azure-docs/issues/69512

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

ID: 71215894-d1c8-8d36-9dbb-adb35cfbc5f9
Version Independent ID: 34e2e6e4-578a-9309-ebcf-94b640dc4e4c
Content: user resource type - Microsoft Graph v1.0
Content Source: api-reference/v1.0/resources/user.md
Product: users
Technology: microsoft-graph
GitHub Login: @yyuank
Microsoft Alias: MSGraphDocsVteam

Thank you @Johaney-s for highlighting this error. I've raised a PR to align the description for preferredLanguage in the users API with the IT admin description.


0.4 backports

@Hofer-Julian And I leave backporting book things to you

Maybe something to look into in the future :)

Do you even need to do that? you can just trigger a book job manually and it will publish the output to stable instead of git :)
Any reason why the nullablity changes were not backported as well?

Any reason why the nullablity changes were not backported as well?

What did I miss exactly?

Ah, because you had actual manual changes inside the regenerate commit. That's not ideal because different gir versions are used for 0.15 and master. I skipped all the regenerate commits and did new ones. Please don't put manual changes into regenerate commits in the future :)
I'll manually extract those changes in a few minutes.

Ah, because you had actual manual changes inside the regenerate commit. That's not ideal because different gir versions are used for 0.15 and master. I skipped all the regenerate commits and did new ones. Please don't put manual changes into regenerate commits in the future :)
I'll manually extract those changes in a few minutes.

I don't see any manual changes there & I didn't update gir neither

Maybe something to look into in the future :)

Do you even need to do that? you can just trigger a book job manually and it will publish the output to stable instead of git :)
Any reason why the nullablity changes were not backported as well?

Sure I do that all the time.
But if you want to be super fancy you could maintain a stable branch for the book or even a branch per release. (not that I plan to work on that though)

I don't see any manual changes there & I didn't update gir neither

@bilelmoussaoui You updated gir-files in the same commit, that's the "manual" change (in contrast to "running generator.py"). I've added that as a separate commit here now and then regenerated.
The gir versions in 0.15 and master are different, so a full regenerate commit can't be cherry-picked as the commit hash of gir is going to be different so there will be a merge conflict.
The changes from generator.py should always be a separate commit, at least if they involve a gir-files or gir update.

Oh I see, I always updated the submodules & ran the generator.py script on the same commit. I will avoid that in the future

So what do we do here? :)


can we have couple of examples without external html files

Hi,
Normally there is external html file wherein whole html lies of modal overlay .
If someone does not wants to external html files what is alternative approach !

If you take a look at:
https://github.com/dwmkerr/angular-modal-service#showmodal-options
There's a template option you can use, which allows the template to be provided as a string.


Teleblock timer not showing fix

Teleblock timer is not showing after message because of the new message format.
Closes #9257

It is probably worth at least precompiling these patterns. At this point maybe we should just make one pattern which parses out the time and uses it to create the timer? + Add some tests.

I didn't realize that there wasn't a way to make dynamic len timers. Go back to what you had before but with the test and with pattern precompiling, and that should be good.


wip

Merged into https://github.com/facebook/react-native-website/pull/4279
@yungsters @javache I'll incorporate your feedback there!


feat(select): add a custom title instead of 'none selected'

Possibility to add a custom title instead of 'None selected' when no data are selected.
That avoid to put an other label to describe what the select box is for.

+1

All,
if you read the "translation" part, you'll see that you can define a custom title / label when nothing is selected:
http://isteven.github.io/angular-multi-select/#/configs-options

I just stumbled on it. Thx! :-)

No problem. One caveat is that if you use the translation, you need to fill in all of the translation object properties (selectAll, selectNone etc) or else it will trigger some warnings.

Not a major issue in my opinion. Nevertheless, is it a technical limitation or rather a design issue?

That was me being absent minded :)

Ahah. Looking forward to the future release ;-)
Important to say: you did an amazing job on this component. Kudo!

Thank you for the kind words, glad the directive works for you.


Merge AWSome Pentesting into Cloud - AWS Pentest

Merge the notes with the existing one

Hey, do you need something else in my side to be done? Just wanting to help

I think we need to update the Summary and to move the current content into their corresponding chapters before merging 🤗

Sure!! Let me do it, I will send a pull request with the changes, Thank you!

Hello, I just updated the summary to match the original file and also changed the # and ## from my file to match your style. Is it ok now?


Fixed typo in ingress name

There's a small typo in the Ingress definition.

Thanks! Ironically, tried to upgrade to the latest chart version today and I did not know what was the problem. 👍


High unicode points have incorrect length

High unicode points (ex. '🁢'.codePointAt(0) = 12704) that use more bytes per character than javascript expects (2, UTF16) return an incorrect value when using String.length, which in turn prevents words from being added to the puzzle if the frontend script erroneously detects the length is too long.
https://github.com/ogallagher/wordsearch_generator/blob/0952c44634714071c7623126d0167757397cecf7/wordsearch_webpage.js#L450-L461

Try [...str].length.

If in the future my chosen solution breaks with other many-byte characters (aka. extended grapheme clusters), switch to using github/orling/grapheme-splitter.


Allocation Data Controller Methods Not Consistently Defined

Expected Behavior
Classes should have identical method names and definitions (e.g., same number/name of parameters).
Actual Behavior
The Allocation data controllers has the following methods:
1. request_calculate(self, node_id)
2. request_children(self, hardware_id)
3. request_delete(self, hardware_id)
4. request_insert(self, revision_id, **kwargs)
5. request_select(self, node_id)
6. request_update(self, definition_id)
7. request_update_all(self)

These should be re-defined as:
1. request_calculate(self, **kwargs)
2. request_select_children(self, node_id)
3. request_delete(self, node_id)
4. request_insert(self, **kwargs)
5. request_select(self, node_id, **kwargs)
6. request_update(self, node_id)
7. request_update_all(self, **kwargs)

Steps to Reproduce the Problem
Not applicable for requirements/code quality errors.
Proposed Solution

Rename the Allocation methods as outlined above.
Update the Allocation data controller methods to extract arguments from **kwargs.
Update calls to the Allocation methods to pass arguments as **kwargs.
Update the Allocation data controller tests to reflect the new method definitions.

Operating Environment
Not needed for requirements/code quality errors.

Fixed in commit 9faefd0377f59445f943954b063a8e0c93600fce


Added anboto/Xint library to registry

@ismail-yilmaz please review and test. Thank you in advanced!

Seems fine!

Merging.