Easier way to postpone

⚠ Please check that this feature request hasn't been suggested before.

[X] I searched previous Ideas in Discussions didn't find any similar feature requests.
[X] I searched previous Issues didn't find any similar feature requests.

🔖 Feature description
Events need to be postponed by some time (1 day, 2 days, 1 week, 1 month) more easily than having to open the task dashboard and re-enter exact dates
✔ Solution
Have a button next to the edit button which opens a small popup with such predetermined times (1 day, 2 days, 1 week, 1 month), or a manual input (not in a date format), or even a random date within a certain range for a type of spaced repetition
❓ Alternatives
No response
📝 Additional Context
No response

What do you mean by the task dashboard?
Please have a look at https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/308.
Is it the same thing as this? Thank you.

What do you mean by the task dashboard?
Please have a look at #308.
Is it the same thing as this? Thank you.

it looks the same to me
currently, you have to call out a prop out panel by ctrl+p command to arrange a date for a task， not very convenient right now

Thanks. Nothing personal, but I'm closing this as a duplicate.

See #308 to follow progress on this topic.

currently, you have to call out a prop out panel by ctrl+p command to arrange a date for a task， not very convenient right now

I totally agree - I would love to see this area improved!


Update session welcome warning

Description:

Even when we do start supporting fundraiser seeds, don't use it except for testing or with small amounts. Soon we will release a command line interface to use for the signing of transactions offline including support for certain hardware ledgers.

We now support Ledger 😄

The warning got removed


⚠ Bofrost.es has degraded performance

In 7582d42, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1579 ms

Resolved: Bofrost.es performance has improved in b1ff9eb after 6 minutes.


Nvidia HEVC stalling at high resolutions

So this isn't really an issue, it's more of an experiment and very long question about what the plugin is capable of.
I am trying to push realtime video encoding with the Nvidia HEVC codec to it's absolute max.
I'm having the Unity application run as fast as possible and I'm encoding frames at a constant rate using an "isDirty" flag (I'm using this modification https://github.com/keijiro/FFmpegOut/issues/39 from a previous question I posted).
On an RTX 2080 I am able to capture either<EMAIL_ADDRESS>3392x2880@15fps, or 2560x2160@30fps. By my estimate this pipeline is pushing and encoding about 140-160 million pixels per second.
In editor the application is running at about 400 fps and I am able to record without dropping a single frame. So far so good.
If i try to raise it to a 3392x2880@30fps, or a 5120x4320@15 fps (about 290-330 million pixels per second) the pipeline begins to stall.
In editor the application framerate drops to around 10-20 fps and it's dropping about every other frame.  When not recording the scene runs at 700fps when rendering at 5120x4320.
Specifically it's line 56 of FFmpegPipe.cs that is causing the stall:
while (_pipeQueue.Count > 4) _pipePong.WaitOne();
Nvidia claims that the RTX GPUs are capable of encoding 8k video, but I'm not sure if they specifically say it can encode 8k video in realtime.
Encoding 160 million pixels in a second is already pretty mind boggling, so I wouldn't be surprised if the hardware encoder is limited to around 200 million pixels per second.
I realize this is an absurd experiment and that this plugin wasn't meant for interactive or realtime capture. I just wanted to double check and make absolutely sure there wasn't something else in the pipeline that could be causing this slow down.
Thanks again for your time and help with the previous question.

I'm not sure if FFmpeg Nvidia encoder is optimized for 8k videos. First of all, I'd recommend testing it from the command line.
I also think that the length of _pipeQueue should be extended for this situation. Try changing 4 in line 56 of FFmpegPipe.cs to 8 or 16. It requires tons of memory, but it makes sense in this specific application.

Hi Keijiro, thank you so much for the recommendations.
I had tried increasing the pipe queue size to 16, and even to 64. It still hit the same bottleneck, just at different frequencies.
When using the ffmpeg.exe provided with the plugin in command line, I tested transcoding 30 seconds of video at 30fps at different resolutions and got the following results:
h264_nvenc to hevc_nvenc:
3840x2160 takes 13 seconds
fps= 71 q=27.0 Lsize=   40278kB time=00:00:29.96 bitrate=11010.9kbits/s speed=2.38x
3392x2880 takes 16 seconds
fps= 61 q=27.0 Lsize=   41652kB time=00:00:29.96 bitrate=11386.5kbits/s speed=2.02x
hevc_nvenc to hevc_nvenc (h264_nvenc does not support greater than 4k resolution):
5120x4320 takes 34 seconds
fps= 27 q=27.0 Lsize=   73533kB time=00:00:29.96 bitrate=20101.6kbits/s speed=0.901x
7680x4320 takes 50 seconds
fps= 18 q=27.0 Lsize=  110068kB time=00:00:29.96 bitrate=30089.2kbits/s speed=0.604x
So while an RTX 2080 cannot do 8k in realtime it gets surprisingly close. It's clear that ffmpeg on it's own is performing better than in the plugin.

My next thought was that it could be a limit with how many bytes Unity can send to ffmpeg in realtime. Then I remembered that the plugin is sending RGBA images to ffmpeg, which then converts it to YUV420p.
So I wrote an image effect shader that converts an RGBA32 texture into a packed YUV420p texture:
`
// RGB to YUV conversion taken from: https://www.fourcc.org/fccyvrgb.php
// The rest of the shader is granted under an MIT license: https://opensource.org/licenses/MIT
Shader "Hidden/YUV420"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
    Pass
    {
        CGPROGRAM
        #pragma vertex vert
        #pragma fragment frag

        #include "UnityCG.cginc"

        struct appdata
        {
            float4 vertex : POSITION;
            float2 uv : TEXCOORD0;
        };

        struct v2f
        {
	float2 uv : TEXCOORD0;
            float2 uvY : TEXCOORD1;
	float2 uvU1 : TEXCOORD2;
	float2 uvU2 : TEXCOORD3;
	float2 uvV1 : TEXCOORD4;
	float2 uvV2 : TEXCOORD5;
            float4 vertex : SV_POSITION;
        };

    sampler2D _MainTex;
    float4 _MainTex_TexelSize;

        v2f vert (appdata v)
        {
	float rowOffset = _MainTex_TexelSize.y * (2.0 / 3.0);
            v2f o;
            o.vertex = UnityObjectToClipPos(v.vertex);
	o.uv = v.uv;
	o.uvY = float2(v.uv.x, v.uv.y * (1.5 / 1.0) - 0.5);
	o.uvU1 = float2(v.uv.x * 2.0, v.uv.y * (1.5 / 0.25) - 1.0 + rowOffset);
	o.uvU2 = float2(v.uv.x * 2.0 - 1.0, v.uv.y * (1.5 / 0.25) - 1.0 - rowOffset);
	o.uvV1 = float2(v.uv.x * 2.0, v.uv.y * (1.5 / 0.25) + rowOffset);
	o.uvV2 = float2(v.uv.x * 2.0 - 1.0, v.uv.y * (1.5 / 0.25) - rowOffset);
            return o;
        }

        fixed4 frag (v2f i) : SV_Target
        {
			float2 uv = i.uv;
			if (uv.y < (1.0 / 3.0)) {
				if (uv.y < (0.5 / 3.0)) {
					// Is V
					if (uv.x < 0.5) {
						uv = i.uvV1;
					}
					else {
						uv = i.uvV2;
					}
					fixed4 col = tex2D(_MainTex, uv);
					float v = (0.439 * col.r) - (0.368 * col.g) - (0.071 * col.b) + 0.5;
					return v;
				}
				else {
					// Is U
					if (uv.x < 0.5) {
						uv = i.uvU1;
					}
					else {
						uv = i.uvU2;
					}
					fixed4 col = tex2D(_MainTex, uv);
					float u = -(0.148 * col.r) - (0.291 * col.g) + (0.439 * col.b) + 0.5;
					return u;
				}
			}
			else {
				// Is Y
				uv = i.uvY;
				fixed4 col = tex2D(_MainTex, uv);
				float y = (0.257 * col.r) + (0.504 * col.g) + (0.098 * col.b) + 0.0625;
				return y;
			}
        }
        ENDCG
    }
}

}
`
This shader could be better optimized, but it gets the job done. The destination texture has the same width as the source, the height is 1.5 times taller, and the RenderTextureFormat is R8.
Preprocessing the YUV420p image accomplishes three things.

The pipeline is now moving 0.375 times less data off of the GPU and into ffmpeg.
It handles the RGB to YUV conversion on the GPU so ffmpeg doesn't have to.
It separates the image into planar Y, U and V images, instead of an interlaced RGBA image that ffmpeg would have to separate.

There are several different output pixel formats in your plugin, so I don't know the best way or if it is even necessary to integrate this shader. But this shader is free to anyone who wants to use it.
After making this change the bottle neck was removed and I got much better performance.
hevc_nvenc on an RTX 2080:

3840x2160 encodes at 30fps
3392x2880 encodes at 30fps
5120x4320 encodes at 15fps
7680x4320 encodes at 15fps


Unable to Build Enso

root@6866b1f2f06f:/enso# sbt
[info] Loading settings for project enso-build from plugins.sbt ...
[info] Loading project definition from /enso/project
[info] Loading settings for project enso from build.sbt ...
[info] Resolving key references (17303 settings) ...
[info] Set current project to enso (in build file:/enso/)
[info] sbt server started at local:///root/.sbt/1.0/server/ab9e787ba4e207740081/sock
sbt:enso> project runtime
[info] Set current project to runtime (in build file:/enso/)
sbt:runtime> compile
[success] Total time: 1 s, completed Mar 23, 2020, 8:49:19 PM
sbt:runtime> assembly
Unrecognized VM option 'UseJVMCIClassLoader'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
[error] Could not accept connection from test agent: class java.net.SocketException: Socket closed
[error] stack trace is suppressed; run last Test / test for the full output
[info] ScalaTest
[info] Run completed in 120 milliseconds.
[info] Total number of tests run: 0
[info] Suites: completed 0, aborted 0
[info] Tests: succeeded 0, failed 0, canceled 0, ignored 0, pending 0
[info] No tests were executed.
[error] Error: Total 0, Failed 0, Errors 0, Passed 0

As noted in system requirements you need to be using a GraalVM-based JVM, not a standard JVM.

The problem was that I was using GraalVM-java11.
I'm able to build after switching to GraalVM-java8

Brilliant, thank you for the update!


Sherif not working with pnpm excluded packages

Hi @QuiiBz , thanks for creating such an amazing tool! I'm running into a bug using this in the TanStack Query repo.
The pnpm-workspace.yaml file lists excluded packages, shown below:
packages:
  - 'packages/**'
  - 'integrations/**'
  - 'examples/react/**'
  - 'examples/solid/**'
  - 'examples/svelte/**'
  - 'examples/vue/**'
  - '!examples/vue/2*'
  - '!examples/vue/nuxt*'
  - '!packages/react-query/build/**'

Sherif throws the following error:
 ⨯ error Failed to collect packages
   Error while reading "./!examples/vue/2": No such file or directory (os error 2)

Thanks for the kind words! This seems kinda related to #23. Additionally, we don't support yet ! to exclude paths from the workspace, definitely something that should be added.
I'll take a look at both issues this weekend.

Released in https://github.com/QuiiBz/sherif/releases/tag/v0.5.0!


Enable render caching checkbox missing

The Enable render caching checkbox as specified in the documentation seams to be missing from the site builder.  Is is removed in the sitebuilder, and the documentation is not updated ? ?

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

ID: c90eb021-92b2-952c-6322-acb8e60934c6
Version Independent ID: 79bff52e-fe46-e4c9-09d1-d54ab281015f
Content: Configure page caching - Commerce | Dynamics 365
Content Source: articles/commerce/e-commerce-extensibility/page-caching.md
Service: dynamics-365-commerce
Product: ****
Technology: ****
GitHub Login: @samjarawan
Microsoft Alias: samjar

@kurthatlevik-inspirit365 , thank you for contacting us regarding this help topic. I have passed your comment on to the author for consideration.


Need a way for middleware to add to the queue

Right now if I have a parser (say of a manifest) that then loads many other files, then progress events for the loader are pretty much borked. Needs to be a way to know how many files will be loaded for proper progress events, otherwise the progress may decrease at points (which is undesired behavior).
Other loaders use a type-based "add" system that allows users to add a resource of a certain type which means we "know" how many resources will eventually need to be loaded.
Maybe have a different type of .add specifically for manifests (.addManifest) that makes that resource not be part of the progress. All manifests are first loaded, parsed (which can add resources to the queue), then the queue is loaded and progress events work as expected.

Why you decided to have a "next" argument that you have to call in the middlewares? Why not simply return true (to continue) or false (to abort the chain)? I think the "next" thing is prone to errors (you forgot a next() call and you are done).
Maybe what you can pass along is the loader instance, so you can add from inside a middleware more assets if you need, and if you don't, you don't mess anything. Also you have (from the middleware standpoint) more control over the loader if you need it. That will solve your issue and would not need another method, mostly because if later you need another type of loader that parses something like a manifest you would need to add a new method (addWhatever).

Why you decided to have a "next" argument that you have to call in the middlewares?

Because middleware need not be synchronous, For caching middleware that uses IndexedDB the API is async, and you don't want the next to run until you have completed loading the data from the DB. That wouldn't be possible with a true/false return system.

Maybe what you can pass along is the loader instance, so you can add from inside a middleware more assets if you need, and if you don't, you don't mess anything.

I do this right now, the middleware function runs in the context of the loader (this is the loader instance). The problem is if you just do normal adding of stuff to the queue then the progress will "jump back" a certain percentage because now there are more files in the queue. That is the problem I am trying to solve. You can add files right now, but doing so makes progress be wrong.

Ah, that makes perfect sense.
Regarding the second issue: Well, yes, but maybe you can solve that by simply loading the manifests first and waiting for them to load before you emit any progress event.
After all, if you start loading assets and later decided to add a manifest (while the loader is still loading assets) you will have the jumping-progress issue anyways.

Yeah that was what I proposed in the original post, was to load all manifests then process the queue and emit progress. But in the case that a normal resource loads a manifest...ugh...

I agree... but you don't have any other options if a normal resource loads a manifest.
In any case, what I proposed is not to have an "addManifest" method, but simply use the "add" method. Usually you have a big list of assets that you want to load (either normal assets or manifests). So, you defer the loading/parsing until all the assets are registered (with a setTimeout(0) for example) and then you will have enough information on what to do with the list of assets to load (if you have any manifests you can parse them and add items to the load queue, and then start loading).

You can't tell a manifest from not a manifest unless the user tells you. Anything can be a manifest, it just depends on what the parser for it does. There is no way to look at a URL and tell if the parser that runs later after it loads will add more.
I'm not talking about a manifest that I define, "manifest" here means "any object that when loaded will cause a middleware to load more resources". Examples are spine atlas files, tiled tilemaps, phaser asset packs, etc.

Hard indeed... In that case, I agree with you that you need another method to add manifests. But if a manifest loads more manifests, you will still have the same issue.
I don't think there is a better way and maybe the only possible way to "alleviate" this by letting the user set the total number of files/assets beforehand somehow. In that way, you will never experience a jump in the loading progress (note that number should only be used to calculate the total progress for reporting only. I mean, if the user set that value to 1 and loads a manifest with 10 more files, that number needs to be adjusted and you will have a jump, but hey, at least it's better that the "always jump" option)

Interesting problem, I have a couple thoughts, but I don't know the system well, so forgive me if some of it is way off base:
Always load manifest files first. When a manifest file has loaded, it shouldn't count towards the progress bar.
When a manifest file loads, the assets that get added should cause a dynamic update to the loader. Whatever position it is currently in (say 20%), it uses that as the start, and creates a new 0-100% system between 20% and 100% (if that makes sense, weird for me to explain.) This would prevent the loader from decreasing, and could account for new assets being added dynamically.
A bit roundabout way of explaining it, hopefully it makes sense.

@amadeus Interesting, so instead of adding new files changing the progress it just makes the remaining space "longer". I'm going to play with that a bit...

I'm now using an async queue for managing resources, and each time a new resource is added to the queue the progress chunk that is added to the running progress for each resource is evaluated again.
The end result is as resources are added the bar will appear to "slow down" but it will never go backwards, and will always be the correct progress.
Change was made in: 33cd44790913f454494a63db9de0dc9c928da837


Collision detection fails in NGSIM (history replacement)

BUG REPORT
High Level Description
When I run the imitation learning experiment in NGSIM environment, the off-road detection works fine but the collision detection (with other vehicles) does not work.
SMARTS version
current master branch
Steps to reproduce the bug
Replace a history vehicle as a controlled ego vehicle in NGSIM dataset using similar code in examples/history_vehicles_replacement_for_imitation_learning.py and assign random action to that vehicle.
Resulting and expected behaviour
The controlled ego vehicle will not terminate even if it collides with other background vehicles.
Error logs and screenshots

Notes
I uploaded the NGSIM scenario files I used here.
NGSIM.zip

@zbzhu99:  Sorry I never found this problem for Issue #969.
For what it's worth, I had three hypotheses at the time:

there might be a problem with the logic related to dones in history_vehicles_replacement_for_imitation_learning.py such that if there is more than one agent to be replaced in the sample (i.e., k>1), then the simulation will continue after the first agent collides because it thinks there are more to do.
the problem might be related to the pybullet physics engine not using the vehicle chassis sizes specified in the history database.
the problem might be related to using a BoxChassis for the agent vehicle (which is deliberate here, but historically our agents have used AckermannChassis.

I had investigated (2) and (3) somewhat and, while I hadn't yet ruled them out, I was satisfied that if either of these was the problem, it wasn't straightforward.  I.e., they seemed on the surface to be doing the correct thing.
It was at this point that I got distracted by other work and never came back to this.  Sorry!
From what you wrote above, it appears we can probably rule out (1) as well because it seems you are only replacing one vehicle in this test.  (If that is not the case, please let us know though.)
I have written all this here so if someone else wants to investigate this too they might have a head start.

@sah-huawei :
I and @zbzhu99 have tested with single agent replacement and found the collision detection problem still existed.

The problem has been resolved with PR #1143.


Allow selection of bootstrap items

It would be nice to be able to pick and choose whether individual bootstrap items are on or off, by passing command line options to bootstrap.sh.

I will work on this and submit a pull request.

I've just finished a patch to do this. Is this a feature you prefer not to support?

I merged your PR, it looked like it already had that?

You did! I misunderstood how Github did pull requests (since I added that after the original pull).
Awesome, and thanks for a great bit of work.

thanks for PR, appreciated!


fix: use correct default values for exclude_srcs_packages and exclude_srcs_patterns in npm_package

🤦
I'll add a regression test before landing

"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"
"packages != patterns"

Is this a unit test? 🤔

Is this a unit test? 🤔

Just a rant 😂


Feature/1.5 seata test

test pass
fix import block
add docker compose ，init SQL auto and set time-zone for Integration Testing

merge it forcefully as admin right


Local pull request success status testing

Docs Build status updates of commit 1a7fa36:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

E2E_DocsBranch_Dynamic/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Resolved an error that prevented it from working with rectangular tensors.

The input had to be a square or cube tensor to work, so it has been fixed to work with rectangular or rectangular tensors.

Hey @shikishima-TasakiLab, thanks for pointing out that the current implementation does only work for square and cube tensors! However, your changes assume that the tensor size is not changing after the unfold operation (correct me if I'm wrong) which can not always be assumed (see #7 #8). Implementing the PyTorch formula for computing the spatial dimension after the convolution (unfold operation) could be a solution or what do you think?

Source

Thanks for the review.
As you pointed out, it would be better to implement it in the PyTorch formula.


Couldn't get CasperJS to work with HTTPS with the command --ssl-protocol=tlsv1

I am having trouble making Wraith to work with CasperJS on sites with HTTPS protocol. I do not have this problem when I am running test on sites with HTTP protocol but only HTTPS with CasperJS. PhantomJS works fine on both protocols. And yes, I do have this option on:
phantomjs_options: --ssl-protocol=tlsv1 --ignore-ssl-errors=yes

This is the error that I received running the above command.
DEBUG: #################################################
DEBUG:   Command run:        latest configs/history.yaml
DEBUG:   Wraith version:     3.2.0
DEBUG:   Ruby version:       ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

DEBUG:   ImageMagick:        Version: ImageMagick 6.9.2-5 Q16 x86_64 2015-11-01 http://www.imagemagick.org

DEBUG:   PhantomJS version:  1.9.7

DEBUG:   CasperJS version:   1.0.0

DEBUG: #################################################
DEBUG:
Config validated. No serious issues found.
SAVING IMAGES
DEBUG: casperjs --ssl-protocol=tlsv1 --ignore-ssl-errors=yes '/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js' 'https://smackaho.st:3022/' '320x10000,600x10000,768x10000,1024x10000,1280x10000' 'shots_latest/home/MULTI_casperjs_english_latest.png' 'body' '/Users/viki/workspace/raynor/javascript/wait--casper.js' 'false'
CasperError: CasperJS couldn't find module /Users/viki/workspace/raynor/_helper.js

  /Users/viki/.rvm/gems/ruby-2.1.1/gems/casperjs-1.0.0/bin/bootstrap.js:126 in _require

  /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js:24 in requireRelative

  /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js:4

COPYING BASE IMAGES
Copying shots_base/home to shots_latest
CROPPING IMAGES
DEBUG: Cropping both images to 600x1500. (shots_latest/home/320x1500_phantomjs_english.png, shots_latest/home/600x768_phantomjs_english.png)
DEBUG: Cropping both images to 1280x1500. (shots_latest/home/1024x1500_phantomjs_english.png, shots_latest/home/1280x1500_phantomjs_english.png)
/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `initialize': no implicit conversion of nil into String (TypeError)
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `open'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `image_dimensions'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:26:in `crop_if_necessary'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:19:in `block in crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:453:in `call'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:453:in `call_with_index'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:422:in `process_incoming_jobs'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:404:in `block in worker'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:395:in `fork'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:395:in `worker'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:386:in `block in create_workers'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `each'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `each_with_index'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `create_workers'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:327:in `work_in_processes'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:241:in `map'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:203:in `each'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:18:in `crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:98:in `block in crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:28:in `within_acceptable_limits'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:95:in `crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:173:in `block in latest'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:28:in `within_acceptable_limits'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:168:in `latest'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/bin/wraith:5:in `<top (required)>'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/wraith:23:in `load'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/wraith:23:in `<main>'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'

When I exclude --ssl-protocol=tlsv1 , the test runs normally and gallery is successfully generated but all of the screenshots taken is blank. Including --ssl-protocol=tlsv1 will give the error above.
This is my config/history.yaml file
##############################################################
##############################################################
# This is an example configuration provided by Wraith.
# Feel free to amend for your own requirements.
# ---
# This particular config is intended to demonstrate how
# to use Wraith in 'history' mode, which is best suited to
# making sure your site's appearance remains consistent over
# time.
#
# `wraith history history.yaml` # generate base screenshots
# `wraith latest history.yaml`  # take new shots and compare
#
##############################################################
##############################################################

# (required) The engine to run Wraith with. Examples: 'phantomjs', 'casperjs', 'slimerjs'
browser: "casperjs"

# (required) The domain to take screenshots of.
domains:
  english: "https://smackaho.st:3022"

# (required) The paths to capture. This particular config is using casperjs, so we can take screenshots of selectors rather than the entire page.
paths:
  home:
    path: /
    selector: 'body'

# (optional) JavaScript file to execute before taking screenshot of every path. Default: nil

# (required) Screen widths (and optional height) to resize the browser to before taking the screenshot.
screen_widths:
  - 320x10000
  - 600x10000
  - 768x10000
  - 1024x10000
  - 1280x10000

# (optional) JavaScript file to execute before taking screenshot of every path. Default: nil
before_capture: 'javascript/wait--casper.js'

# (optional) Resize to each screen width (efficient), or reload at each screen width (costly). Default: 'reload'
resize_or_reload: 'resize'

# (required for history mode, otherwise optional) The directory that your base screenshots will be stored in.
history_dir: 'shots_base'

# (required) The directory that your latest screenshots will be stored in
directory: 'shots_latest'

# (required) Amount of fuzz ImageMagick will use when comparing images. A higher fuzz makes the comparison less strict.
fuzz: '20%'

# (optional) The maximum acceptable level of difference (in %) between two images before Wraith reports a failure. Default: 0
threshold: 5

# (optional) Specify the template (and generated thumbnail sizes) for the gallery output.
gallery:
  template: 'slideshow_template' # Examples: 'basic_template' (default), 'slideshow_template'
  thumb_width:  200
  thumb_height: 200

# (optional) Choose which results are displayed in the gallery, and in what order. Default: alphanumeric
# Options:
#   alphanumeric - all paths (with or without a difference) are shown, sorted by path
#   diffs_first - all paths (with or without a difference) are shown, sorted by difference size (largest first)
#   diffs_only - only paths with a difference are shown, sorted by difference size (largest first)
# Note: different screen widths are always grouped together.
mode: diffs_first

# (optional) Choose to run Wraith in verbose mode, for easier debugging. Default: false
verbose: true

# (optional) Color to highlight the image diff. Default: 'blue'
highlight_color: red

# (optional) Parameters to pass to Phantom/Casper command line. Default: '--ignore-ssl-errors=true --ssl-protocol=tlsv1'
phantomjs_options: --ssl-protocol=tlsv1 --ignore-ssl-errors=yes

This is run on history mode (wraith latest command). Is there a workaround for this in order to make CasperJS work properly with HTTPS sites? CasperJS gem is already deprecated and has never been updated for quite a while now. I have been using Wraith for quite some time and phantomJS mode works just fine for us. However, I wanna start using CasperJS for taking snapshots of components instead of whole sites. Thanks in advance for your help!

I noticed that this error is looking for _helper.js in my current folder instead of the one in the wraith gem itself.
CasperError: CasperJS couldn't find module /Users/viki/workspace/raynor/_helper.js

/Users/viki/.rvm/gems/ruby-2.1.1/gems/casperjs-1.0.0/bin/bootstrap.js:126 in _require

/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js:24 in requireRelative

/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js:4

Perhaps fixing this would fix the HTTPS issue itself?

Alright, to verify if correctly linking to _helper.js would fix the issue, I just add _helper.js in the root of my current folder. The test seems to run normally but the screenshots generated is still empty and this is the logs that I got:
DEBUG: #################################################
DEBUG:   Command run:        latest configs/history.yaml
DEBUG:   Wraith version:     3.2.0
DEBUG:   Ruby version:       ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

DEBUG:   ImageMagick:        Version: ImageMagick 6.9.2-5 Q16 x86_64 2015-11-01 http://www.imagemagick.org

DEBUG:   PhantomJS version:  1.9.7

DEBUG:   CasperJS version:   1.0.0

DEBUG: #################################################
DEBUG:
Config validated. No serious issues found.
SAVING IMAGES
DEBUG: casperjs --ignore-ssl-errors=true --ssl-protocol=tlsv1 '/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/javascript/casper.js' 'https://smackaho.st:3022/' '320x10000,600x10000,768x10000,1024x10000,1280x10000' 'shots_latest/home/MULTI_casperjs_english_latest.png' 'body' '/Users/viki/workspace/raynor/javascript/wait--casper.js' 'false'
Snapping https://smackaho.st:3022/ at: 320x10000

Snapping https://smackaho.st:3022/ at: 600x10000

Snapping https://smackaho.st:3022/ at: 768x10000

Snapping https://smackaho.st:3022/ at: 1024x10000

Snapping https://smackaho.st:3022/ at: 1280x10000

COPYING BASE IMAGES
Copying shots_base/home to shots_latest
CROPPING IMAGES
DEBUG: Both images are exactly 1008x9984 - no cropping required. (shots_latest/home/1024x10000_casperjs_english.png, shots_latest/home/1024x10000_casperjs_english_latest.png)
DEBUG: Cropping both images to 1264x9984. (shots_latest/home/1024x1500_phantomjs_english.png, shots_latest/home/1280x10000_casperjs_english.png)
DEBUG: Both images are exactly 304x9984 - no cropping required. (shots_latest/home/320x10000_casperjs_english.png, shots_latest/home/320x10000_casperjs_english_latest.png)
DEBUG: Cropping both images to 1280x9984. (shots_latest/home/1280x10000_casperjs_english_latest.png, shots_latest/home/1280x1500_phantomjs_english.png)
DEBUG: Cropping both images to 584x9984. (shots_latest/home/320x1500_phantomjs_english.png, shots_latest/home/600x10000_casperjs_english.png)
DEBUG: Cropping both images to 600x9984. (shots_latest/home/600x10000_casperjs_english_latest.png, shots_latest/home/600x768_phantomjs_english.png)
DEBUG: Both images are exactly 752x9984 - no cropping required. (shots_latest/home/768x10000_casperjs_english.png, shots_latest/home/768x10000_casperjs_english_latest.png)
/Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `initialize': no implicit conversion of nil into String (TypeError)
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `open'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:48:in `image_dimensions'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:26:in `crop_if_necessary'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:19:in `block in crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:453:in `call'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:453:in `call_with_index'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:422:in `process_incoming_jobs'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:404:in `block in worker'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:395:in `fork'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:395:in `worker'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:386:in `block in create_workers'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `each'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `each_with_index'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:385:in `create_workers'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:327:in `work_in_processes'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:241:in `map'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/parallel-1.9.0/lib/parallel.rb:203:in `each'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/crop.rb:18:in `crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:98:in `block in crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:28:in `within_acceptable_limits'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:95:in `crop_images'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:173:in `block in latest'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:28:in `within_acceptable_limits'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/lib/wraith/cli.rb:168:in `latest'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/command.rb:27:in `run'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/thor-0.19.1/lib/thor/base.rb:440:in `start'
	from /Users/viki/.rvm/gems/ruby-2.1.1/gems/wraith-3.2.0/bin/wraith:5:in `<top (required)>'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/wraith:23:in `load'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/wraith:23:in `<main>'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
	from /Users/viki/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'

With _helper.js found, screenshot generation is still empty and gallery failed to be created :(

Duplicate of #308.


PeoplePicker - Display user title if user is not found or inactive

Q
A

Bug fix?
[x]

New feature?
[x]

New sample?
[ ]

Related issues?
fixes #768 , partially #Y, mentioned in #Z

What's in this Pull Request?
To display user title if user is not found or inactive.

Hi @sankarkumar23,
This has been manually merged.
Please, next time use dev as a target branch.

Hi @sankarkumar23,
This has been manually merged.
Please, next time use dev as a target branch.

Thank you! Good to know I need to merge to dev first. Will implement from next time onwards.

Thank you! Good to know I need to merge to dev first. Will implement from next time onwards.


Update manifests/c/clsid2/mpc-hc/<IP_ADDRESS>/clsid2.mpc-hc.locale.en-US.yaml

Fixes an issue where this package has multiple different monikers
Microsoft Reviewers: Open in CodeFlow

[Policy] Reset Labels


conditions author_id is not working

I login<EMAIL_ADDRESS>add a post, but I just can read.
How to open the permission to update & delete this post?
thank you~

It's strange I've just tested - all works as expected


New event system

This issue describes a new event system to replace flexx.react. Discussions welcome.
The event system for Flexx should, like the rest of Flexx, be simple and intuitive to use. The current system borrowed some ideas from reactive programming to achieve this. I was initially enthousiastic about RP, but in retrospect I don't think its the right model.
The current system
The system in flexx.react was a fun experiment, and it certainly has some nice features, but it also has some flaws:

This "reactive programming" model does not work well in all UI situations, in particular applications geared towards visualization. The reason is that some things are events, and sometimes you need more information than just a single value.
The fact that object "properties" are set/get with a function call is not very Pythonic. Even though I've gotten used to the idea, I still commonly make the mistake of using assignment. This is also a hurdle for newcomers.
Scroll events don't let themselves be mapped to signals trivially; because scroll events are always relative.
Unnecessary events to initialize signal values (i.e. the mouse_down state to False)

The good features can be summarized as:

Being able to connect to an event using a decorator at the function that is going to handle the event.
Being able to easily connect to multiple events.
Dynamism (e.g. connect to 'children.*.size').
An anologue and API compatible implementation in JS.

The new system
I am planning/proposing a new event system that is somewhat more conventional, in that it uses events, but has the nice features of the current system.
What this new system will have (that the current system has not):

A better name, as react leans towards RP and is confusing with reactjs.
Events are handled in the next event loop iteration (unless there is no event loop, in which case events are probably handled synchronously).
Event handlers can also be called manually (i.e. an event handler remains a callable).

Generating events
Events can only apply to HasEvents objects (you cannot create events on their own, as you could with signals). You can emit an event using x.emit(name, **values). This causes an event object to be created, which is basically a dictionary from values with some extra info, like owner.
Edit: I think it makes sense to allow emitting events doing x.event_name(ob), which will use ob to produce and emit an event object.
Event objects
Event objects are simply dicts with some fields. For property-change-events, the fields will be 'value', 'previous_value', 'time', 'previous_time', 'owner'. I think it would be useful to create a subclass to allow easier accessing using ev.value, but otherwise they're just dicts.
Connecting to events
You can connect to an event using:
@connect('foo')
def on_foo(*events):
    ...

@connect('foo', 'bar')
def update(*events):
    ...

The decorator is basically the same as it is now, but the function signature now accepts a series of events objects. Even for on_foo(), the function can be called with multiple 'foo' events, if multiple events where generated during one event loop iteration. Event handlers are free to process all events or only the last one (as update() will likely do). The decorator turns the function into a callable object (maybe even the original function?), so that you can manually call update(), which causes events to be empty.
Properties
A decorator @prop replaces the @input and can be used to create properties. When a property is changed, an event with the same name is emitted, which contains information about the new value, old value, and timings.
Similarly, there will be a @readprop (or different name?) decorator for readonly properties (much like the current @source.

class Foo(HasEvents):
    @prop
    def name(s='John'):
        return str(s).capitalize()

foo = Foo()

@connect('foo.name')
def on_name_change(*events):
    print('name %r changed to %r' % (events[-1].value, events[0].previous_value)

foo.name = 'X'
foo.name = 'jane'

# in the next event loop, we will see one message saying "name 'John' changed to 'Jane'".

Defining events
Event can be defined using
class Foo(HasEvents):

    # Short
    my_event = Event('x', 'y',  # x and y are names that the event object will have
                                  docs='docs on this event')

   # I also like this, its 2 lines more, but it allows more flexibility, it allows
   # emitting events using `foo.my_event(ob)`, and I prefer writing docstrings this way.
   @event
    def my_event(ob):
        """ docs on this event """
        return Event(x=ob.x, y=ob.y)   # create Event object based on input passed to `emit()`.

Streams and caching
One central concept of RP is that you have streams of signals, where new signals are created from a combination of signals etc. A model like this is still possible, by emitting new events from inside an event handler. We can consider using yield to generate new events.
Another concept of RP is caching of signal values, which can help make apps that have a long-running operation to run efficiently. I think that it will take little extra effor to create a proxy event to implement this in the new system.
Event handling order and propagation
Because multiple events can be handled by a single function, handlers are not called in the order in which they were connected. The order should be deterministic, and I think it makes sense to use the event handler name for this. Event order can be influenced by chosing the handler name, and by a keyword argument to the decorator, e.g. @connect('foo', 'bar', key='__need this first'). A handler can not prevent the event being passed to other handlers.
The system itself does not implement any form of event propagation, though systems using it can do so. Here's an (overly simplified) example:
class RootNode(Node):
     @connect('somewhere.mouse_down')
     def _on_mouse_event(self, ev):
         ev.handled = False
         for node in reversed(children):
               node.mouse_event(ev)
               if ev.handled:
                    break

class NodeThatReactsToLMB(Node):
     def mouse_event(self, ev):
         if ev.button == 1:
             ...
             ev.handled = True

class NodeThatReactsToRMB(Node):
     def mouse_event(self, ev):
         if ev.button == 2:
             ...
             ev.handled = True

Loose ends
Suggestions and discussion welcome!

A name for this subpackage. Perhaps something derived of "zanshin"? Or something general enough to represent the ideas of property and event.
Does each event need a placeholder, or can events exist by virtue of just emitting them?
Name for readonly property.

Is HasEvents as a base class/mixin really a good idea? It sounds like something you'd implement as an interface in static languages; this is usually done with duck typing in Python, right?
Are string based connectors the best way to go? It does not play well with refactoring. Perhaps also allow the passing of functions?
You might want to read about jQuery's event system for some inspiration, which supports namespacing: https://css-tricks.com/namespaced-events-jquery/

We need a metaclass to allow these kinds of decorators. Or maybe we can do without if we make some restrictions, but we'd need the __init__ to be run to "prepare" the properties, events and handlers. What kind of use-case were you thinking of to go without a base class? Perhaps something like this could work:
class MyObject:
    def __init__(self):
        events.prepare_object(self)
    @event.prop
    def foo(self, v):
        return float(v)

    @event.connect('foo')
    def _handle_foo(self, *events):
         ...

I'll read into the jQuery document. Thanks.

About connecting events. In most event systems you bind a handler to the object that generates the event, which would often be in an init. I went with an approach where you specify at the handler to what event(s) it is bound. I've found this to lead to clearer code. This does lead to a string-based description of the event, but I think that's ok. An advantage is that it allows binding to events that do not yet exist. And it also allows dynamism (e.g. 'children.*.foo' or 'parent.size'), which I found to be a very powerful mechanism. The downside is that it is more sensitive to typos. For refactoring there would be an equal amount of names to change, though with using a reference you could be helped by static analysis tools. Overall, I think the advantages outweigh the disadvantages.
It would certainly be possible to allow binding by reference too. Preferably I'd stick to Just One (TM) approach though, and add another later when/if its needed. However, one case that pops to mind is the binding to a function (not a method):
# As it is now; this assumes there is an object `h` in the current scope
@event.connect('h.foo')
def handle_foo(*events):
    ...
# Maybe this could be more explicit, something like:
@h.connect('foo')
def handle_foo(*events):
    ...

In other words, the string description of an event would always be relative to the a certain HasEvents object.

I see your point. Specifying at the handler is definitely a pleasant way to connect, I agree on that.
The dynamism part is new to me, though, are there reserved words? You could protect against typos by issuing warnings when the specified elements doesn't match anything. Obviously, that shouldn't be done for wildcard selectors though.

The dynamism part basically allows to traverse objects. But also objects that are properties, and get updates when that property changes. E.g. for 'parent.size' you get an event when the size of the current parent changes, and when the parent changes, the event is automatically reconnected, and you get an event. Binding to 'children..foo' gets you an event when the 'foo' event on any of the children occurs. Other than perhaps the '', there are no reserved words.
Yes, I'm leaning to making it more strict and force the connection of the handler to be successful, unless its a dynamism one (e.g. parent can be None). I think I also like the @h.connect('foo') over event.connect('h.foo'), because it feels less magical, and maybe we can get rid of all the sys._getframe() then.

May be you can even allow the user to specify how much to collect the event values. This way if only the last value is ever used, only that value can be kept preserving system resources. Something like:
@connect('mouse_move', collect=-1)  # collect only the last value
def on_move(event):  # just a single event

@connect('mouse_move', collect=-3)  # collect the last 3 values
def on_move(*events):

@connect('mouse_move', collect=2)  # collect first 2 values, ignore rest
def on_move(fst, snd):

# you may even go further/crazier
@connect('mouse_move', collect=(1,-2))  # collect first value, and the last two values
def on_move(fst,prev,last):

@pembeci I doubt that it matters (event objects are pretty lightweight) but this is certainly an idea to keep in mind. Thanks.

http://elm-lang.org/blog/farewell-to-frp

@almarklein Sorry I couldn't respond sooner. I guess I can't still forget the days of 64K RAMs. Whenever I wrote some code where memory usage can be an issue my first instinct is try to optimize things. But you are right, with today's hardware simplicity should have higher priority.

Everyone's moving to subscriptions... flexx, django, elm... :)


Custom text sizing

#158
This is to get custom sizing for text without having to make a new TypeFace object.
I know that I said earlier that this is probably something that you (@ArthaTi) should do, but I decided to begin attempting this.
So far I have a quick & dirty solution, but it hasn't been tested, so I don't know if it actually works.

textSize shouldn't be a property on either Text nor Label, but on Style. See https://stackoverflow.com/questions/2612483/whats-so-bad-about-in-line-css if you want to read up on the why's.

Instead of setting the size on the node or component, you link it to a theme rule via a tag.

I'm sorry, but I really, really, really don't like the notion that inline text-sizing should not be allowed. Not having the ability is so annoying, that instead of continuing to work on my game, I've decided to spend hours trying to understand Fluid's code and working in a resizing feature.
For my own immediate purpose it wouldn't be terribly bad to declare style tags at the beginning, but the syntax you provided is significantly less elegant than just label("Hello", 14).
I read some of the answers written in the link that you shared, but I don't think it's enough to justify not having the feature. Some of the answers admitted that inline styling is acceptable in some circumstances. These acceptable circumstances are going to be more common in applications using Fluid than in websites. Sometimes setting the text size on a particular label to a particular value really is what someone wants to do.
If you need a stronger reason that it should be allowed, here it is: People should be allowed to try things out without having to waste too much time. This is especially important if you want people to use your library, as it reduces the time it takes to get an acceptable result, which would make someone more likely to stick with it.
I'm sure that in some cases, people will change from inline styling to adding style tags with a syntax similar to the one you recommended when their project grows larger than just a few labels and buttons. In some cases, people may only decide to do this after realizing they forgot to resize a particular node, but I still think it's better to let people learn this lesson on their own than to ban them from taking the intermediate learning step.

I'm sure that in some cases, people will change from inline styling to adding style tags with a syntax similar to the one you recommended when their project grows larger than just a few labels and buttons. In some cases, people may only decide to do this after realizing they forgot to resize a particular node, but I still think it's better to let people learn this lesson on their own than to ban them from taking the intermediate learning step.

Unlike Raylib, Fluid is not a learning library. All styling properties are done with themes and styles only, inconsistencies introduce technical debt. Instead I'll encourage you to define helpers in your own code:
auto bigLabel(string text) => label(
    .tags!(MyTag.bigLabel),
    text
);

A few functions like that can go a long way. Yours is a very specific use-case that I have not encountered myself; it's not wrong to design your own tools to help you with your own goals.

This is very difficult. The systems you have for everything text-related are quite complicated, and FreeType isn't any better.
I'm having trouble figuring out the Text.resize and Typeface.measure functions.

I can confirm fluid.text and fluid.typeface ought to be the most complex modules Fluid has.
Text.resize is a wrapper over Typeface.measure that also resets the textures Text has generated. Typeface.measure itself is just a helper over TextRuler. Most importantly, they repeatedly call Typeface.advance to find out the sizes of individual characters. If the size of the typeface is increased, Typeface.advance will output larger characters. FT_Pixel_Sizes is used to change the typeface's size.

I also want to ask: Where is the default text size set for nodes that don't have a typeface specified?

The default typeface is stored in FreetypeTypeface.defaultTypeface which is assigned in a static constructor. The default size is 14pt: https://github.com/Samerion/Fluid/blob/aa2ad25a8cda34a38354a1a52236a14010e77a95/source/fluid/typeface.d#L552

Unlike Raylib, Fluid is not a learning library. All styling properties are done with themes and styles only.

This is a really bad reason to reject inline styling. Even if Fluid isn't going to go out of it's way to make it suitable for learning to program in D, people must still learn the library itself in order to use it. If it takes too much effort to get to the point of seeing decent results, people may give up on this library.
But I noticed that every node has it's own instance of Theme. Shouldn't this make it easily possible to just put any properties specified inline in it's theme? We don't necessarily need to have a separate variable to override the theme. The only reason I had put one in was as a temporary step since I hadn't (and still haven't entirely) figured out how the themes and styles work. I've already started moving the code in this direction since I submitted this PR draft.

auto bigLabel(string text) => label(
    .tags!(MyTag.bigLabel),
    text
);

It took awhile for me to figure out what this is for. I don't see this making the process any easier or more readable. I must also add that so far, the tag declaration syntax you're giving isn't working.
Just a tip for you; I recommend using auto less often. It makes code less readable.

I can confirm fluid.text and fluid.typeface ought to be the most complex modules Fluid has.

I suppose I can't blame you too much given the difficulty of working with FreeType. I've already proposed the idea of a new wrapper library for FreeType in the D Discord server, which should make it easier.

Typeface.measure itself is just a helper over TextRuler. Most importantly, they repeatedly call Typeface.advance to find out the sizes of individual characters.

So this must be how it manages to measure the glyph size despite measure being a member of Typeface and not FreetypeTypeface. I'll see if I can figure out how to make it work with text sizing.
Anyway, do you have any idea why the sized text in tour.text_styling isn't appearing at all?

The following was all written 2 days ago, but somehow never got posted.
My latest commit changed a lot of stuff in an attempt to get text sizing working. I had to take const off some functions in fluid.typeface. Despite all the changes I did, the end result is that text just doesn't display anymore.
Perhaps this task is above my skill level.  I suppose you can take a look at it, and fix it if you can easily spot the problem. Otherwise, feel free to discard these commits.

auto bigLabel(string text) => label(
    .tags!(MyTag.bigLabel),
    text
);

It took awhile for me to figure out what this is for. I don't see this making the process any easier or more readable.

If you find the general syntax too verbose, you can, and you should, write your own wrapper. Does it make code more readable? Certainly, it's self-descriptive:
vframe(
    bigLabel("Big text"),
    label("Text"),
),

I must also add that so far, the tag declaration syntax you're giving isn't working.

What isn't working? Tags have to be declared ahead of time.
@NodeTag
enum MyTag {
    bigLabel,
}


Reverse Image Proxy Example

I want to send anything from /img/* to an s3 bucket instead of my docker container.
I cant find any examples on the web, and your documentation is terrible for rules and routing out side of the network.
I figure there would be a lot more info on this. Im sure most people use a reverse proxy for this.

Hi! I'm Træfiker :robot: the bot in charge of communication regulation.
Thanks for your interest in Traefik!
We dedicate the issue tracker to bug reports and feature requests only. My advanced AI has spotted that your issue might be a configuration problem or relates to something that doesn't look like a bug.
To confirm this, please join our Community Forum and reach out to us on the Traefik section.
In case I'm wrong (well, that would be embarrassing :sweat_smile:), my developers will re-open the issue and fix me!
In the meantime, you can double check Traefik's documentation.

No one replies to your forum.

Hello @bvandermeersch
Thanks for your interest in Traefik.
You can use the combination of Host and PathPrefix matching rules e.g.
 Host(`example.com`) && (PathPrefix(`/img`))
Additionally, you can remove the added path before forwarding the request to the service by using Middeware StripPrefix. The service that points to the S3 bucket can be created as a file and added as the file provider. Please refer to the documentation and the section  Declaring an HTTP service with Two Servers.
http:
  services:
    s3-bucket:
      loadBalancer:
        servers:
        - url: "http://s3-bucket-example.com"

Let's move the further conversation to our community forum as @traefiker suggested, thank you :-)


test: add "pool clear" test

Updated a bit the framework + added the "pool clear" test as discussed with @vasild
Scenario is :

Create a transaction and send it to 1 node
Shut down the node (he should have accepted and broadcasted the transaction before)
Wake up the node after some blocks (2 blocks here)
See if the transaction is still in the node pool (using API /unconfirmed endpoint), should not be as it should have been forged by the network while the node was shut down

Can you review @vasild ? Look what is inside tests/scenarios/scenario1/ for understanding how I implemented the test, we can discuss about it then :+1:

To elaborate on the test scenario:

Start a network and choose one node from it which we are going to restart. Lets call it node1.
Make sure node1 has at least two transactions in its pool: tx1 and tx2.
 This may actually happen now or before shutting down node1, but if we forge tx1 before shutting down node1, then we must make sure it does not get the forged block because if it does, then it will remove tx1 from its pool.
So now we have node1 in a stopped state with two transactions in its pool on disk and the network with just one of the transactions forged and the other still unconfirmed.
Start node1
After node1 completes startup - observe that tx1 is not present in its pool and that tx2 is present.

tx1 should be removed during startup because it was forged by the network while the node was down
tx2 should be present in the pool - we need this tx2 in order to check that the startup process is not flawed and that it actually loads the transactions from the disk, i.e. detect if it does not load anything from disk during startup.

OK so here is now a 2nd version, again @vasild if you can review. So here's the workflow :
newBlock: {
            20: [ '0.transfer-new-wallet.action' ],
            24: [ '1.create-transactions.action' ],
            25: [ '2.check-unconfirmed.test' ],
            26: [ '3.stop-node.action' ],
            28: [ '4.0.restart-node.action', '4.1.check-tx-1.test' ],
            38: [ '5.check-node-pool.test' ]
        }

step 0 : we just pick from genesis wallet what we need for our test, sending it to a new wallet
step 1 : we send 1 transaction to node1 that it broadcasts right away to the network ; we then disconnect node1 from the network and send it another one. This one it will try to broadcast without success.
step 2 : node1 is still disconnected, we check that it has still the 2 transactions "unconfirmed"
step 3 : we shut down node1 (killing with sigint for graceful shutdown)
step 4.0 : we restart node1
step 4.1 : (executed as soon as node1 is started) we check that the 1st transaction (which was broadcast to the network) is now confirmed and removed from the pool, while the 2nd transaction is still "unconfirmed" and in the pool
step 5 : we check that node1 doesn't have any unconfirmed transaction anymore, and that 1st and 2nd transaction have been forged


streamline types

why
Type definitions are currently unorganized, this makes code more readable and easier to maintain. (Addresses #185)
what changed
Wrote type definitions for all Stagehand class methods and moved existing type definitions to a new types folder.
test plan
Use existing evals.

Thanks so much for all your work here! Generally LGTM; we have a few other things in flight that I want to get to before merging this, but we'll be on it shortly. In the meantime please add a changeset with npx changeset for release management :)

Ofc! Sure I'll do that


linked_params cannot have path beyond deeper than 1 child

Describe the bug
I was looking to work on #70  and started by first trying reviewing the code. When trying to find an example that utilizes all the functionality of _propagate_linked_params, I believe I either hit a bug or need a better understanding of how the linked_params should work.
Looking at _propagate_linked_params, it's clear that the each of the items in linked_params of a Routine are split into source_param and targets. After that, the targets are split so each item has a path and a target_param.
This is where I noticed a problem. If I setup a linked_param with
{"source": "x_a", "targets": ["a.x"]}

After calling qref_to_bartiq, the linked_params in the Routine looks like: {'x_a' : [('a', 'x')]}
In this scenario, when _propagate_linked_params receives this information, path is set to a and target_param is set to x.
The next part of _propagate_linked_params splits path based on a period. However, at this point the path is just a single level a and so the else branch is taken and ('a', 'x') is added current_links. Since the new_linked_params matches the existing routine.linked_params  nothing is updated in the routine.
While the scenario above makes sense, I started to wonder how can you get the path of the targets to include a period (ie. a child_path and a further_path). Unfortunately, from QREF I do not know if this is possible. If the QREF instead looked like:
{"source": "x_ab", "targets": ["a.b.x"]}

An error is thrown during qref_to_bartiq:

From QREF's schema_v1.py, it can be seen that the linked_params is either a list[ParamLinkV1] or _source_sorter.
ParamLinkV1 shows targets to be list[_MultiNamespacedName].
_MultiNamespacedName = Annotated[str, StringConstraints(pattern=rf"^{MULTINAMESPACED_NAME_PATTERN}$")]

MULTINAMESPACED_NAME_PATTERN = rf"({NAME_PATTERN}\.)+{NAME_PATTERN}"

NAME_PATTERN = "[A-Za-z_][A-Za-z0-9_]*"

How to Reproduce
I built the QREF from compile_test_data.yaml. Specifically, the routine with the comment:
Children and grandchildren, resources dependent on children, with ports, with input params and params linking
I then adjusted the linked_params to match the steps above.
Expected behavior
I would expect that qref_to_bartiq would allow linked_params to have targets with children and the target parameter.
Actual behavior
Currently, linked params can only be a single level deep. Otherwise a validation error is thrown.
Environment:**

Mac
Python 3.11.9

By the way:
{"source": "x_ab", "targets": ["a.b#x"]},

results in:

Hey @bdg221, thanks for reporting this! I've created a short PR that should fix the problem here #98. It would be great if you could take a look and see if it fixes the problem.

@dexter2206 the code change does correct the behavior. At first, I didn't see the r in front of split and thought there was a problem, but rsplit is perfect.


Import fields don't include proxyAddresses which is required for later AAD Connect sync with Windows AD

Please update this page to clarify that the import file spec does not include the Azure AD User attribute proxyAddresses which is required for later AAD Connect sync with Windows AD therefore a separate PowerShell-based update of all imported users will be required to enable sync between on-prem and Azure AD.
Details on the need for proxyAddresses attribute are included in the following MS doc which you should link from this page (please):

https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-install-existing-tenant

"There are three attributes used for [Azure AD Connect sync]: userPrincipalName, proxyAddresses, and sourceAnchor/immutableID. A match on userPrincipalName and proxyAddresses is known as a soft match. A match on sourceAnchor is known as hard match. For the proxyAddresses attribute only the value with SMTP:, that is the primary email address, is used for the evaluation."

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

ID: 277a5d8f-7fce-bf5d-1ebd-2061e9ac8a69
Version Independent ID: 02d2bc44-dc9f-a23a-9c60-facf7e0c1a41
Content: Bulk create users (preview) in the Azure Active Directory portal
Content Source: articles/active-directory/users-groups-roles/users-bulk-add.md
Service: active-directory
Sub-service: users-groups-roles
GitHub Login: @curtand
Microsoft Alias: curtand

@softwarecraft
Thanks for your feedback! We will investigate and update as appropriate.

Thanks for the feedback. I made a pull request to add a note about this but will leave it open for review by @curtand https://github.com/MicrosoftDocs/azure-docs-pr/pull/109418


[Needs reliable repro] New DMs aren't always showing as unread in the LHN.

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number:
Reproducible in staging?: needs reproduction
Reproducible in production?: needs reproduction
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: @quinthar
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1706485748212549
Action Performed:

Log in to same account both in Web and mobile
Send a message to the above account
Receive notification in both desktop and mobile
Look at the LHN

Expected Result:
Should appear bold in the LHN
Actual Result:

I get the notification on mobile
I see it as unread in mobile (along with other items that don't show as unread on desktop... which might be related?  or different?)
The [attachment] message is in Onyx (ie, it shows when I search for Jon)
But Jon (sender) isn't showing as unread in the LHN.

Workaround:
unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub

Could be dupe of this? https://github.com/Expensify/App/issues/34273

Hmm, it could be @mallenexpensify. I'm trying to repro this now but the steps aren't super clear to me. Will keep working on it.

So the messages are unread in my LHN on mobile and web, but when searching they are unread. Not sure about this one.

Thanks @mallenexpensify - I'm not able to recreate this after 4 unique rounds of testing using multiple different accounts.
I'm going to close this out.


px4fmu driver refactor

Notes and ideas for a px4fmu refactor.
Split drivers/px4fmu into the following separate modules

px4fmu (PWM output + overall PWM/GPIO configuration)
rc_input (runs in work queue at X00Hz) (could eventually be merged with drivers/spektrum_rc, drivers/ocpoc_sbus_rc_in, and likely others)
safety_button module (runs in work queue at 10Hz)
i2c command (only bus configuration, but could be extended to scan bus, etc)
spi command (only a reset currently, but could be extended to scan bus, etc)
Anything else that can be deleted or moved to a separate module? GPIO IOCTL configuration? PWM capture?

The remaining px4fmu core should be extended to support multiple instances (https://github.com/PX4/Firmware/pull/7208).
This should help save some space on platforms that don't use the other pieces. (https://github.com/PX4/Firmware/pull/7993) @zehortigoza FYI
https://github.com/dagar/Firmware/tree/pr-fmu_split
@iZhangHui @davids5 @rolandash

@dagar  Great work! Thank you. Your PR makes px4fmu codes more clean, clear and maintenance easier.
At the same, it will reduce firmware size for some flight controllers and ram consumption.
One concern is that ModuleBase doesn't support modules which allow multiple instances.

We can either extend it or make a new version that does. It's something we'll need to do for an improved driver framework either way.
There are still lots of inconsistencies in px4fmu when used as MAIN vs AUX that need to be fixed.

Hey, this issue has been closed because the label status/STALE is set and there were no updates for 30 days. Feel free to reopen this issue if you deem it appropriate.
(This is an automated comment from GitMate.io.)


[Feature] Configurable 6 row shulker boxes

I'd like to have an option to set the size of shulker boxes, similar to barrels and ender chests.
Notes
In my attempts to do this, I've unintentionally made it so shulker boxes can be put in shulker boxes. For obvious reasons I would not like this to be the case.

The best I think and do like the enderchest, by permission :)

Gonna scarp this idea. It's just a nightmare all around :3


change port ec2 dedicated host, ec2 dhcp option, ec2 endpoints, ec2 key pair ... to awsSDKv2 #770

Description
change port resources to aws SDK v2

ec2 dedicated host
ec2 dhcp option
ec2 endpoints
ec2 key pair
ec2 placement group
kinesis firehose
kinesis stream
kms customer key
lambda layer
lambda
macie

TODOs
Read the Gruntwork contribution guidelines.

[x] Update the docs.
[x] Run the relevant tests successfully, including pre-commit checks.
[x] Ensure any 3rd party code adheres with our license policy or delete this line if its not applicable.
[x] Include release notes. If this PR is backward incompatible, include a migration guide.
[ ] Attention Grunts - if this PR adds support for a new resource, ensure the nuke_sandbox and nuke_phxdevops jobs in .circleci/config.yml have been updated with appropriate exclusions (either directly in the job or via the .circleci/nuke_config.yml file) to prevent nuking IAM roles, groups, resources, etc that are important for the test accounts.

Release Notes (draft)
[x] Updated ec2 dedicated host, ec2 dhcp option, ec2 endpoints, ec2 key pair, ec2 placement group, kinesis firehose, kinesis stream, kms customer key, lambda layer, lambda, macie resources to awsSDKv2
Migration Guide
n/a

Passed all the tests. LGTM


LibWeb: Implement formData() method steps for x-www-form-urlencoded

The Response interface of the Fetch API can now parse form urlencoded bodies when Content-Type is set to application/x-www-form-urlencoded.

y


Pop up an error "Authentication failed" when creating a new function app with Azure China/Germany account

OS: All
Build Version: 20210521.1
Repro Steps:

Sign in with Azure China/Germany account.
Create a new function app.
Check whether the web app is created successfully or not.

Expect:
The function app is created successfully without any error.
Actual:
Pop up an error "Authentication failed" when creating a new function app.

Can you give more details about when you are seeing that issue? For example, what is the last prompt you were able to see? If it's failing after the prompts, please copy the output logs here
Related to https://github.com/microsoft/vscode-azureappservice/issues/2058

@ejizba
Advanced create: Pop up this issue when asking to select a runtime, and display 10:27:53 AM: Error: Authentication failed. in output window.
Basic create: Pop up this issue after entering the name, the output message is same with the advanced.
More details as below:


Don't require GITHUB_TOKEN for non-downloads

This allows users to sign whatever comes out of the build, instead of
contacting GH to get data or download artifacts.
Signed-off-by: Pieter Lexis<EMAIL_ADDRESS>

it looks like the token is set for the GH action for, but it does not have the right permissions:
=== RUN   TestProvenenaceGitHubRelease
    generate_test.go:464:
        	Error Trace:	generate_test.go:464
        	Error:      	Received unexpected error:
        	            	POST https://api.github.com/repos/philips-labs/slsa-provenance-action/releases: 403 Resource not accessible by integration []
        	Test:       	TestProvenenaceGitHubRelease
    generate_test.go:488:
        	Error Trace:	generate_test.go:488
        	Error:      	Received unexpected error:
        	            	failed to list release assets: GET https://api.github.com/repos/philips-labs/slsa-provenance-action/releases/0/assets?per_page=10: 404 Not Found []
        	            	failed to generate provenance
        	            	github.com/philips-labs/slsa-provenance-action/cmd/slsa-provenance/cli.Generate.func2
        	            		/home/runner/work/slsa-provenance-action/slsa-provenance-action/cmd/slsa-provenance/cli/generate.go:95
        	            	github.com/peterbourgon/ff/v3/ffcli.(*Command).Run
        	            		/home/runner/go/pkg/mod/github.com/peterbourgon/ff/v3@v3.1.2/ffcli/command.go:153
        	            	github.com/peterbourgon/ff/v3/ffcli.(*Command).ParseAndRun
        	            		/home/runner/go/pkg/mod/github.com/peterbourgon/ff/v3@v3.1.2/ffcli/command.go:169
        	            	github.com/philips-labs/slsa-provenance-action/cmd/slsa-provenance/cli_test.TestProvenenaceGitHubRelease
        	            		/home/runner/work/slsa-provenance-action/slsa-provenance-action/cmd/slsa-provenance/cli/generate_test.go:473
        	            	testing.tRunner
        	            		/opt/hostedtoolcache/go/1.17.3/x64/src/testing/testing.go:1259
        	            	runtime.goexit
        	            		/opt/hostedtoolcache/go/1.17.3/x64/src/runtime/asm_amd64.s:1581
        	Test:       	TestProvenenaceGitHubRelease

@pieterlexis The permissions issue is there because this is a cross repository PR. We are using the GITHUB_TOKEN that is available by default in a workflow that has the repo permissions, however that doesn't work for external PRs. Also not entirely sure how to resolve this issue yet.

It also breaks a workflow like this:
      - name: Generate build provenance
        # TODO use philips-labs/slsa-provenance-action once released with extra_materials support
        uses: pieterlexis/slsa-provenance-action@extra-materials-local-action
        with:
          artifact_path: builder/tmp/${{ steps.getversion.outputs.version }}/${{ matrix.os }}/dist/
          output_path: built_pkg/${{ steps.getproduct.outputs.product }}-${{ matrix.os }}-${{ steps.getversion.outputs.version }}-provenance.json
          extra_materials: builder/tmp/${{ steps.getversion.outputs.version }}/${{ matrix.os }}/dist/extra_materials.json

I would like to generate provenance for artifacts that I didn't download. But because the generate command requires GITHUB_TOKEN to be set, it breaks:
2021/11/10 09:28:17 GITHUB_TOKEN environment variable not set

Even though (looking at the code) the token is not required if tagName is unset. I think the changes in cmd/slsa-provenance/cli/generate.go are good to have in that case

correct, if the tagName is set we assume we want to generate provenance from the GitHub release and therefore download the assets from there. The token is mainly required to upload the provenance to the release. Probably we also need to refactor this a bit to make it more clear to the enduser when the automagical provenance is generated based on GitHub release assets vs manually defining a path with the release assets. In the latter we also don't automatically upload the provenance to the release currently.


Add CookFlavor property for projects.

Hey there June,
Here's another merge request regarding the cook-related issue I had (see Discord for elaboration). I've made it a new target property. This now produces an Android (Game) build for me with texture compressed in a format my Quest accepts.
This one is a bit more involved, if anything needs changing I'm all ears!
Cheers!

I've managed to implemented your suggestions, however it doesn't quite work yet.
The pak & stage step currently seems to overwrite cook flavors when multiple are specified (e.g. "ETC2", "ASTC" results in only ASTC being present in the final .obb). Not sure why it's doing that (will have to dig a bit deeper into how staging works) but this is a good moment to commit most of the work done. Feel free to take a look, see if you spot any things that need to be corrected.
Coincidentally, I fixed AndroidClient not producing valid output, it was because CookPlatform only gets appended "Client" for Windows, Mac & Linux. Perhaps as a separate commit it should also do that for any platform that supports Client targets (I've never worked with console platforms before, so not sure there).

If you want to rebase this branch on the latest main when you get a chance, that'll get CI/CD working for the merge.

The pak & stage step actually works as desired and produces correct output for all cook flavors:

It appears that if you stage multiple deployments (e.g. cook flavors, but I think also platform architectures), the Binaries folder is no longer the right place to look for all output files combined. It will only contain the output files of the last deployment:

It actually turns out that the AutomationTool's archive command takes care of creating dedicated output folders per deployment target:

Note: Symbol files are not archived.
I could add -archive -archivedirectory=<somewhere> to the Pak & Stage step and tag those files instead, though I feel like I might be opening a big can of worms there that would break a lot of stuff. Maybe only do it for Android?
What are your thoughts on it?

Unfortunately from memory, the files that go into the archive directory aren't correct for Android builds when performing Gauntlet testing, so we still need to pull from binaries.
Is it possible for us to do the BuildCookRun -cookflavor= per cook flavour, rather than passing all cook flavours at once? For this to work, we'd need to pull the cook flavours into a ForEach node outside the <Agent> tag in each "Pak and Stage" step. I would do something like this:
    <ForEach Name="TargetName" Values="$(GameTargets)">
      <ForEach Name="TargetPlatform" Values="$(GameTargetPlatforms)">
        <ForEach Name="TargetConfiguration" Values="$(GameConfigurations)">
          <Property Name="EffectiveCookFlavors" Value="Unused" />
          <Property Name="EffectiveCookFlavors" Value="$(AndroidGameCookFlavors)" If="'$(StagePlatform)' == 'Android'" />
          <ForEach Name="TargetCookFlavor" Values="$(EffectiveCookFlavors)">
            <Agent Name="Pak and Stage $(TargetName) $(TargetPlatform) $(TargetConfiguration) (Windows Pak and Stage)" Type="Win64">
              <Node Name="Pak and Stage $(TargetName) $(TargetPlatform) $(TargetConfiguration)" Requires="#GameBinaries_$(TargetName)_$(TargetPlatform)_$(TargetConfiguration);#GameCookedContent_$(TargetPlatform)" Produces="#GameStaged_$(TargetName)_$(TargetPlatform)_$(TargetConfiguration)"  If="!ContainsItem('$(MacPlatforms)', '$(TargetPlatform)', ';')">
                <!-- ... -->
                <Property Name="CookFlavors" Value="" />
                <Property Name="CookFlavors" Value="$(TargetCookFlavor)" If="'$(TargetCookFlavor)' != 'Unused'" />

Yeah, I agree. It also allows things to run as much in parallel as possible so I went ahead and started implementing it.
Unfortunately, this does mean we now have potentially more than one staging nodes, each with distinct output. I'll have to go over the code for testing and deployment to add support for this. This will take a bit longer.

Okay, it turns out that only CustomProjectTestProvider needs changes. It currently generates a single node that requires all staged files (i.e. "$(GameStaged);$(ClientStaged);$(ServerStaged)"). If you build multiple Android cook flavors, then BuildGraph will throw file errors because the files are identical:

ERROR: File 'E:...\Binaries\Android\MyGame-arm64.apk' was produced by Pak and Stage MyGame Android Development ETC2/ClientStaged_MyGameClient_Android_Development_ETC2 and Pak and Stage MyGame Android Development ASTC/ClientStaged_MyGameClient_Android_Development_ASTC
etc, etc.

I think, in this case, it's probably best to invoke the custom test script for each individual staged build, rather than to fetch them all and then invoke the custom test script once?
I've also considered something similar to what you implemented with Steam deployment (having a "Package" field that specifies which specific target you want the test to run for), but I think the user would rather still have their test being run for every build, rather than specific ones.

Hmm, the idea of having the custom script require all the staged targets is so you can have custom scripts that start a dedicated server process and a game process and have them talk to each other (or so you can deploy game targets onto different devices at once).
Having the Binaries folder conflict is awkward though, especially since Android is most likely than most to rely on the contents of the Binaries folder.
The only thing I could think of doing is having Pak and Stage rename <project>/Binaries/Android to e.g. <project>/Binaries/Android_ASTC when multiple cook flavours are present, after the package is done, and then stage Android_ASTC instead of Android.
It's pretty janky but it should work. The only project test provider that would need updating in the future would be Gauntlet, where BuildConfigProjectTestGauntletRequire would have to be able to accept a cook flavour for Android, but Gauntlet for projects doesn't appear to be implemented at the moment so we don't need to worry about changing that right now.

That was easier than expected to implement (just a <Copy> task on the binaries after staging). As a side effect, I now get valid output folders for each cook flavor when I execute this locally, neat!
I've checked the other test and deployment providers, they are either not relevant (e.g. Steam, or test providers that only need editor binaries) or not implemented. I think with these changes the feature is ready for final review.
Feel free to review the changes.

Thanks! This is now merged :)


Print  all Nodes that don't have sibling in C++

All nodes that don't have sibling
PR CHECKLIST

[x]  My submission is formatted according to the guideline in the [contributing guide]
(https://github.com/MakeContributions/DSA/blob/c63a39519a53f9e42487093f68507ba167569e3a/CONTRIBUTING.md)
[x]  My addition is on refer on the language README.md  file
[x]  My addition does not have any spelling mistakes.
[x]  My submission is a proper and friendly code lines.
[x]   My submission has sample input-output of the program (NOT FOR PYTHON)

What kind of change does this PR introduce ?

[ ]  Bugfix
[x] New Algorithm
[ ]  Optimization  in previous algorithms
[ ]  Code style update.
[ ]  Refractor
[ ]  Other, please describe:

Describe the PR:
This PR will add new algorithm in cpp(C++) to print all the nodes  that don't have sibling.
Please consider this PR under Hacktoberfest 2022.

Hi @Striver404,
We are not participating the hacktoberfest 2022, for more information please see the #968, let me know if you are going to work this or not.


create mysql table bug

i need on the editor to edit sql to add primary key.
Another problem is that the connection to MySQL always shows the state of waiting for the link

I cannot reproduce it. Don't you have Constraints tab in Table Editor or an error appears?
Please tell me DBeaver version, OS send log files.
Please check that Advanced Navigator view is on (select Connection view in the database context menu)

Dbeaver is latest community version and running on linux mint os

Please tell me also:

there is no update on the issue for a long time.
if it is still actual for you - feel free to reopen it with an additional info

there is no update on the issue for a long time.
if it is still actual for you - feel free to reopen it with an additional info

When I expand the database link, it always shows loading.Especially for the slow response of the database, the query status occasionally appears when executing the query

When I expand the database link, it always shows loading.Especially for the slow response of the database, the query status occasionally appears when executing the query


IndexOutOfBoundsException

Setting up a tank with liquid in it will spit out a huge amount of logs (mclogs) and make it heavy.

Ver: 2.6.3
Log: https://mclo.gs/aneJYXx
ModPack: https://www.curseforge.com/minecraft/modpacks/gregtech-expert-2/files/5755193

Some issue

https://mclo.gs/npINBNH
Log

This is essentially the same issue as #18


fix(preset-mini): update grid-template-x rules & test

Closes #324.
Reorder & update rules; update test.

This would be a breaking change, I think we should keep , for a while longer

Oh ok I see the issue


Support for label override

Labels should be requested at runtime, to take account of the locale.
For example if you need the label for 'Week' you should call a function returning the label if such function is specified, or use the current behaviour.
I can contribute to the project myself, but I failed to build the project and produce a valid npm module.
Can you guide me a little ?

Hi there! Thanks for the suggestion, sounds like a good idea to add this.
If you'd like to contribute, simply fork the repo, test your changes and submit a PR.
You don't have to build the project or generate the npm module.
Were you able to run the project in development?

Ahh you mean I could test using the test app/module inside the app folder ?
What I wanted to do is to build the project and 'npm link' it in my real project.

Oh I see, to build you can run npm run build - this should regenerate built files inside the dist folder. Using npm link creates a symlink and you can import the module in your project for testing.
Alternatively, you could use the demo included in the app folder.
Let me know if you run into anything, I can help with debugging.

If I try to link the project in my project library it doesn't work :
ERROR: @angular/core/core.ts(756,18): Error during template compile of 'Component'
Function calls are not supported in decorators.
Unexpected value 'CalendarHeatmap in C:/Users/amoscatelli/Documents/Visual Studio Code/angular2-calendar-heatmap/dist/calendar-heatmap.d.ts' declared by the module 'NgxVisiontechMaterialModule in C:/Users/amoscatelli/Documents/Visual Studio Code/ngx-visiontech/projects/ngx-visiontech-material/src/lib/ngx-visiontech-material.module.ts'. Please add a @Pipe/@Directive/@Component annotation.
How can I use the demo in the app folter ? That is not an angular project ...

#15

Please help me testing.
I am confident it made only safe changes but please help since I couln't test it. (Read previous comment).

Hi! Thanks for submitting the PR, I had a quick look, couple of things:

to test the changes you can use the app that comes with the lib (in the app folder)

You can use something like https://www.npmjs.com/package/serve to serve the files from the root folder, it should automatically pick up the changes you've made in the src/calendar-heatmap.component.ts (your browser might cache the source files, make sure you use hard-refresh to see the changes)

The error I get right out of the gate is the missing dependency on line 2: import { UnaryFunction } from 'rxjs/interfaces';

To fix this you'd have to update rxjs requirement to use a newer version, and perhaps even include the rxjs-compat package. We'd have to see what else this would break then. Is there any other way to work around this dependency requirement?

This is a minor detail but did you commit everything at the same time? Hard to tell what the progression is of the changes without specific commits.

Could you see if you can test this on your machine using the method described above? Thanks!

Ok I'll try thank you
That's really strange, I did NOT change the package.json so I should be using the same rxjs version you are using, that is :

"dependencies": {
"d3": "^4.13.0",
"lodash": "^4.17.14",
"moment": "^2.24.0",
"rxjs": "^5.5.12",
"rxjs-compat": "^6.5.2"
}

Yea sorry, maybe different commit would have been a better choice.

I'll test and let you know

I am getting your error but I don't understand:
Error loading<EMAIL_ADDRESS>as "rxjs/interfaces" from http://localhost:5000/src/calendar-heatmap.component.ts
Why is it using a different version of rxjs when serving ?
I'll look into this ...

Ok now everything should work.
I tested everything (every input function I created) and it's good for me.
Let me know.

Thanks again for the update! Looks like it's working on my end too, good stuff.
Could you provide an example of how you would use your changes to override the labels?
I'm curious to see this addition work the way you intended it/ need for your project :)
Also why did you remove the /dist folder from the repo? AFAIK it did have a purpose. I think it was that we were using dist files hosted on raw github for some demos before (such as jsfiddle)

I will send you the complete example after the pull is accepted as I need the new package (I didn't manage to make it work with npm link).
I removed /dist folder because AFAIK it's not a best practice to push compiled code, but if you want I can put it back.

I pushed back the content of dist folder.
Is this ok now ?

I am going to use ngx-translate and angular local support to have localized translation at runtime.
I will provide a snipshot of my code but I need the new library version as I 'npm link' didn't work for me and I can't test or integrate the new functionalities in my project.
If you want something simpler now, I tested the new functionalities by simply create a test method (inside your app.component.ts):
public test = value => 'HI THERE!' + value;
and then:
<calendar-heatmap
  [data]="data"
  [color]="color"
  [overview]="overview"
  [formatTime]="test"
  [yearLabel]="test"
  [monthLabel]="test"
  [weekLabel]="test"
  [dayOfWeekLabel]="test"
  [timeLabel]="test"
  [buildGlobalTooltip]="test"
  [buildYearTooltip]="test"
  [buildMonthTooltip]="test"
  [buildWeekTooltip]="test"
  [buildDayTooltip]="test"
  (handler)="print($event)"
  (onChange)="handleOnChange($event)">
</calendar-heatmap>

You will see all of your labels will be overridden.

Thanks! I've published the update under v0.2.0, please let me know if that works for you.

#16

Yea it works. I just pushed a minor fix to handle empty array of data.
The workaround till the pull request is accepted is :
this.calendar.data =
  this.calendar.data && this.calendar.data.length > 0 ?
    this.calendar.data :
    [
      <CalendarHeatmapData>{
        'details': []
      }
    ];

Merged and published on npm.
v0.2.2