In i18n.js, an array of locales which point to defaultLocale as a fallback

What version of this package are you using?
2.0.5
What problem do you want to solve?
I have the following folders in my locales folder. My default locale is 'en-gb' and I am just testing translation with one other language, 'ro'.
en-gb
hu
id
ie
pl
ro
th
I have about 20 different the namespace files inside the en-gb folder but there are no namespace files in the other folders for the remaining locales at the moment, whilst in development.
I want all the other locales, apart from 'ro' to point to 'en-gb' as the fallback whenever the useTranslate hook is called.
I tried limiting the locales and domains array to just 'en-gb' and 'ro', but when the other domains load all the pages error out with a 404. Only the Romanian and UK domains are working properly: dev.cromwell.co.uk and dev.cromwell.ro
What do you think is the correct solution to this problem?
Could we have a new setting to the i18n.js config which is an array of locales which point to the default locale as the fallback? Let's call it localesToFallback, So all the namespace files inside the defaultLocale folder, 'en-gb', will be used as the fallback for the locales listed in that array. Something like this:
module.exports = {
    locales = ['en-gb', 'ro', 'hu', 'id', 'ie', 'pl', 'th'],
    defaultLocale: 'en-gb',
    localesToFallback: ['hu', 'id', 'ie', 'pl', 'th'],
    pages: {
        '*': ['common'],
        '/basket': ['basket'],
        '/login': ['login'],
    }
}

Are you willing to submit a pull request to implement this change?
Yes, I can try

Probably you can do it using the loadLocaleFrom config function, that is just to get more flexibility in order to load the translations.

Thanks so much for getting back to me 😊
If I add the following to the config, I can see that I would need to change myTranslationsFiles to whatever folder name I like.
Is that all I need to do to enable all the namespace files inside that folder to be the fallback files for languages without namespace files in them?
{
  "loadLocaleFrom": (lang, ns) =>
    // You can use a dynamic import, fetch, whatever. You should
    // return a Promise with the JSON file.
    import(`./myTranslationsFiles/${lang}/${ns}.json`).then((m) => m.default),
}

No, you should implement fallbacks, example:
{
  "loadLocaleFrom": async (lang, ns) => {
     const translationsEnGb =  await import(`./locales/en-gb/${ns}.json`).then((m) => m.default)

     if (lang === 'en-gb') return translationsEnGb;

     const translations = await import(`./locales/${lang}/${ns}.json`).then((m) => m.default)

     return { ...translationsEnGb, ...translations }
  }
}

Hi @aralroca
Thanks for taking the time to provide me that example code.
I implemented it as you suggested and then got this error: "Critical dependency: the request of a dependency is an expression" so I followed the advice from this issue: https://github.com/aralroca/next-translate/issues/851#issuecomment-1173611946 but then got this error: "Module not found: Can't resolve 'next-translate/lib/cjs/plugin/utils.js'
I am using Next v12.2.5 and below is my config.
Any advice would be much appreciated - thank you
module.exports = {
  locales: [ 'en-gb',  'ro',  'en-ie',  'ie', 'en-in', 'en-za', 'th', 'id', 'ms-my', 'cs-cz', 'hu', 'pl', 'zh-cn'],
  defaultLocale: 'en-gb',
  extensionsRgx: /\.(tsx|ts|js|mjs|jsx)$/,
  keySeparator: '.',
  loadLocaleFrom: async (lang, ns) => {
    const translationsEnGb = await import(`./locales/en-gb/${ns}.json`).then((m) => m.default);
    if (lang === 'en-gb') return translationsEnGb;
    const translations = await import(`./locales/${lang}/${ns}.json`).then((m) => m.default);
    const importedTranslations = { ...translationsEnGb, ...translations };
    return importedTranslations;
  },
  pages: {
    '*': ['common', 'form-error-text'],
    '/basket': ['basket'],
    '/checkout/checkout-login': ['login'],
    '/create-account': ['create-account', 'reusable-components'],
    '/favourites': ['favourites'],
    '/favourites/[tab]': ['favourites'],
    '/forgotten-password': ['forgotten-password'],
  },
};

@rolandjlevy Instead of 2.0.5 try the latest version of next-translate & next-translate-plugin

Hi @aralroca
I tried the latest version of next-translate & next-translate-plugin but still get the same error: "Module not found: Can't resolve 'next-translate/lib/cjs/plugin/utils.js'
Instead of using a fallback, do you think using default namespace would solve my problem? This is what I am trying to achieve:
I make an API call in _app,js which checks whether or not translation is active in the db table. If it is not active then I want to remain on the same domain but use the default namespace files, in this case 'en-gb'. Below is the code in _app.js:
Is this the right approach or should I be using default namespace?
useEffect(() => {
    (async () => {
      try {
        // handleMakeRequest just uses axios for making API calls
        const response = await handleMakeRequest({
          method: 'get',
          url: '/domain-locales',
        });
        const translationActive = response?.data.find((item) =>
          currentDomain.includes(item.domain)
        );
        if (!translationActive) {
          const defaultLanguage = 'en-gb';
          await setLanguage(defaultLanguage );
        }
      } catch (err) {
        console.log(err);
      }
    })();
  }, []);

This is the config for next.config.js
{
  "locales": ['en-gb',  'ro',  'en-ie',  'ie', 'en-in', 'en-za', 'th', 'id', 'ms-my', 'cs-cz', 'hu', 'pl', 'zh-cn'],
  defaultLocale: 'en-gb',
  localeDetection: false,
  domains: [
    {
      "domain": "cromwell.co.uk",
      "defaultLocale": "en-gb"
    },
    {
      "domain": "ted.co.uk",
      "defaultLocale": "en-ie"
    },
    {
      "domain": "ted.ie",
      "defaultLocale": "ie"
    },
    {
      "domain": "cromwell.co.in",
      "defaultLocale": "en-in"
    },
    {
      "domain": "cromwell.co.za",
      "defaultLocale": "en-za"
    },
    {
      "domain": "cromwell.co.th",
      "defaultLocale": "th"
    },
    {
      "domain": "cromwell.co.id",
      "defaultLocale": "id"
    },
    {
      "domain": "cromwell.ro",
      "defaultLocale": "ro",
      "http": true
    },
    {
      "domain": "cromwell.com.my",
      "defaultLocale": "ms-my"
    },
    {
      "domain": "cromwell.cz",
      "defaultLocale": "cs-cz"
    },
    {
      "domain": "cromwell.hu",
      "defaultLocale": "hu"
    },
    {
      "domain": "cromwell.pl",
      "defaultLocale": "pl"
    },
    {
      "domain": "cromwell.co.cn",
      "defaultLocale": "zh-cn"
    }
  ]
}

For me make sense to change the URL to the correct language. However maybe you can consider instead of doing it in a useEffect do these redirects in a middleware, it depends if you prefer not to track these pages in google and do the redirect correctly to the default language.

Hi @aralroca
Thanks again for your feedback. I will take a look at the middleware approach soon.
But first, is there a bug with the setLanguage function?
Here it says: "You could also use setLanguage to change the language while keeping the same page."
If I could use setLanguage and keep on the same page it would really solve the problem. But it doesn't stay on the page. Here are two examples:
On the Romanian domain https://www.dev.cromwell.ro setLanguage is not called in useEffect because translation is active in the db.
For the Hungarian domain setLanguage is called in useEffect because translation is NOT active in the db. So setLanguage is called with 'en-gb', like this: await setLanguage(defaultLanguage);
But when you go to the Hungarian domain https://www.dev.cromwell.hu it redirects to the UK domain https://www.dev.cromwell.co.uk so I am not able to change the language while keeping the same page.
Can you explain why setLanguage is doing this?

setLanguage is not doing any extra magic, is using the router.push from next/router:
https://github.com/aralroca/next-translate/blob/de5ad45d005488b36f21fed291e18437af468972/src/setLanguage.tsx#L3-L15
Probably is changing to the domain that you have defined inside domains, but this is part of the i18n Next.js routing part. It's out of the scope of this library.
setLanguage is fine, but it make sense to change the language after user interaction with the page (in client-side), but if you want to do it before (in server-side), probably you should use middleware.

Hi @aralroca
I tried using middleware following various examples, including your one mentioned here but the rewrite in the middleware doesn't seem to work.
I changed the version of next-translate and next-translate-plugin to 2.3.0 as suggested in this comment
I have middleware.js in the root directory and I am using next v12.2.5
Is there anything else I need to do to get the rewrite working?
Many thanks
Roland

loadLocaleFrom

Definitely not an expert here @rolandjlevy, but I think you are close with the middleware. Have you tried simply making a redirect in the last line instead? So:
return NextResponse.redirect(request.nextUrl)

Thanks @LarsEjaas but that didn't work for me.
However, I managed to find a fallback solution which works for me, here: https://github.com/aralroca/next-translate/issues/1029#issuecomment-1684827974


Use the full ‘The Guardian’ logo at the bottom right and remove the roundel from the top right

What does this change?
Use the full ‘The Guardian’ logo at the bottom right and remove the roundel from the top right, in order to have the RRCP match our design style guide.
Logo only shows from 740px (tablet) onwards.

How to test

Create a designable banner
See Guardian logo in bottom right

How can we measure success?

Have we considered potential risks?

Images
Designable banner: one image
Wide

Tablet

Mobile

Accessibility

[ ] Tested with screen reader
[ ] Navigable with keyboard
[ ] Colour contrast passed
[ ] The change doesn't use only colour to convey meaning

Closing this to open a new one that only changes Designable banner template


[BUG] Service Bus Receiver stops receiving messages from queues after Server Errors

Describe the bug
When there is Server Errors in Service Bus, which happen once or twice per week. The Service Bus queue receiver stops receiving the messages, while the queue sender can keep sending them.
The only way we can fix this is to restart the app.
Exception or Stack Trace
This is one of the errors after the Server Errors:
{"az.sdk.message":"Non-retryable error occurred in AMQP receive link.","exception":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:ebae50e8a3044adf88825a821bf53108_G28, SystemTracker:gateway7, Timestamp:2022-04-26T02:03:16, errorContext[NAMESPACE: asavie-platform-servicebus-stg-eu-1.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-queue-here, REFERENCE_ID: my-queue-here_7a1b06_1649943062396, LINK_CREDIT: 2]","linkName":"n/a","entityPath":"n/a"}

To Reproduce
Create a receiver no matter if using the synchronous or the processor model and leave it running for a week receiving messages. Wait until there is Server Errors, shortly after that the Receiver stops receiving messages while the Sender can keep sending them.
The problem here is that not all the Server Errors cause this problem, but since they all arrive in bulk, one of them trigger the problem, here is a screenshot of the Server error that caused the problem:

On the top is this log occurrence, in the middle is the number of server errors and at the bottom is the messages in and out. You can see that is during the 4th server error that the app logs the error and stops receiving the messages. The yellow line is the received messages and the green line is the sent messages.
Code Snippet
this.serviceBusReceiver = new ServiceBusClientBuilder()
                .connectionString(applicationProperties.getServiceBusQueueConnectionString())
                .processor()
                .queueName(applicationProperties.getServiceBusQueueName())
                .processMessage(this::onMessage)
                .processError(ServiceBusQueueReceiver::handleError)
                .buildProcessorClient();

Expected behavior
The Receiver should reconnect properly and keep receiving the messages.
Setup (please complete the following information):

OS: Linux
Library/Libraries: com.azure:azure-messaging-servicebus:7.7.0
Java version: 11
App Server/Environment: Tomcat
Frameworks: Spring Boot

Additional context
We have multiple clusters with the same setup pointing to multiple Service Bus namespaces configured exactly the same way. All of them have the same issue, as soon as there are server errors in service bus, the receiver stops receiving messages.
Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Bug Description Added
[x] Repro Steps Added
[x] Setup information Added

We've tried to follow the provided steps and see if this can be reproduced to collect logs.
Given the issue description state the downtime seems to be related to "Server Errors," - the goal of our deployment was to generate as many server errors as possible, given this is not in the control of the client, but server decides when to return such error, we used a "basic tier" and created 36 queues and started send-receive. The thought was that running such loads on the "basic" tier may cause service throttling.
As expected, over the 7-day run, the service returned ~200 server errors, but none of them left the receivers in a completely unrecoverable state.

This is the main reason we request to provide DEBUG logs from the client side so that we can look at the wire traffic and attempt to find the root cause. Can you please share the SDK DEBUG logs. The SDK DEBUG logs covering the error duration (+/- 20 minutes after experiencing the issue) may provide some insights

Sadly we had no DEBUG logs activated. But i will deliver the error logs. The first line is the last successfull message receive. After th last line no message receive is possible till the pod get restarted by killing it manually.
2022-05-11 18:02:39.668  INFO 7 --- [or-http-epoll-2] c.d.s.s.servicebus.AsyncReceiver         : Completing message {"foo": "bar"} 2022-05-11 18:02:39.790 DEBUG 7 --- [ctor-executor-5] c.d.s.s.servicebus.AsyncPublisher        : Message sent with payload {"foo":"bar"} 2022-05-11 18:10:30.025  WARN 7 --- [ndedElastic-422] c.a.c.a.i.ReactorDispatcher              : {"az.sdk.message":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","exception":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","connectionId":"MF_47f5d6_1652286282815"} 2022-05-11 18:10:30.025  WARN 7 --- [     parallel-1] c.a.c.a.i.ReactorDispatcher              : {"az.sdk.message":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","exception":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","connectionId":"MF_47f5d6_1652286282815"} 2022-05-11 18:10:30.025  WARN 7 --- [     parallel-1] c.a.c.a.i.RequestResponseChannel         : {"az.sdk.message":"Unable to open send and receive link.","exception":"Unable to open send and receive link.","connectionId":"MF_47f5d6_1652286282815","linkName":"cbs"} 2022-05-11 18:10:30.025  WARN 7 --- [     parallel-1] c.a.c.a.i.AmqpChannelProcessor           : {"az.sdk.message":"Retry attempts exhausted or exception was not retriable.","exception":"Unable to open send and receive link.","connectionId":"MF_47f5d6_1652286282815","entityPath":"$cbs","retry":1} 2022-05-11 18:18:48.096  WARN 7 --- [ctor-executor-6] c.a.m.s.i.ServiceBusReceiveLinkProcessor : {"az.sdk.message":"Transient error occurred.","exception":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:18:47, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1]","linkName":"n/a","entityPath":"n/a","attempt":1,"retryAfter":4511} 2022-05-11 18:18:52.608  WARN 7 --- [ndedElastic-418] c.a.m.s.i.ServiceBusReceiveLinkProcessor : {"az.sdk.message":"Transient error occurred.","exception":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:18:47, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1]","linkName":"n/a","entityPath":"n/a","attempt":2,"retryAfter":14575} 2022-05-11 18:19:12.901  WARN 7 --- [ctor-executor-6] c.a.m.s.i.ServiceBusReceiveLinkProcessor : {"az.sdk.message":"Transient error occurred.","exception":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:19:12, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1]","linkName":"n/a","entityPath":"n/a","attempt":3,"retryAfter":51928} 2022-05-11 18:20:04.830  WARN 7 --- [ndedElastic-418] c.a.m.s.i.ServiceBusReceiveLinkProcessor : {"az.sdk.message":"Non-retryable error occurred in AMQP receive link.","exception":"The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:19:12, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1]","linkName":"n/a","entityPath":"n/a"} 2022-05-11 18:20:04.830 ERROR 7 --- [ndedElastic-418] .s.FluxAutoLockRenew$LockRenewSubscriber : Errors occurred upstream. The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:19:12, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1] 2022-05-11 18:20:04.844 ERROR 7 --- [ndedElastic-418] c.d.s.s.servicebus.AsyncReceiver         : Could not process message with reason The service was unable to process the request; please retry the operation. For more information on exception types and proper exception handling, please refer to http://go.microsoft.com/fwlink/?LinkId=761101 TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:19:12, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: my-microservice/subscriptions/my-subscription, REFERENCE_ID: my-microservice/subscriptions/my-subscription_d1f5ef_1651226348013, LINK_CREDIT: 1]. It may be a problem with the network connection. 2022-05-11 18:35:05.240  WARN 7 --- [ctor-executor-6] c.a.c.a.i.RequestResponseChannel         : {"az.sdk.message":"Error in SendLinkHandler. Disposing unconfirmed sends.","exception":"The connection was inactive for more than the allowed 300000 milliseconds and is closed by container 'LinkTracker'. TrackingId:1e678124dc4a4ae8b111dc77f9b218ed_G22, SystemTracker:gateway7, Timestamp:2022-05-11T18:35:05, errorContext[NAMESPACE: my-namespace.servicebus.windows.net. ERROR CONTEXT: N/A, PATH: $cbs, REFERENCE_ID: cbs:sender, LINK_CREDIT: 96]","connectionId":"MF_730311_1652291573928","linkName":"cbs"} 2022-05-11 18:36:09.824  WARN 7 --- [ndedElastic-418] c.a.c.a.i.ReactorDispatcher              : {"az.sdk.message":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","exception":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","connectionId":"MF_730311_1652291573928"} 2022-05-11 18:36:09.824  WARN 7 --- [     parallel-1] c.a.c.a.i.ReactorDispatcher              : {"az.sdk.message":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","exception":"ReactorDispatcher instance is closed. Should not continue dispatching work to this reactor.","connectionId":"MF_730311_1652291573928"} 2022-05-11 18:36:09.824  WARN 7 --- [     parallel-1] c.a.c.a.i.RequestResponseChannel         : {"az.sdk.message":"Unable to open send and receive link.","exception":"Unable to open send and receive link.","connectionId":"MF_730311_1652291573928","linkName":"cbs"} 2022-05-11 18:36:09.825  WARN 7 --- [     parallel-1] c.a.c.a.i.AmqpChannelProcessor           : {"az.sdk.message":"Retry attempts exhausted or exception was not retriable.","exception":"Unable to open send and receive link.","connectionId":"MF_730311_1652291573928","entityPath":"$cbs","retry":2}

@quentinpopp we suggest enabling DEBUG logs, diagnosing receiver “hang” requires looking into logs for a long duration as I mentioned earlier.
Now looking at the trace, it seems the service bus receiver didn’t “hang” in your case but it signaled the terminal error to AsyncReciver instance (a type local to your project). I see the AsyncReciever is logging that signal from its error handler?. Is this understanding correct?

@quentinpopp we suggest enabling DEBUG logs, diagnosing receiver “hang” requires looking into logs for a long duration as I mentioned earlier. "hang" here means the receiver entering a state where it neither produces any message nor emits a terminal error.
Now looking at the trace, it seems the service bus receiver didn’t “hang” in your case but it signaled the terminal error to the AsyncReciver instance (a type local to your project). I see the AsyncReciever is logging that signal from its error handler? Is this understanding correct?

I enabled the DEBUG logs yesterday and will post an update on the logs as soon as the problem occurs.
Your understanding is correct, here is the code from the receiver:
fun subscribeMessages() {         receiver             .receiveMessages()             .flatMap { message: ServiceBusReceivedMessage -> handleReceivedMessage(message) }             .onErrorResume {                 log.error(                     "Could not process message with reason {}. It may be a problem with the network connection.",                     it.message)                 Mono.empty()             }             .subscribe({ log.debug("Message processed successfully") }) { error: Throwable ->                 log.error("Could not process message with reason " + error.message)             }     }
Did i implemented the errorhandling wrong?

Thanks for sharing the usage code.
The Flux (representing message stream) returned from the "ServiceBusAsyncReceiver::receiveMessages()" is a Reactive publisher. Once a Reactive publisher bubble up an error, the message stream is considered terminated, i.e., "error is a terminal event by reactive contract" and the receiver won't emit any more events (message event or error event).
An error is emitted to the application if the error is not transient or the retry is exhausted. It's good to log such an error as you might want to inspect it later to understand if anything is weird. Now that the current receiver instance is in a disposed state after such an error, you want to close that instance, back off, and create a new receiver instance to continue to receive the messages.

Thanks for you help!
That's the reason why i log the error and then return an Mono.empty(). I thought that is enough...
Is there a better way to handle an error? Do i have to keep care of the instance manually? I thought Spring would handle this itself. I work for the first time with the Reactor Framework.

Hi Quentin, you're right that when using "ServiceBusAsyncReceiver" you'll have to handle the case where the receiver instance bubble up a non-retriable error or exhaust retry. Like I mentioned, "error is a terminal event by reactive contract".
Depending on how much your application logic is integrated with the Reactor framework, the code pattern for recovery you want to use may differ; if we start with a very simplified apporach, it will be -
String connectionString = System.getenv(SERVICEBUS_CONNECTION_STRING);
String queueName = System.getenv(SERVICEBUS_QUEUE_NAME);

while (true) {
    // Using the "current thread" to create the client.
    try (ServiceBusReceiverAsyncClient client = new ServiceBusClientBuilder()
            .connectionString(connectionString)
            .receiver()
            .queueName(queueName)
            .receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
            .buildAsyncClient()) {

        final CountDownLatch errorLatch = new CountDownLatch(1);

        client.receiveMessages()
                // messages and error are received on "boundedElastic thread".
                .flatMap(message -> {
                    return handleReceivedMessage(message);
                })
                .subscribe(
                    __ -> {},
                    error -> {
                        LOGGER.info("Retry Exhausted or Non-Retriable error happened: {}", error);
                        errorLatch.countDown();
                    });

        // block the "current thread" until there is an error.
        errorLatch.await();
        // latch unblocked, let's auto-close the current receiver, backoff and repeat.
    }

    // backoff
    TimeUnit.SECONDS.sleep(1);
}

Let me know how it goes.
If we want to go a more reactive way of recovery, then there is retryWhen operator

We will implement this too @anuchandy and will let you know how it goes.

Hi Quentin, you're right that when using "ServiceBusAsyncReceiver" you'll have to handle the case where the receiver instance bubble up a non-retriable error or exhaust retry. Like I mentioned, "error is a terminal event by reactive contract".
Depending on how much your application logic is integrated with the Reactor framework, the code pattern for recovery you want to use may differ; if we start with a very simplified apporach, it will be -
String connectionString = System.getenv(SERVICEBUS_CONNECTION_STRING);
String queueName = System.getenv(SERVICEBUS_QUEUE_NAME);

while (true) {
    // Using the "current thread" to create the client.
    try (ServiceBusReceiverAsyncClient client = new ServiceBusClientBuilder()
            .connectionString(connectionString)
            .receiver()
            .queueName(queueName)
            .receiveMode(ServiceBusReceiveMode.PEEK_LOCK)
            .buildAsyncClient()) {

        final CountDownLatch errorLatch = new CountDownLatch(1);

        client.receiveMessages()
                // messages and error are received on "boundedElastic thread".
                .flatMap(message -> {
                    return handleReceivedMessage(message);
                })
                .subscribe(
                    __ -> {},
                    error -> {
                        LOGGER.info("Retry Exhausted or Non-Retriable error happened: {}", error);
                        errorLatch.countDown();
                    });

        // block the "current thread" until there is an error.
        errorLatch.await();
        // latch unblocked, let's auto-close the current receiver, backoff and repeat.
    }

    // backoff
    TimeUnit.SECONDS.sleep(1);
}

Let me know how it goes.
If we want to go a more reactive way of recovery, then there is retryWhen operator

Thanks! It seems like it worked. We did a simple try-catch block and in the catch case we abadon/deadletter the message depending on the use case. If the error occurs again i will come back to you.

Hi @quentinpopp We are trying to build an infinite receiver and unable to do so. Can you please share your code how are u completing or abandoning the message.

Hi @quentinpopp We are trying to build an infinite receiver and unable to do so. Can you please share your code how are you completing or abandoning the message.

You just need to call the serviceBusReceiverAsyncClient.complete(serviceBusReceivedMessage), the same with abandoning.
Some example in Kotlin:
`fun receiveMessages() {
receiver.receiveMessages().flatMap(::tryHandleReceivedMessage).subscribe {
log.debug("Message received and handled")
}
}
fun tryHandleReceivedMessage(message: ServiceBusReceivedMessage): Mono<Void> {
    return try {
        handleReceivedMessage(message)
        receiver.complete(message)
    } catch (ex: IOException) {
        log.error("Failed to convert service bus message: {}", message, ex)
        receiver.deadLetter(message)
    } catch (ex: Exception) {
        log.error("Failed to process service bus message: {}", message, ex)
        if (message.deliveryCount >= 3) receiver.deadLetter(message)
        else receiver.abandon(message)
    }
}`

So the error was away for a few weeks and cases, till this night.
This night a server error occured and the receiver again stopped consuming events. It's the same known problem as [r1ckr] described.


EAS update fails with error code EJSONEMPTY

Build/Submit details page URL
No response
Summary
Try to publish update with EAS Update and getting an error:
CommandError: {"name":"EmptyJsonFileError","code":"EJSONEMPTY","isJsonFileError":true}

dist directory is not even created
Managed or bare?
managed
Environment
❯ npx expo-env-info
expo-env-info 1.0.5 environment info:
System:
OS: macOS 13.4.1
Shell: 5.9 - /bin/zsh
Binaries:
Node: 18.15.0 - ~/.asdf/installs/nodejs/18.15.0/bin/node
Yarn: 1.22.19 - ~/.asdf/installs/nodejs/18.15.0/bin/yarn
npm: 9.6.4 - ~/.asdf/plugins/nodejs/shims/npm
Watchman: 2<IP_ADDRESS> - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.12.0 - /Users/dimonn/.asdf/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.4, iOS 16.4, macOS 13.3, tvOS 16.4, watchOS 9.4
IDEs:
Android Studio: Flamingo 2022.2.1 Patch 1 Flamingo 2022.2.1 Patch 1
Xcode: 14.3.1/14E300c - /usr/bin/xcodebuild
npmPackages:
expo: ~48.0.15 => 48.0.19
react: 18.2.0 => 18.2.0
react-dom: 18.2.0 => 18.2.0
react-native: 0.71.8 => 0.71.8
react-native-web: ~0.18.10 => 0.18.12
npmGlobalPackages:
eas-cli: 3.15.0
Expo Workflow: managed
❯ npx expo-doctor
✔ Validating global prerequisites versions
✔ Checking for incompatible packages
✔ Checking for conflicting global packages in project
✖ Verifying prebuild support package versions are compatible
Issues:
Expected package<EMAIL_ADDRESS>Found invalid:
<EMAIL_ADDRESS>(for more info, run: npm why @expo/config-plugins)
Advice:
• Upgrade dependencies that are using the invalid package versions.
✔ Checking dependency versions for compatibility with the installed Expo SDK
✔ Validating Expo Config
✔ Checking package.json for common issues
✖ Found one or more possible issues with the project. See above logs for issues and advice to resolve.
Error output
❯ eas update --channel=main --message="initial"
[expo-cli] CommandError: {"name":"EmptyJsonFileError","code":"EJSONEMPTY","isJsonFileError":true}
Reproducible demo or steps to reproduce from a blank project
run eas update --channel=main --message="initial"

hey @dimonnwc3 , just to sanity check before we debug further, is your app.json or package.json empty?

hey @dimonnwc3 , just to sanity check before we debug further, is your app.json or package.json empty?

package.json is not empty
I'm using dynamic configuration because of local secrets, with app.config.js
but I tried to use app.json for debugging as well and error is still here

@dimonnwc3 thanks for the info. We'll need to find out where your EmptyJsonFileError, presumably somewhere in your project there is an empty JSON file and we need to figure out which it is.
Can you do the following:

Post your full error output, not just the errored line ([expo-cli] CommandError:). It will help me figure out where in the script the error happens.
Can you either share your github repo (if you are comfortable making it public) or send the .zip via email (you can send it to quin@expo.io)? If your project is quite complex, a simple version with the problem will be very much appreciated!

@quinlanj  thanks for your comment, it helped me to figure out
I've had an empty json file, referenced from my config, to localisation json file:
export default {
  expo: {
    ...
    locales: {
      en: "./lib/empty.json",
    },
    ...
  },
}

after adding empty object {} error is not present anymore


[Issue-1849] UI bug on the Buy token screen on the Firefox browser

UI bug on the Buy token screen on the Firefox browser

🚀 Deployed on https://pr-2321--sw-web-runner.netlify.app


Build centos 7/8 rpm for version 0.3.8

Hi.
In the repo now
Name        : dexter
Arch        : x86_64
Version     : 0.3.5
Release     :<PHONE_NUMBER>.d58c6650.centos7
Size        : 102 M
Repo        : installed
From repo   : dexter
Summary     : The automatic indexer for Postgres
URL         : http://example.com/no-uri-given
License     : unknown
Description : The automatic indexer for Postgres

Thanks @gmekhrenin, looks like the previous build failed. Fixed now: https://packager.io/gh/pghero/dexter/


Crashes on concurrent requests

When two requests are made before a result can be delivered hubot crashes.

Example: with the meme_generator plugin, saying hubot y u no success results in this:
meme_generator.coffee:57
      instanceURL = result['instanceUrl'];
                          ^
TypeError: Cannot read property 'instanceUrl' of undefined
    at /Users/titanous/projects/spy/scripts/meme_generator.coffee:57:27
    at IncomingMessage.<anonymous> (node_modules/hubot/node_modules/scoped-http-client/lib/index.js:60:20)
    at IncomingMessage.emit (events.js:81:20)
    at HTTPParser.onMessageComplete (http.js:133:23)
    at Socket.ondata (http.js:1231:22)
    at Socket._onReadable (net.js:677:27)
    at IOWatcher.onReadable [as callback] (net.js:177:10)

Has this been resolved in the latest release (v1.1.11)?


How can i achieve following?

Is it possible to do following thing with current available settings?

In trend_ema strategy buy only if the current price is less then amount X (this is in addition of upward trend detection). As in i dont want the risk to buy when price is very high.
I want to make the bot buy with with X capital when its buying at high risk. For example buy with 100 usd capital when current market rate is above USD 17K, but the bot can buy with 200 usd when the market price is beflow 17K. These values should be configurable.

This issue was moved to highvelocityspace/zenbot#77

Dear issue reporter,
We have slightly changed our github issue policy and would now kindly request folks that have questions that they ask them in our zenbot subreddit.
You can find it here: https://reddit.com/r/zenbot
This issue will be closed, but if you disagree with your ticket being marked as a question feel free to leave a comment defending your case.
Thanks for contributing time and effort!
Greetings,
🤖


45816967 ADNI Vision Transformer

Hi,
This is 45816967's pull request to add a vision transformer to topic-recognition for the classification of ADNI dataset achieving a test accuracy of 64.43%.
The pull request contains:

modules.py: The code for the models used for the vision transformer
dataset.py: The code used to load the data from a folder
train.py: The code used to run the training loop for the vision transformer
predict.py: Code used to run predictions from a chosen model
driver.py: Script to quickly train and predict using the model
README.md: Project Documentation

Thanks,
Jun Khai Chooi
45816967

This is an initial inspection, no action is required at this point
Difficulty: Hard
Readme:

Good work
Contents explained well
Plenty of hyperparameter tuning

Commit messages: Exellent
Code:

Uses Vision transformer
Well commented
Good design

Functionality/Performance:

Did patient-level split
Test acc is 64.43%

General comments:

Solves the problem well although performance is poor
Good work

Marking
Good Practice (Design/Commenting, TF/Torch Usage)
Adequate design and implementation
Good spacing and comments
Header blocks missing -1
Recognition Problem
Solves problem
Driver Script present
File structure present
Shows Usage & Demo & Visualisation & Data usage
Module present
Commenting
No Data leakage
Difficulty: Hard
Commit Log
Meaningful commit messages
Progressive commits used
Documentation
ReadMe good
Model/technical explanation
Good Description and Comments
Markdown used and PDF submitted
Pull Request
Successful Pull Request (Working Algorithm Delivered on Time in Correct Branch)
No Feedback required
Request Description good

Merging not possible until the gitignore file is removed, please fix. Does not affect grade only merge.

Feedback attempt and no feedback marks lost.


[Landing page] design discrepancies

Environment
iPhone 8 / browser: Safari
Steps to repro

Access  https://develop--frontend.preview.coucher.org/

Expected results

Actual results

KO Different background image
KO Wrong copy line break on header: “Connect with the world around” / “you”
KO Wrong copy on sub-header “Built by the community and always free”
KO horizontal rule is missing
KO "About us" link is hidden (need to scroll)

Closing because its outdated and newer issues already exist for landing/login/signup page (#1706)


[Star-Tree V2] Index loader for Star-Tree V2

Added StarTreeIndexContainer to hold all star-tree indexes
Added StarTreeIndexMapUtils to manage the map of index to the offset and size in the single index file
Added StarTreeDimensionDataSource and StarTreeMetricDataSource to represent the data source for star-tree columns
Integrated star-tree into the ImmutableSegmentImpl

Codecov Report

Merging #3259 into master will decrease coverage by 0.24%.
The diff coverage is 8.73%.

@@             Coverage Diff              @@
##             master    #3259      +/-   ##
============================================
- Coverage        70%   69.75%   -0.25%
  Complexity        4        4
============================================
  Files           972      977       +5
  Lines         44560    44751     +191
  Branches       5975     5995      +20
============================================
+ Hits          31194    31217      +23
- Misses        11286    11456     +170
+ Partials       2080     2078       -2

Impacted Files
Coverage Δ
Complexity Δ

...eader/impl/v1/FixedByteChunkSingleValueReader.java
65.9% <ø> (ø)
0 <0> (ø)
:arrow_down:

.../core/startree/v2/store/StarTreeIndexMapUtils.java
0% <0%> (ø)
0 <0> (?)

...startree/v2/store/StarTreeDimensionDataSource.java
0% <0%> (ø)
0 <0> (?)

...core/startree/v2/store/StarTreeIndexContainer.java
0% <0%> (ø)
0 <0> (?)

...in/pinot/core/startree/v2/StarTreeV2Constants.java
0% <0%> (ø)
0 <0> (?)

...re/startree/v2/store/StarTreeMetricDataSource.java
0% <0%> (ø)
0 <0> (?)

...din/pinot/core/startree/v2/StarTreeV2Metadata.java
41.66% <23.52%> (-35.26%)
0 <0> (ø)

...e/indexsegment/immutable/ImmutableSegmentImpl.java
65.97% <36.36%> (-3.59%)
0 <0> (ø)

.../pinot/core/segment/index/SegmentMetadataImpl.java
79.86% <37.5%> (-1.26%)
0 <0> (ø)

...ndex/converter/SegmentV1V2ToV3FormatConverter.java
74.35% <50%> (-1.32%)
0 <0> (ø)

... and 29 more

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 b323d44...f36541b. Read the comment docs.

@mayankshriv Will add tests once the builder code gets checked in


TBD

What should be done?
TBD

@noisersup, what is this about?

@AlekSi It's a result of my misunderstanding 2 days ago. I realized later that the issue I wanted to prepare was actually a way how mongo works, so I'm closing that.


View stdout and stderr in the logs

Anyone know how to view the output of the service process in the logs? Looking to see stdout and stderr.
Thanks.

WinSW writes these logs by default to the disk. ${executable.name}.err.log and ${executable.name}.out.log

Hmmmm... for some reason I only see "exectuable.name.wrapper"
I have logging setup to roll-by-time. I have checked in the log folder and the executable folder. Would it be elsewheres?

My bad, logs are not being written to the disk by default. You need to specify logmode, e.g.
  <logmode>rotate</logmode>

Once I finalize https://github.com/kohsuke/winsw/pull/213, I'll probably add executable log forwarding to STDOUT by default

I may be misunderstanding. I have a logmode setup in my xml. It is set to roll-by-time.
<log mode="roll-by-time">
  	<pattern>yyyy-MM-dd</pattern>
</log>

Unfortunately I don't see any logging though. I'm looking to see the stdout of the target process the service executable references inside the  tag.

I had the same issue. My relative log directory path was being resolved
with c:\windows\system32 as the base directory. I found my log files there. Using an absolute log directory path fixed the issue for me.

I have <logpath> set, but the logs are going to C:\windows\system32 for me too. Is there anyway to have the stdout and stderr logs go to a relative directory via <logpath>?

Prepend %BASE%\ to your relative path.


How would we like to handle windows apps that have CRLF?

It may not be an issue specific to pack, but it's something to think about.

Closed because this probably won't effect us.


disable title in mini.clue

Contributing guidelines

[X] I have read CONTRIBUTING.md
[X] I have read CODE_OF_CONDUCT.md

Module(s)
mini.clue
Description
Hi.
Thank you for hard work.
Is there any way to disable the title in mini.clue?

Yes, there is a config.window.config for that. Setting it to { title = { { '', 'MiniClueBorder' } } } removes the title.
But I'd like to mention that title shows useful information about the currently typed keys and there is no (and won't be) any testing that title can be disabled. So the above solution might stop working at any time.


Add ctxutil to create context cancellations with stack traces

This adds stacks to context.Err() for where the WithTimeout or the WithCancel were created. This will hopefully help us find where the cancellations come from.
This is not 100% according to spec as the spec is says .Err() should only return context.Canceled or context.DeadlineExceeded (whereas we return those but wrapped in something else):
    // If Done is not yet closed, Err returns nil.
    // If Done is closed, Err returns a non-nil error explaining why:
    // Canceled if the context was canceled
    // or DeadlineExceeded if the context's deadline passed.
    // After Err returns a non-nil error, successive calls to Err return the same error.
    Err() error

Not sure how I feel about this. FWIW, I don't see any buildkit code that relies on that assumption (everything checks using errors.Is).

This isn't working as intended due to the context package expecting strictly context.Canceled or context.DeadlineExceeded (and not wrapped versions of them). There's no way to sneak any additional info into the ctx.Err().


"Getting started" and "Basics" in the documentation not working

Environment

Component
Version

Node.js
N/A

Client (Chrome/Chromium/...)
Chrome Version 105.0.5195.127

OS running Node.js
N/A

OS running the client
Windows 10 Pro (Version 21H2, OS build 19044.2006)

chrome-remote-interface
N/A

Is the client running in a container? NO
Description
In https://chromedevtools.github.io/devtools-protocol/, in th "Resources" section there is a link: Getting Started with CDP. This link points to a README.md file in another repository that says the following:

Protocol Fundamentals
When Chromium is started with a --remote-debugging-port=0 flag, it starts a Chrome DevTools Protocol server and prints its WebSocket URL to STDERR. The output looks something like this:
DevTools listening on ws://<IP_ADDRESS>:36775/devtools/browser/a292f96c-7332-4ce8-82a9-7411f3bd280a

However, running the command chrome.exe --remote-debugging-port=0 doesn't output anything.
Also, in Basics: Using DevTools as protocol client it says that if you run chrome.exe --remote-debugging-port=9222 then you should be able to open http://localhost:9222/ with a web browser, but when I do I don't see anything. It's just a blank page.
Example
N/A

Now that I'm thinking about it, I'm not 100% sure this is the correct repository to submit this issue. I reported this problem here too. If you think this is not the correct place feel free to close this issue.

Now that I'm thinking about it, I'm not 100% sure this is the correct repository to submit this issue.

It is not actually! :)

However, running the command chrome.exe --remote-debugging-port=0 doesn't output anything.

Hmm, works for me on macOS.

Also, in Basics: Using DevTools as protocol client it says that if you run chrome.exe --remote-debugging-port=9222 then you should be able to open http://localhost:9222/ with a web browser, but when I do I don't see anything. It's just a blank page.

Yes this used to be the case. Now I think that page has been removed, now you can just navigate to chrome://inspect. In any case, it doesn't matter if you're going to instrument the instance with JavaScript.
Hope it helps!

Solution: add --enable-logging to see the WebSocket URL in your terminal.
I found this issue in search results but ended up having to dig in Chromium source code, so hopefully this might save some time for others in the future. :)

Solution: add --enable-logging to see the WebSocket URL in your terminal.

Not sure what the problem is, still work as usual with Chrome 122.


Ux revamp/analysis panel layer download

UX Revamp- Analysis Panel + Layer Download
How to test the feature:

[ ] AAUser, on the analysis view, I am able to select parameters for an analysis.
[ ] AAUser, on the analysis view, once I have the analysis results, I can also view it as a table by clicking the "View Table" button.
[ ] AAUser, on the analysis view, once I have the analysis results, I can click "Clear Analysis," which then clears map view/table view and reset the the analysis parameters I had previously selected.
[ ] AAUser, on the layers tab, once I have selected a layer, I can download it as a CSV/GeoJSON/GeoTiff.

Screenshot/video of feature:

@ajanim - great work on this! Some initial feedback:

The text for the headers in left panel (layers, charts, analysis) as well as the layer actions 'exposure analysis' and 'download as geotiff' aren't translating. I added translations for Mozambique in this branch to test and verify this
The analysis result table should display on top of the timeline
After I clear an analysis, the date value disappears and it's not intuitive that the calendar icon is a link to repopulate that. Can we have it default back to the latest available date? This would be consistent with current behavior. We may want to consider making it clearer that the date value is an input field (I see the Figma design missed this, sorry)
I'm hoping we can prioritize collapsing the sidebar as it takes a lot of screen space away from the map. See the top row of the Figma design for this

See screenshots for issues 1-3 below

missing translations

table view should appear in front of timeline

date value input isn't clear after clearing an analysis


Package size exceeded the configured limit of 50 MB

Hi!
Noticed that the script distributed via jsdelivr
https://cdn.jsdelivr.net/npm/getstream/dist/js_min/getstream.js
is responding with 403 response:
Package size exceeded the configured limit of 50 MB.
Could you please fix the settings on JSDelivr to solve the issue?

There's a 67 MB sample.txt which contains some binary data. Sure doesn't look like something that should be in the npm package.

@akute @MartinKolarik thank you for reporting this; the previous release unfortunately included a binary file used for some tests. I pushed a new patch version, jsdelivr is serving the files again.


python311Packages.google-cloud-vision: 3.7.1 -> 3.7.2

Changelog: https://github.com/googleapis/python-vision/blob/v3.7.2/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 293876 run on x86_64-linux 1

2 packages marked as broken and skipped:

python312Packages.google-cloud-vision
python312Packages.google-cloud-vision.dist

4 packages built:

python311Packages.google-cloud-vision
python311Packages.google-cloud-vision.dist
python311Packages.layoutparser
python311Packages.layoutparser.dist


Content footer

fixes #137

Thanks @pmarsceill - I have updated by website to make use of this: https://eclipse.github.io/imagen/
One downside of implementing the footer content in the yaml file is I was unable to keep using {{ site.time | date: '%Y' }} to always have the correct copyright date.


Add support for Title tab with Templates

It seems like it should be possible to populate the Title field when using a template. I see it commented out in Envelope.json.cs - maybe it just needs to be finished out?

@brbeaird I believe you're correct.
You can try to uncomment and test it and see if it works. If you want - you can submit the enhancement yourself. We'll get to it at some point soon.

Interesting. I tried uncommenting and adding in a RoleTitleTab class with tabLabel and value (identical to the RoleTextTab class). From there, I was able to add a titleTab to my template envelope, and it seems to be getting sent along. However, I'm not really sure what's happening after that. It definitely isn't populating Title on my doc, and when I do some calls to retrieve the envelope tabs, I see 2 entries for title tabs, but neither actually has a value listed. I can't seem to find any real documentation on doing this, so it's hard to say whether or not it's something on my end or not.
Here's me adding the title role tab:

Here's the weird empty title tab that actually ends up on the signer:

Brian, let see if I can confirm what you're trying to do:
you have an existing template, which is using a title tab somewhere, correct?
now, your code is trying to create a new envelope based on this template and send it, and while doing so, make sure the title is set, correct?
this is regardless of the recipient being set?
note that the title can be linked to the recipient and if that recipient is in the same account - we'll try to match and find the title previously set for that user. If this is a brand new email that is not in the account - then I believe you should be able to do what I described. I'll try to find some time later today to play with this code and see if I can get this working.

Yes, I'm setting the title tab under one of the templateRoles on that template. The templateRole is set up as a placeholder. However, the email I'm sending is a generic one (since we're doing embedded signing and not actually sending any e-mail), so I guess it's possible the system is seeing that e-mail and thinking the title has been null in the past?

well, we have support for other tabs you can set like textTab, you can try with these to see if they work and isolate the issue. Also, if you can share your code - I can try to debug it. I was going to write a unit test that does this so it's easy to test it without UI etc.

Yeah, it's not a huge deal - I can do the same thing with textTab, which works. Honestly, my main reason for trying this was to see if I could use Title multiple places and have it populate with the same data. If it worked, I was going to basically hijack it for a different field that I needed to have repeated. This is because the default behavior of DocuSign is that if multiple fields on a document have the same data ID, only the first one is populated.
However, later yesterday I happened upon a very helpful stackoverflow post that mentioned using wildcard functionality, prefixing tab labels with //*. That also didn't seem to work, but after tweaking the C# code a bit, I was able to get it working, so I'm pretty pumped about that.
I think the JsonConvert function was escaping the slashes, which wasn't good. My quick hack was to add this to the Envelope.cs class at the end of the CreateJson function:
output = output.Replace("\\", "\");

pretty advanced stuff @brbeaird. you sure can probably make great contributions to this library. Let us know what else we can help you with.

FYI We've released a new version of this client which is generated from Swagger and hence has complete object models, though not all of the API endpoints are available yet through the client.  I encourage you to take a look at the latest version as it might have all the properties you are looking for, including support for titleTabs and other tabs and properties that were missing from the previous library.  I'm closing this issue out but please feel free to file issues against the new client moving forward.
Thanks,
-Ergin


Allow N to be encoded with 0.25 and add allow_N to ersatz functions

Hi Jacob,
Thanks a lot for tangermeme, we've been using it a lot!
When working with fimo on our sequences, I had problems when the sequence contained N, which in our case is encoded with [0.25, 0.25, 0.25, 0.25]. This throws an error in the _validate_input function which accepts [0, 0, 0, 0] for unknown characters.
And also I think the possibility to allow_N should be added to the ersatz functions. I did a prototype for substitute, maybe you could check if that is the way you'd also do it and I can add it to the other functions.

Glad to hear it's useful to you!
It sounds like the immediate need is more like a "validate_input" parameter which can be set to "False". That way FIMO can run on any input without validating that it's correct if you know the reason why it's failing and are okay with it.
I think that the allow_N parameter is ambiguous because, in my view, N doesn't mean [0.25, 0.25, 0.25, 0.25], it means [0, 0, 0, 0]. One might also argue that, if it's non-zero, it should match genomic background rather than uniform probabilities. So.. I'm a bit wary in general about the allow_N terminology. I might actually change it to be something more like where you specify what vector you want N to be, and if you don't specify it, you're not okay with Ns. But I need to think more about this.

Actually, where are you encountering the issue with _validate_input with FIMO?

I've run into this issue with deep_lift_shap. Specifically, when it calls dinucleotide_shuffle, which uses _validate_input. I'm not sure if it's safe to allow [0, 0, 0, 0] into deep_lift_shap, so I've just been preprocessing bed files and excluding records which contain non-ACGT characters.

Unfortunately, I don't have a good answer for doing dinucleotide shuffle or deep_lift_shap with missing characters. There are technical issues (as you've found) and also some conceptual issues such as how valid are model predictions when portions of the sequence are missing if it's largely trained on fully-observed sequences. How meaningful are the gradients in this setting?
That being said, if you need attributions for such sequences and trust the results (within reason) you can always construct your own references for use by deep_lift_shap if you have a method you thinks work well.


move to using async appinsights

When we first started using appinsights-rs, only a blocking mode was available.
With the 0.2 release, an async version is available.  Moving to the async model rather than a separate thread would be beneficial from a maintenance stance.
AB#39994197

Two questions to consider:

Do we currently emit telemetry from any code that is non-async? We might have internal library code that is not itself async, and emits telemetry (even though we always used in an async application).
Do we anticipate needing to be able to?

The answers to each is probably "no", but at a minimum, (1) is a possible refactoring gotcha to be aware of.

@Porges i think you looked at this in #2033 and #2091

Both the blocking and non-blocking implementations seem to have a problem, at least with the way we are using it. I wasn't able to get a clean check-pr run with either. Will require more investigation.


Feature request: strongly typed dataframes

The big advantage of using this over python would be speed, and also that it could be made completely type-safe. If the user knows the rows/columns ahead of time (which is most likely the case) I would suggest we add the possibility to pass a type parameter.
import Breadroll, { Dataframe } from 'breadroll';

interface Row {
  name: string;
  age: number;
  city: string;
}

const csv: Breadroll = new Breadroll({ header: true, delimiter: ',' });

const df: Dataframe<Row> = await csv.open.local<Row>('./data/input.csv');

This would ideally make all functions completely type-safe: you should not be able to access columns that do not exist, you have autocomplete for filtering, etc.

Big thanks, @itsyoboieltr, this is a fantastic feature suggestion! ✨ it's already rocketed its way onto the roadmap for the next release.  Get ready to see it sparkling in all its glory soon! :shipit:

In addition to the type-level safety, maybe there should also be an option for runtime validation too, similar to how trpc does it - Input & Output Validators. This would probably be too costly for very large datasets, but for small-to-medium sized ones could prove to be useful, to make sure the data is sane. Interestingly, most of these validators also support some kind of data transformation, encoding-decoding, etc, so allowing their use in some way would immediately increase the array of features this package also provides :D

These are some great insights, data transformation like encoding and decoding are one of the next things we are looking at, since we already have the .apply method. 🚀 Thanks


Make Better Discord support Android version of Discord with the new React Native version.

Is your feature request related to a problem? Please describe.

We are all waiting for make support BD on all platforms. But now there a new feature that Discord team was there and is about the React Native would replace the old one in Android, that could help the most of people. Just simply doing the same method has Lucky patcher does and you are ready to go. You can see the Youtube Vanced where they made a modded app of YouTube to block any ads in place. It's still possible. Why BetterDiscord still focus on both CSS and JS?
Describe the feature you'd like

When React Native version of Discord for Android will come, you can write themes and plugins base under Javascript supported method and build the Discord you want to see at anytime. Themes and Plugins could works if is written on JS in the same way that plugins was made in ElectronJS version of Discord for Desktop. Inject the BD has the mod manager and you are ready to go. In the same way of YT Vanced or Lucky Patcher does.
The only thing BD could do is the same way of YT Vanced and add a Download manager for keep Discord updated on their app and make work across the bridge of Discord API. By creating a Modded React Native version of Discord to allow mods.
Additional context

React Native is a open source project made by Facebook where you can see these links bellow.
https://reactnative.dev/
https://github.com/facebook/react-native
You can see the new Discord Framework update there: https://discord.com/blog/android-react-native-framework-update

React Native has been the platform for iOS for a while and yet there hasn't been a single plan for it to be made available for it. Have you ever considered, that maybe that's a lot of work? That other people have already done it with other client mods, and maybe the devs for BetterDiscord simply don't care about the mobile versions of BD?

Just to answer a few things:

Although both apps technically use react and share many internals with each other, they are still fundamentally different codebases. Just as an example, mobile builds are bundled with Metro while desktop is bundled with Webpack, which would require different module searches.
React Native is not a browser enviornment like electron. Most plugins heavily rely on browser-specific internals such as the DOM. The JS runtime it uses (Hermes) doesn't even support ES6 classes as of yet, which immediately invalidates BD's current plugin format which is class-based.
Many plugins rely on desktop-specific internals, such as node and access to the filesystem, which are simply not available on more locked-down mobile operating systems.
Theme cross-compatibility is more or less a lost cause. Styling works completely different in React Native compared to W3C-complaint CSS.

While i'm not saying it's impossible to create a project that has some level of cross-compatibility, it's severely out of the scope of what BD does, and it would require a highly abstracted API as well as an extreme amount of maintenance (the developers of such a mod would need to keep up reverse-engineering two separate production codebases).
That being said, there are already mods for mobile builds of Discord (see: Emnity for android, Aliucord, for iOS). These have their own plugin and theme ecosystem and aren't associated with this project.


Requests don't complete?

Hi,
Thank you for your great web server.
I'm running UniWeb and have a handler at path /status.
When I call:
$ curl http://localhost:<port>/status
It doesn't complete and just blocks. According to Unity logs I see it has handled the request.
Any ideas?

Added PR with the fix:
https://github.com/simonwittber/uniwebserver/pull/4


Picture tag can now handle an inside img tag if it exists

This PR will allow to picture tag like this.
<picture
    class="lozad"
    data-iesrc="https://example.org/foo.jpg">
    <source type="image/webp"
            data-srcset="https://example.org/foo.webp"
            class="lozad" />
    <source type="image/jpeg"
            data-srcset="https://example.org/foo.jpg"
            class="lozad"/>
    <img src="data:image/jpeg;base64,/some_lqip_in_base_64==" />
</picture>

With this code, I can use a lazy-loaded <picture> tag, with an LQIP and delegate the lazy-load to the <source> tags inside the <picture> tag

Would love to see this merged in. Thank you for your work. :)

what happen for this PR , I think it's useful to have this in library.

Checking in on this again. Lozad is our preferred solution but we need LQIP support.

Yes, it's too bad this PR isn't merged.
If that can reassure you, this code runs on prod since last february without any issues.

@srogier will be great if you can get the following done, will get this merged ASAP:

update README.md with feature implementation
build and update dist files to resolve their conflict

Bonus points to accompany test cases with PR 💯

PR is now update from master @ApoorvSaxena with a new build
I add some documentation.
I also tried bonus points with testing, but I wasn't very inspired


Cache jvm system parameters to prevent each call from being executed, affecting performance

Signed-off-by: crazyhzm<EMAIL_ADDRESS>What is the purpose of the change
Brief changelog
Verifying this change

Checklist

[x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
[ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[ ] Add some description to dubbo-website project if you are requesting to add a feature.
[ ] GitHub Actions works fine on your own branch.
[ ] If this contribution is large, please follow the Software Donation Guide.

It will cause System.setProperty() to no longer work. The initial idea is to decide whether to cache according to the key, and some keys do not need to support runtime modification.

It will cause System.setProperty() to no longer work. The initial idea is to decide whether to cache according to the key, and some keys do not need to support runtime modification.

可以提供下性能压测对比，看下差距再决定是否这样修改

优化前：
Benchmark                               Mode      Cnt    Score    Error   Units
Client.createUser                      thrpt        3   21.763 ± 71.882  ops/ms
Client.existUser                       thrpt        3   50.595 ± 36.093  ops/ms
Client.getUser                         thrpt        3   21.819 ± 48.590  ops/ms
Client.listUser                        thrpt        3    2.916 ±  4.760  ops/ms
Client.createUser                       avgt        3    3.456 ± 31.127   ms/op
Client.existUser                        avgt        3    1.653 ± 15.300   ms/op
Client.getUser                          avgt        3    1.484 ±  1.135   ms/op
Client.listUser                         avgt        3   10.568 ± 29.212   ms/op
Client.createUser                     sample   318690    3.010 ±  0.023   ms/op
Client.createUser:createUser·p0.00    sample             0.481            ms/op
Client.createUser:createUser·p0.50    sample             2.236            ms/op
Client.createUser:createUser·p0.90    sample             4.915            ms/op
Client.createUser:createUser·p0.95    sample             6.709            ms/op
Client.createUser:createUser·p0.99    sample            17.039            ms/op
Client.createUser:createUser·p0.999   sample            48.824            ms/op
Client.createUser:createUser·p0.9999  sample           170.918            ms/op
Client.createUser:createUser·p1.00    sample           178.782            ms/op
Client.existUser                      sample  1547178    0.620 ±  0.001   ms/op
Client.existUser:existUser·p0.00      sample             0.161            ms/op
Client.existUser:existUser·p0.50      sample             0.569            ms/op
Client.existUser:existUser·p0.90      sample             0.849            ms/op
Client.existUser:existUser·p0.95      sample             0.970            ms/op
Client.existUser:existUser·p0.99      sample             1.495            ms/op
Client.existUser:existUser·p0.999     sample             4.643            ms/op
Client.existUser:existUser·p0.9999    sample            14.549            ms/op
Client.existUser:existUser·p1.00      sample            41.615            ms/op
Client.getUser                        sample   611290    1.569 ±  0.003   ms/op
Client.getUser:getUser·p0.00          sample             0.387            ms/op
Client.getUser:getUser·p0.50          sample             1.485            ms/op
Client.getUser:getUser·p0.90          sample             2.236            ms/op
Client.getUser:getUser·p0.95          sample             2.458            ms/op
Client.getUser:getUser·p0.99          sample             3.195            ms/op
Client.getUser:getUser·p0.999         sample             5.546            ms/op
Client.getUser:getUser·p0.9999        sample            20.775            ms/op
Client.getUser:getUser·p1.00          sample            29.000            ms/op
Client.listUser                       sample    90833   10.562 ±  0.036   ms/op
Client.listUser:listUser·p0.00        sample             1.585            ms/op
Client.listUser:listUser·p0.50        sample            10.437            ms/op
Client.listUser:listUser·p0.90        sample            13.009            ms/op
Client.listUser:listUser·p0.95        sample            14.434            ms/op
Client.listUser:listUser·p0.99        sample            22.807            ms/op
Client.listUser:listUser·p0.999       sample            37.104            ms/op
Client.listUser:listUser·p0.9999      sample            61.735            ms/op
Client.listUser:listUser·p1.00        sample            63.242            ms/op
优化后的：
Benchmark                               Mode      Cnt   Score     Error   Units
Client.createUser                      thrpt        3  21.220 ±  41.514  ops/ms
Client.existUser                       thrpt        3  48.470 ± 111.865  ops/ms
Client.getUser                         thrpt        3  20.601 ±  20.811  ops/ms
Client.listUser                        thrpt        3   3.032 ±   9.202  ops/ms
Client.createUser                       avgt        3   1.466 ±   0.357   ms/op
Client.existUser                        avgt        3   0.650 ±   3.448   ms/op
Client.getUser                          avgt        3   1.448 ±   0.607   ms/op
Client.listUser                         avgt        3   9.846 ±   7.369   ms/op
Client.createUser                     sample   717386   1.337 ±   0.002   ms/op
Client.createUser:createUser·p0.00    sample            0.373             ms/op
Client.createUser:createUser·p0.50    sample            1.161             ms/op
Client.createUser:createUser·p0.90    sample            1.966             ms/op
Client.createUser:createUser·p0.95    sample            2.286             ms/op
Client.createUser:createUser·p0.99    sample            3.154             ms/op
Client.createUser:createUser·p0.999   sample            5.780             ms/op
Client.createUser:createUser·p0.9999  sample           11.370             ms/op
Client.createUser:createUser·p1.00    sample           13.189             ms/op
Client.existUser                      sample  1609319   0.596 ±   0.001   ms/op
Client.existUser:existUser·p0.00      sample            0.148             ms/op
Client.existUser:existUser·p0.50      sample            0.537             ms/op
Client.existUser:existUser·p0.90      sample            0.811             ms/op
Client.existUser:existUser·p0.95      sample            0.946             ms/op
Client.existUser:existUser·p0.99      sample            1.616             ms/op
Client.existUser:existUser·p0.999     sample            4.002             ms/op
Client.existUser:existUser·p0.9999    sample           24.906             ms/op
Client.existUser:existUser·p1.00      sample           75.104             ms/op
Client.getUser                        sample   766424   1.252 ±   0.002   ms/op
Client.getUser:getUser·p0.00          sample            0.364             ms/op
Client.getUser:getUser·p0.50          sample            1.202             ms/op
Client.getUser:getUser·p0.90          sample            1.706             ms/op
Client.getUser:getUser·p0.95          sample            1.942             ms/op
Client.getUser:getUser·p0.99          sample            2.863             ms/op
Client.getUser:getUser·p0.999         sample            4.948             ms/op
Client.getUser:getUser·p0.9999        sample            9.322             ms/op
Client.getUser:getUser·p1.00          sample           16.171             ms/op
Client.listUser                       sample   106601   8.999 ±   0.022   ms/op
Client.listUser:listUser·p0.00        sample            0.941             ms/op
Client.listUser:listUser·p0.50        sample            9.290             ms/op
Client.listUser:listUser·p0.90        sample           10.781             ms/op
Client.listUser:listUser·p0.95        sample           11.551             ms/op
Client.listUser:listUser·p0.99        sample           14.270             ms/op
Client.listUser:listUser·p0.999       sample           24.025             ms/op
Client.listUser:listUser·p0.9999      sample           30.038             ms/op
Client.listUser:listUser·p1.00        sample           31.949             ms/op
看RT有明显的下降

Codecov Report

Merging #10839 (64af9ac) into 3.1 (9b9b120) will increase coverage by 0.00%.
The diff coverage is 66.66%.

@@            Coverage Diff            @@
##                3.1   #10839   +/-   ##
=========================================
  Coverage     64.53%   64.53%
  Complexity       14       14
=========================================
  Files          1420     1420
  Lines         58992    59077   +85
  Branches       8660     8674   +14
=========================================
+ Hits          38070    38125   +55
- Misses        16879    16907   +28
- Partials       4043     4045    +2

Impacted Files
Coverage Δ

...fig/configcenter/AbstractDynamicConfiguration.java
83.05% <0.00%> (-1.44%)
:arrow_down:

...nfig/configcenter/nop/NopDynamicConfiguration.java
22.22% <0.00%> (-2.78%)
:arrow_down:

...bbo/config/context/ConfigConfigurationAdapter.java
45.45% <0.00%> (-25.98%)
:arrow_down:

...ter/support/apollo/ApolloDynamicConfiguration.java
42.39% <0.00%> (-1.93%)
:arrow_down:

...enter/support/nacos/NacosDynamicConfiguration.java
23.43% <0.00%> (-1.16%)
:arrow_down:

...ize/hessian2/dubbo/Hessian2FactoryInitializer.java
75.00% <ø> (ø)

...che/dubbo/common/config/PrefixedConfiguration.java
37.50% <33.33%> (-22.50%)
:arrow_down:

.../dubbo/common/config/EnvironmentConfiguration.java
75.00% <50.00%> (-25.00%)
:arrow_down:

.../common/config/OrderedPropertiesConfiguration.java
73.33% <50.00%> (-7.44%)
:arrow_down:

...pport/zookeeper/ZookeeperDynamicConfiguration.java
55.76% <50.00%> (-2.57%)
:arrow_down:

... and 34 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


just won't work with multiverse worlds

when i change worlds (using multiverse core and multiverse portals) i have the same inventory
go in a multiverse world
put something in your inventory
go to another world
YOU HAVE THE SAME ITEMS
i'd expect  to have different inventory's
latest version, just downloaded
1.16.1 paper
Additional context and logs
Add any other context about the problem here. Also post error messages and logs (use a service like Hastebin for logs, please!) in this area.

YES!
Happening to me as well. I am 1.16.1 Spigot server and i need my survival world to be completely different to everything else but if i put a diamond sword in my hand and then go back to lobby I STILL HAVE IT. This really needs fixing as i really need these worlds to have different inventories otherwise i am not sure how i can open my survival!! Please give us a fix PWI.

groups:
default:
worlds:
- world
- world_nether
- world_the_end
- newlobby
- creative
- HGHUB
- bedwarslobby
- tntgames
- PARKOURMAP
default-gamemode: SURVIVAL
respawnWorld: world
survival:
worlds:
- survival
default-gamemode: SURVIVAL
respawnWorld: world
creative:
worlds:
- creativecplots
default-gamemode: SURVIVAL
respawnWorld: world

I'm having the same issue with same world.yml setup as above, what do you mean by tabbed?


change name on module

I'm not sure, did the change even compile?

I'm not sure, did the change even compile?

there are many problems in the code base

Doesn't mean we should make it worse. If it didn't even compile before I think that's not a good sign


Long compile operations cause maniacal resource consumption

If a file triggers a particularly long compile operation, the ide server will spawn enough compiler instances to bog down all the computer's resources.
We'll probably have to dial back compilation behavior on every change. Maybe just parse syntax and then do a full semantic analysis on save.

Hello @kofno:
Just wanted to thanks for the great work you're putting in this tool, thanks to that i already changed my atom editor environment to vs-code. Is there any kind of installation instruction for using scry? is there any performance improvement with this change?.
Rayner

Thanks @raydf! I'm glad it's useful to you.
Here's the story with Scry:
I'm using it in my local crystal-ide while I'm building Scry. Last night was a pretty stable editing session. If I can have a couple more of those, then I'll probably try to ship a release of crystal-ide w/ Scry as an optional backend.
I'm haven't done any benchmarking. I suspect that for a single operation, scry is faster then the typescript backend, but for a series of operations, scry will appear slower. That's because I haven't added any concurrency yet. That won't impact your typing speed or anything, just may take a little longer to report errors when there is a lot of analysis going on.
The main benefit of Scry is that I can get access to all the compiler tools in process, which I think will let me do some really cool things. Also, I'd rather write Crystal then Typescript.
Which platform do you use for development? Linux? OS X?

Hi @kofno:
I'm using os X. Scry we'll allow to make crazy things with macros and the AST, and an advanced autocomplete functions.
How can i add the comments toggle function to the language?.
Thanks again for your great work.

Comment toggle and also bracket matching / completion are on master. I've been playing with the settings to see what I like before I release.

I finally have Scry building on linux using docker. It's a busy week this week, but I'm hoping to be able to release a new ide w/ optional scry support on OS X and 64bit linux.

Amazing news @kofno. After that release i believe you should spread the word through the google group. I believe there's a lot of crystal programmer wanting to know about this tool.
I'll try to contribute in the upcoming weeks :).

Closing this for now. Work around is to use scry. I updated the crystal-ide, but you'll have to uninstall and then re-install because I decided to publish under my name instead of my LLC (but I lost all my stars and my download count 😢  🐼) . Sorry for the inconvenience.
I'll eventually need to find a more convenient way to distribute the binary files. The VSCode marketplace has a size restriction.


Update testnet assets to osmo-test-5

osmo, ion, atom, mars, usdc, juno.
Update osmosis testnet chain info for osmo-test-5. (rpc, rest, explorer)
Note: pricing does not work properly, since the pricing definitions are based on mainnet data.
update axelar's API parameter for osmosis testnet from osmosis-5 to osmosis-6: as per https://docs.axelar.dev/resources/testnet
pending validation.

@JeremyParish69 Is this ready to be merged in the meantime. At least one pool shows and USDC as well.

@JeremyParish69 Is this ready to be merged in the meantime. At least one pool shows and USDC as well.

Not quite, there's been some changes that should be tested first.


revert #1929

this reverts #1929 from swift-4.2-branch. See the discussion in #1929 for the rationale.

@swift-ci test 4.2

@weissi @spevans I have tested on Ubuntu 16.04 AArch64 and can confirm that tests are passing again.
Test Case 'TestNSNumber.test_descriptionWithLocale' started at 2019-02-26 12:13:56.831
Test Case 'TestNSNumber.test_descriptionWithLocale' passed (0.0 seconds)
Test Case 'TestNSString.test_initializeWithFormat3' started at 2019-02-26 12:14:01.359
Test Case 'TestNSString.test_initializeWithFormat3' passed (0.0 seconds)

thanks so much @futurejones for confirming this!

This is being tracked in https://bugs.swift.org/browse/SR-9985, I looks to be a Locale issue.


NuGet - Step 3

I’m not seeing any supply chain defence in here ‘ just randomly load some stuff from an dns which we hope hasn’t been hacked and install it’.
there are real attacks out there targeting this sort of mechanism.
Nuget (or rather .net) has some support for sig checking so you end up just hoping that the signing key hasn’t been compromised.

@rodwiddowson .  Great point.  For this specific example we are just drafting a way to build test samples, but it'd be nice to apply 'best practice' and who knows if the repo here gets copied for production.  And this is a bit of a new world, so please tell me more? Would you be able to share an example of right way to do this or documentation?
References I was able to find (not quite sure how they fit in, but looks relevant):

https://learn.microsoft.com/en-us/nuget/concepts/security-best-practices
https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-verify <-- This looks interesting.  Perhaps a call to NuGet -Verify on the packages we consume.
https://learn.microsoft.com/en-us/nuget/reference/packages-config <-- Looks like this file cannot tie public signatures to packages.

@jacoble-ms I was hoping to learn from you!
My exposure to this stuff is much more in the Java world where we have built an entire tooling [1] to check not only the jars (dlls) that we ship but also the jars which are used to build the projects.  Over time we have built a bunch of keystores based on unilateral trust where each key has been reviewed.
The learning process has been quite terrifying as you realize what an “open goal” this is,  so I am a very quick to leap on people to make sure they have thought about it.  Here is an example of an attack (but there are easier ones [2]
I saw this go by because as well as the Java stuff I have been doing File Systems for Windows for a long time (pre NT4)  so I lurk on the driver-samples repo...
Anyway here’s all I know: I ran into the nuget problem when trying to build an installer using the nuget packages for Wix.  I eventually ended up with a nuget.config which looks like this [3].  AIUI this ties us to one particular key (which no one has claimed ownership for yet btw) because we don’t really trust commercial PKIX.
I wrote up a PR for the WiX Guys which they didn’t want but it describes what I did and why and where I found the info.  You can see it here [4]
I hope some of this helps.  If you learn anything more please share it.
[1] https://shibboleth.atlassian.net/wiki/spaces/DEV/pages/3269918721/Supply+Chain+Defence+for+the+Shibboleth+Java+Products
[2] https://blog.oversecured.com/Introducing-MavenGate-a-supply-chain-attack-method-for-Java-and-Android-applications
[3]  https://git.shibboleth.net/view/?p=java-idp-jetty-base.git;a=blob;f=src/main/wix/nuget.config;h=0d2de2a5d690b09643984200708da9925aa8b56c;hb=29f8ed9994e64e51b56ad551900a598cb33e9b98
[4] https://github.com/rodwiddowson/wix-web/blob/master/src/Docusaurus/docs/tools/msbuild.md#defending-your-supply-chain


node.js cmd

when i open cmd and type "npm install" i get the error "'npm' is not recognized as an internal or external command,
operable program or batch file."
i have downloaded and installed node but nothing.what should i do?

solved


Xmonad's Easymotion-like way to select windows and kill them

Description
Xmonad have this cool feature, where you can select window, what you can interact with.
can be seen better here:
https://www.youtube.com/watch?v=39vl0Cmx3iI
Would appreciate to see this functionality in hyprland

this looks like a simple thing a plugin could do.

I don't have the skills to make this plugin (nor the time to learn how to while I'm in med school). But it would be something I would use if others with the skills to do so were looking for a project to do.

nice one! closing.

Perhaps the person who did it with GTK layer shell is smarter than I am because now I am cursed with the knowledge of how window decorators work.

Perhaps the person who did it with GTK layer shell is smarter than I am because now I am cursed with the knowledge of how window decorators work.

it's useful if you want to write window decorations in hyprland


Mancoba

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

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

Screenshots

Note to reviewers

@Panquesito7 merge conflicts are now resolved. Requesting approval for merge

@manq2010 the PR was closed, is that correct?

@eddiejaoude  I closed it because I opened PR #2140 which has now been merged

ah ok, great, thank you 👍
btw it is always good to leave a comment when closing

Noted @eddiejaoude, thanks for the feedback, I will add a comment when closing a PR

Thank you, I think we all need to get better at this also 👍  (including me 🤓  )


TextBlock show nonASCII character will mojibake.

Describe the bug
TextBlock use nonASCII character will mojibake.
To Reproduce
Steps to reproduce the behavior:

Set TextBlock.Text contain nonASCII character.

Expected behavior
It sould be show correct character, not messy code.
Screenshots

Desktop (please complete the following information):

OS: Windows10
Version 21H1(19043.985)

Additional context
None.

Can you paste the actual text here?

@Gillibald same as window title: "注意".

Works in current master

Thank you,  I tested and known issue from MessageBox.Avalonia lib.


Add Prerender type for SPRv2

This adds a new Prerender type in preparation for Serverless Prerendering v2.
It accepts the following parameters:
interface Prerender {
  expiration: number;
  lambda: Lambda;
  fallback: FileBlob | FileFsRef | FileRef;
}

Codecov Report

Merging #3021 into canary will increase coverage by 1.05%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           canary    #3021      +/-   ##
==========================================
+ Coverage   11.34%   12.39%   +1.05%
==========================================
  Files         267      267
  Lines       10026    10159     +133
  Branches     1308     1273      -35
==========================================
+ Hits         1137     1259     +122
- Misses       8797     8810      +13
+ Partials       92       90       -2

Impacted Files
Coverage Δ

src/util/metrics.ts
68.18% <0%> (-2.41%)
:arrow_down:

src/util/dev/builder-cache.ts
80.74% <0%> (+3.47%)
:arrow_up:

src/util/projects/get-project-by-id-or-name.ts
28.57% <0%> (+3.57%)
:arrow_up:

src/util/get-files.ts
91.66% <0%> (+3.88%)
:arrow_up:

src/util/dev/router.ts
82.69% <0%> (+4.12%)
:arrow_up:

src/util/prefer-v2-deployment.ts
61.9% <0%> (+5.65%)
:arrow_up:

src/util/output/create-output.ts
43.58% <0%> (+12.33%)
:arrow_up:

Continue to review full report at Codecov.

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


docker-compose up fails in templates/src/cpp-mariadb/.devcontainer/

Should running docker-compose up  work in the .devcontainer folder?
The following error is generated using using code in the templates repository under templates/src/cpp-mariadeb/.devcontainer.
C:\code\microsoft\cpp-mariadb.devcontainer>docker-compose up
[+] Building 0.1s (2/2) FINISHED
=> [internal] load build definition from Dockerfile                                                               0.0s
=> => transferring dockerfile: 1.26kB                                                                             0.0s
=> [internal] load .dockerignore                                                                                0.0s
=> => transferring context: 2B                                                                                0.0s
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to process "mcr.microsoft.com/devcontainers/cpp:0-${templateOption:imageVariant}": unsupported modifier (i) in substitution
The following error is generated using the template "C++ & MariaDB" from the devcontainers extension - VS Code v1.77.3, Dev Containers v0.288.1.
C:\code\test\cpp-mariadb.devcontainer>docker-compose up
[+] Building 0.7s (8/10)
=> [internal] load build definition from Dockerfile                                                               0.0s
=> => transferring dockerfile: 1.22kB                                                                             0.0s
=> [internal] load .dockerignore                                                                                0.0s
=> => transferring context: 2B                                                                                0.0s
=> [internal] load metadata for mcr.microsoft.com/devcontainers/cpp:0-debian-11                                   0.2s
=> [1/6] FROM mcr.microsoft.com/devcontainers/cpp:0-debian-11@sha256:0605a13ffcd3d6d437e55129e93c5d650b8a6c9477d  0.0s
=> [internal] load build context                                                                                0.0s
=> => transferring context: 78B                                                                                0.0s
=> CACHED [2/6] RUN apt-get update && export DEBIAN_FRONTEND=noninteractive     && apt-get -y install curl        0.0s
=> [3/6] COPY ./install-mariadb.sh /tmp/                                                                          0.0s
=> ERROR [4/6] RUN chmod +x /tmp/install-mariadb.sh && /tmp/install-mariadb.sh && rm -f /tmp/install-mariadb.sh   0.4s

[4/6] RUN chmod +x /tmp/install-mariadb.sh && /tmp/install-mariadb.sh && rm -f /tmp/install-mariadb.sh:
#0 0.346 /bin/sh: 1: /tmp/install-mariadb.sh: not found

failed to solve: executor failed running [/bin/sh -c chmod +x /tmp/install-mariadb.sh && /tmp/install-mariadb.sh && rm -f /tmp/install-mariadb.sh]: exit code: 127

@alexander-smolyakov Can you help investigate this issue? thanks!

I figured out part of the problem. This second error appears to be a problem with line endings in the file install-mariadb.sh.
Here is the error:
failed to solve: executor failed running [/bin/sh -c chmod +x /tmp/install-mariadb.sh && /tmp/install-mariadb.sh && rm -f /tmp/install-mariadb.sh]: exit code: 127
To confirm this, I manually ran install-mariadb.sh from inside of the container and got an unknown command error  "/bin/bash^M"
I did this by commenting out this line in the Dockerfile:
RUN chmod +x /tmp/install-mariadb.sh && /tmp/install-mariadb.sh && rm -f /tmp/install-mariadb.sh
I then performed the following steps starting in the .devcontainer folder:
docker build -t test -f Dockerfile .
docker run -it --rm --name=test test bash
cd /tmp
./install-mariadb.sh
got the error invalid command "/bin/bash^M"
sudo apt install dos2unix
dos2unix install-mariadb.sh
./install-mariadb.sh
the installation was successful
I exited the container, deleted the container and image, ran dos2unix on the install-mariadb.sh file from outside of the container, then opened the project folder in Visual Studio Code, telling it to open the folder in a new container. Everything worked this time.
Let me know if you have any questions about these steps/instructions.

I see that https://github.com/devcontainers/templates/blob/main/src/cpp-mariadb/.devcontainer/Dockerfile has:
FROM mcr.microsoft.com/devcontainers/cpp:0-${templateOption:imageVariant}
How would I use this template inside of Visual Studio Code so that the placeholder is replaced with the correct platform?

I see, looks like you have copied over the contents from this repository?  Can you follow the instructions mentioned in https://github.com/devcontainers/templates/issues/113#issuecomment-1406905679 Thanks!
I'll shortly open a PR to update the README to provide these instructions.

It sounds like the line endings in install-mariadb.sh need to be fixed, not the README, if that helps.

I looked at the steps in #113 and confirmed that the it pulls from the templates/src/cpp-mariadb folder of the repo. It looks like the line endings issue is all that needs to be addressed.

Hey @bluesherpa, I didn't manage to reproduce your case. As I can see, the end-of-line for all scripts is set to LF, so it should work fine with Docker. Could you please double-check your system configuration? Sometimes IDE or Git could perform end-of-line conversion based on their configuration.
Related docs:

https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_formatting_and_whitespace (Formatting and Whitespace);
https://code.visualstudio.com/docs/getstarted/settings.

VS code default settings:
  // The default end of line character.
  //  - \n: LF
  //  - \r\n: CRLF
  //  - auto: Uses operating system specific end of line character.
  "files.eol": "auto",

Hello @alexander-smolyakov, thank you for your assistance. I have confirmed that when cloning with Tortoise Git, the line endings are automatically converted to Windows format. This is due to the fact that AutoCrLF is enabled by default when using OpenSSH/git. Consequently, the file that was copied into the container has Windows-style line endings, which is causing the error.
I see two possible solutions:

Disabling Auto CrLf.
Using dos2unix after copying the file into the container.

Which approach do you recommend?

@bluesherpa, glad to hear that you were able to find the source of the issue.

I see two possible solutions:

Disabling Auto CrLf.
Using dos2unix after copying the file into the container.

Which approach do you recommend?

It depends on the use case. If you are working on multiple repositories, and some contain projects intended to work on different platforms, it's better to keep AutoCrLF enabled. Otherwise, you can disable AutoCrLF.

@alexander-smolyakov Sounds good. I'll go with option 2 for now resolving the issue. Thanks again, I appreciate your help with this.