Question: How to add route and cluster from Custom Proxy Middleware?

How to add route and cluster from Custom Proxy Middleware ?
public Task CustomProxyMiddleware(HttpContext context, Func<Task> next)
{
    //Client request received before forwarding
    //Add route and cluster
   return next();
}

Is this a remote configuration endpoint, or are you trying to affect the routing of the current request?
If it's the former, implement an IProxyConfigProvider something like this one:
https://github.com/microsoft/reverse-proxy/blob/main/samples/ReverseProxy.Code.Sample/InMemoryConfigProvider.cs
https://microsoft.github.io/reverse-proxy/articles/config-providers.html
If it's the latter, the config isn't designed to be modified per-request. You should instead use direct-forwarding:
https://microsoft.github.io/reverse-proxy/articles/direct-forwarding.html

If proxy server receives request from http://x.x.x.x:5000/Session1 which needs to be forwarded to http://y.y.y.y:6000/ then,
Check If current route contains match for 'Session1' If yes forward to respective cluster
else add route and cluster for 'Session1' and then forward.

Config updates are meant to react to environment changes, but there's some delay before it applies to incoming requests. Direct-forwarding is better for per-request routing decisions.

If I understood right I can use InMemoryConfigProvider.cs for updating my routes and clusters as I want.
As direct forwarding will not differentiate between '/Session1' and '/Session2' routes.

InMemoryConfigProvider updates routes and clusters on demand, but that's a background update and there's no guarantee it will apply to the current request.
Direct forwarding enables you to differentiate between  '/Session1' and '/Session2' routes and select the destination.

Can you please share an example or sample piece of code for Direct forwarding for my scenario '/Session1' and '/Session2' ?

Starting with this example:
https://github.com/microsoft/reverse-proxy/blob/9cc305e83523841fbcc164e056e55e58691fa570/samples/ReverseProxy.Direct.Sample/Startup.cs#L53-L55
I changed it to the following:
                endpoints.Map("/{**catch-all}", async httpContext =>
                {
                    var destination = "https://y.y.y.y:6000";
                    if (httpContext.Request.Path.StartsWithSegments("/session1"))
                    {
                        destination = "https://y.y.y.y:6001";
                    }
                    else if (httpContext.Request.Path.StartsWithSegments("/session2"))
                    {
                        destination = "https://y.y.y.y:6002";
                    }

                    var error = await forwarder.SendAsync(httpContext, destination, httpClient, requestOptions, transformer);
                    // Check if the proxy operation was successful
                    if (error != ForwarderError.None)
                    {
                        var errorFeature = httpContext.Features.Get<IForwarderErrorFeature>();
                        var exception = errorFeature.Exception;
                    }
                });

When working with direct forwarding, how you decide which path maps to which destination is completely up to you.

Thanks, I was trying to add Transforms programmatically in case of direct forwarding like below.
How can I add 'PathRemovePrefix' transform programmatically ?
Via appsettings.json
"Transforms": [
          { "PathRemovePrefix": "/Session1" },
          {
            "RequestHeader": "X-Forwarded-Prefix",
            "Set": "/Session1"
          }
        ]

Via Code
private class CustomTransformer : HttpTransformer
{
public override async ValueTask TransformRequestAsync(HttpContext httpContext, HttpRequestMessage proxyRequest, string destinationPrefix)
{
await base.TransformRequestAsync(httpContext, proxyRequest, destinationPrefix);
proxyRequest.RequestUri = new Uri(destinationPrefix);
proxyRequest.Headers.Add("X-Forwarded-Prefix", "/Project01");
}
}

One option is to do this:
https://github.com/microsoft/reverse-proxy/blob/9cc305e83523841fbcc164e056e55e58691fa570/testassets/ReverseProxy.Direct/Startup.cs#L43-L49
The other is to do simple transforms in code like you're doing. Trimming the request path looks something like this:
	await base.TransformRequestAsync(httpContext, proxyRequest, destinationPrefix);
	proxyRequest.RequestUri = new Uri(destinationPrefix + httpContext.Request.Path.ToString().SubString("/Project01".Length));
	proxyRequest.Headers.Add("X-Forwarded-Prefix", "/Project01");

No comment in 10d, closing. Please re-open if its still an issue.


Theta Sketch upfront uniform sampling probability setting

Hi, Our dataset sometimes has to deal with highly partitioned/fragmented problems. This leads to thetasketch pretty big or even make the the query extremely computing intensive. We want to use the p-sampling or upfront setting of the theta sketch module to make it better. But it seems like it is not in the setting?

Are these config properties of the theta sketches in the datasketches library? If so, we should be able to add them to Druid's wrapper. Are you interested in doing a PR to the datasketches extension that does the necessary changes?

Sure, I will do that

@gianm Can you help review this pr? I'm new to the druid open source. The change is already deployed on our test clusters, seems ok. Thanks


Added placeholders to login and register page's input field Closes #85

Closes #85
Changes made:
Added proper placeholders to login and register page's email and password field.
tell me if some changes has to be made to placeholder
Thank you.

For password let the placeholder be "minimum 8 length with atleast 1 special ,upper ,lower and a number"

For password let the placeholder be "minimum 8 length with atleast 1 special ,upper ,lower and a number"

My forked repo has got back to this updated repo
So i would raise a new pr for that within some time.is it ok?


Prevents document zooming if still scrolling and meta keys pressed (Issue #7022)

Disables zooming when the stream of events that don't have meta/ctrl
keys active at the outset, for 100ms
[UPDATE] 1000ms

This PR needs a rebase after recently landed PRs. Furthermore, please change the commit message to be equal to the PR message, since the latter is much more descriptive.

@timvandermeij Done! Ready for review

Works nicely, thanks!


Add policy to better prevent malware.

Addresses https://github.com/caskroom/homebrew-cask/issues/33536.

This is a great first step and I definitely approve (for what it's worth). :+1:
However, this is just someone ticking a box. Now might be a good time to start talking about a technical method for enforcing version+hash immutability. I don't have a good answer for Homebrew off-hand, at least, not through the pull request system...

Yes, the thing we also need to add is a requirement for the person ticking the box to link to a public discussion where they can show they confirmed with the developer that the shasum changed.
@mholt You can’t enforce version+sha immutability. This problem did not occur due to human error and cannot be fixed by software. It was a correctly enforced bad policy, which is why the policy needs to change.
It’s common, especially for closed-source (but not only) software developers to update the upstream package in place without changing its version. So the vast majority of times the shasum changes but not the version are legitimate. There are cases where we do check with upstream, but not always (like in Handbrake’s case) due to it being so common. Making the version and the shasum immutable would mean you break multiple casks with no way of fixing them.


no results for "preload-error"

The content is there: https://electronjs.org/docs/api/web-contents#event-preload-error

We deployed new indices of search, which contains very many new data. Please @ mention me if you still see this error.


ControlNet is not available?

Describe the bug
ControlNet is not available?
To reproduce
Invalid startup
Error log

Environment

Blender version (upper right corner of splash screen):
AI Render version (find in Preferences > Add-ons):
Operating system (Windows/Mac/Linux): windows

Screenshots/video

Additional information
No response

Could it not be loaded because of a file path problem?

It has already been resolved. You can use the latest version of ControlNet

Sorry I didn't have a chance to get to this yesterday. I'm glad you got it working.


Derive version from ReleaseNotes

Fixes #171
LiveUpdate.fs can use its own AssemblyInfo version at runtime.
For tools.md, I replaced with a generic <Fabulous version>.
For the last one, I still need to learn FAKE before being able to automate template.json
TODO:

[x] LiveUpdate.fs
[x] tools.md
[x] template.json

Made FAKE updates all template.json files as well.
Unfortunately, comments are not allowed in JSON...

Great work, so much easier


AWS Lambda callback response format is not correct

I'm using a basic Hello World app to test the Actions SDK v2.0.1 in the Simulator using Bespoken Tools' Lambda proxy. Note that I had to use node-mocks-http to build a fake event object similar to what the SDK's Lambda framework expects from an API Gateway event.
The Lambda callback is incorrect in this scenario, leading to a parse error when the Assistant service receives the response from the fullfillment app.
'use strict';

const {actionssdk} = require('actions-on-google');
const expressMockery = require("node-mocks-http");

const app = actionssdk({debug: true});

// intent handler
app.intent('actions.intent.MAIN', (conv) => {
  conv.close('Hello world!');
});

// When using API Gateway it should be as easy as this, but it doesn't work like that with BST proxy
// exports.handler = app;

exports.handler = async (event, context, callback) => {
    try {
        // mock an API Gateway request
        let request = expressMockery.createRequest({
            body: JSON.stringify(event),
            headers: []
        });

        await app(request, context, callback);
    } catch(err) {
        callback(err);
    }
}

The Actions Console Simulator returns the following error:
UnparseableJsonResponse API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: "body: Cannot find field.".

As far as I can tell, it is saying that the body field in the repsonse does not exist in the expected response schema.
The Problem appears to be caused how the Lambda framework in the SDK calls the callback. Current implementation (in src/framework/lambda.ts):
const { status, body } = result
callback(null, {
    statusCode: status,
    body: JSON.stringify(body),
})

There is a trivial fix for this but I'm reluctant to post it here until I can establish my employer's legal position. There is a consensus that raising the issue is acceptable.

The current lambda framework implementation builtin to the library expects the handler to be from lambda's API Gateway. We can explore being able to customize it in the future.
For now, you don't have to necessarily mock the request as long as you know how to extract the JSON body and headers.
Just call app.handler which is a StandardHandler and is the most basic handler that's not dependent on any framework.
It accepts a JSON body as the first argument, a JSON map of header key to header values (as a string or string array), and returns a Promise with the result as a StandardResponse which contains the response body as a JSON and the status as a number.
Using this method, you should be able to use whatever input and output format you like.

Thanks, that does make local testing a little simpler. It'd be easier still, if the framework mechanism supported raw Lambda events in addition to API gateway events. That would make it possible to test locally without adding additional code paths to the app.
It might help to better document the assumptions made by the code. The v1 api docs were quite good so I hope some attention is being paid to improve the v2 docs.

Hi, I see the following error when running v2 on AWS lambda.
`'use strict';
const { dialogflow } = require('actions-on-google');
const app = dialogflow();
//app.frameworks.lambda = new CustomLambda()
app.intent('Default Fallback Intent', conv => {
console.log(conv.headers);
conv.ask('AWS LAMBDA says I dont understand you');
});
app.intent('Default Welcome Intent', conv => {
conv.ask('AWS LAMBDA says hi');
});
exports.handler = app;
`
when calling this from a v2 dialogflow project I get the following error
{     "errorMessage": "Cannot convert undefined or null to object",     "errorType": "TypeError",     "stackTrace": [         "Function.keys (<anonymous>)",         "Lambda.<anonymous> (/var/task/node_modules/actions-on-google/dist/framework/lambda.js:32:36)",         "Generator.next (<anonymous>)",         "/var/task/node_modules/actions-on-google/dist/framework/lambda.js:22:71",         "new Promise (<anonymous>)",         "__awaiter (/var/task/node_modules/actions-on-google/dist/framework/lambda.js:18:12)",         "/var/task/node_modules/actions-on-google/dist/framework/lambda.js:30:46",         "omni (/var/task/node_modules/actions-on-google/dist/assistant.js:44:53)"     ] }

Hi Canain,
I am novice to this domain, as indicated in the chat, with my AWS Api get way..
I am getting an error as below:
UnparseableJsonResponse
API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: ": Root element must be a message.".
Can you please let me in detail what code needs to be added in the lambda for converting it. ? It is not clear how to do the conversion  by referring the document...Your inputs are appreciated...

The current lambda framework implementation builtin to the library expects the handler to be from lambda's API Gateway. We can explore being able to customize it in the future.
For now, you don't have to necessarily mock the request as long as you know how to extract the JSON body and headers.
Just call app.handler which is a StandardHandler and is the most basic handler that's not dependent on any framework.
It accepts a JSON body as the first argument, a JSON map of header key to header values (as a string or string array), and returns a Promise with the result as a StandardResponse which contains the response body as a JSON and the status as a number.
Using this method, you should be able to use whatever input and output format you like.

@sakthisg Can you provide more logs for your lambda? Like provide the full HTTP response generated by lambda and any error/info logs from your lambda function?
That error by itself doesn't tell much so more info would be useful.

@Canain..Thanks for the response. With below  code in the lambda function, i am able to get the response in Google assistant properly...
exports.handler = function(event, context, callback) {
app.handler(event, {}).then((res) => {
if (res.status != 200) {
callback(null, {"fulfillmentText": I got status code: ${res.status}});
} else {
callback(null, res.body);
}
}).catch((e) => {
callback(null, {"fulfillmentText": There was an error\n${e}});
});
};
This shall be added in the documentation of the sample code !

We are working on improving the lambda framework support which is being discussed in #219
If that works out, you will be able to use exports.handler = app instead of this work around.

Hi, Have you try?
exports.handler = async (event, context, callback) => {
try {
await app(event, context, callback);
} catch(err) {
console.log(err);
callback(err);
}

}

No.I have not tried. Is this method working for app?


support and have a defined a way to inject breadcrumbs via plugins

Proposed Functionality
For the vast majority of plugins, there are no breadcrumbs to ease UI navigation for users.  There are no standards around this and defined or blessed API to allow plugin developers to have breadcrumbs at the top of each of page in a given plugin.  This proposal is to create a defined API to simplify breadcrumbs for plugin developers.
Use Cases
As P.D. the plugin developer,
I want to add breadcrumbs to my plugin,
So that users can more easily know where they are and navigate within the plugin,
I will know this is done when:

There is a defined API I can use when creating plugins.

As Ozzie the operator,
I want to know exactly where I am in the UI and easily navigate within a plugin,
So that I can think less of what I'm looking at and just know from the breadcrumbs while also not being forced to use a dropdown item to change pages within the plugin :)
I will know this is done when:

My fellow plugin developers have a defined way to add breadcrumbs ensuring the vast majority of plugins get breadcrumbs!

Relates to #479 - if we have a well-defined detail view template, this will make it easier to consistently add and enforce breadcrumbs.

Addressed by #737.


Fix getParameterTypes for groovy:indy versions

Ran the tests on Groovy-all 2.1.1, 2.3.6, 2.3.6-indy, 2.4.5, and 2.4.5-indy.


Make agent pick specific gcc version

Hello,
I have a situation where our production servers don’t have the required gcc version i.e 4.7 and above. Now, since it’s a system library we don’t know what applications, libraries will be impacted if we upgrade gcc version.
Please let us know if there is a possibility of installing<EMAIL_ADDRESS>and passing this gcc path to appoptics module using some env var or configuration
We have tested this agent on our staging server by upgrading gcc but we want to mitigate risk in production.

there is not a way to do what you're asking at this time. distributing pre-built binaries is on our roadmap, but not scheduled at this point. in general, the compiler and libraries are backwards compatible. but forward compatibility is not and is typically determined by the GLIBCXX library version required by the compiler's output.
i can't guarantee it but i think there is little risk to upgrading the g++ compiler.
https://stackoverflow.com/questions/56781513/understanding-the-gcc-version-and-the-glibc-glibcxx-versions-in-more-detail

i'm going to close with and link this issue to our jira pre-built binaries issue. we'll notify you when the project is started and when it's done.


Appveyor CI for Windows

We currently run phpunit on just Linux. It seems that Appveyor is the popular Travis alternative for Windows CI builds. Should we add that to Laravel? This would prevent edge-cases in Windows, which are not tested by most contributors..
AppVeyor is free for Open Source: https://www.appveyor.com/
See https://github.com/symfony/symfony/pull/15575 for the Symfony issue and https://github.com/symfony/symfony/blob/master/appveyor.yml / https://github.com/composer/composer/blob/master/appveyor.yml for examples

Thanks for the suggestion. Feel free to take this up on slack, but I'm closing this since our GitHub issue tracker is strictly for bugs only.

Sorry, don't have the time to hang around on slack all day. Thanks anyways.

Don't worry about it. I can dump this idea into there for you.


Proposed improvement for jest fake timers implementation

🚀 Feature Proposal
Not sure if this should be Feature Proposal.  Please let me know if I have used the wrong issue template.  This is really an enhancement suggestion for the jest fake timers.
The enhancement suggestion is this: Make useFakeTimers and useRealTimers work as expected in every scenario.
Motivation
Presently the jest.useFakeTimers and jest.useRealTimers methods lead to surprising results.
This is due to how they are implemented.  Here is my understanding of how they work:

When the jest environment is created the methods that can be faked (setTimeout, etc) are captured by the jest-fake-timers package.
When useFakeTimers is called the mockable methods (e.g. setTimeout) are replaced on the global object with a fake implementation
When useRealTimers is called the mockable methods (e.g. setTimeout) are replaced with the captured real ones in #1

The problem is that when the useFakeTimers or useRealTimers is called modules imported by the test suite may have already captured the mockable methods and will hold on to those references so that calling useFakeTimers or useRealTimers puts the suite into a weird state where some of the loaded code is using real timers and some fake.  This is never desirable.
I would like to propose that jest-fake-timers should instead always replace the mockable methods with a facade that will choose the correct implementation to defer to depending on the current desired state i.e. "real/fake".
This would avoid the aforementioned problem as everything would hold the references to the facade and the switch will not change the global object references.
Example of real developer experience when using the existing api
This is a cut-down real-world experience that my team and I had.  Hopefully it illustrates why this change is important:
We set timers property in jest.config set to 'fake' as the majority of our code base requires fake timers.
However some tests need real timers.  Here is how we attempted to solve this problem:
Attempt #1
import foo from './foo';
import waitForExpect from 'wait-for-expect';

test('foo does its thing', async () => {
  // Arrange
  jest.useRealTimers();

  // Act
  foo.doThing();

  // Assert
  await waitForExpect(() => {
    expect(foo.didItsThing()).toBeTrue();
  });
});

Result
Attempt failed because foo and waitForExpect already had fake setTimeout
Attempt #2
import foo from './foo';
import waitForExpect from 'wait-for-expect';

beforeEach(() => {
  jest.useRealTimers();
});

test('foo does its thing', async () => {
  // Arrange

  // Act
  foo.doThing();

  // Assert
  await waitForExpect(() => {
    expect(foo.didItsThing()).toBeTrue();
  });
});

Result
Attempt failed because foo and waitForExpect already had fake setTimeout
Attempt #3
jest.useRealTimers();
import foo from './foo';
import waitForExpect from 'wait-for-expect';

test('foo does its thing', async () => {
  // Arrange

  // Act
 foo.doThing();

  // Assert
  await waitForExpect(() => {
    expect(foo.didItsThing()).toBeTrue();
  });
});

Result
Attempt failed because foo and waitForExpect already had fake setTimeout
Wait! What!??
Yeah this is because jest hoists imports so foo module is executed before the jest.useFakeTimers() call...
Attempt #4
foo.test.js:
import '/test-utilities/useRealTimers';
import foo from './foo';
import waitForExpect from 'wait-for-expect';

test('foo does its thing', async () => {
  // Arrange

  // Act
 foo.doThing();

  // Assert
  await waitForExpect(() => {
    expect(foo.didItsThing()).toBeTrue();
  });
});

/test-utilities/useRealTimers.js:
jest.useRealTimers();

Result
Success!  However now we realize that we cannot mix the use of real timers and fake timers in a single test-suite...
Sample facade implemention
Here is some pseudo code to illustrate how the facades could work:
let useFakeTimers = false;
jest.useFakeTimers = () => (useFakeTimers = true);
jest.useRealTimers = () => (useFakeTimers = false);
const realSetTimeout = global.setTimeout;
global.setTimeout = (...args) => (useFakeTimers ? fakeSetTimeout : realSetTimeout)(...args);
Example
Exactly as before except now you can safely use jest.useFakeTimers and jest.useRealTimers anywhere and the system will behave as expected.
Pitch
Why does this feature belong in the Jest core platform?
It is already in core.

Thanks for the detailed issue!

Here is my understanding of how they work:

That's correct.

The problem is that when the useFakeTimers or useRealTimers is called modules imported by the test suite may have already captured the mockable methods and will hold on to those references so that calling useFakeTimers or useRealTimers puts the suite into a weird state where some of the loaded code is using real timers and some fake. This is never desirable.

If modules go out of their way to capture these (doing const setTimeout = global.setTimeout I guess?) it's probably for a relatively good reason. If not, why not just do global.setTimeout()?
I'm not sure if this makes sense as part of core, it feels pretty invasive. I'm almost 100% sure people are gonna complain that they cannot capture real timers anymore. If you really want, you can use a custom test environment?

Yeah this is because jest hoists imports so foo module is executed before the jest.useFakeTimers() call...

That's the way ES modules work - imports are always evaluated first (it's Babel's module transform which hoists them, not Jest)

Hi @SimenB,
Thank you for taking the time to consider my request.
My first thought is that, in my tests, I do not want anything to be getting the real timer methods.  However, I can see your point, if for example the wait-for-expect, or @testing-library/react wait command used fake timers that would not ideal... However you shouldn't mix async utilities with fake timers in the one test...   But lets say hypothetically you had a module, which was not a production module being tested, rather a testing library for helping your test code, then I could see that you may want that to be unaffected by fake timers.
However I have to say that we do not have that requirement and we have a fairly large project (126K lines of code, 600 test suites and xxx tests).  Also the workaround for this would be quite simple:  import the test utility to receive real timers in the jest-before-env-setup.js.
So I'm still of the opinion that perhaps this would be better solved by jest.
I am interested to hear more about your suggestion of creating a custom test environment.  How would this help and how would you approach this?
Thanks.
Kind regards,
Jack

I'm running into the same wall as @jackgeek did. My test suites are not working properly as setInterval in my Vue Component doesn't get stubbed with jest.useFakeTimers(). Still cracking my head around this.

To give an actual example supporting @SimenB's concerns, here's something I've used to flush promises when fake timers are being used:
// How many times to flush before assuming an infinite loop.
const LOOP_LIMIT = 1000;

// Prevent useFakeTimers from overriding setTimeout below.
const setTimeout = window.setTimeout;

async function flushPromises() {
  for (let i = 0; i < LOOP_LIMIT; i++) {
    jest.runAllTimers();
    await new Promise((resolve) => {
      setTimeout(resolve, 0);
    });
    if (jest.getTimerCount() === 0) return;
  }
  throw new Error('infinite loooooop');
}

It's possible jest-before-env-setup.js would work for that? Not super familiar with that bit.

To give an actual example supporting @SimenB's concerns, here's something I've used to flush promises when fake timers are being used:
// How many times to flush before assuming an infinite loop.
const LOOP_LIMIT = 1000;

// Prevent useFakeTimers from overriding setTimeout below.
const setTimeout = window.setTimeout;

async function flushPromises() {
  for (let i = 0; i < LOOP_LIMIT; i++) {
    jest.runAllTimers();
    await new Promise((resolve) => {
      setTimeout(resolve, 0);
    });
    if (jest.getTimerCount() === 0) return;
  }
  throw new Error('infinite loooooop');
}

It's possible jest-before-env-setup.js would work for that? Not super familiar with that bit.

Hi @markdascher,
With my proposal if your utility was imported in jest-before-env-setup.js it would capture the real setTimeout.  It could then be used in any test-suite and work as expected because the setTimeout captured in its first import (in the jest-before-env-setup.js) would be the real setTimeout.
This feature request is quite old now and I have noticed that jest seems to behave slightly differently now:  Regardless of whether you are have called useFakeTimers or useRealTimers or configured real or fake timers as defaults, if your test is async then real timers are always used.
This is unfortunate as we still live in an environment where it is not possible to fake native promises.  I have encountered situations, recently using https://mswjs.io/, where I want to use fake timers and have an async test.  This is because msw is working in a separate thread and waiting on a promise is unavoidable.  This forces all tests using msw to be async and now means they all run with real timers. 🤔

Hi @markdascher,
With my proposal if your utility was imported in jest-before-env-setup.js it would capture the real setTimeout.  It could then be used in any test-suite and work as expected because the setTimeout captured in its first import (in the jest-before-env-setup.js) would be the real setTimeout.
This feature request is quite old now and I have noticed that jest seems to behave slightly differently now:  Regardless of whether you are have called useFakeTimers or useRealTimers or configured real or fake timers as defaults, if your test is async then real timers are always used.
This is unfortunate as we still live in an environment where it is not possible to fake native promises.  I have encountered situations, recently using https://mswjs.io/, where I want to use fake timers and have an async test.  This is because msw is working in a separate thread and waiting on a promise is unavoidable.  This forces all tests using msw to be async and now means they all run with real timers. 🤔


Picking the right images for latest post summary & today's stats

Fixes #393
Somehow we're picking the wrong images for latest post summary & today's stats in insights for likes and comments. This fixes that typo.
Needs Review: @bummytime

Word. :shipit:


findHostIP() sometimes returns unwanted IPs

When trying to build a docker image the scripts calls the findHostIP-function which tries to select the IP of the machine it's running on. In our case however docker runs on a local IP 172.* which then leads to problems trying to access the platform.
Since it is very hard to write a function which considers such scenarios it would be great if the IP was instead also a parameter. So then instead of always calling the findHostIP-function instead the IP from the parameter would be used (if provided).

Could you elaborate on the exact errors that you come across? I too have the default Docker virtual bridge running on 172* range. Any extra details like the host OS information could greatly help too.

Put simply, since the findHostIP-function returns the 172* range that host will only be accessible from that private network. As far as I know the Docker virtual bridge runs on 172* by default in order to communicate with itself but because this device is the first in line and the findHostIP-function doesn't take this into account the server will always assume that it needs to be in that network.
I'm using RHEL 7.3 with Docker 1.12.6 and WSO2AM 2.1.0


[ALLUXIO-2179] Use openAtPosition API for s3a.

https://alluxio.atlassian.net/browse/ALLUXIO-2179

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11064/
Test PASSed.

+1 LGTM

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11071/
Test PASSed.

@calvinjia thanks for the optimization. I left some comments/questions on the unit test

LGTM

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/11072/
Test PASSed.

Merged build finished. Test PASSed.

LGTM


Create new entry behaviour in regards to buffers and windows

Hi,
Really liking this plugin so far, really feel that it's going to be very useful to me. The only thing is that I'm having trouble managing the windows the add new entry command creates. For example, if I'm currently editing an entry, I might like to type " a o j j" to quickly add another entry right below it. I would like it do it within the same window, but it instead always creates a new split. The same is also true if I already have a the journal file open in another window than the one I'm currently in; typing " a o j j" will not move me to the already open window, but instead create a new split at my current location. Just a little confused on how to work this, was wondering if anyone had any advice. I'm pretty new to emacs, so my workflow might just be wrong.
Thank you,
Erik

Hey,
are you using any of the Emacs variants like doomemacs, spacemacs,...? For me it
never creates a new split (Emacs 27.x). Must be some customization setting.

Chris
erikc96<EMAIL_ADDRESS>writes:

Hi,
Really liking this plugin so far, really feel that it's going to be very useful to me. The only thing is that I'm having trouble managing the windows
the add new entry command creates. For example, if I'm currently editing an entry, I might like to type " a o j j" to quickly add another entry right
below it. I would like it do it within the same window, but it instead always creates a new split. The same is also true if I already have a the journal
file open in another window than the one I'm currently in; typing " a o j j" will not move me to the already open window, but instead create a new
split at my current location.
I'm also new to emacs so I might be just missing a few things, wanted to see if anyone had any thoughts.
Thank you,
Erik
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.


"as-for-in" syntax in nya-bs-option

Hi, again!
With ng-options, it's possible to write like this:
ng-options="item.uuid as item.name for item in items"

This has the benefit of allowing the model value to a different sub-property from the captions enumerated in the select box.
Would it be possible to allow for the same capability in nya-bs-option?
Thanks!

nyaBsOption is base on ngRepeat and add support for grouping options. to keep the syntax simple. I use a individual attribute value (next version will be data-value, but will be compatible with value), which defines the expression for model value.
See the example for value attribute here:
http://nya.io/nya-bootstrap-select/#!/examples/groups-and-more


LightningTipBot and LNDg SETTINGS conflict

In the dev branch, both LightningTipBot and LNDg use option "g" to select for install in 00settingsMenuServices.sh.
OPTIONS+=(g 'LightningTipBot' ${lightningtipbot})
fi
just available for LND
if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then
OPTIONS+=(r 'LND RTL Webinterface' ${rtlWebinterface})
OPTIONS+=(t 'LND ThunderHub' ${thunderhub})
OPTIONS+=(l 'LND LIT (loop, pool, faraday)' ${lit})
OPTIONS+=(g 'LND LNDg (auto-rebalance, auto-fees)' ${lndg})
This results in installing LightningTipBot when you want to install LNDg, and then it showing that both are installed. PR incoming to fix today.

Thx. PR merged. Will be part of v1.9 release :)


Real sense viewer scale does not support large area

librealsense
2.19.2 RELEASE

OS
Linux

Name
Intel RealSense T265

Serial Number
845412111034

Firmware Version
<IP_ADDRESS>29

Hi,
I am using the T265 for a AGV application in field, when i move take the t265 for long (300mtrs) and record the data, I am not able to visualize the data in 3d, can you please provide a means to view large scale data like 1 sq km or bigger.
BR,
SSH

Hi @ShettyHarapanahalli
Please try rs-trajectory demo.

Can we save the map or load the pre-recorded bag file with this.

No, but you can always modify any of the SDK tools and examples to your needs.
We will try to improve visualization in the Viewer, but it can take couple of releases to complete.


Applying the action in the "parent view" at the end of the gesture instead of the beginning

Issue Link 🔗
if we put screenInteraction to dismiss and we start touching the screen the popup dismiss immediately
Goals 🥅
Dismiss the popup at the end of the user touch instead of the beginning
Implementation Details ✏
I did a quick fix by replacing touchesBegan by touchesEnded
May be we should improve that and handle only tap gesture

Thanks! Will be reviewed in the next few days

B.T.W - There was no need to expose touchesEnded as a public api since EKRootViewController is an internal component. I confirmed the pull request but I'll revert that line of code. Thanks again for the pull request.


Now generating the expiry via javascript and showing local time

Now generating the expiry time in javascript and adding 24 h. Also displaying the local time in both french and english format.

Heyo, we want more control over the format of the "expires" string.
What we have now in Figma is pretty different than we get here, so maybe bring in date-fns as a CDN dependency or maybe there's a better way to do this? I think we should say away from npm if it's only for one dependency.

After talking with Paul, we had too many issues using date-fns without using NPM. So here is the updated pull request with the smallest version of momentjs, delivered by the cloudfare DNS.
The new format and their translations :
French

English


Build docker image

Create a github repo to build a docker image with the mail integration service included. The pipeline inside the repo should automatically push the image to dockerhub.

See https://hub.docker.com/r/itatm/digiwf-email-integration-service


Update README.md

HELLO SIR,
I have added some API data boxes for this repo that will help you to get the track report of your repo like

Visitors
GitHub forks
GitHub Repo stars
GitHub contributors
GitHub last commit
GitHub repo size

@TCL606 Please take a review of my PR & please merge it.

@Timothy-Liuxf I have removed the blank space .
Can you please now check the PR & please merge it.

@TCL606 @Timothy-Liuxf  Please take a review of my PR & please merge it ,
Please sir. Please merge it.. It's a request


rollup

Integrate webpack for browser-based version

switched to rollup

abandoned bundling for now, will revisit if/when better-sqlite3 gets a wasm target.


Feature/tcomp 541

What is the current behavior? (You can also link to an open issue here)
java base image is used
What is the new behavior?
json logging layout is used
filebeat (microservices-base) image is used as a base to include filebeat agent
Please check if the PR fulfills these requirements

[x] The commit message follows Talend standard
[ ] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features) ?
[ ] The code coverage on new code >75%
[ ] The new code does not introduce new technical issues (sonar / eslint)

What kind of change does this PR introduce?

[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[x] Build / CI related changes
[ ] Other... Please describe:

Does this PR introduce a breaking change?

[ ] Yes
[x] No

If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
Other information:

Pull request test result: success :star:

I have copied readme.md in the components-api-service-rest.
However, I haven't changed a lot there.

Pull request test result: success :star:

please merge whenever you are like.


FIX: (Climate Tokenization Engine) Review error logging for accuracy

Climate Tokenization Engine currently does not have any logging present, but could easily add logging similar to what is present in CADT. Climate Tokenization Engine does not have a lot of code in it, so logging could be added to just about everything it does in a couple hours.
We should aim to have similar log styles to CADT.

This has been improved since issue logged.


[roaring] Update to 0.9.6

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[ ] The "supports" clause reflects platforms that may be fixed by this new version
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

@jimwang118 updated, PTAL.

All test passed with following triplets:
x86-windows
x64-windows
x64-windows-static


Name collisions when stashing/unstashing monsters

Right now the stashing and unstashing operations don't offer any protection from name collisions. This should be accounted for; this may mean that a "goblin1" might have to get its name changed to some other "goblinN" when it either goes into the stash or out of the stash and into active combat.

I'm not 100% in love with it, but it was far simpler to add some uniqueness to the monster name when loading them rather than trying to rename monsters every time they were loaded, moved into the stash, moved out of the stash, etc. 0111e19 has the details. Viva UUID!


Export plan results

Hi, thanks for this package.
Is there any method to export quickly water surface, depth and velocity rasters? (i.e netcdf, vtk, .tifs?)
Cheers,
Lucas

Hi @lucasglasner, thanks for the question about this. I don't think we have plans to export rasters via this library since that raster data isn't inherently contained within the HDF files (as far I know).
There's a little-known utility within the HEC-RAS installation itself that can do this, though, if you've configured the results maps for the model already in RAS Mapper. Call RasProcess.exe with the StoreAllMaps command and point it to a model's .rasmap file:
& "C:\Program Files (x86)\HEC\HEC-RAS\6.5\RasProcess.exe" StoreAllMaps .\Muncie.rasmap

We're trying to keep the scope of rashdf focused on extracting data from the RAS HDF files to GeoDataFrame or similar objects in memory, so I don't think we'll be adding anything to call RasProcess.exe in this library.

Hi @thwllms, thank you for your answer. I've been trying to export data from a large number of HEC-RAS simulations (>50) and this project has been of great help in doing so.
After some research, i found that the plan HDF file has by default (v6.5) the WSE and face velocity as 2D arrays of size (n°timesteps, n°grid cells) stored in Results/Unsteady/Output/Output Blocks/Base Output/Unsteady Time Series/2D Flow Areas . I also found that is possible (with some extra options) to write in the plan HDF file many other variables. If it helps i programmed a humble routine for the RasPlanHdf class to access the simulation data as a python dictionary. It could be useful for adding attributes/columns to the grid GeoDataFrame (i.e water depth at last timestep, speed, shear stress, etc).
def get_results_unsteady_variables(self):
    """Returns data for all variables found in the unsteady results.

    Returns
    -------
    data
        Dictionary with simulation stored results
    """
    PATH      = f'{self.RESULTS_UNSTEADY_PATH}/Output/Output Blocks/Base Output'
    # Get Simulation Time
    TIME_PATH = f'{PATH}/Unsteady Time Series/Time Date Stamp'
    time      = map(lambda x: x.decode('utf-8'), np.array(self[TIME_PATH][()]))
    time      = pd.to_datetime(list(time))

    # Get aviable data for all areas
    DATA_PATH = f'{PATH}/Unsteady Time Series/2D Flow Areas'
    mesh_area_names = self.mesh_area_names()
    if not mesh_area_names:
        raise RuntimeError('No area found in geometry')

    data = {key:{} for key in mesh_area_names}
    for i, mesh_name in enumerate(mesh_area_names):
        AREA_PATH = f'{DATA_PATH}/{mesh_name}'
        varnames  = list(self[AREA_PATH].keys())
        for j, varname in enumerate(varnames):
            if varname not in ['Boundary Conditions', 'Computations']:
                data[mesh_name][varname] = self[AREA_PATH][varname][()]
    data['time'] = time
    return data

RasPlanHdf.get_results_unsteady_variables = get_results_unsteady_variables

With this routine i've been trying to interpolate the simulation results to regular cartesian coordinates with scipy and export the results as .tif, however i cannot replicate the exact solution of the Ras Mapper "Export to raster" utility. Do you know how the program interpolates the simulation results from the unstructured grid to the regular raster grid?

@lucasglasner the HEC-RAS interpolation / mapping routine for 2D models is a subject of much speculation and debate in my little corner of the water resources field. Unfortunately RAS isn't open-source and the mapping algorithm isn't really documented in detail. Some companies like the one I work for have developed their own alternative mapping programs to extract data from the HDF files and produce their own inundation layers to make up for certain perceived issues with the HEC-RAS inundation maps.
Thanks for writing up that code -- there are actually two pull requests open right now for extracting output data like in your example, if you want to check them out. Hopefully they'll be merged in the coming weeks and released to PyPI.

#52
#53


Update with Brew PHP Switcher. Remove deprecated PHP tap.

Brew PHP Switcher is the most currently maintained tool for switching between versions of php.

https://github.com/ziadoz/awesome-php/pull/652 can be closed.


EgorBot for jkotas in #106525

Processing https://github.com/dotnet/runtime/pull/106525#issuecomment-2366843564 command:
Command
-intel -arm64 -perf
using System;
using System.Runtime.CompilerServices;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;

BenchmarkRunner.Run<Bench>(args: args);

public class Bench
{
    [Benchmark]
    public Guid Foo() => Guid.CreateVersion7();
}

(EgorBot will reply in this issue)

Benchmark results on AzureIntel
BenchmarkDotNet v0.14.0, Ubuntu 22.04.5 LTS (Jammy Jellyfish)
Intel Xeon Platinum 8370C CPU 2.80GHz, 1 CPU, 16 logical and 8 physical cores
  Job-NYLJGJ : .NET 10.0.0 (<IP_ADDRESS>424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
  Job-MHPZRG : .NET 9.0.0 (<IP_ADDRESS>424), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI

Method
Toolchain
Mean
Error
Ratio

Foo
Main
374.1 ns
0.11 ns
1.00

Foo
PR
365.8 ns
0.11 ns
0.98

BDN_Artifacts.zip
Profile for Bench_Foo:
Flame graphs: Main vs PR 🔥
Hot asm: Main vs PR
Hot functions: Main vs PR
Counters: Main vs PR

cc @jkotas (logs)

Benchmark results on AzureAmpere
BenchmarkDotNet v0.14.0, Ubuntu 22.04.5 LTS (Jammy Jellyfish)
AzureAmpere
  Job-BJQQWD : .NET 10.0.0 (<IP_ADDRESS>424), Arm64 RyuJIT AdvSIMD
  Job-UDCTRV : .NET 9.0.0 (<IP_ADDRESS>424), Arm64 RyuJIT AdvSIMD

Method
Toolchain
Mean
Error
Ratio

Foo
Main
466.4 ns
0.30 ns
1.00

Foo
PR
462.1 ns
0.44 ns
0.99

BDN_Artifacts.zip
Profile for Bench_Foo:
Flame graphs: Main vs PR 🔥
Hot asm: Main vs PR
Hot functions: Main vs PR
Counters: Main vs PR

cc @jkotas (logs)


Monolisa link doesn't work

Hi! Big fan of your write-up on React-Query. Just noticed that your monolisa.dev (affiliate?) link is broken. FYI. :)

Thanks for reporting. I'll try to find out what's wrong asap

I had to remove the link for now until the guys at mono lisa have figured out a different provider than paddle it seems.


mac安装遇到问题，关于clang

[100%] Linking CXX shared library /Users/sejnn/.vim/plugged/YouCompleteMe/third_party/ycmd/ycm_core.so Undefined symbols for architecture x86_64:   "_clang_getCompletionFixIt", referenced from:       YouCompleteMe::CompletionData::BuildCompletionFixIt(CXCodeCompleteResults*, unsigned long) in CompletionData.cpp.o   "_clang_getCompletionNumFixIts", referenced from:       YouCompleteMe::CompletionData::BuildCompletionFixIt(CXCodeCompleteResults*, unsigned long) in CompletionData.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [/Users/sejnn/.vim/plugged/YouCompleteMe/third_party/ycmd/ycm_core.so] Error 1 make[2]: *** [ycm/CMakeFiles/ycm_core.dir/all] Error 2 make[1]: *** [ycm/CMakeFiles/ycm_core.dir/rule] Error 2 make: *** [ycm_core] Error 2 ERROR: the build failed.

@gts20190105 现在mac能够正常使用ycm了


Add test for preserving a GDEF table

Don't want to throw the code away.
Any suggestions for more tests?

Could you add a comment in the test saying that you expect the GDEF to be preserved regardless of minimize_ufo_diffs?

and a link to your GDEF issue


Refactor target packages to use interfaces

This change refactors the target packages to define interfaces for the natively supported Q# callables, which provides an important layer of indirection that lets the Q#/C# in the target package call into those interfaces while the simulator implements those interfaces, all without either taking a direct reference on the other. This means I can once again unify the simulator into a single package, where it dynamically detects the target package intrinsics to override at runtime via reflection.
Fixes #432
Major changes in this package:

Introduce Simulation/TargetDefinition/Interfaces that defines the package with the union of all interfaces for all target packages and target specific interfaces that collect the set of gates supported by that target (expected to eventually be auto-generated from Q# definitions).

Implementations of the callables in Simulation/TargetDefinition/Intrinsic that implement those abstract classes and call into the interfaces (also expected to be auto-generated, perhaps replacing the abstract classes altogether).

Adapted the full state QuantumSimulator, ToffoliSimulator, and ResourceEstimator to use the interfaces such that the single simulator package can now be used with all three target packages (simulator no longer has compile time dependency on the target package). This means Simlators.Impl and Simulators could be combined back into a single folder, and Simulators.Type1 and Simulators.Type2 eliminated.

Updated test project definitions to include references to both the simulator and the desired target package, matching the pattern we expect callers to use.

Moved the QuantumProcessor implementation into the QsharpCore package so that this implementation can remain the same. Converting it to the interface based approach would be a breaking change, but to keep it the same required putting it in  a place that could safely compile against both QsharpCore and the SimulatorBase class. For the moment that means that the QsharpCore target package has a compile time dependency on the Simulators package, which doesn't match the design intent but doesn't cause any problems. Eventually, QuantumProcessor can either be moved to its own package or removed entirely in favor of broader adoption of the interface based design.

Updates to C# generation that provide an opt-in mechanism for intrinsic Q# callables to be generated as concrete classes instead of abstract, and the generated code calls into the interface classes defined as part of 1 (thanks @ScottCarda-MS). This means the intrinsic callables that are part of the target package no longer need to define a child class that registers as an override of the abstract parents.

A note on point 6 from above: @samarsha had an idea for how the supported constructor parameters of the custom simulator provided to the unit test or EntryPoint can be dynamically detected so that we can avoid the reflection-based search for the TargetIntrinsics type. I'm going to try that approach, but I wanted to start getting feedback on the design and changes now while I continued to refine that part of the changes.

@bettinaheim This branch now has all the latest updates from @ScottCarda-MS and myself, so the PR is ready for re-review. I'll work on fixing the e2e build once this goes into the feature branch and I do another merge from master.

@bettinaheim I believe I've addressed the comments you have so far, thanks for looking at this! I know you mentioned you still wanted to review a little more, so I'd be happy to go over some of the files together if you have other questions/feedback you'd like to discuss!

@bettinaheim I believe I've addressed the comments you have so far, thanks for looking at this! I know you mentioned you still wanted to review a little more, so I'd be happy to go over some of the files together if you have other questions/feedback you'd like to discuss!


ERR invalid expire time in set

Hello,
I have a Node.js web application which uses redis as session storage. Some requests receive the following ReplyError while trying to save the session:
ReplyError: ERR invalid expire time in set
   at parseError (.../node_modules/redis-parser/lib/parser.js:179:12)
   at parseType (.../node_modules/redis-parser/lib/parser.js:302:14)

I checked the specified file but I couldn't find anything which might cause it. Also, as far as I know, set method doesn't receive a expire time argument. I would very much appreciate any pointers as to how to fix it or what may cause it.
OS: Ubuntu 18.04.1 LTS
NodeJS version: 12.19.0
redis-server version: 4.0.9
node-redis version: 3.0.2
node-redis-parser version: 3.0.0

I noticed that this belongs to the connect-redis repository. Sorry for reopenning the issue.


BUG: CC0017 (create auto property) when fixing it changes static property to non-static, which breaks things

Hi.
When I have static field with property and trying to fix it with CC0017 to auto-property, it removes static which breaks referenced calls.
Repro code: (tested with 1.0.0-rc5-1063)
		class FileManager
		{
			private static string _filePath = "";
			public static string FilePath
			{
				get
				{
					return _filePath;
				}
				set
				{
					_filePath = value;
				}
			}
		}

		static void Foo2()
		{
			var path = FileManager.FilePath;
		}

Translates into:
		class FileManager
		{
			public string FilePath { get; set; } = "";
		}

		static void Foo2()
		{
			var path = FileManager.FilePath;
		}

Which doesn't compile.
Regards.

Bug confirmed. It should keep the property static, like this:
class FileManager
{
    public string FilePath { get; set; } = "";
}

I just confirmed that it is removing all modifiers. I think that entered with the last bug fix I added yesterday.


[BUG]  about consult-yank

hi @abougouffa
when  press key  y  or d   to copy or delete some content
then call consult-yank
The first line is always a space and the second line is the cut content.

Yep, I confirm I have I a similar behavior. However, I think this should be reported in consult's repo!

OK I will submit this bug to consult

https://github.com/minad/consult/issues/888
maybe killring has some whitespace


Distinguish between fcm tokens

Hi ,
Please can you tell me how can i distinguish between fem token which i received it is belongs to iOS or android
thanks

Probably no way. But when you receive the token from the device, you may record it somewhere that this is your iOS/Android/Web token and then have a lookup when needed


Add a flag to disable compile-time preallocated instantiation caches (for type metadata and protocol conformances)

The motivation is to save codesize in generated binaries when it's appropriate to trade off some performance for better codesize. The intention is to enable this for the "minimal" / "freestanding" preset.

@swift-ci please test

Looks great! Can we have a runtime test that also exercises -disable-preallocated-instantiation-caches to make sure that side of things works (and keeps working)?

There already is one in the PR! (There's two tests, one IR test, one runtime test). Or are you looking for another test for something not covered?

@kubamracek Argh, sorry. I swear I looked at them both but I must have looked at the other one twice instead. This looks good!


DirPagination: ng-repeat not working between dir-paginate-start and dir-paginate-end

Hello!
ng-repeat directive not working between dir-paginate-start and dir-paginate-end. For example:

    {{ item.name }}

        {{ size }}

After compiling ng-repeat replaced by comments:

How can I solve this problem? Thanks!

Hi. Thanks for the report. This is a known issue - see https://github.com/michaelbromley/angularUtils/issues/92 for more information and a hacky work-around I came up with. I've not yet been able to implement a more permanent solution.


Did we pointlessly overcomplicate our serde?

Why for serde do you have near-identical copies of structs (e.g. StaticMetadata(SerdeRepr)), instead of using custom (de)serialization logic on specific fields you want to handle differently? It gives a first impression of a fair bit of redundancy and boilerplate, how did it come about and can a more elegant solution be used.

How it came about is that we wanted to write both text and binary versions of things and some of our types were imploding at least one of the serde implementations. I think we flipped at least one of the serde libraries we use from toml => yaml so it is possible some of our serde impls are no longer required.

This has now been significantly simplified.

Report and fix most appreciated :)


[BRD] [Minor] Incorrect Straight Shot Ready overwrite detection

See this analysis https://xivanalysis.com/fflogs/vDTBxz2KtngQYdfk/3/1 for reference
In the referenced analysis, the module claims that 2 Straight Shot Ready procs were overwritten by premature uses of Barrage. However, no such overwrites occurred. There are 3 uses of Barrage in the log, and in all 3 instances, the fact that there was no overwrite can be easily seen in the timeline near the bottom of the analysis page.

0:12 The first was delayed by using Pitch Perfect first to verify that no Straight Shot Ready proc had occurred, and then used when that was verified. Note that the Straight Shot Ready buff does not appear until the use of Barrage in the second oGCD slot.
2:15 The second was used as the first oGCD immediately following a Refulgent Arrow, meaning that it is not possible for there to have been a Straight Shot Ready proc to overwrite.
4:16 The third was used following a Blast Arrow, which itself had followed a Refulgent Arrow, and therefore, as with the second instance, it is not possible for there to have been a Straight Shot Ready proc to overwrite.

The same issue also occurred for the same character on the Byregot and Nald'Thal kills in the same log ( https://xivanalysis.com/fflogs/vDTBxz2KtngQYdfk/1/1 and https://xivanalysis.com/fflogs/vDTBxz2KtngQYdfk/6/1 ), although in those instances, only 1 overwrite per fight was incorrectly reported by XIVA.

From debugging the call to tryAddEventToOverwrites in stopAndSave in core\modules\procs.tsx, we get timestamps of 705986 and 787451, with a pull timestamp of 599322. These values are in milliseconds. 705986 - 599322 = 106664, and 787451 - 599322 = 188129.
Thus the timestamps of Straight Shot Ready procs being overwritten are 1:46.664 and 3:08.129.
There are four actions that can generate Straight Shot Ready procs: Barrage, Caustic Bite, Iron Jaws, and Burst Shot. At 1:46, you can see your Burst Shot generated a Straight Shot Ready, but then you cast Iron Jaws which overwrote the Straight Shot Ready. Same thing happens at 3:08.
So the analysis isn't wrong! But it's certainly not informative. At the least, I think the suggestion method should mention ways to proc Straight Shot Ready. Ideally it should include timestamps.

Thank you @Maliziacat! Closed as of #1829.


Add code formatter

Add a canonical code formatter and document how to install/use it. Also add a CI action to check formatting.

I'll add Prettier as JS code formatter


Error - oauthClient enable invalid

Has anybody started seeing this error recently? Any fixes available. I have been using this module to connect to a sonoff smart switch
object
error: 403
msg: "Sign:oauthClient enable invalid"```

Meet the same problem, starting today. It working normally until today!!

Solution: https://github.com/skydiver/ewelink-api/issues/220
Update APP_ID and APP_SECRET in node-red/node-modules/ewelink-api/src/data/constants.js with your APP_ID or from the previous link.

It works, thanks !!!

Does not work for me

It works, thanks !!!

rebooted multiple times, still doesn't work

Same problems, started 3 days ago having been ok for months.
p xxx Sent from my phone, apologies for brevity and my dexterity
inspired errors 😃

Updating APP_ID & APP_SECRET from Solution: https://github.com/skydiver/ewelink-api/issues/220 works fine but if you create a new app on https://dev.ewelink.cc/#/ and use your own APP_ID & APP_SECRET then you can get a list of devices but cannot control switches.
I suspect the reason is due to the v1 login being depreciated and only v2 logins being an option. When the working APP_ID & APP_SECRET stop working then this will all become a problem again.
Hopefully someone will fix this or we face the arduous task of flashing and configuring Tasmota on our Sonoff switches.

Don"t seem to work anymore, and the APP_ID & APP_SECRET don't seems to be issued by ottoszika but a community member.
coolkit-carl  Says d'ont use it !
https://github.com/skydiver/ewelink-api/issues/220#issuecomment-1678308792
In issue https://github.com/skydiver/ewelink-api/issues/220 , the problem seems to be more located on new auth method (oauth 2) than in a legacy api id/secret...
Who's got the skill to integrate oauth 2.0 in node-red-contrib-ewelink, since it seems to be the only valid method provided by the underlying ewelink-api...

Still works for me, but only using the 'DEVICES' Node.
p xxx Sent from my phone, apologies for brevity and my dexterity
inspired errors 😃

Still works for me, but only using the 'DEVICES' Node.
With my own created APP id & secret I can only list devices but using the id & secret supplied in the post above I can also control the switches. The working id & secret are probably using oauth1 and this will last at most a year before the keys become invalid and this all becomes an unfix-able problem. I'm experimenting with an ESP8266 programmed with Tasmota and controlling it via a node-red dashboard (local) and Telegram (remote) just in case nobody can fix the oauth2 problem.

works but only for devices registered to that userID. shared devices cannot be accessed. Any advice ?

Mine has worked just fine until today I finally upgraded my node-red install to 3 and nodejs to 18 to handle the new MATTER node - and now my node-red-contrib-ewelink will not connect... all the nodes including devices just say disconnected. Ideas anyone?

Hi Peter, I'm having the same problem with my Node Red ewelink: {"error":403,"msg":"Sign:oauthClient enable invalid"}
I have not upgraded anything on node red or node.js and cant understand why ewelink just suddenly stopped working. Have you managed to get yours going again and if you have could you offer a helping hand please. Kind regards Don....

Having the same issue here, hopefully someone can release an update to fix issue. Looks like this module uses an older version of the API that has been shutdown.

Hi Peter, I'm having the same problem with my Node Red ewelink: {"error":403,"msg":"Sign:oauthClient enable invalid"} I have not upgraded anything on node red or node.js and cant understand why ewelink just suddenly stopped working. Have you managed to get yours going again and if you have could you offer a helping hand please. Kind regards Don....
I've just come back to this now - no - no working.. I ope someone has the answer - I ecently upgraded to nodjs18 to get the latest Node-Red.


Add blackbox exporter

Hi,
I've added the blackbox exporter.
Fixes https://github.com/bitnami/kube-prod-runtime/issues/1036
Cheers,
floek

Hi,
Thank you very much for the PR! I believe this should be part of a new BKPR release branch, as it is adding a new image. I will put the PR on hold until we have plans on working on this.

Hi,
Thank you very much for the PR! I believe this should be part of a new BKPR release branch, as it is adding a new image. I will put the PR on hold until we have plans on working on this.


Angular styleguide

Hi!
I bumped into this project while I was looking for an example app that is following the the official Angular styleguide.
I see that you are trying to follow the guidelines, but there is one thing, which is against it. Specifically against this point:
Avoid providing services in shared modules. Services are usually singletons that are provided once for the entire application or in a particular feature module.
Is it intentional that you have the src/app/shared/services/ folder, and services in it, which are used throughout the app?
According to the Angular styleguide, it should be placed under src/app/core.
Thanks,
Norbert

Hi Norbert!
You are completely right, so I've made some changes.
You can see them here.
Thanks and best regards.

Thank you for the modification, now it seems better :)
Yes, I agree, that in some cases it's needed, but it will be usually coming from one of the components.
In this example, it's the HeroService, that is placed in the app/heroes/shared, indicating it's a shared service, but belongs to the Hero component. And it is imported in the SharedModule as a global provider, to make it available for everyone.


CollisionPolygon2D not enabling in pause mode

Godot version
3.5.1 stable
System information
Kubuntu 22.04
Issue description
CollisionPolygon2D with process mode enabled not enabling when game is paused. Area2D doesn't receive signals as result. It is possible to enable polygon by turning pause mode off and on with idle frame, but still looks like a bug.
Steps to reproduce

Play Scene. It will be paused by scene script
Enter mouse in area2D. It should print 'ENTER' to console
Disable and enable CollisionPolygon2D in remote mode
Enter mouse in area2D again - nothing in console

Minimal reproduction project
bug_CollisionPolygon2D.zip

The physics server may have a global instruction that tells it not to process anything while paused, so this may be a design limitation.

When the SceneTree is set to pause=true in both Godot 4.0 and 3.x it not only pauses the nodes, it does are hard disable on all the servers except rendering and turns them all inactive. Don't ask me why such a design is allowed to even exist.


Drop ruby-2.0 and mustermann19, use mustermann-grape instead

ref #1469

OMG,  latest mustermann requires ruby-2.1 or later.
@dblock What do you think?

I say we go for it and drop 2.0. Rails already requires 2.2.

Does Rails 3 not work with Ruby 2.1? If so we should mention it and git rm gemfiles/rails_3.gemfile and remove it from Appraisals.

I release 0.17.0, maybe make a major version increment (replace 0.17.1 -> 0.18.0) with this PR?

Bump @namusyaka?

Sorry for the delay.  rails-3.2-stable seems like to support ruby 2.1.

I release 0.17.0, maybe make a major version increment (replace 0.17.1 -> 0.18.0) with this PR?

Yeah, the major version should be incremented, but I'd like to merge a few things for fixing bugs.

Just force pushed.

You also need to drop rails 3 from appraisals, no?

rails-3.2 and ruby-2.1 has passed specs on travis. https://travis-ci.org/ruby-grape/grape/jobs/158980775

Merged, thanks!


Bar chart with x-axis min and max acts weird with one datapoint

I'd like to use the bar chart with a fixed x-axis min, max and values. But the padding and bar width calculation don't work nicely when min and max is set. Try modifying the example http://c3js.org/samples/chart_bar.html like this:
var chart = c3.generate({
    data: {
        columns: [
            ['data1', 30],
            ['data2', 30]
        ],
        type: 'bar'
    },
    axis: {
        x: {
            min: 0,
            max: 5,
            tick: {
                values: [0, 1, 2, 3, 4, 5]
            }
        }
    }
});

Would it be possible to base the calculations on min-max range and tick-count rather than point count in this case?

Hi @RanzQ!
The reason this is happening is that the x axis in this case is index-based. By specifying max: 5, you tell C3 to ensure there's space for five data points. If there's only one (as there is in this case), it'll compress it into one side.
There totally is a bit of weirdness with min and max in the example you've given, though — data1 is half as wide as data2, which doesn't make much sense, even if you're using it oddly (That is, you probably shouldn't specify min/max with indexed axes, C3 will take care of that generally. Min/max are really only used with numerical axes.).
Attaching screencap. @masayuki0812, not sure if I should tag this as bug or invalid?

Also, can confirm it occurs in 0.4.9, not sure what version the website is currently running.

I made a temp fix by modifying getMaxDataCount to prefer axis_x_tick_values length if specified and greater than maxDataCount otherwise:
c3.chart.internal.fn.getMaxDataCount = function () {
    var $$ = this, config = $$.config,
        maxDataCount = $$.d3.max($$.data.targets, function (t) { return t.values.length; }),
        tickValues = config.axis_x_tick_values
    return tickValues && tickValues.length > maxDataCount ? tickValues.length : maxDataCount
};

That fixed the width problem I was having. For the min-max bug I just adjusted the min and max in case of one datapoint and it gets centered.

Thank you for looking into this. Yeah, it's not intended, but it's a bug and width of bar should be computed correctly in this situation. So, I fixed by introducing tickInterval, which returns the length between ticks, and compute the width using this function.
I'll release this in the next version 0.4.10 shortly. Thanks.

0.4.10 has been released, so let me close at the moment. Thanks.


How to make animations reliable in any context

I have a scenario where I'm distributing directives that represent UIs like dropdowns and modal dialogs.  These directives come with styles, including animations, built-in.  The animations rely on ngAnimate.  When these directives are used alone or in extremely simple situations, they appear to work as desired.
However, when the directives are composed into a more complex application contexts or are used to build new, more complicated directives, the animations no longer play as desired.  Most especially, there are extremely common situations, such as when these directives are descendants of any element that uses ngIf or ngShow, where problems arise.  It sounded like ngAnimateChildren would help, but it does not behave as I expected.
I have created reduced test cases here: http://codepen.io/morewry/pen/VvwbrO

ngAnimate 2.0 has a different approach on this and the goal is to get it to work with Angular 1 and Angular 2. The idea here is that we have a new way of crafting together multi DOM node animations in a better way than with the current version of ngAnimate. Have a look at this video to get an understanding of how the new system works: https://www.youtube.com/watch?v=izp5N2eeogg


Could I list 3rd party devices using smart-home-dashboard ?

My google home app has linked Yeelight and Smart Plug(Smart life) devices, could I list all of devices(Home Graph) in my google account using SYNC ?
Thanks~

No, the platform does not provide a way for one to get devices nor states across all connected services, just the one for the service you create as a developer.

Hi Fleker, got it thanks~


Add snakes to vent spawn event

About the PR

Adds the large space adder, small space adder, and stealthy space cobra to the vent spawn event
I was able to kill a space cobra with just a crowbar so it seems fine despite the blinding effect it gives you. Nice to have more variety among the vent spawns that isn't just spider or slime.
Why / Balance

I want more hostile mob variety from the vent spawn event. I'm tired of getting cellular and caustic damage because it's slimes like 80% of the time.
Technical details

yml
Media

Requirements

[x] I have read and am following the Pull Request and Changelog Guidelines.
[x] I have added media to this PR or it does not require an ingame showcase.

Breaking changes

Changelog

:cl:

add: The vent spawn event now has a chance to spawn snakes.

"I've had enough of these monkey fighting snakes on my Monday to Friday space station!!!"


Add functionality to Date Tracking

Resolved
Users can now track and visualize critical dates associated with their job applications


Provide a way to build RetryStrategy

Motivation:
Currently RetryStrategy supports factory methods.
If a user wants to make a complex RetryStrategy, he/she should implement their own RetryStrategy
By offering RetryStrategyBuilder, users can easily build RetryStrategy.
For example:
Backoff backoffOn503 = ...;
Backoff backoffOn500 = ...;

// Before:
RetryStrategy retryStrategy = RetryStrategy.onStatus((status, unused) -> {
    if (status == HttpStatus.SERVICE_UNAVAILABLE) {
        return backoffOn503;
    }
    if (status == HttpStatus.INTERNAL_SERVER_ERROR) {
        return backoffOn500;
    }
    return null;
});

// After:
RetryStrategy retryStrategy =
        RetryStrategy.builder()
                     .onStatus(HttpStatus.SERVICE_UNAVAILABLE, backoffOn503)
                     .onStatus(HttpStatus.INTERNAL_SERVER_ERROR, backoffOn500)
                     .build();

Or build a more complex strategy
RetryStrategy strategy =
        RetryStrategy.builder()
                     .onUnProcessed(unProcessBackOff)
                     .onException()
                     .onServerErrorStatus(statusErrorBackOff)
                     .onStatus(HttpStatus.TOO_MANY_REQUESTS, statusBackOff)
                     .addRetryStrategy((ctx, cause) -> {
                         if (ctx.log().isAvailable(RequestLogProperty.RESPONSE_HEADERS)) {
                             final HttpStatus responseStatus =
                                     ctx.log().partial().responseHeaders().status();
                             if (responseStatus.isClientError()) {
                                 return CompletableFuture.completedFuture(clientErrorBackOff);
                             }
                         }
                         return CompletableFuture.completedFuture(null);
                     })
                     .build();

Modifications:

Add RetryStrategyBuilder for building RetrySratategy.
Add RetryStrategyBindingBuilder for building RetryStrategy fluently.
Breaking

RetryStrategy.onServerErrorStatus() does not retry anymore when an exception is raised.
Use RetryStrategyBuilder.onServerErrorStatus() with RetryStrategyBuilder.onException(...)

Deprecation

RetryStrategy.onStatus(backoffFunction) has been deprecated in favor of
RetryStrategyBuilder.onStatus(...) and RetryStrategyBuilder.onException(...).
RetryStrategy.onException(backoffFunction) has been deprecated in favor of
RetryStrategyBuilder.onException(...).

Result:

Fixes #1634
You can now easily build RetryStrategy using its builder.

The latest version of fluent builder.
RetryStrategy.builder()
             .on(retryOnError ->
                 retryOnError.idempotentMethods()
                             .exception(ResponseTimeoutException.class)
                             .backOff(Backoff))
             .on(noRetry ->
                 noRetry.status(HttpStatus.BAD_REQUEST)
                        .noDelay())
             .on(retryOnStatus ->
                 retryOnStatus.status(HttpStatus.INTERNAL_SERVER_ERROR)
                              .exception(ex -> ex instanceof ClosedSessionException)
                              .method(HttpMethod.GET)
                              .noBackOff(maxAttempts))
             .build()

Sorry for a late response and thanks for the fluent builder.
The new API fulfills the needs, but..

The use of variable names (retryOnError, noRetry, ...) seems somewhat unnatural to me. I'm not sure users will name their variables that way. They will just use what IDE suggests or use the same name for all conditions.
The resulting indentation will not be like your example but like:RetryStrategy.builder()
             .on(retryOnError ->
                     retryOnError.idempotentMethods()
                                 .exception(ResponseTimeoutException.class)
                                 .backOff(myBackoff))

How about initiating the builder chain with a specific on*() methods?
RetryStrategy.builder()
             .onIdempotentMethods() // Enters a different builder
             .onException(...)
             .thenBackoff(myBackoff) // Returns to RetryStrategyBuilder
             .onStatus(...)
             .thenStop()
             .onStatus(...)
             .onException(...)
             .onMethod(...)
             .then...()
             .build();

The resulting indentation will not be like your example but like:

Yes, I found that a brace is added 😅

How about initiating the builder chain with a specific on*() methods?

That sounds good. We can reduce boilerplate methods.
Then onStatus(HttpStatus, BackOff) could be replaced with fluent style:
// Before:
RetryStrategy retryStrategy =
        RetryStrategy.builder()
                     .onStatus(HttpStatus.SERVICE_UNAVAILABLE, backoffOn503)
                     .onStatus(HttpStatus.INTERNAL_SERVER_ERROR, backoffOn500)
                     .build();
// After:
RetryStrategy retryStrategy =
        RetryStrategy.builder()
                     .onStatus(HttpStatus.SERVICE_UNAVAILABLE).thenBackOff(backoffOn503)
                     .onStatus(HttpStatus.INTERNAL_SERVER_ERROR).thenBackOff(backoffOn500)
                     .build();

Hope we can keep the indented versions too, like the other fluent builders, for autoformatted code :)

Hope we can keep the indented versions too, like the other fluent builders, for autoformatted code :)

As @trustin said, when I made the indented version, the variable name was unnatural. How about adding a class that can build a new retry operation.
// Before: fluent style with lambda
RetryStrategy retryStrategy =
        RetryStrategy.builder()
                     .on(newStarategy -> newStarategy.onStatus(HttpStatus.SERVICE_UNAVAILABLE)
                                                     .onException(ex -> ex instanceof ClosedSessionException)
                                                     .onMethod(HttpMethod.GET)
                                                     .thenBackOff(backoffOn503))
                     .build();

// After: Use static to build a retry operation.
RetryStrategy retryStrategy =
        RetryStrategy.builder()
                     .on(RetryOperation.onStatus(HttpStatus.SERVICE_UNAVAILABLE)
                                       .onException(ex -> ex instanceof ClosedSessionException)
                                       .onMethod(HttpMethod.GET)
                                       .thenBackOff(backoffOn503))
                     .build();

How about adding a class that can build a new retry operation.

That sounds OK to me as well. How about RetryRule?

How about RetryRule?

The name looks better. 👍

The PR description was updated with the current API design. 😉

Thanks for reviewing @anuraaga @minwoox @trustin 🙏

:clap::clap::clap:


Control+C should not copy if it has nothing selected on the editor

@julianrolon

Hello Spyder devs,
I have attempted to fix this issue here: https://github.com/spyder-ide/spyder/pull/3043
I would gladly welcome any criticism, as this is my first contribution to open source. If what I have submitted does not fully resolve the issue, I would also greatly appreciate advice on how to produce a satisfactory solution.
Thanks in advance!


Fix Timer with progress

Fix #1507

I tested poq_issue_1507_progress/32a1bf244dc13569d53ae9ec6550ebd2392151c3
The issue with the timer is fixed. Tested with:
sct_process_segmentation -i t2_seg.nii.gz -p shape

However, this issue remain:
https://github.com/neuropoly/spinalcordtoolbox/issues/1507#issuecomment-350116091

Should be good to go now


[CSL-669] Make sure all memory pools are limited, make limit variable

Changes made in this PR:

Caches used in DLG are now LRU and have maximal size limit.
All memory pools are now limited pro rata current maximal block size. There is a memPoolLimitRatio constant which determines mem pool size limit. Note that sizes are approximate (because we don't need exact precision here) and that overall mem pool may be 4x larger than maximal block size * memPoolLimitRatio because we have 4 block components. It shouldn't be a problem anyway, just letting everybody know.
There is a special logic in US and SSC which determines which data should be dropped and which should be preserved when mempool is exhausted. When we start using tx fees, we will add similar logic to Txp.

Ready for review.

Travis failed with transient errors 5 times in a row, so I am merging it despite those failures.


Improve plugin architecture

Migrate to dep from Godep
Update dependencies
Remove redundant package
Optimize for the latest Go version (e.g. sort.Slice)

Go Meta Linter detected 13 issues on 67f1a8f9ba13e5829350042d91b026b9c4bff28a
Visit https://sideci.com/gh/65626505/pull_requests/9 to review the issues.


[TimeSeriesCard] SkeletonText not showing when loading

Describe the bug
When the card has isLoading set to true, the SkeletonText is not rendering. Only an empty div renders
To Reproduce
Steps to reproduce the behavior:

Go to any TimeSeriesCard story
Set isLoading knob to true
See an empty div in CardContent

Expected behavior
Should render the SkeletonText like all other cards
Environment/versions:

OS: MacOS
Browser: chrome
carbon-addons-iot-react version: v2.75.0

:tada: This issue has been resolved in version 2.76.4 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Didn't find subscribe to topic in websockets.

Description
Basically, the backend is using this lib adonis-websocket-client here is a function that subscribe to topic.
here is an example
this.ws.withJwtToken(this.token).subscribe(channel)
Sending a message to a specific topic
socket.ws.getSubscription(topic).emit(event, message)
Didn't find anything related to websockets.
Version
0.64.0
Output of npx react-native info
info Fetching system and libraries information...
System:
OS: macOS 12.4
CPU: (8) arm64 Apple M1
Memory: 105.48 MB / 8.00 GB
Shell: 5.8.1 - /bin/zsh
Binaries:
Node: 16.15.1 - /usr/local/bin/node
Yarn: 1.22.19 - /opt/homebrew/bin/yarn
npm: 8.11.0 - /usr/local/bin/npm
Watchman: 2<IP_ADDRESS> - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.11.3 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5
Android SDK: Not Found
IDEs:
Android Studio: 2021.2 AI-212.5712.43.2112.8609683
Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild
Languages:
Java: 11.0.15 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.1 => 17.0.1
react-native: ^0.64.0 => 0.64.3
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce
The above information is enough for this bug.
Snack, code example, screenshot, or link to a repository
The above information is enough for this bug.

You can find documentation about websockets here https://reactnative.dev/docs/network#websocket-support

@cortinico I know the basics have you found something subscribe to topic?

@cortinico I know the basics have you found something subscribe to topic?

RN only provides the implementation for the WebSocket protocol, "subscribe to topic" is something else, that is abstracted by another protocol that builds on top of the WebSocket protocol. So, you need to find the library on the client, that accepts WebSocket object to initialize the connection.
For your case, I think you can override the connect() method the use the WebSocket from RN.
https://github.com/adonisjs/adonis-websocket-client/blob/develop/src/Connection/index.js#L576-L598


Collection of books from newsletter

Has anyone downloaded some of this books? I really would like to read some of them! Thanks in advance! Sorry for making it this way.

You have to download the books yourself when they are available, we can not upload or send you any files for obvious legal reasons.


Demo deployment optimisations and cleanups

Main changes (aside from documentation cleanups):

Removes (now unused) older duplicate data files under SampleData/CocoPharma/dbdata
Enables switching between cluster-internal (Helm-deployed) and external (pre-existing) Kafka configs to fix #782
Consolidates the Deployment and Service documents into a single file per module (was constantly forgetting to update a port number in one or the other otherwise)
Removes the redundant -deployment at the end of every pod name (just takes up logging screen real estate)
Removes the app name prefix from the deployed container names (they are namespaced within the pod already, so no need to have a variable name inside the pod)
Cleans up configmap to remove unused variables, add conditionality for internal / external services, and remove the fully-qualified internal DNS names (short names work fine, and then should not cause problems if people deploy into other namespaces) to fix #626
Uses a standard initContainer in most places to check availability of dependencies before running the pod's actual container to fix #627
Adds readinessProbes and livenessProbes where possible
Adds Jobs for one-time tasks like data loading, sending config to Egeria, etc (will auto-restart on failure until successfully completed or retry limit exceeded; Helm will auto-clean once successful) to fix #780 and fix #627
Replaces custom postgresql with standard (and minimal) postgresql container to fix #780
Uses multi-stage builds to produce significantly smaller (10x) runtime images to fix #670
Changes default build registry and repository for docker images to be one everyone can build and push to (and updating instructions to indicate how to do so)
Removes redundant README.md in every docker image sub-folder -- if we want to document how to build images outside Maven we should probably just do this once, and not try to maintain the same instructions in so many places...
Adds ability to use either a cluster-external IGC or a container-based one; as commercial software also does not setup any IGC by default
Now embeds the Egeria IGC Proxy as a container in the same pod as IGC itself (if deploying as a container) to get around any hostname resolution issues (same pod = same hostname); if external IGC will automatically add hostAlias entry to allow IGC Proxy to properly resolve IGC environment's hostname irrespective of DNS

Somewhat interesting conundrum for testing: the new Jobs that initialise things set themselves up by pulling just what they need from master at startup; but until the PR is merged, the content they're after doesn't exist in master (so the first job, which does the data load to postgresql, will just go into a failure loop)...
Not sure what the ideal way to handle such a scenario would be?  Doesn't seem great to pre-build all the content into the docker image at build-time, either (requires re-building the image itself any time the content used for configuration changes, which is very heavy...)

Latest docker image sizes:

name
size
notes

localhost:5000/odpi/egeria
199MB
chassis + UI

localhost:5000/odpi/ranger-admin-egeriavdc
4.34GB
(still to be optimised)

localhost:5000/odpi/omrsmonitor-egeriavdc
83.6MB
(probably already optimised?)

localhost:5000/odpi/ldap-init-egeriavdc
383MB
(probably should be replaced by initContainer?)

localhost:5000/odpi/kafka-monitor-egeriavdc
630MB
(still to be optimised)

localhost:5000/odpi/gaian-egeriavdc
628MB
(still to be optimised)

localhost:5000/odpi/egeria-configure
64.7MB
db clients + git + any other utilities

localhost:5000/odpi/apache-atlas
1.07GB
Solr + HBase + Atlas

... total ...
7.5GB

I'd guess we can probably get the footprint to less than 5GB overall assuming similar optimisations for the un-optimised containers (eg. Atlas went from 10GB to 1GB)...

Thanks. I will try and read through this in the next day or two, I think it's important we go through that as it's a lot of changes in a PR, and then we can look at also testing on IBM cloud; looks like a very useful set of changes.


sha1_mb for aarch64 over ASIMD

This patch implements sha1_mb for aarch64 over cpu feature ASIMD,
which can be useful when crypto extension is not supported.
It is only enabled for A57/A72/N1
Change-Id: I3328a0c53be868a0220f993b7de80f3e8eacd0a0
Signed-off-by: Daniel Hu<EMAIL_ADDRESS>

will re-push later due to some logistic issue.


Not able to run dahliaOS on VirtualBox

Describe the bug
Yesterday i wanted to try out dahliaOS so I downloaded the legacy version to test it out in VirtualBox and after setting everything up when I tried to run the Machine it ran the initial screen and then it was stuck on the initial screen and in noticed my CapsLock light on keyboard started blinking and it never booted into dahliaOS.
What kind of a bug is it?
It is an OS Bug which is not letting me run dahliaOS on VirtualBox
To Reproduce
Steps to reproduce the behavior:

download the latest legacy version
Setup virtual box with recommended amount of resources
Try to start the Virtual Machine
See error

Expected behavior
During the initial boot itself you will never make it into the system and it will just stay on a black screen with text and CapsLock light will start blinking
Screenshots
The Bug
Desktop (please complete the following information):

OS: dahliaOS Linux
Device: HP Pavillion 15 Gaming ec0xxx

dahliaOS build version
dahliaOS Linux 220222 (Feb 23,2022)

Sounds like your system is deadlocked on memory during initial boot. Set
the memory to 4GB.
On Tue, Mar 22, 2022, 5:46 AM Ayush Desai @.***> wrote:

Describe the bug
Yesterday i wanted to try out dahliaOS so I downloaded the legacy version
to test it out in VirtualBox and after setting everything up when I tried
to run the Machine it ran the initial screen and then it was stuck on the
initial screen and in noticed my CapsLock light on keyboard started
blinking and it never booted into dahliaOS.
What kind of a bug is it?
It is an OS Bug which is not letting me run dahliaOS on VirtualBox
To Reproduce
Steps to reproduce the behavior:

download the latest legacy version
Setup virtual box with recommended amount of resources
Try to start the Virtual Machine
See error

Expected behavior
During the initial boot itself you will never make it into the system and
it will just stay on a black screen with text and CapsLock light will start
blinking
Screenshots
The Bug
Desktop (please complete the following information):

OS: [e.g. dahliaOS Linux, dahliaOS Zircon]
Device: HP Pavillion 15 Gaming ec0xxx

dahliaOS build version
dahliaOS Linux 220222 (Feb 23,2022)
—
Reply to this email directly, view it on GitHub
https://github.com/dahliaOS/pangolin_desktop/issues/317, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEOTEHGPXPNOLC7QMFL3OWDVBG6KXANCNFSM5RKYXPEQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I currently have issue with my laptop and will be getting it replaced tonight, I'll check it put and let you know.

okay, that seemed to have worked thanks!