New version: SphereUDE v0.1.6

Registering package: SphereUDE
Repository: https://github.com/ODINN-SciML/SphereUDE.jl
Created by: @facusapienza21
Version: v0.1.6
Commit: 6692cc874c6d196898934175fe63208847b3448b
Reviewed by: @facusapienza21
Reference: https://github.com/ODINN-SciML/SphereUDE.jl/commit/6692cc874c6d196898934175fe63208847b3448b#commitcomment-149055547
Description: A Julia package for regression in the sphere based on Universal Differential Equations

I am not sure what is the error with the automerge, since the other test have pass.

[noblock]


Application corsika output

Closes #486
Here I developed the CORSIKA output application. This application runs the previously developed CORSIKA output module (and the visualization module) to produce and save into png and ecsv files a bunch of histograms which can be extracted from the IACT file. The focus in on the histograms for the Cherenkov photons, but it also allows the production of histograms for any element from the CORSIKA event header.
I also had to expand a bit the module to include functions that export histograms to ecsv files. I defined a meta data for the ecsv file, which I deemed for appropriated but I am open to opinions on that.
Every functionality seems to be working on my laptop. I opened the PR here so you can have a look while I develop further the tests which are missing (therefore draft PR for the moment). I suggest you try yourself to run the application while reviewing.
Thank you!

In the first look at this I notice the "issue" with the logger in general.py. Do you might if I fix that in a separate branch/PR quickly first? It is not really related to this PR and is my mistake actually.

In the first look at this I notice the "issue" with the logger in general.py. Do you might if I fix that in a separate branch/PR quickly first? It is not really related to this PR and is my mistake actually.

Hi Orel. no worries. yes, if you prefer you can fix it in a separated PR. More tests are failing here because some functions have changed and I havent updated them yet in the tests.

I opened #500 in the meantime to fix this yes.

One more thing, I think the integration tests write out many hist_* files to the local directory. Could you please look into that and fix it?

Hi @orelgueta, thanks for the review. I took the comments into consideration with the exception of the codecov, as we discussed in mattermost.
I found a solution for the output_path which I am not sure is the best, but it is pretty similar to what we use in plot_layout_array.py. Please let me know what you think about the changes I implemented now. By the way, I refactor the names (output -> histograms). Now the class is called CorsikaHistograms. I hope that improves the clarity of the functionalities of the class, which is to produce histograms. Thanks!

Hi @orelgueta, thanks for the comments again. I updated the PR and opened #547 so that I can change that in a subsequent PR. If the tests pass can you please take another look? Thanks!

Only codecov is complaining (coverage is already very high), so no problems. A follow up PR (PR #547) will deal with the latest suggestion to change the output format of the histograms


feat(serializer): Use placeholder classnames (#12)

I'll merge this as soon as we're ready to do the breaking release!
For now though, I've released a beta version: npm install<EMAIL_ADDRESS>Hopefully we can get some feedback!

The build should not be breaking. It's fine locally... Not sure what's up.... 🤔


Epic: Support for multiple deviceClass on baremetal clusters

https://www.figma.com/proto/s4m2DvEQXcqpl8LEYGRIvw/4795%3A-Support-for-multiple-device-classes-in-the-same-cluster?page-id=8722%3A11106&node-id=8727-18578&node-type=frame&viewport=239%2C165%2C0.05&t=5AAuMMTCAVb0rVTK-1&scaling=scale-down&content-scaling=fixed&starting-point-node-id=8722%3A11107

The alert that says, it may increase your expenses has been removed

The alert that says, it may increase your expenses has been removed

@vbnrh Then the screenshots are outdated, right? Can you put an updated one?
Also, I would put Fixes: <Jira-issue that contains the figma link.

The alert that says, it may increase your expenses has been removed

@vbnrh Then the screenshots are outdated, right? Can you put an updated one? Also, I would put Fixes: <Jira-issue that contains the figma link.

Its the same, just the message on top got removed.
Figma link the description

https://issues.redhat.com/browse/RHSTOR-4795?focusedId=25317056&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel

{"lsoStorageClassName":"localblock","storage":"1","replica":1,"count":1,"storageClusterName":"ocs-storagecluster","poolDetails":{"volumeType":"Filesystem","poolName":"new-filesystem-pool","dataProtectionPolicy":2,"enableCompression":true,"fileSystemName":"ocs-storagecluster-cephfilesystem","failureDomain":"host"},"storageClassDetails":{"reclaimPolicy":"Delete","name":"fs-storageclass","volumeBindingMode":"WaitForFirstConsumer","enableStorageClassEncryption":false}}

Some thoughts,

On  Expandstorage UI

Show only LSO storageClasses that are not in the deviceSet

on AddCapacity UI

Show only LSO storageClasses that is on device Set
@SanjalKatiyar does this make sense?

On  Expandstorage UI

Show only LSO storageClasses that are not in the deviceSet

This make sense, LGTM.

on AddCapacity UI

Show only LSO storageClasses that is on device Set

Better to confirm with Eran whether we want to touch existing "Add Capacity" UI or keep that as it is (so that existing non-advanced user won't get confused).
(I personally don't want to make any changes to existing "Add Capacity" UI).

Better to confirm with Eran whether we want to touch existing "Add Capacity" UI or keep that as it is (so that existing non-advanced user won't get confused).
(I personally don't want to make any changes to existing "Add Capacity" UI)

IMO for LSO usescase we should not add the new deviceSet using "Add Capacity", so we do not use the new LSO storageclass,
If we add new deviceSet from there the same device classes OSDs will be generated,
But the OSDs originally from differ in configuration and if used together, might be issues with balancing and performance.
But will open a thread for it

LGTM other than comment https://github.com/red-hat-storage/odf-console/pull/1662#discussion_r1836509405.
cc @bipuladh @alfonsomthd @GowthamShanmugam for final review and tagging.

The alert that says, it may increase your expenses has been removed

@vbnrh Then the screenshots are outdated, right? Can you put an updated one? Also, I would put Fixes: <Jira-issue that contains the figma link.

Can you please upload an updated screenshot?

The alert that says, it may increase your expenses has been removed

@vbnrh Then the screenshots are outdated, right? Can you put an updated one? Also, I would put Fixes: <Jira-issue that contains the figma link.

Can you please upload an updated screenshot?

@bipuladh @SanjalKatiyar @alfonsomthd All comments addressed

/test odf-console-e2e-aws

/test odf-console-e2e-aws

cc @SanjalKatiyar

/approve
/lgtm

/test odf-console-e2e-aws

/test odf-console-e2e-aws


Web Extension ocasionally throws "Error in event handler: Error: expecting state transition"

From Slack:
Randy Lubin
7:40 PM
Not sure if this is the right place to ask (lmk if not) but I’m occasionally getting a console error with my web monetization enabled site:
Error in event handler: Error: expecting state transition
    at c.dispatchMonetizationStartEventAndSetMonetizationState (chrome-extension://locbifcbeldmnphbgkdigjmkbfkhbnca/content.js:2:527260)
    at chrome-extension://locbifcbeldmnphbgkdigjmkbfkhbnca/content.js:2:491513

This occurs with the Coil extension running on Chrome and I have the following code on my site:
document.monetization?.addEventListener('monetizationstart', () => {
        this.monetizationStarted()
      })

I’ll add that despite the error message in console, everything appears to be working correctly. Any thoughts?

Thanks.
Is it just on one particular site?

Happy to answer any follow-up questions and share more code if relevant. As I mentioned, everything seems to be working just fine, other than that error popping up.
I have both the  and  monetization approaches on the page

@randylubin

I have both the and monetization approaches on the page
Sorry, can you clarify ?

Can you give more details:

The payment pointer used (if you don't mind divulging)
A link to the page (or code excerpt)
What OS ?
What browser (and version) ?

@sublimator here you go:

Payment pointer: $ilp.uphold.com/WMbkRBiZFgbx
Link to a page where I get the error (though there are many other pages, too): Shuffled Demo
MacOS 12.4
Chrome Version 103.0.5060.114 (Official Build) (arm64)

The page has two monetization approaches:

Meta: <meta data-vue-meta="1" name="monetization" content="$ilp.uphold.com/WMbkRBiZFgbx" data-vmid="monetization">
Link:

And then there's the code I pasted earlier:
document.monetization?.addEventListener('monetizationstart', () => {         this.monetizationStarted()       })

Great, thanks!
I have an idea of what it might be.
You built the extension yourself ?
What version are you using, that you're trying onmonetization
?

I built the Story Synth web app (the linked page) but the extension is just the public version of the Chrome Coil extension (v0.0.59). At one point I was playing around with the dev build which looks for link instead of meta but that's currently uninstalled.

Thanks

@randylubin
https://chrome.google.com/webstore/detail/coildev/hcohoecolgmlofifjaobjhidpoaciknp
Sorry, have been occupied elsewhere.
Can you let me know if that sorts your problem?
Thanks :)

Hmm for some reason my reply didn't show up earlier:
Yup - that fixes it for me. Thanks!

Yeah, it rang a bell. I did a lot of the WM2 work last year around xmas, and that bug sounded familiar. I thought I fixed it in the WM2 branch.

Yup - that fixes it for me. Thanks!
On Mon, Jul 18, 2022 at 4:00 AM Nicholas Dudfield @.***>
wrote:

@randylubin https://github.com/randylubin
https://chrome.google.com/webstore/detail/coildev/hcohoecolgmlofifjaobjhidpoaciknp
Sorry, have been occupied elsewhere.
Can you let me know if that sorts your problem?
Thanks :)
—
Reply to this email directly, view it on GitHub
https://github.com/coilhq/web-monetization-projects/issues/3103#issuecomment-1187074205,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAFD6EMMVPAHGE6557RMFMTVUU2M7ANCNFSM52Y7RNOQ
.
You are receiving this because you were mentioned.Message ID:
@.***>


Based on condition i want to select the state

I have the condition on the basis I want to select the state and show that state is selected how I can do that?
function handleclick(id, stateName) {
console.log("im clilck");
setStateCode(id);
setStateName(stateName);
setDisplayState(stateName);
}

Hi @deepghuge36,
It looks similar to the demo. Have you looked at the examples' source code?
If this is not what you want, please detail your needs and share more code (in https://codesandbox.io/ for example).


Creating a No Match Found inside the dropdown

Hi, I was wondering how you would create a "no match found" message when the input is focused on. When I type a value inside my AutoSuggest component, if there is no match to the existing suggestions, the dropdown disappears. But I want a "No match found" message to appear in the dropdown. I have implemented it with multiSelect, so it seems like a section title and suggestions are required, but I just want one message to appear

You can implement this outside of the Autosuggest: Codepen

@moroshko I came here looking for something similar to this (and #480). I need a footer as well but since the footer has a call to action ('Add'), it needs to be keyboard accessible. It seems like if you include just in the suggestions container, then the keyboard focus goes from the last result back to the input box rather than to the 'footer'.
I could possibly always include it as the last value of every search result but that feels like bit of a hack - do you have any suggestions on how best to do while maintaining keyboard accessibility?

@oyeanuj Having the 'Add' action as the last suggestion is your best option for now.


Flank should record fatal exception outcome and or details from a matrix execution

Hello,
I've noticed that when a Fatal exception occurs on Firebase Test Lab (e.g,
 These are simply recorded in the matrix_ids.json file as {"outcome": "failure"}. For the purposes of daily reporting on test executions, I would love if Flank were to capture any other keys indicative of crashes when they happen.  I know this is possible through the Cloud Tool Results API, but I would like if Flank could do that, as we simply parse artifacts. Even if it's a simple boolean from FailureDetail ({"crashed": true}) that would be helpful.
https://firebase.google.com/docs/test-lab/reference/toolresults/rest/v1beta3/Outcome#FailureDetail
https://firebase.google.com/docs/test-lab/reference/toolresults/rest/v1beta3/Outcome

Hi @AaronMT, after going through the code, I noticed that this information is being captured in the details field of the axes object. In the case of crashes, the details field will display Application crashed as its value.


Modal is not opening on fullscreen

How do i open the modal on fullscreen directly

Just use the property:
openFullscreen: true,
or
data-iziModal-openFullscreen="true"


Revert "fix: documentation_changes & app_commvault parser added"

Reverts splunk/splunk-connect-for-syslog#2039

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


Array Constant Access bizarre behavior.

Please see the discussion originally posted here for the technical details:  https://github.com/KhronosGroup/MoltenVK/discussions/1496
In short:
vec3 colors[3] = vec3[](
    vec3(1.0, 0.0, 0.0),
    vec3(0.0, 1.0, 0.0),
    vec3(0.0, 0.0, 1.0)
);

void main() {
    fragColor = colors[gl_VertexIndex];
}

Produces a different (and inexplicable) result than:
vec3 color = vec3(1.0, 1.0, 1.0);
if (gl_VertexIndex == 0) {
    color = vec3(1.0, 0.0, 0.0);
}
else if (gl_VertexIndex == 1) {
        color = vec3(0.0, 1.0, 0.0);
}
else {
    color = vec3(0.0, 0.0, 1.0);
}

fragColor = color;

The MSL that was generated, which you provided in #1496, looks correct. This suggests that this is a bug in the Intel Metal driver.
Intel drivers have been known to struggle with SPIRV-Cross's spvUnsafeArray<T> template. Does disabling it help? (Set shaderContext.options.mslOptions.force_native_arrays to true in MVKGraphicsPipeline::initMVKShaderConverterContext() in MVKPipeline.mm.)

Hi,
I was unable to locate that function anywhere in the file nor the repository, unfortunately.  But I am more worried that recompiling Molten with a global change just to navigate around a particular GPU driver bug is the only available workaround as for the moment I am using the pre-built binaries.

recompiling Molten

Yes. @cdavis5e is recommending that you build MoltenVK from source after adding the following line to the MVKGraphicsPipeline::initShaderConversionConfig() function:
shaderConfig.options.mslOptions.force_native_arrays = true;

In that function, you'll see a number of similar values set for shaderConfig.options.mslOptions.*. Just add that line in the mix there somewhere.
Once you've done that, you can then follow the MoltenVK build instructions to build MoltenVK. Then take the resulting libMoltenVK.dylib and copy it over the same file inside your Vulkan SDK installation.

Thanks.  I managed to compile MoltenVK from source with the changes made.  To install, I renamed libMoltenVK.dylib in /usr/local/lib to orig_libMolten.dylib as a backup, and made a symbolic link from the newly compiled .dylib to the old name in /usr/local/lib.   But this may have been incorrect?  The following extensions ..
"VK_KHR_surface",
"VK_EXT_metal_surface",

..have suddenly become unavailable, which are mandatory to test the difference made with the new code.

You could just rename the old library and copy compiled to the /usr/local/lib, this way it works for me.

Thanks for the suggestion.  For some reason(?) copying the .dylib instead of referencing it via a symbolic link fixed that particular problem.
Unfortunately, the original problem persists.
The new vertex shader code.
#include <metal_stdlib>
#include <simd/simd.h>

using namespace metal;

constant float2 _26[3] = { float2(0.0, -0.5), float2(0.5), float2(-0.5, 0.5) };
constant float3 _48[3] = { float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0) };

struct main0_out
{
    float3 fragColor [[user(locn0)]];
    float4 gl_Position [[position]];
};

vertex main0_out main0(uint gl_VertexIndex [[vertex_id]])
{
    main0_out out = {};
    out.gl_Position = float4(_26[int(gl_VertexIndex)], 0.0, 1.0);
    out.fragColor = _48[int(gl_VertexIndex)];
    out.gl_Position.y = -(out.gl_Position.y);    // Invert Y-axis for Metal
    return out;
}

And the captured frame buffer:

So much for that theory.
I wonder if the driver is choking on the float3 type. Does using a vec4 for the color help?

Good suggestion.  GPUs historically have strongly preferred 16 byte alignments ... but alas, nope. =(. The issue remains.

What if you move the global array inside the main function, or enable shader optimization? I also have Intel based Mac and some shaders with the global constant arrays, and they work correctly. To enable optimization you need to compile shader with the -O option.

Thanks for the suggestions.  I've tried them all, and to no avail. =(
In any case, the issue seems squarely in Intel's corner.  I don't know this project's policy on tracking upstream issues here.  Let me know if I should close this or not.

I didn't have an issue with my shaders until I updated my VK SDK and now any use of SpvUnsafeArray produces buggy results. Can we have a way to disable this conversion?

shaderConfig.options.mslOptions.force_native_arrays = true; will disable them, but I found it did not work for me.

I'm running into the exact same problem as @JesseRMeyer on Intel Iris graphics. I found lots of weird adjustments I can make to the shader that result in the correct behavior:
(1) if I re-assign the array's values in the main function prior to using them, it works.
(2) if I make the position array an array of vec3's and use that to set the gl_Position instead, for some reason this makes it work?
There's probably not much point in trying to reverse engineer whatever bug is in the drivers. But if this is an Intel Metal driver issue - should this technically be reproducible in a pure Metal application?

I'm running into the exact same problem as @JesseRMeyer on Intel Iris graphics. I found lots of weird adjustments I can make to the shader that result in the correct behavior:
(1) if I re-assign the array's values in the main function prior to using them, it works.
(2) if I make the position array an array of vec3's and use that to set the gl_Position instead, for some reason this makes it work?
There's probably not much point in trying to reverse engineer whatever bug is in the drivers. But if this is an Intel Metal driver issue - should this technically be reproducible in a pure Metal application?

Thanks for your helpful research!
Yes. The shaders above are pretty simple, and it should reproduce in a simple Hello Triangle pure-Metal app. Are you suggesting this as something to give to Apple in a bug report?

I think that's a good idea. I briefly tried to reproduce this based on the triangle example in Apple's Learn Metal in C++ samples (link) but I haven't been successful yet.
There was at least one key difference, though, between the shader code in Apple's sample code and the problematic shader code posted by Jesse above: Jesse's shader above appears to combine the vertex and fragment shaders into one function, whereas Apple's sample code has separate Vertex and Fragment functions.
Anyway, I'll keep digging into this (but it's slow because I'm still learning how to use Metal...)

I recall having found an intel bug report for this problem the first time I encountered this.  Unfortunately after a few minutes looking I haven't been able to find it.  I distinctly remember zeux (Arseny Kapoulkine) on that thread.

Hi at all, I recently encountered the same issue following a Vulken tutorial series, too. After submitting it to Vulkan issues #1157 - Mac mini: accessing local colors variable with gl_VertexIndex in vertex shader fails they forwarded me here. This issue also looks related to [#1321].
I'm working on a Mac mini (Late 2014), macOS Monterey (12.6.5) with Intel HD Graphics 5000 1536 MB and Vulkan SDK 1.3.243. I got this working by using an if-else cascade and 0, 1, 2 as indices, like in the original post, and by assigning gl_Position after the color (not clear from original post). You can find the forked and adapted tutorial code here: https://github.com/PhDittmann/getIntoGameDev
Any ideas how to continue the investigation?

You're right. I could reproduce the same errors, and also my work-arounds.
// line 173
//_pMtkView->setClearColor( MTL::ClearColor::Make( 1.0, 0.0, 0.0, 1.0 ) );
_pMtkView->setClearColor( MTL::ClearColor::Make( 1.0, 0.5, 0.25, 1.0 ) );

	const char* shaderSrc = R"(
		#include <metal_stdlib>
		using namespace metal;

		//constant float2 myGlobalPositions[3] = { float2(-0.8, 0.8), float2(0.0,-0.8), float2(0.8,0.8) };
		//constant float3 myGlobalColors[3] = { float3(1.0, 0.3, 0.2), float3(0.8, 1.0, 0.0), float3(0.8, 0.0, 1.0) };
		constant float2 myGlobalPositions[3] = { float2(0.0, 0.5), float2(0.5, -0.5), float2(-0.5,-0.5) };
		constant float3 myGlobalColors[3] = { float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0) };

		struct v2f
		{
			float4 position [[position]];
			float3 color;
		};

		v2f vertex vertexMain( uint vertexId [[vertex_id]],
							   device const float3* positions [[buffer(0)]],
							   device const float3* colors [[buffer(1)]] )
		{
			v2f o;

			// This uses myGlobalPositions and myGlobalColors. It does NOT WORK AS EXPECTED.
			o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
			o.color = myGlobalColors[vertexId];

			// This works as expected.
			/*o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
			if (vertexId == 0) {
				o.color = myGlobalColors[0];
			} else  if (vertexId == 1) {
				o.color = myGlobalColors[1];
			} else  if (vertexId == 2) {
				o.color = myGlobalColors[2];
			}*/

			// This does NOT WORK AS EXPECTED.
			/*o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
			if (vertexId == 0) {
				o.color = myGlobalColors[vertexId];
			} else  if (vertexId == 1) {
				o.color = myGlobalColors[vertexId];
			} else  if (vertexId == 2) {
				o.color = myGlobalColors[vertexId];
			}*/

			// Same as original, but swapped order. It works as expected.
			//o.color = myGlobalColors[vertexId];
			//o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);

			return o;
		}

		float4 fragment fragmentMain( v2f in [[stage_in]] )
		{
		   return float4( in.color, 1.0 );
		}
	)";

Original (Bugged):

Original (Fixed):

RGB (Bugged):

RGB (Fixed):

It may has something to do with memory layout or optimization. Changing myGlobalColors had no effect at all.
Further work-arounds

Extend myGlobalPositions with an unused value (array length 4):

constant float2 myGlobalPositions[4] = { float2(0.0, 0.5), float2(0.5, -0.5), float2(-0.5,-0.5) };
constant float3 myGlobalColors[3] = { float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0) };
// ...
o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
o.color = myGlobalColors[vertexId];

Use only one float2 array:

constant float2 myGlobalPositions[3] = { float2(1.0, 0.0), float2(0.0, 1.0), float2(0.0,0.0) };
// ...
o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
o.color = float3(myGlobalPositions[vertexId], 1-sign((float)myGlobalPositions[vertexId].x + myGlobalPositions[vertexId].y));

Extend myGlobalPositions to float3, but use .xy only:

constant float3 myGlobalPositions[3] = { float3(0.0, 0.5, 0.0), float3(0.5, -0.5, 0.0), float3(-0.5, -0.5, 0.0) };
constant float3 myGlobalColors[3] = { float3(1.0, 0.0, 0.0), float3(0.0, 1.0, 0.0), float3(0.0, 0.0, 1.0) };
// ...
o.position = float4(myGlobalPositions[vertexId].xy, 0.0, 1.0);
o.color = myGlobalColors[vertexId];

Remove VBOs
To remove VBOs from sample, you have to comment 3 lines: buildBuffers in constructor and both pEnc->setVertexBuffer in draw.
Renderer::Renderer( MTL::Device* pDevice )
: _pDevice( pDevice->retain() )
{
    _pCommandQueue = _pDevice->newCommandQueue();
    buildShaders();
    //buildBuffers();
}

// ...

void Renderer::draw( MTK::View* pView )
{
    // ...

    //pEnc->setVertexBuffer( _pVertexPositionsBuffer, 0, 0 );
    //pEnc->setVertexBuffer( _pVertexColorsBuffer, 0, 1 );

Debug Metal Shaders
While debugging, click the "M"etal symbol and capture one frame. Elapse Command buffer > Render > drawPrimitives:Triangle vertexStart:0 vertexCount:3.

I found a way to decompile the metal shader. Use xcrun to compile them into .air files, disassemble them using llvm-dis and then open with a text editor:

buggy.metal
using namespace metal;

constant float2 myGlobalPositions[3] = { float2(0.0, 0.5), float2(0.5, -0.5), float2(-0.5,-0.5) };
constant float3 myGlobalColors[3] = { float3(1, 0, 0), float3(0, 1, 0), float3(0, 0, 1)};

struct v2f
{
	float4 position [[position]];
	float3 color;
};

v2f vertex vertexMain( uint vertexId [[vertex_id]])
{
	v2f o;

	// This uses myGlobalPositions and myGlobalColors. It does NOT WORK AS EXPECTED.
	o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);
	o.color = myGlobalColors[vertexId];

	return o;
}

float4 fragment fragmentMain( v2f in [[stage_in]] )
{
   return float4( in.color, 1.0 );
}

fixed.metal (swapped order)
#include <metal_stdlib>
using namespace metal;

constant float2 myGlobalPositions[3] = { float2(0.0, 0.5), float2(0.5, -0.5), float2(-0.5,-0.5) };
constant float3 myGlobalColors[3] = { float3(1, 0, 0), float3(0, 1, 0), float3(0, 0, 1)};

struct v2f
{
	float4 position [[position]];
	float3 color;
};

v2f vertex vertexMain( uint vertexId [[vertex_id]])
{
	v2f o;

	// Same as original, but swapped order. It works as expected.
	o.color = myGlobalColors[vertexId];
	o.position = float4(myGlobalPositions[vertexId], 0.0, 1.0);

	return o;
}

float4 fragment fragmentMain( v2f in [[stage_in]] )
{
   return float4( in.color, 1.0 );
}

brew install llvm

xcrun -sdk macosx metal -c buggy.metal -o buggy.air
/usr/local/opt/llvm/bin/llvm-dis buggy.air
open buggy.air.ll
xcrun -sdk macosx metal -c fixed.metal -o fixed.air
/usr/local/opt/llvm/bin/llvm-dis fixed.air
open fixed.air.ll

buggy.air.ll
; ModuleID = 'buggy.air'
source_filename = "buggy.metal"
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-n8:16:32"
target triple = "air64-apple-macosx12.0.0"

@_ZL17myGlobalPositions = internal unnamed_addr addrspace(2) constant [3 x <2 x float>] [<2 x float> <float 0.000000e+00, float 5.000000e-01>, <2 x float> <float 5.000000e-01, float -5.000000e-01>, <2 x float> <float -5.000000e-01, float -5.000000e-01>], align 8
@_ZL14myGlobalColors = internal unnamed_addr addrspace(2) constant [3 x <3 x float>] [<3 x float> <float 1.000000e+00, float 0.000000e+00, float 0.000000e+00>, <3 x float> <float 0.000000e+00, float 1.000000e+00, float 0.000000e+00>, <3 x float> <float 0.000000e+00, float 0.000000e+00, float 1.000000e+00>], align 16

; Function Attrs: norecurse nounwind memory(none)
define <{ <4 x float>, <3 x float> }> @vertexMain(i32 %0) local_unnamed_addr #0 {
  %2 = zext i32 %0 to i64
  %3 = getelementptr inbounds [3 x <2 x float>], ptr addrspace(2) @_ZL17myGlobalPositions, i64 0, i64 %2
  %4 = load <2 x float>, ptr addrspace(2) %3, align 8, !tbaa !27
  %5 = shufflevector <2 x float> %4, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
  %6 = shufflevector <4 x float> %5, <4 x float> <float undef, float undef, float 0.000000e+00, float 1.000000e+00>, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  %7 = getelementptr inbounds [3 x <3 x float>], ptr addrspace(2) @_ZL14myGlobalColors, i64 0, i64 %2
  %8 = load <3 x float>, ptr addrspace(2) %7, align 16, !tbaa !27
  %9 = insertvalue <{ <4 x float>, <3 x float> }> undef, <4 x float> %6, 0
  %10 = insertvalue <{ <4 x float>, <3 x float> }> %9, <3 x float> %8, 1
  ret <{ <4 x float>, <3 x float> }> %10
}

; Function Attrs: norecurse nounwind memory(none)
define <4 x float> @fragmentMain(<4 x float> %0, <3 x float> %1) local_unnamed_addr #0 {
  %3 = shufflevector <3 x float> %1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
  %4 = insertelement <4 x float> %3, float 1.000000e+00, i32 3
  ret <4 x float> %4
}

attributes #0 = { norecurse nounwind memory(none) "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }

!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7}
!air.vertex = !{!8}
!air.fragment = !{!14}
!air.compile_options = !{!20, !21, !22}
!llvm.ident = !{!23}
!air.version = !{!24}
!air.language_version = !{!25}
!air.source_file_name = !{!26}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 1]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"air.max_device_buffers", i32 31}
!3 = !{i32 7, !"air.max_constant_buffers", i32 31}
!4 = !{i32 7, !"air.max_threadgroup_buffers", i32 31}
!5 = !{i32 7, !"air.max_textures", i32 128}
!6 = !{i32 7, !"air.max_read_write_textures", i32 8}
!7 = !{i32 7, !"air.max_samplers", i32 16}
!8 = !{ptr @vertexMain, !9, !12}
!9 = !{!10, !11}
!10 = !{!"air.position", !"air.arg_type_name", !"float4", !"air.arg_name", !"position"}
!11 = !{!"air.vertex_output", !"generated(5colorDv3_f)", !"air.arg_type_name", !"float3", !"air.arg_name", !"color"}
!12 = !{!13}
!13 = !{i32 0, !"air.vertex_id", !"air.arg_type_name", !"uint", !"air.arg_name", !"vertexId"}
!14 = !{ptr @fragmentMain, !15, !17}
!15 = !{!16}
!16 = !{!"air.render_target", i32 0, i32 0, !"air.arg_type_name", !"float4"}
!17 = !{!18, !19}
!18 = !{i32 0, !"air.position", !"air.center", !"air.no_perspective", !"air.arg_type_name", !"float4", !"air.arg_name", !"position", !"air.arg_unused"}
!19 = !{i32 1, !"air.fragment_input", !"generated(5colorDv3_f)", !"air.center", !"air.perspective", !"air.arg_type_name", !"float3", !"air.arg_name", !"color"}
!20 = !{!"air.compile.denorms_disable"}
!21 = !{!"air.compile.fast_math_enable"}
!22 = !{!"air.compile.framebuffer_fetch_enable"}
!23 = !{!"Apple metal version 31001.667 (metalfe-31001.667.2)"}
!24 = !{i32 2, i32 4, i32 0}
!25 = !{!"Metal", i32 2, i32 4, i32 0}
!26 = !{!"/Users/MY_USER/workspace/getIntoGameDev/buggy.metal"}
!27 = !{!28, !28, i64 0}
!28 = !{!"omnipotent char", !29, i64 0}
!29 = !{!"Simple C++ TBAA"}

fixed.air.ll
; ModuleID = 'fixed.air'
source_filename = "fixed.metal"
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64-v96:128:128-v128:128:128-v192:256:256-v256:256:256-v512:512:512-v1024:1024:1024-n8:16:32"
target triple = "air64-apple-macosx12.0.0"

@_ZL14myGlobalColors = internal unnamed_addr addrspace(2) constant [3 x <3 x float>] [<3 x float> <float 1.000000e+00, float 0.000000e+00, float 0.000000e+00>, <3 x float> <float 0.000000e+00, float 1.000000e+00, float 0.000000e+00>, <3 x float> <float 0.000000e+00, float 0.000000e+00, float 1.000000e+00>], align 16
@_ZL17myGlobalPositions = internal unnamed_addr addrspace(2) constant [3 x <2 x float>] [<2 x float> <float 0.000000e+00, float 5.000000e-01>, <2 x float> <float 5.000000e-01, float -5.000000e-01>, <2 x float> <float -5.000000e-01, float -5.000000e-01>], align 8

; Function Attrs: norecurse nounwind memory(none)
define <{ <4 x float>, <3 x float> }> @vertexMain(i32 %0) local_unnamed_addr #0 {
  %2 = zext i32 %0 to i64
  %3 = getelementptr inbounds [3 x <3 x float>], ptr addrspace(2) @_ZL14myGlobalColors, i64 0, i64 %2
  %4 = load <3 x float>, ptr addrspace(2) %3, align 16, !tbaa !27
  %5 = getelementptr inbounds [3 x <2 x float>], ptr addrspace(2) @_ZL17myGlobalPositions, i64 0, i64 %2
  %6 = load <2 x float>, ptr addrspace(2) %5, align 8, !tbaa !27
  %7 = shufflevector <2 x float> %6, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
  %8 = shufflevector <4 x float> %7, <4 x float> <float undef, float undef, float 0.000000e+00, float 1.000000e+00>, <4 x i32> <i32 0, i32 1, i32 6, i32 7>
  %9 = insertvalue <{ <4 x float>, <3 x float> }> undef, <4 x float> %8, 0
  %10 = insertvalue <{ <4 x float>, <3 x float> }> %9, <3 x float> %4, 1
  ret <{ <4 x float>, <3 x float> }> %10
}

; Function Attrs: norecurse nounwind memory(none)
define <4 x float> @fragmentMain(<4 x float> %0, <3 x float> %1) local_unnamed_addr #0 {
  %3 = shufflevector <3 x float> %1, <3 x float> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
  %4 = insertelement <4 x float> %3, float 1.000000e+00, i32 3
  ret <4 x float> %4
}

attributes #0 = { norecurse nounwind memory(none) "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="true" "use-soft-float"="false" }

!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7}
!air.vertex = !{!8}
!air.fragment = !{!14}
!air.compile_options = !{!20, !21, !22}
!llvm.ident = !{!23}
!air.version = !{!24}
!air.language_version = !{!25}
!air.source_file_name = !{!26}

!0 = !{i32 2, !"SDK Version", [2 x i32] [i32 13, i32 1]}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"air.max_device_buffers", i32 31}
!3 = !{i32 7, !"air.max_constant_buffers", i32 31}
!4 = !{i32 7, !"air.max_threadgroup_buffers", i32 31}
!5 = !{i32 7, !"air.max_textures", i32 128}
!6 = !{i32 7, !"air.max_read_write_textures", i32 8}
!7 = !{i32 7, !"air.max_samplers", i32 16}
!8 = !{ptr @vertexMain, !9, !12}
!9 = !{!10, !11}
!10 = !{!"air.position", !"air.arg_type_name", !"float4", !"air.arg_name", !"position"}
!11 = !{!"air.vertex_output", !"generated(5colorDv3_f)", !"air.arg_type_name", !"float3", !"air.arg_name", !"color"}
!12 = !{!13}
!13 = !{i32 0, !"air.vertex_id", !"air.arg_type_name", !"uint", !"air.arg_name", !"vertexId"}
!14 = !{ptr @fragmentMain, !15, !17}
!15 = !{!16}
!16 = !{!"air.render_target", i32 0, i32 0, !"air.arg_type_name", !"float4"}
!17 = !{!18, !19}
!18 = !{i32 0, !"air.position", !"air.center", !"air.no_perspective", !"air.arg_type_name", !"float4", !"air.arg_name", !"position", !"air.arg_unused"}
!19 = !{i32 1, !"air.fragment_input", !"generated(5colorDv3_f)", !"air.center", !"air.perspective", !"air.arg_type_name", !"float3", !"air.arg_name", !"color"}
!20 = !{!"air.compile.denorms_disable"}
!21 = !{!"air.compile.fast_math_enable"}
!22 = !{!"air.compile.framebuffer_fetch_enable"}
!23 = !{!"Apple metal version 31001.667 (metalfe-31001.667.2)"}
!24 = !{i32 2, i32 4, i32 0}
!25 = !{!"Metal", i32 2, i32 4, i32 0}
!26 = !{!"/Users/MY_USER/workspace/getIntoGameDev/fixed.metal"}
!27 = !{!28, !28, i64 0}
!28 = !{!"omnipotent char", !29, i64 0}
!29 = !{!"Simple C++ TBAA"}

I'm not familiar with this notation, but for me, it looks like assigning o.position and o.color in different order, changes the order of myGlobalPositions and myGlobalColors, too. That's why it is aligned properly in the fixed-case. It also reveals, that color uses 16 bytes (4x4!) instead of just 3 floats.


Chinese characters when encoding

What and why are these characters in Chinese ?

Bump. What's up with the Chinese characters? @marcuswestin

I can confirm that the compression plugin is causing the Chinese characters to appear.


Send the external repository token to the CLI

This commit does a few related things:

Bumps the minimum version for cli config parsing to 2.10.6
Ensures that if cli config parsing is enabled, then remove repos
are not downloaded by the action. It happens in the CLI.
Passes the --external-repository-token-stdin option to the CLI
and passes the appropriate token via stdin if cli config parsing is
enabled.

See the linked, internal PR for the integration test associated with this change.
Merge / deployment checklist

[ ] Confirm this change is backwards compatible with existing workflows.
[ ] Confirm the readme has been updated if necessary.
[ ] Confirm the changelog has been updated if necessary.

Failing test is because the cached version of the cli is too old to be using cli config parsing now, so the cli config files are not generated.

@henrymercer, I think you are the one with the most background to review. Can you take a look?

Failures due to using a kotlin version that is too new. Updating the base branch should fix it.


support Ubuntu's bootstrap version string

bootstrap version strings like "debootstrap 1.0.67ubuntu0.2" before would generate the error: "/home/nuno/omap-image-builder/scripts/install_dependencies.sh: line 55: [: 67ubuntu0: integer expression expected"

Thanks @nunojpg !


Issue-80: Not able to collapse domains

The problem was caused by the default style for images has max-width: 100% which was inside a td that was collapsed to zero width by another td set to width: 100% so it would push all the extra white space to the right.

This is great debugging and fixing!


pkg:zmqpp - CMake not finding zmqppd.lib on Windows

I'm attempting to add ZMQPP to a project on windows but I'm running into this issue.
CMake Error at C:/.hunter/_Base/4ef305d/b3db82c/f74f01e/Install/lib/cmake/ZMQPP/ZMQPPTargets.cmake:87 (message):
  The imported target "ZMQPP::zmqpp" references the file

     "C:/.hunter/_Base/4ef305d/b3db82c/f74f01e/Install/lib/zmqppd.lib"

  but this file does not exist.

Checking the C:.hunter_Base\4ef305d\b3db82c\f74f01e\Install\lib folder, there are both zmqpp-static.lib and zmqpp-staticd.lib files present, so it looks as though the libraries are being built, but hunter is searching for a lib file with the wrong suffix.
Adding this line to my cmake/Hunter/config.cmake file results in the same error.
hunter_config(ZMQPP VERSION ${HUNTER_ZMQPP_VERSION} CMAKE_ARGS ZMQPP_BUILD_STATIC=on ZMQPP_BUILD_SHARED=on)
Is there a flag I should be setting in order to set the correct suffix for the library? I'm currently building on Windows 10 using Visual Studio Community 2015 version 14 and CMake 3.8.0-rc4.

there are both zmqpp-static.lib and zmqpp-staticd.lib files present, so it looks as though the libraries are being built, but hunter is searching for a lib file with the wrong suffix

It's not Hunter responsibility, looks like *Config.cmake file is written incorrectly. It's an upstream issue. For your info fork is here:

https://github.com/hunter-packages/zeromq4-1

Feel free to send the patch with fixes.

I'm currently building on Windows 10 using Visual Studio Community 2015 version 14 and CMake 3.8.0-rc4

According to the pkg.zmqpp this package works only on Linux. You can take a look at testing toolchains here:

https://github.com/ingenue/hunter/branches/all?utf8=✓&query=pkg.zeromq

If you follow AppVeyor link (Windows testing) there is only "dummy" toolchain, which means that there are no real toolchains used in testing.

Not a Hunter issue, closing.


Addressing ESLint violation

Packages impacted by this PR
@azure/cossmos
Issues associated with this PR
n/a
Describe the problem that is addressed by this PR
n/a
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
n/a
Are there test cases added in this PR? (If not, why?)
n/a
Provide a list of related PRs (if any)
n/a
Command used to generate this PR:**(Applicable only to SDK release request PRs)
n/a
Checklists

[x] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[x] Added a changelog (if necessary)

API change check
API changes are not detected in this pull request.


Fix Codecov configuration with the new repository name

Codecov cannot find the new repository name maybe it needs to be registered separately or somehow renamed on the Codecov website.

Refs #66 #111

@chiraganand this seems to have been resolved now.

@chiraganand this seems to have been resolved now. Also, the coverage seems to be still the same as we had before. Not sure why it was showing the decrease.

Yes, working but I can still see TS.jl and TSx.jl in the coverage file list which is strange.

This is working now, closing.


Updated README.txt to clarify when to collect system logs

There are actually THREE prompts:

Take a repro trace? (y/n)
Record time travel traces? Warning, these can be very large, and may require stopping and restarting audio components, which will lose system state. (y/n)
Gather system information (this can take a few minutes)? (y/n)

I take it your intention is to warn people against the second?


Fixup runner-manager config and setup

Couple of issue encountered while developing with the latest version of the runner-manager.

Codecov Report

Merging #358 (19c2aef) into main (2f2688a) will decrease coverage by 21.30%.
The diff coverage is 64.00%.

:exclamation: Current head 19c2aef differs from pull request most recent head 1a9f892. Consider uploading reports for the commit 1a9f892 to get more accurate results

@@             Coverage Diff             @@
##             main     #358       +/-   ##
===========================================
- Coverage   86.81%   65.52%   -21.30%
===========================================
  Files          25       25
  Lines         827      847       +20
===========================================
- Hits          718      555      -163
- Misses        109      292      +183

Flag
Coverage Δ

api
65.52% <64.00%> (+0.47%)
:arrow_up:

unit
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

runner_manager/backend/docker.py
36.00% <40.00%> (-55.67%)
:arrow_down:

runner_manager/jobs/startup.py
69.23% <66.66%> (-30.77%)
:arrow_down:

runner_manager/models/runner_group.py
60.50% <70.58%> (-33.90%)
:arrow_down:

... and 6 files with indirect coverage changes


enable set -e in generate_protos.sh in tlcc_enclave

Describe the bug
the script successfully completes without generating the needed source code.
the tlcc enclave makefile will later fail.
To Reproduce
Install a "wrong" protoc compile a run make in tlcc enclave!!!
Expected behavior
Script should fail immediately if protoc fails.
Log-filesScreenshots
Bad:
-- Configuring done
CMake Error at enclave/CMakeLists.txt:73 (add_library):
  Cannot find source file:

    protos/common/common.pb.c

Expected:
./generate_protos.sh enclave/protos
doing protos/fabric/common
common/common.proto:28:14: Missing numeric value for enum constant.
common/common.proto:29:14: Missing numeric value for enum constant.
Makefile:15: recipe for target 'enclave/protos' failed
make: *** [enclave/protos] Error 1

@bvavala Wanna submit a small patch for that? :)

I will leave this privilege to the code owner!! :)


#227 use Github Actions for CI

Opened this as a work in progress so you have visibility on it. When the issue with dmd 2.095 up is resolved I'll rebase and continue.
I'm not keen on the current tests, the configs for unittest-vibe and unittest-vibe-ut are both for integration tests against a real mysql db. I propose pulling that out into a separate test project. The only tests that should be in the code base should really be unit tests. Perhaps that's something for a future pull request.

The only tests that should be in the code base should really be unit tests.

Amen to that. Phobos has this issue as well. If it does IO, it's not an unittest.

 As well as building on a bunch of compiler versions from 2.080 to latest on multiple platforms it also runs the unittest-vibe-ut config on D 2.083 to latest (unit-threaded doesn't like older), and also runs the example project. See passing builds here:
https://github.com/SingingBush/mysql-native/actions
It would be good to extract some of the test code and make the example project a little more robust. I can help with that as well but it would need this merging first really. There's more to do but this pull request is already fairly large so would rather have this merged then follow up with other changes.

Looks pretty good. It looks like you are testing with mysql for integration tests, but not mariadb (which seems to be a focus from Nick). I want to keep that at least. Is there a github action mechanism to try mariadb?
I will work on extracting the integration tests.

Looks pretty good. It looks like you are testing with mysql for integration tests, but not mariadb (which seems to be a focus from Nick). I want to keep that at least. Is there a github action mechanism to try mariadb?

I've split it into two files now:

dub.yml is basically just ensuring that the codebase can build with a bunch of different compiler versions
integration-testing.yml is running code (currently both unittest-vibe-ut and the examples) against an actual database

In integration-testing.yml it's running against MySQL 5.7 and Mariadb 10 for now. It's easy to add other versions and I've commented out a block that can be used for testing MySQL 8 once it's supported

I'm currently trying to extract all dub configurations that make no sense to be in the library to a separate folder, including the app.d which is troublesome here.
The integration tests are interspersed throughout the code base, which makes them difficult to extract without ripping them away from the items they are testing. The mysql/test package should be completely extracted. I'm still pondering how to do that, but I do want to do it. At the very least, I want to remove the dependency of unit-threaded from the main library.

ok, so can this be merged in the meantime?

I will merge this, but 2 things:

Can you re-add the code that was deleted in ci_setup.d and run_tests.d? They don't have to be used, but I don't want to lose them. The batch/shell script that compiled it can be left out though.
Can you explain what all the dub.selections.json files you removed were used for? I'm having trouble understanding the existing system.

Why add them back? it's in the git history so it can be viewed any time. The dub.selections.json was used because before there was a desire to support so many versions of D that you had to have different versions of vibe-core because they don't support as many compiler releases as this project attempts to do. It was pull #215 that added them. There was some logic in ci_setup.d that made use of them:
	if(envGet("DUB_SELECT") != null)	{
		string dubSelections = "dub.selections."~envGet("DUB_SELECT")~".json";
		writeln("Using alternative dub dependencies file: ", dubSelections);
		copy(dubSelections, "dub.selections.json");
		copy("examples/homePage/dub.selections."~envGet("DUB_SELECT")~".json", "examples/homePage/dub.selections.json");
	}

That's overkill though, simply reducing the scope of compiler versions to support does away with multiple problems as it'll bring your project inline with compilers that your dependencies support.

Why add them back?

I will add them back later.
If they are not there, I'll forget about them, since I am super unfamiliar with the way testing is done here. I have a feeling we are going to pretty much have to start over...

no prob, putting it back now


Generic inventory additions

Add market_fee_app_id so we can identify what game a given card/background/emote belongs to
Add support for inventories with more than 2000 items

Going to merge because I've been using this for months to great success


Provide capability to dynamically assign parameters to prepared statement query

While I enjoy the syntax of using tuples to assign parameter values to a query, I am quickly finding that creates code bloat when dealing with queries that have any degree of customization.
To show what I mean, here's an example query that I'm in the process of updating in my application. This function was originally written to use the MYSQL Connector C++ library.
	mysql::results getLookup(
		mysql::tcp_ssl_connection& connection,
		int64_t modId,
		std::optional<std::string_view> nameFilter = {}
	) {
		std::string sql = R"SQL(
			select
				T.*
			from
				DATA.TVALS T
			where
				T.MOD_ID = ?
		)SQL";
		if (nameFilter) {
			sql += R"SQL(
			and T.NAME = ?
			)SQL";
		}

		auto statement = connection.prepare_statement(sql);
		mysql::results results;
		if (nameFilter) {
			connection.execute_statement(statement, std::make_tuple(modId, *nameFilter), results);
		}
		else {
			connection.execute_statement(statement, std::make_tuple(modId), results);
		}
		return results;
	}

So the problem I'm running into is the handling of this filter: in order to execute the statement with the name filter, I have to construct an entirely new tuple, appending the appropriate parameters as needed.
This gets especially more complicated if, for example, my SQL has multiple conditions to filter on, which might or might not be present. Consider this function header:
	mysql::results getReferenceLookup(
		mysql::tcp_ssl_connection& session,
		int64_t modId,
		std::optional<std::string_view> ownerNameFilter = {},
		std::optional<std::string_view> effectReferenceFilter = {},
		std::optional<std::string_view> sortColumn = {}
	)

In order to handle this case, I'll need to write eight unique cases, one for each of the permutations of which filters are or aren't present on the query. This is what that code currently looks like, which is obviously undesirable.
		auto statement = connection.prepare_statement(sql);
		mysql::results results;
		if (ownerNameFilter) {
			if (effectReferenceFilter) {
				if (sortColumn) {
					connection.execute_statement(statement, std::make_tuple(modId, *ownerNameFilter, *effectReferenceFilter, *sortColumn), results);
				}
				else {
					connection.execute_statement(statement, std::make_tuple(modId, *ownerNameFilter, *effectReferenceFilter), results);
				}
			}
			else {
				if (sortColumn) {
					connection.execute_statement(statement, std::make_tuple(modId, *ownerNameFilter, *sortColumn), results);
				}
				else {
					connection.execute_statement(statement, std::make_tuple(modId, *ownerNameFilter), results);
				}
			}
		}
		else {
			if (effectReferenceFilter) {
				if (sortColumn) {
					connection.execute_statement(statement, std::make_tuple(modId, *effectReferenceFilter, *sortColumn), results);
				}
				else {
					connection.execute_statement(statement, std::make_tuple(modId, *effectReferenceFilter), results);
				}
			}
			else {
				if (sortColumn) {
					connection.execute_statement(statement, std::make_tuple(modId, *sortColumn), results);
				}
				else {
					connection.execute_statement(statement, std::make_tuple(modId), results);
				}
			}
		}
		return results;

What I would like is instead to have some kind of syntax using a parameter_pack or similar construct that would allow me to dynamically assign parameters, like so:
	mysql::results getLookup(
		mysql::tcp_ssl_connection& connection,
		int64_t modId,
		std::optional<std::string_view> nameFilter = {}
	) {
		std::string sql = R"SQL(
			select
				T.*
			from
				DATA.TVALS T
			where
				T.MOD_ID = ?
		)SQL";
		mysql::proposed::parameter_pack parameters; //vector-like
		parameters.push_back(modId);
		if (nameFilter) {
			sql += R"SQL(
			and T.NAME = ?
			)SQL";
			parameters.push_back(*nameFilter);
		}

		auto statement = connection.prepare_statement(sql);
		mysql::results results;
		connection.execute_statement(statement, parameterPack, results);
		return results;
	}

Hi @Xirema,
What you're looking for is the iterator overload of prepared statement execution. This is available in Boost 1.82, but it's experimental and not mentioned (yet) in the discussion, only in the reference.
This version of statement execution is only available as a multi-function operation (yet, see #111). This means that, instead of calling connection::execute_statement, you must use connection::start_statement_execution and then read rows with connection::read_some_rows. Please read this section on multi-function operations before proceeding, since they are slightly more complex than plain execute_statement.
Some example code:
void getLookup(
	mysql::tcp_ssl_connection& connection,
	int64_t modId,
	std::optional<std::string_view> nameFilter = {}
) {
	std::string sql = R"SQL(
		select
			T.*
		from
			DATA.TVALS T
		where
			T.MOD_ID = ?
	)SQL";
	std::vector<mysql::field_view> parameters;
	parameters.emplace_back(modId);
	if (nameFilter) {
		sql += R"SQL(
		and T.NAME = ?
		)SQL";
		parameters.emplace_back(*nameFilter);
	}

	auto statement = connection.prepare_statement(sql);
	mysql::execution_state st;
	connection.start_statement_execution(statement, parameterPack, st);
	while (!st.complete())
	{
		mysql::rows_view batch = connection.read_some_rows(st);
		// Use batch
	}
}

Some notes:

batch points into the connection's network buffer, once you call read_some_rows again, it will dangle. You can take ownership of it using mysql::rows. You can't, however, append to rows.
Once you call start_statement_execution, you must read all rows until they run out. Otherwise, you will get packet mismatches and bad things will happen.

We expect #111 to go into Boost 1.83.
Cheers,
Ruben.

Hi @Xirema,
What implementation path did you finally choose?
Regards,
Ruben.

@anarthal
So for the purposes of getting my code reasonable to maintain, I ended up just converting code over to use the start_statement_execution. There are a few "workarounds" I ended up having to use to keep the code clean, though.
	using Results = std::vector<mysql::row>;
	Results getResults(
		mysql::tcp_ssl_connection& connection,
		mysql::execution_state& state
	) {
		Results results;
		while (!state.complete()) {
			auto rows = connection.read_some_rows(state);
			for (auto const& row : rows) {
				results.emplace_back(row);
			}
		}
		return results;
	}

	Results getReferenceLookup(
		mysql::tcp_ssl_connection& connection,
		int64_t modId,
		std::optional<std::string_view> ownerNameFilter = {},
		std::optional<std::string_view> effectReferenceFilter = {},
		std::optional<std::string_view> sortColumn = {}
	) {
		std::string sql = R"SQL(
			select
				T.*
			from
				DATA.REFERENCETABLE T
			where
				T.MOD_ID = ?
		)SQL";
		ParameterPack parameters;
		parameters.emplace_back(modId);
		if (ownerNameFilter) {
			sql += R"SQL(
			and T.REFERENCECOLUMN = ?
			)SQL";
			parameters.emplace_back(*ownerNameFilter);
		}
		if (effectReferenceFilter) {
			sql += R"SQL(
			and T.EFFECT_TYPE = ?
			)SQL";
			parameters.emplace_back(*effectReferenceFilter);
		}
		if (sortColumn) {
			sql += R"SQL(
			order by SORTCOLUMN asc
			)SQL";
		}

		auto statement = connection.prepare_statement(sql);
		auto parametersView = asView(parameters);
		mysql::execution_state state;
		connection.start_statement_execution(
			statement,
			parametersView.begin(),
			parametersView.end(),
			state
		);

		return getResults(connection, state);
	}

So the multi-function operation worked. However, it does expose that it would be really nice if we, as users of the library, could mutate the mysql::results object ourselves, since I wasn't able to find a way to create the object myself by filling it with results from the multi-function operation, and I ended up resorting to just simulating it with a vector.
And naturally, I agree with the suggestion in #111 that an overload of execute_statement that just takes the iterators would also be valuable.

Hi @Xirema,
You don't need the asView function - start_statement_execution should be able to work with a range of fields, too.
I can confirm that #111 will go into Boost 1.83, which should make your code much cleaner. I will close this issue.
Kind regards,
Ruben.

Alternatively, you may rewrite your query and use the following:
	mysql::results getReferenceLookup(
		mysql::tcp_ssl_connection& connection,
		int64_t modId,
		std::optional<std::string_view> ownerNameFilter = {},
		std::optional<std::string_view> effectReferenceFilter = {}
	) {
		const char* sql = R"SQL(
			SELECT T.*
			FROM DATA.REFERENCETABLE T
			WHERE T.MOD_ID = ?
			AND ISNULL(?) OR T.REFERENCECOLUMN = ?
			AND ISNULL(?) OR T.EFFECT_TYPE = ?
		)SQL";
		mysql::results result;
		auto stmt = conn.prepare_statement(sql);
		mysql::field_view ownerName = ownerNameFilter ? mysql::field_view(*ownerNameFilter) : mysql::field_view(nullptr);
		mysql::field_view effectReference = effectReferenceFilter ? mysql::field_view(*effectReferenceFilter) : mysql::field_view(nullptr);
		connection.execute_statement(
			stmt,
			std::make_tuple(modId, ownerName, ownerName, effectReference, effectReference)
			result
		);
		return result;
	}

You may want to do some more clever logic with IF in the SELECT clause, but bear in mind that this will likely inhibit the use of indexes.


RnR qlateral files and new qlaterals are incompatible.

Dig deeper into this difference in the qlateral files -- is there an intentional difference between the output from the RnR method and the files we are receiving from the later model runs?
The except statement works with the more current files. The try statement works with the RnR output -- it fails quickly on a type mismatch, so it is not causing a significant performance issue.
Originally posted by @jameshalgren in https://github.com/NOAA-OWP/t-route/pull/258#r584912652

My RnR file is way out of date do we have another that is working?

should be closed with PR #273


[FTUX] Boot2Docker needs to update the docker client binary (and maybe itself too)

@SvenDowideit
A first-time user experience (FTUX).  They type-in the "ambitious ubuntu" line suggested by the "hello-world" image and get the following "flag provided but not defined":
Is this the expected behavior?

Sorry, this repository is long-since deprecated in favor of Docker Toolbox (whose usage is now also discouraged in favor of Docker for Windows and Docker for Mac).


streaming: limit ingestion rate in rearranged chain

Maybe we will need to employ techniques similar to https://github.com/singularity-data/risingwave/pull/2661 or wait for concurrent checkpoint, so that data in one epoch can be bound.
Originally posted by @skyzh in https://github.com/singularity-data/risingwave/pull/2700#discussion_r879029398

Close in favor of (and as duplicated with) #5790.


Stop at first LDAP match when distinguished name is not required

@findepi ac

Would it be possible to have a multiple groups in tests?

Fixes: https://github.com/prestosql/presto/issues/2980


Allow ignoring errors using code comments

Like most linters, it would be very useful being able to ignore a certain type of error for a particular function/class/module.
With documentation linting is harder to achieve, as annotating docstrings
Darglint allowed this but by annotating the docstrings, but that is not a good option, as the annotations will show up then in the help, which is unhelpful and confusing to users.
The flexibility of the scheme # noqa: <error> <argument> is very useful though. For example, to only ignore the checking of one argument, one can do:
def a_bound_function(self, arg1):
  """Do something interesting.

  Args:
    arg1: The first argument.

  # noqa: DAR101 arg1
  """

Or to ignore only one type of exception in Raises:
def always_raises_exception(x):
    """Raise a zero division error or type error.o

    Args:
      x: The argument which could be a number or could not be.

    Raises:
      ZeroDivisionError: If x is a number.  # noqa: DAR402
      TypeError: If x is not a number.  # noqa: DAR402

    """
    x / 0

I suggest, if possible, adding the # noqa: comments directly in the code, for the above examples:
def a_bound_function(self,
    arg1 # noqa: DAR101
):
  """Do something interesting.

  Args:
    arg1: The first argument.
  """

def always_raises_exception(x):  # noqa: DAR402 ZeroDivisionError TypeError
    """Raise a zero division error or type error.o

    Args:
      x: The argument which could be a number or could not be.

    Raises:
      ZeroDivisionError: If x is a number.
      TypeError: If x is not a number.

    """
    x / 0

Using the equivalent codes from pydoclint, of course.

Hi @llucax ,
pydoclint can do function-level violation omission in the flake8 mode.
For example,
def myFunc(  # noqa: DOC101, DOC103
        arg1: int,
        arg2: str,
) -> None:
    """
    Do something

    Parameters
    ----------
    arg1 : float
        Arg 1
    """
    pass

The # noqa comment needs to be put on the line where the function name (myFunc) is.
But # noqa only takes effect if you run it via flake8 myFile.py, not when you run it via pydoclint myFile.py.
I mentioned in this part of README that "noqa" omission in the native mode may be added if there are demands for it.

That said, I don't think per-argument omission is feasible in pydoclint's current architecture.  This is because when pydoclint uses ast to parse a function, the whole function signature (such as def funcName(arg1: int, arg2: str, ...) -> None) is parsed together, regardless of any line breaks.
I also checked the parsed node, and I could not find any trace of # noqa comments when they are put after a particular argument.
If we want to parse per-argument # noqa, we might need to write a custom code parser.  And as a result, we may end up with as slow a speed as Darglint?

Hi @jsh9,
I see, thanks for the detailed explanation and sorry for not noticing the flake8 mode, we are not using flake8 for the moment and never dived into the flake8 world yet, but maybe I'll do it in the future. I think it would also be very helpful to include an example about how to add # noqa, as there is no explicit mention to it, nor to the limitations on where should it be put.
I think astroid, the parser used by pyint, can also gather the information at this level, but pylint is also very slow, not sure if it's because of the parser or something else.
Is there any way to add "arguments" to the noqa in flake8 mode, so at least we could select which exceptions to ignore? As I don't really want to stop checking for all exceptions, only a few ones that are raised by functions called inside the body.
As a very hacky solution I could also do:
def always_raises_exception(x):
    """Raise a zero division error or type error.o

    Args:
      x: The argument which could be a number or could not be.

    Raises:
      ZeroDivisionError: If x is a number.  # noqa: DAR402
      TypeError: If x is not a number.  # noqa: DAR402

    """
    x / 0
    # pylint: disable=unreachable
    raise ZeroDivisionError()  # type:ignore
    raise TypeError()  # type: ignore

But it is quite nasty. I think being able to ignore certain type of exceptions in the check is super important, because as shown in the code above, even python operators can raise exceptions, what would be the alternative, wrap the division in a try/except block and create a new ZeroDivisionError()?
If I do this:
    try:
        return x / 0
    except ZeroDivisionError:
        raise

Then pylint complains about having an except block that just re-raises, which is completely unnecessary, so it is a valid complain :)
Then I have to do this, which is even more verbose:
    try:
        return 2 / divisor
    except ZeroDivisionError as exc:
        raise ZeroDivisionError("Cannot divide by zero.") from exc

And also adds unnecessary runtime costs, as I'm creating new objects, and makes the stack trace harder to read, as I have 2 ZeroDivisionErrors for no reason.
I don't think this feature is complete without being able to ignore specific exceptions.

If you'd like to ignore DOC104 and DOC201 in a function, you can simply do this:
def myFunc(...):  # noqa: DOC104, DOC201
    ....

Is this the granularity that you are looking for?

Is this the granularity that you are looking for?

No, I meant being able to ignore certain exception types for DOC502, so being able to say something like:
def raises_exceptions(x): # noqa: DOC502(ZeroDivisionError, TypeError)
    """Raise a zero division error or type error.o

    Args:
      x: The argument which could be a number or could not be.

    Raises:
      ZeroDivisionError: If x is a number.
      TypeError: If x is not a number.
      WeirdException: blah.
    """
    if x:
        x / 0
    else:
        raise MyException()

So this should complain about MyException not being documented, about WeirdException not being raised and nothing else (so ZeroDivisionError, TypeError should not trigger an error because they are declared to be ignored).
I guess the broad disabling of the whole check is not that bad, but it would be very nice to still catch mistakes even if there are some exceptions that are raised indirectly.

Also, I added a section in the documentation on how to ignore certain violation codes: https://github.com/jsh9/pydoclint/commit/8e0cccee875d91f3734923f40b0a6dfbc46965fe

Thanks!

Hi @llucax , what you are looking for (# noqa: DOC502(ZeroDivisionError, TypeError), DOC501(AssertError)) may be doable, but it might really slow down pydoclint significantly.
I'll label this as "may tackle in the future" and close this issue for now.
But if you have any additional questions or comments, please feel free to add them below.  Of if you'd like to re-open it for another reason, please feel free to do so.
Thanks!

Fair enough.

Hi @jsh9, sorry to comment on this closed issue, but maybe this info will change the perception about it and maybe consider reopening.
I just tried using flake8 to run pydoclint so I can use the ignore rules. Running with flake8 is not really Slightly slower as stated in the readme:
Running on https://github.com/frequenz-floss/frequenz-sdk-python/:
$ time flake8 --select=DOC src
...
real    0m10.562s
user    1m1.794s
sys     0m0.530s
$ time pydoclint src
...
real    0m0.189s
user    0m0.156s
sys     0m0.033s

flake8 is 2 orders of magnitude (100x) slower than running directly :exclamation: :exploding_head:
It is still an improvement over darglint for sure, but still this information might help considering reopening this issue (and maybe updating the README to be more accurate about the differences between running as a flake8 plugin or not).

Hi @llucax , I pulled frequenz-sdk-python (the latest on the main branch: https://github.com/frequenz-floss/frequenz-sdk-python/commit/1186f6ff7539158c0a91f8a6401bf5d30af2eae3) and tested it myself:
flake8 --select=DOC src  1.80s user 0.24s system 462% cpu 0.441 total
pydoclint src  0.11s user 0.02s system 96% cpu 0.132 total

(somehow I didn't get the nice formatting that you had.  I'm using macOS with zsh.)
There is still a big difference between running with flake8 and with native pydoclint, but somehow not as drastic as on your computer/environment.
I'm curious what flake8 version do you have on your end?  Mine is 6.0.0.

(somehow I didn't get the nice formatting that you had. I'm using macOS with zsh.)

I guess you are referring to the markdown formatting in his comment.
That can be done by writing
```console
$ command
output
```


Rails backend

**In this pull request: **
I created a new Rails API app called 'hello-rails-back-end'.
I initialized my project with Git.
I made sure that your project has a Postgres database set up.
I created a table for storing your messages and created 5 different greetings.
I created an API endpoint that selects a random greeting from your table (you will need a controller with an action and rails route).
Link to Hello-React Front-End App Click here

I added rack-cors gem and ran bundle install in the terminal.
Also, the screenshot is below:


Include a fresh build in an npm bundle

npm allows us to include a fresh build in every uploaded version of the package. Without checking in the built files.
We all know that built files in the repo are a nuisance.
Fixes #244

:checkered_flag:
Run npm pack to test this out by simulating an npm publish.

Coverage remained the same at 97.5% when pulling 95d2e308d12e6998e769508ba86868aac7b1f44b on tomekwi:fresh-build into 88534bbd34c5befbd1689fc71e2373c9145a9807 on Matt-Esch:master.

I didn’t realize I should have updated your npm run dist as well – so that it works in a freshly checked-out repo. @Matt-Esch @Raynos should improve anything else yet?

:checkered_flag:

Coverage remained the same at 97.5% when pulling 17e4f6a75b696e201fab1c7774dbb164ea1b46d8 on tomekwi:fresh-build into 88534bbd34c5befbd1689fc71e2373c9145a9807 on Matt-Esch:master.

Coverage remained the same at 97.5% when pulling a79627c13012832c660c3c22e2a131bc2a24da0d on tomekwi:fresh-build into 88534bbd34c5befbd1689fc71e2373c9145a9807 on Matt-Esch:master.

For reference, I don't think it's worth supporting windows as a build platform

@Zolmeister now windows support should be there anyway :) At least in npm run dist and therefore npm publish. I haven’t tested this on an actual box, but nothing is platform-specific there.

@Matt-Esch @neonstalwart I’ve rebased it into 3 commits, to get rid of the mess. Is this good to go?

Closing to remove clutter 🙂
Feel free to open if you think this is mergeable.


test: add check for rabbitmq init in CI

Description
This PR adds check for RabbitMQ initialisation in CI part for integration tests.
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[x] Refactor/improvement

How Has This Been Tested?
Running script locally on local env.
Checklist

[x] My commit message is conventional
[x] I have run pre-commit on all files before creating the PR
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[x] I have checked my code and corrected any misspellings

Codecov Report

Merging #428 (7cf4981) into develop (f54d9c4) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #428   +/-   ##
========================================
  Coverage    87.00%   87.00%
========================================
  Files           23       23
  Lines         1400     1400
========================================
  Hits          1218     1218
  Misses         182      182

Continue to review full report at Codecov.

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


Add Git info to per-page template

Add a per-page footer element to show the last modification date and link to the commit that did it
To disable this, set a page's frontmatter variable showcommit to false.
/assign @chenopis
/assign @steveperry-53

This looks funny on pages with really wide TOCs like https://5b356612c6aed61270e392a3--kubernetes-io-master-staging.netlify.com/docs/imported/release/. I think maybe it is a layout problem with those pages and not with this.

Can there also be a link to full page history?

You can get to that fairly easily now (if you click the Edit button, you get a choice to view the page source instead). But I can consider it.

@techtonik it was pretty trivial so I added it.

I'm noticing there's no netlify preview for this PR. This may indicate a larger issue with Netlify for the repo.

@zacharysarah There is a problem with Netlify, that it is not currently populating in the Tests section. However, Netlify is leaving a comment with a link to the preview. The problem is unrelated to this PR.

/approve
/lgtm


Website/tutorials for GAMBLR.viz

The website is now available and tutorials are all there
https://morinlab.github.io/GAMBLR.viz/


Fixed typo in engine.go

Small fix for typo in engine.go

lgtm

LGTM

Thank you very much for the valuable update @derekmwright!


Refactor and fix archive link bug (#30535)

Backport #30535 by @wxiaoguang
Regression of #29920
Fixes: https://github.com/go-gitea/gitea/issues/30569
Also this is a rewriting to eliminate the remaining jQuery usages from code.

@wxiaoguang seems we are missing applyElemsCallback on this branch.

I won't spend time on backporting, the 1.22 branch is broken in my mind.

I replaced applyElemsCallback with querySelectorAll, will test later.

Fixed and tested


Set up sphinx docs

Docs are fully set up and looking rather pleasant if I do say so myself 😜 This one will probably require a quick Zoom for me to explain how to make sphinx run on your laptop and whatnot - let me know. Some previews of what it looks like:

This closes #18

Lol just 5200 lines of code added, nothing to see here


the enter key on /sign-up page does not  submit the forms.

Behavior
When typing the sign-up form the use of the enter key only shows the password in password fields, or does nothing in the other fields instead of submit the form as the default.
Desired
The enter key when used when filling out the form should submit the form.
How to reproduce
To reproduce this error, you must go to the /sign-up page, fill in all the required fields, and try to submit by pressing the enter key.

The same on /sign-in page

Yup, i agree, i think that i already created ticket to improve sign-up / sign-in forms accessibility, but we had bigger priorities :)


support gzip

Coverage increased (+0.01%) to 94.4% when pulling ab110c0742422c174e1a02810b0e9993902bac10 on Kikobeats:master into 83f7addbd2d89cd4d1768e1556e865e3aef63b35 on watson-developer-cloud:master.

Thanks for the pull request. Did you check that the service is returning the data compressed?
I think we are not supporting compression in our services yet.

You're right, nothing about gzip support in the headers of the API server... any plan for this? :_(

Compression support is something we are working on. I will keep this open and merge it once our servers support it.
Thanks

Almost a year @Kikobeats :see_no_evil:

Officially is supported? 🎉🎉

It's not supported yet but we are close


Minor edits of Grover tutorial

@nonhermitian , should the session be manually closed?  I know it'll close on its own, but in other places we're closing it so it doesn't waste time waiting to time out.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 72.645%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2584

Relevant Lines:
3557

💛  - Coveralls

There is no session here as it is a single job.  Thus we do not have to worry about the session logic in this notebook.

There is no session here as it is a single job. Thus we do not have to worry about the session logic in this notebook.

Oh, I see.  Then the lines like "real_sampler = Sampler(session=backend)" aren't actually starting a session?  I didn't see the context manager, but thought it was just another way to instantiate a session :)

So to date it has made an implicit session, but also one the user does not have access to.   But that brings up a good point, in V0.11 I think one is allowed to just write estimator = Estimator(backend), and an internal session is no longer created.  I will let @jyu00 validate that statement, but if true, we (me really) should go in and make that change.


add CMake syntax highlighting

as above ^

We don't want to own any grammars in the VS Code. Instead, we always import them from a grammar repo that is actively maintained by someone in the community
There's a popular extension https://marketplace.visualstudio.com/items?itemName=twxs.cmake that adds syntax highlighting for CMake. It depends on the grammar from https://github.com/zyxar/Sublime-CMakeLists

what are the pros/cons of each grammar?
is your actively grammar maintained?

There is no actively maintained CMake grammar repository, and unfortunately I will not be maintaining one. I should probably contribute to the original textmate repository with cmake grammar and then try here (I will not).
The grammar is converted from https://github.com/textmate/cmake.tmbundle (last updated in 2015) and improved by support for block comments, simple highlighting for generator expressions and updated list of available commands. I can provide screenshot showing some differences between this and twxs's extension.
I think that this PR is good starting point to further development and it is better to have this, more up-to-date, than outdated (last updated in 2017) third-party extension just for syntax highlighting. Thank you for your time.

twxs's extension / this PR

Thanks for the reply. As said, for us it's crucial to rely on a maintained grammar. We don't have the expertise with CMake. It's better done in an extension.


app router structure support

@ruucm thank you! I pulled your commit over into #57 and applied formatting


Make the module actually work on OpenBSD

Hi,
this is a multiple things in one request:

metadata.json requires to have "dependencies", without it, following error
shows up, when trying to make use of the module:
Info: Loading facts
Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::openvpn for galen.l00-bugdead-prods.de at line 1:1 on node galen.l00-bugdead-prods.de
Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::openvpn for galen.l00-bugdead-prods.de at line 1:1 on node galen.l00-bugdead-prods.de

add some more versions of OpenBSD support

enhance to support some more variables:
the openvpn user, and group (make it os dependent, nobody as default on non-openbsd, otherwise _openbsd)
and allow to configure the ta.key for tls auth

service management only when $manage_service is true, and then add order between the config file and the service

openbsd -> OpenBSD in params.conf to actually match the operatingsystem
and further tweak OS defaults for old and newer variables

let me know if there are issues with it

Oh excellent!  Thanks for the PR.  I'll put it on my list to get some spec tests going for the supported platforms.


fix: util.Namespace follows Attribute protocol so inspect/pytest/et al work again

I make use of signxml for SAML XML verification.
I recently tried to make pytest validate all my doctests, however due to util.Namespace not following the Attribute protocol (i.e. an override of __getattr__) -- on missing attributes, one should always raise AttributeError as that allows any introspection via the inspect module to "Just Work".
I was able to diagnose that the error was identical to https://github.com/pytest-dev/pytest/issues/5080 and that a remediation was simply catching KeyError and re-raising as AttributeError.

Thanks, will release shortly.


server: Add unit tests from Diffblue Deeptest

The test cases contained in this PR were automatically generated by Diffblue's Deeptest software.
Diffblue is an Oxford-based start-up that aims to automate traditional coding tasks to increase developer productivity. One of our missions is to provide useful tests to open source projects. In return, we would appreciate your feedback about our tests to help us further improve our tool.
These tests are part of a batch of 2467 in total, providing an increase of 15.84% in line coverage. We would be happy to provide the remaining tests via a subsequent PR.
Results for various open source projects can be viewed at:
http://diff.blue/demo
We welcome any feedback you have on these tests.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Signed Corporate CLA pdf was sent by email from<EMAIL_ADDRESS>to<EMAIL_ADDRESS>on 22 Oct 2018.


How to fetch logged in user?

Hey @kronthto,
Thanks for making this awesome package!
I wanted to ask how do I get the currently logged in user. I followed the README instructions and do have the OAuth flow working and everything is being stored in the session as expected, but it's not clear to me how to get the currently logged in user.
Auth::user() returns null, how am I supposed to get the user?

I seem to have gotten it working by putting the oauth2 driver on my web guard by doing this:
// config/auth.php
'guards' => [
    'web' => [
        'driver' => 'oauth2',
    ],
],

My Laravel is a bit rusty, does that seem like the right way to do it? Because I see the README it says to do it like so:
  'oauth2' => [
    'driver' => 'oauth2', // Config: oauth2login.auth_driver_key
  ]

Hi,
As you have noticed, by default you won't get the User via Auth / auth(). You can always access the "Resource-Owner" object returned by your OAuth-Server (IP) from the Request attributes though, it is injected there: $request->attributes->get(config('oauth2login.resource_owner_attribute'))
Or, as you have read in the Readme, setup the guard, so you can utilize Auth. What you did works, but you assigned the oauth2 driver directly to the web guard. That's not necessarily bad.
I however prefered to define a custom guard oauth2 using that driver, and then use that guard when needed (Auth::guard('oauth2')->user()) or make it the default guard. My config:
    'defaults' => [
        'guard' => 'oauth2',
        // ...
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        // ...
        'oauth2' => [
            'driver' => 'oauth2',
        ],
    ],

Merry Christmas!

Thanks a lot once again @kronthto for your help and this package (it's been a major time saver)!


Fails loading *.so from docker container on raspberry pi

Hi,
I am using this library (actually jnr-unixsocket) to create a dbus connection in a docker container.
It works outside of a docker container, while fails in it with:
(UPDATE) It seems not to work in the host system and neither in the container
java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: /usr/src/app/tmp/jffi2917909324910245781.so: /usr/src/app/tmp/jffi2917909324910245781.so: cannot open shared object file: No such file or directory

Inspecting the container fs I find the library. I tried changing the java.io.tmpdir but no luck and also set 777 to avoid any permission error.
Relevant sources are here for reference

https://github.com/Agile-IoT/agile-core/blob/dbus3/Dockerfile
https://github.com/Agile-IoT/agile-core/blob/dbus3/scripts/start.sh

Do you have any suggestion?
I would be glad to help testing if needed.
Thanks
UPDATE2: Related to #30

After more digging this is the error I get
... /arm-Linux/libjffi-1.2.so: invalid ELF header (Possible cause: endianness mismatch)

Found a solution, reporting the steps here

build jffi from a PI, I was expecting it to be cross-built but was not the case
unzip unzip archive/jffi-arm-Linux.jar and mv jni <your-path>
`java -jar <app.jar> -Djava.library.path=""

Would make sense to add to the documentation?

It would be best if we just added the built JAR. NB: jnr-constants would also need to be updated, if you're using that project.
@headius @tduehr Do either of you have a Raspberry Pi to build on?

I do but it's one of the first gen and I don't have it setup currently. I might be able to get my hands on a 2nd gen as well but I don't exactly know when I can get to it. If there's a qemu config to emulate one, that'd be easiest for me.

this may not be entirely relevant, but I've run into the same problem on my tinkerboard using openjdk to run logstash - same architecture, different distribution (armbian). I ensured that I had the following os packages installed, and that seemed to clear it up:
default-jdk-headless
default-jre-headless
libjnr-ffi-java
libjffi-java
libjffi-jni
libasm-java
libjnr-x86asm-java

you might need to do the same if dockerizing for armv7l


Can't find module @lancedb/lancedb-win32-x64-msvc

Describe the bug

To Reproduce
clone the repository, run npm install, then Run Extension
Desktop:

OS: Windows11

Additional context
In Commit 62e5c2a, @lancedb/lancedb-win32-x64-msvc and many other modules are removed from package-lock.json. And I'm not sure about the cause and the potential impact it may have.

https://github.com/twinnydotdev/twinny/commit/62e5c2adfd119da883b701c840a5dfdb90973fc2#diff-053150b640a7ce75eff69d1a22cae7f0f94ad64ce9a855db544dda0929316519L2330

Thanks for the report, I reverted the change to the package-lock.json file, hopefully it will be resolved now.


DBZ-1181 - Process WAL2JSON Events with Empty Changes

https://issues.jboss.org/browse/DBZ-1181
PR to add support to the process events from wal2json that have no changes in them. Logic has been added for both streaming and non-streaming versions.

@taylor-rolison Hi, thanks for the work. I am thinking about a slightly easier approach. io.debezium.connector.postgresql.RecordsStreamProducer.process(ReplicationMessage, Long, BlockingConsumer<ChangeEvent>) gurads against empty message at the beginning.
Maybe it would make sense to generate the heartbeat when the incoming message is null and just send the null to the process message in case WAL message is empty?
If this is viable approache we might change the message to type Optional<ReplicationMessage> to better express the intent.

@taylor-rolison Hi, thanks for the work. I am thinking about a slightly easier approach. io.debezium.connector.postgresql.RecordsStreamProducer.process(ReplicationMessage, Long, BlockingConsumer<ChangeEvent>) gurads against empty message at the beginning.
Maybe it would make sense to generate the heartbeat when the incoming message is null and just send the null to the process message in case WAL message is empty?
If this is viable approache we might change the message to type Optional<ReplicationMessage> to better express the intent.

@jpechane, do you mean that I should fire a heartbeat in that null check at the top of RecordsStreamProducer.process? The only issue with that is that the heartbeat requires the SourceInfo to be updated and the lastCompletelyProcessedLsn needs to be set too (I think). Basically I end up duplicating code that is below that null check and I still have to deal with the tableId being null etc.

I'm wondering why any changes are needed at all actually. Won't the empty event just be handled already, by ignoring the block in if (tableSchema != null) { ... } but by sending the heartbeat at the end of process()?

I'm wondering why any changes are needed at all actually. Won't the empty event just be handled already, by ignoring the block in if (tableSchema != null) { ... } but by sending the heartbeat at the end of process()?

@gunnarmorling, the problem is that the logic for:
TableId tableId = PostgresSchema.parse(message.getTable());
TableSchema tableSchema = tableSchemaFor(tableId);
errors out if the changes are empty. I could add another check to the original "if (tableSchema != null)" block to avoid adding the EMPTY type etc. but I wanted to be more explicit about what is happening by having a message type and having debug code.
Ultimately I don't have a really strong opinion on how any of the code should be structured. I'm not really a Java programmer, I'm just trying to resolve the performance issue I am seeing in my project that is using this connector. I am totally on board with making whatever changes you all want, so please let me know if you want me to rewrite something in a specific way.

errors out if the changes are empty

So what does this mean exactly? Is message null in this case, resulting in a NullPointerException?

@jpechane and @gunnarmorling, sorry the original PR got a little messy and over complicated. I followed Jiri's advice and refactored things to just pass in the null and do the heartbeat then. I was going to use an Optional but decided against it because I got a linter warning about Optional not being intended for parameters and that it is not serializable etc.

@taylor-rolison I think it is much better know, thanks! I've just lest a couple of comments regarding formatting and small improvements, other than that I think it is done

Squashed and applied. Thanks a lot, @taylor-rolison!


HTTP: HttpObjectDecoder must not use HTTPMessage once it is passed to…

… the next handler in the ChannelPipeline.
Motivation:
We continued to use the previous generated HttpMessage even after we passed it to the next handler. This is problematic as the HttpMessage might be modified by other handlers.
Modifications:

Don't use the HttpMessage after it was passed to the next handler.
Add unit test

Result:
Fixes https://github.com/netty/netty/issues/13816

Does it make sense to always null out the message field after we've sent it down the pipe in all places? Your change does that now when it uses invalidMessage(..). That would make it impossible to do the wrong thing in future changes.

good point... done!


Seg fault in SLL_Pop on x86_64 arch

Hi,
I am trying to integrate libtcmalloc.so with our application on x86_64 arch.
Our application uses third party library APIs from confd (from tailf/cisco) which looks to use erl_malloc() internally.
I have built tcmalloc.so locally with options mentioned in README
However, I am seeing below segmentation fault:
#0  SLL_Pop (size=16) at src/linked_list.h:59
Program terminated with signal 11, Segmentation fault.
59   *list = SLL_Next(*list);
#0  SLL_Pop (size=16) at src/linked_list.h:59
#1  Pop (size=16) at src/thread_cache.h:212
#2  Allocate (size=16) at src/thread_cache.h:371
#3  do_malloc_small (size=16) at src/tcmalloc.cc:1193
#4  do_malloc (size=16) at src/tcmalloc.cc:1200
#5  do_malloc_or_cpp_alloc (size=16) at src/tcmalloc.cc:1219
#6  tc_malloc (size=16) at src/tcmalloc.cc:1603
#7  0x0000000001e42e25 in erl_malloc ()
#8  0x0000000001e417d1 in erl_mk_tuple ()
#9  0x0000000001e2bd0c in tag_val_to_term ()
#10 0x0000000001e2be5c in tag_vals_to_termlist ()
#11 0x0000000001e30559 in confd_notification_send ()
Please suggest a workaroud or ways to fix it?
Let me know if you need more details from my side.
Regards,
Vasudev.

On Tue, Nov 15, 2016 at 5:52 AM, vasuvb<EMAIL_ADDRESS>wrote:

Hi,
I am trying to integrate libtcmalloc.so with our application on x86_64
arch.
Our application uses third party library APIs from confd (from
tailf/cisco) which looks to use erl_malloc() internally.
I have built tcmalloc.so locally with options mentioned in README
However, I am seeing below segmentation fault:
#0 SLL_Pop (size=16) at src/linked_list.h:59
Program terminated with signal 11, Segmentation fault.
59 *list = SLL_Next(*list);
#0 SLL_Pop (size=16) at src/linked_list.h:59
#1 https://github.com/gperftools/gperftools/issues/1 Pop (size=16) at
src/thread_cache.h:212
#2 https://github.com/gperftools/gperftools/pull/2 Allocate (size=16)
at src/thread_cache.h:371
#3 https://github.com/gperftools/gperftools/issues/3 do_malloc_small
(size=16) at src/tcmalloc.cc:1193
#4 https://github.com/gperftools/gperftools/issues/4 do_malloc
(size=16) at src/tcmalloc.cc:1200
#5 https://github.com/gperftools/gperftools/issues/5
do_malloc_or_cpp_alloc (size=16) at src/tcmalloc.cc:1219
#6 https://github.com/gperftools/gperftools/issues/6 tc_malloc
(size=16) at src/tcmalloc.cc:1603
#7 https://github.com/gperftools/gperftools/issues/7 0x0000000001e42e25
in erl_malloc ()
#8 https://github.com/gperftools/gperftools/issues/8 0x0000000001e417d1
in erl_mk_tuple ()
#9 https://github.com/gperftools/gperftools/issues/9 0x0000000001e2bd0c
in tag_val_to_term ()
#10 https://github.com/gperftools/gperftools/issues/10
0x0000000001e2be5c in tag_vals_to_termlist ()
#11 https://github.com/gperftools/gperftools/issues/11
0x0000000001e30559 in confd_notification_send ()
Please suggest a workaroud or ways to fix it?
Let me know if you need more details from my side.

This looks like some memory corruption problem in your program or erlang
runtime (it is erlang right?). Try running it with some kind of sanitizer
(e.g. asan).
Regards,

Vasudev.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gperftools/gperftools/issues/843, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAA6AhjJQDTnmECKVPDf8ktE28eLG-X3ks5q-bk7gaJpZM4KyjII
.

Thanks for your response.
Yes it is erlang. Confd internally use it.
May be wrong but I am suspecting erl_malloc(). How it is different than glibc malloc()?
How tcmalloc handles different version of malloc() than std glibc malloc()?
I have observed total 4 instances of same crash from 4 different confd apis.
Just a thought, in all the four instances size is 16 and it is pointing same line SLL_Pop()
How to run it with asan? Could you please provide sample steps or some link?
Thanks and regards,
Vasudev.

Thanks for reporting it. It ended up being symbol interposition issue. Erlang has sys_alloc symbol and tcmalloc has sys_alloc symbol. And their definition and purpose are totally different, but because erlang's symbols are ahead of other's in symbol resolution order, tcmalloc tries to write to sys_alloc's symbol address (which is likely just function) and crashes.
We'll eventually get -fvisibility=hidden and start controlling our exported symbols more carefully, but for now I am renaming this symbol to tcmalloc_sys_alloc and that fixes interop issue with erlang.

More specifically, it used to be the case that LD_PRELOAD-ing tcmalloc to erlang runtime crashed it. But it is now fixed.
It is most likely same issue as your's, but since your symptoms look slightly different, there is chance that I fixed something else. Please test and let me know if the problem is gone or not.

Customer reported crash due to OOM. After sharing the memory dump looks like confd not freeing the memory.
Pls. find the below Bt and share whether it is fixed or not.
STK ID : 69660  alloc: 64 bytes; # of allocs: 3747; # of free: 0
/fabos/lib/libmp.so.1.0(snap_malloc+0xc4) [0x6861bd4]
/fabos/lib/libmp.so.1.0(malloc+0x54) [0x6860774]
/usr/confd/lib/libconfd.so(erl_eterm_alloc+0xac) [0x75b00a0]
/usr/confd/lib/libconfd.so(erl_alloc_eterm+0x2c) [0x75abc40]
/usr/confd/lib/libconfd.so(erl_mk_uint+0x30) [0x75a96f4]
/usr/confd/lib/libconfd.so(val_to_term+0x5b0) [0x756caf4]
/usr/confd/lib/libconfd.so(tag_val_to_term+0x40) [0x756d6a0]
/usr/confd/lib/libconfd.so(tag_vals_to_termlist+0x80) [0x756d854]
/usr/confd/lib/libconfd.so(confd_action_reply_values+0xcc) [0x757440c]
/fabos/lib/libDcm.so(_ZN5DcmNs22ConfdActionpointWorker21DcmdConfdActionFinishEP15confd_user_infoi+0x458) [0xb0b924c]
/fabos/lib/libDcm.so(_ZN5DcmNs27ConfdInterfaceObjectManager9sa_actionEP15confd_user_infoP7xml_tagP14confd_hkeypathP15confd_tag_valuei+0x398) [0xac5d014]
/usr/confd/lib/libconfd.so [0x7576ae4]


Fix handling non string tokens

This PR adds handling of non string tokens, throwing a JsonWebTokenError error with jwt malformed message instead of TypeError.
Closes #304

@jfromaniello any change you can review this?

Hi @ricardogama, I see it ok, can you just change a silly thing? Instead of that error message, we can provide more information, like jwt must be a string or jwt must be a string, but number was found. What do you think?

@ziluvatar Sure, I think there's no need to be so specific in the message, so I went forward with jwt must be a string. Sounds good?

Yes, it is enough, thanks @ricardogama !!

@ziluvatar No problem at all! Can this fix be released?

@ricardogama we released v7.3.0 with this fix on it yesterday :)

@ziluvatar Awesome, thanks!


⚠ Bofrost.es has degraded performance

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

HTTP code: 200
Response time: 1653 ms

Resolved: Bofrost.es performance has improved in 1b103a4 after 8 minutes.


Add deploy grafana

@Red-GV this is hacking code to help understand if the benchmark is working as expected (==debug)
using promQL it is easy to observe the status of the benchmark ... I saw multiple things like "rate of logs" (using the rate logql keyword, I discovered that the rate is wrong and not what I expected)  ... content of logs (making sure we have content diversity in the log lines we create, I was asking my self if there is compression, etc ... and this helped to verify that we don't)  ... also connecting something like Grafana immediately show if Loki world (for me, it showed that I was not connected to S3 bucket initially when deploying)
So ... this is like connecting a "debugger" to the benchmark code and this script is an easy way to achieve that and connect grafana to the Loki backend.


Feature/vistk scatterplots

http://ci-deploys.cid-labs.com/cid-harvard/atlas-subnational-frontend/feature/vistk-scatterplots/100/

is this ready for review again? the main issue iirc was that the current ECI line moves around when you filter

Looks good
The only thing I think we should fix is the components name spacing

Note: Components must have a dash in their name. So blog-post is an acceptable name, but post is not. This prevents clashes with current or future HTML element names, and ensures Ember picks up the components automatically.

http://guides.emberjs.com/v1.12.0/components/defining-a-component/
Maybe we can do vistk-<vis-name>?

agreed to prepend the toolkit name.
also, we should probably have more consistent names for styles, filenames and internal variables (for the latter I have in mind the similarity/network/product-space viz which now has so many different names).

:rocket: ship it

soon
Greg Shapiro wrote:

:rocket: ship it
—
Reply to this email directly or view it on GitHub
https://github.com/cid-harvard/atlas-subnational-frontend/pull/172#issuecomment-155928807.


JAMES-2570 Upgrade spark java from 2.6.0 to 2.8.0

CVE-2018-9159
moderate severity
Vulnerable versions: < 2.7.2
Patched version: 2.7.2
In Spark before 2.7.2, a remote attacker can read unintended static files via various representations of absolute or relative pathnames, as demonstrated by file: URLs and directory traversal sequences. NOTE: this product is unrelated to Ignite Realtime Spark.

wrong destination repository. close!