Multi-tenant "reference architecture"

I put quotes on the title because we'll see where it ends up fitting best in the docs.
Opening this PR very early so we can all take a look.

@begriffs : I added a few higher level comments to the PR. Some of my comments were on sections you modified while addressing @sumedhpathak 's feedback. So, you might have to do a "show outdated" to look at all of them.
I've mostly provided feedback around "what to communicate / how to communicate" and haven't gone into minor verbiage or re-wording feedback yet. We can do that in a final pass once we're all aligned on the high level structure / content.
I'll let you make progress on the remaining sections and address feedback on these sections. Will plan to look at the PR again sometime next week. In the meanwhile, let me know if you have any questions.

Got most of your comments covered. Have to still make a better repartition diagram, change the focus of "Querying the Cluster," come up with a complex query with window functions etc, add the explain plan for one of those queries, write the "where to go from here," and generate the missing demo data for one of the tables.

@begriffs : This reads much better, and I think the high level flow and content is all there. Great work! (I also like your re-partitioning diagram :))
I'm doing a second pass to see if there's any smaller level feedback and will put it back on your plate after that.

Awesome! I'll get the rest of those small issues taken care of. My biggest uncertainty is coming up with a realistic complex query. Got any ideas (even in English, and I can translate to SQL)?
Also @lfittl you mentioned you have a favorite diagram making tool, perhaps we could do a screenshare and you could show me your tricks? Then I'll be able to crank out nice diagrams faster in the future.

@begriffs Sure thing, lets schedule something later this week re: diagramming.

In case we need to re-generate the example datasets, this is how I did it:

Start up a citus cluster in docker
export DATABASE_URL=...
Clone the citus-example-ad-analytics project
rake db:migrate
in psql:BEGIN;
CREATE SEQUENCE clicky;
ALTER TABLE clicks ADD COLUMN id_new integer;
SET LOCAL citus.enable_ddl_propagation TO off;
ALTER TABLE clicks ALTER COLUMN id_new SET DEFAULT nextval('clicky');
END;

BEGIN;
CREATE SEQUENCE impressive;
ALTER TABLE impressions ADD COLUMN id_new integer;
SET LOCAL citus.enable_ddl_propagation TO off;
ALTER TABLE impressions ALTER COLUMN id_new SET DEFAULT nextval('impressive');
END;

Change lib/tasks/fake_data.rake:company_count_range    = 75..75
campaign_count_range   = 6..10
ad_count_range         = 6..10
impression_count_range = 20..70
click_count_range      = 1..20

rake test_data:bulk_load
Export from psql:\copy companies to '/tmp/companies.csv' DELIMITER ',' CSV;
\copy ads to '/tmp/ads.csv' DELIMITER ',' CSV;
\copy campaigns to '/tmp/campaigns.csv' DELIMITER ',' CSV;

\copy clicks (
	id_new, company_id, ad_id, clicked_at, site_url, cost_per_click_usd, user_ip, user_data)
	to '/tmp/clicks.csv' DELIMITER ',' CSV;
\copy impressions (
	id_new, company_id, ad_id, seen_at, site_url, cost_per_impression_usd, user_ip, user_data)
	to '/tmp/impressions.csv' DELIMITER ',' CSV;

@begriffs : My next batch of comments is out :slightly_smiling_face: . I still have the following things left to do:

Click on all links to verify they work.
Review if we can or should add more links to our docs.
See if I can come up with a representative complex query.
Try all the instructions using docker / Citus cloud. @begriffs : Could you let me know which one you've been working heavily with and I can try the other one.
Review diagrams once they are ready.

Also, just realized, we have rebalance and tenant isolation which are a part of enterprise edition and won't be available in docker. Do we want to add caveats to the doc indicating that?

@begriffs : Regarding the diagrams, we have multiple diagrams representing the same concepts in different parts of the docs / in our presentations. Could we standardize on them and use the same ones everywhere? I've also sent an email to you today with a presentation we've used (And that also has diagrams for similar concepts). Reg. the repartitioning one, I think while resolving the comments we'll end up removing it from here but that's a useful one to keep in case we want to use it somewhere else (with better labelling).

OK @samay-sharma, I did a big rewrite based on our discussion. Changed it to be higher level and more encouraging, with links to the tech details. Wanted to show app devs how they can keep their data model and make it scale without much trouble.
See how you like it!

OK, got your suggestions in there. Just two notes -- I didn't verify the zipf numbers, and I still can add another statement to tee up the nosql comments as you mentioned. We can resume this next week, but should be in a good place to share with Ozgun and others.

@begriffs : I added a few minor rephrasing suggestions and 3-4 comments on the data / queries not returning results. Other than that, looks good to me :). Along with addressing these, I think there are 3 things left now:
(a) Adding a diagram in the section for Scaling out relational model.
(b) Verifying Zipf distribution numbers.
(c) Adding the UPDATE command.
In the meanwhile, @ozgune, I think this is ready for your input. Could you give it a quick read and provide feedback?

OK, I'm learning more about Zipf. There's not actually one distribution called Zipfian, it's actually a parameterized family. When you see that a certain dataset has a Zipfian shape you need to find the parameter value that makes the theoretical distribution fit your data.
Your Wolfram calculations assumed a value of ρ=0.1:
P[X=1] for X~ZipfDistribution[100,0.1]

= 0.233753

If you pick ρ=1 instead then the answer jumps to 0.611627, so it's important we find the correct value.

@begriffs : I went through it and it looks great! I'm merging this into master and have opened #399 with some minor feedback which we can address as a follow up PR. Thanks for all the effort.

🍾 🎆 Thanks @begriffs and @samay-sharma ! The content looks great!


Adds information on "script will never generate a response" errors

Open questions:

Is this is best place for this information. It feels too small for its own page, but also maybe too big for this specific spot. Any thoughts on where to best put it. As long as we can link to this code, I'm happy wherever.
Should we add information about how libraries sometimes stick Promises in global state and we can't rely on that. I'm not sure exactly how to phrase it... "Some code may be relying on global cross-request state to resolve a Promise in another request. Workers Requests cannot rely on cross-request Promise resolution, so Request-blocking Promises should only get created within their own Request". Seems like a mouthful, and I'm not 100% positive on the specifics TBH.

Notes:

I think ideally the WebSocket error has a different message. In that case, we could break that out into its own code, but we can do that whenever that message is changed.

Two thoughts here:

Might make sense to reference w/in the table that this is a permutation of 1101 at this line.
A helpful question to ask about the "new page vs section" debate is whether you can foresee folks grabbing this error message and copy/pasting into Google (which it seems like they would). If I'm making a correct assumption here, then you'd be better off with a new page b/c that has higher implicit authority than a section.

Ship it?

@kodster28 I didn't do either of your suggestions:

I think it might be too much detail to mention this at the top level in that table
I think we're okay with this on this one page. We'll be linking to this section via the error messages, so I think we should be good enough on discoverability. If we want to eventually break it off into its own thing, that seems okay to me, but I don't want to mess w the overall page arch too much.

If you're okay w that, any chance you can +1 so I can merge this? 🤞


2095 move tab styling to theme

Closes #2095
On a closer look this isn't a different styling. But took the opportunity to move the styling to theme for easy reuse

sablier

Got to eager with the delete button :D


Region Constants reference Deprecated API Endpoints

Description
The restBaseURL in pkg/region/region_constants.go refers to api.newrelic.com/v2 which is deprecated for Dashboard interaction. That means the whole Dashboards package can't actually interact with the new NerdGraph API.
Go Version
go version go1.17.2 darwin/amd64
Current behavior
When I use the dashboards package, the URL points to a deprecated endpoint, so the request fails.
The failure
error creating dashboard:410 response returned: This endpoint is deprecated: Please see documentation on migrating to NerdGraph, our GraphQL API, here:, https://docs.newrelic.com/docs/new-relic-one/use-new-relic-one/core-concepts/dashboards-api-migration-insights-api-nerdgraph, and check the announcement: https://discuss.newrelic.com/t/important-insights-dashboard-api-end-of-life/149357

I changed my local NR code in pkg/dashboards/dashboard.go to print what the devised URL is, and it does confirm my suspicions. I changed this to a print statement
	url := d.config.Region().RestURL("dashboards.json")
	log.Println("Built URL: ", url)

And it printed: Built URL:  https://api.newrelic.com/v2/dashboards.json
Expected behavior
This should interact with a non-deprecated API so it's usable.
Steps To Reproduce
Steps to reproduce the behavior:
Try to use client.CreateDashboard(*db) and it will fail.

... I would not like this issue closed. I would like if someone from NR responded.

This is affecting us as well so would be keen on a fix


node-mysql doesn't respect connection encoding

node-mysql encodes all queries using utf8. This works fine, if mysql server's default encoding is also set to utf8, but storing of international characters is broken otherwise.
When opening a connection, the server specifies its default encoding, which is usually latin1 on new installations.
node-mysql can be fixed by sending SET NAMES 'utf8'; on connection if server uses something non-utf8.
As a workaround, to "fix" your mysql server, put 'default-character-set=utf8' into my.cnf/my.ini file.
And (optionally) run this on an already existing database:
alter database YOUR_DB character set utf8 collate utf8_general_ci;
alter table YOUR_TABLE charset=utf8;

What could this module do to handle this? Sending SET NAMES ... automatically seems bad.

Why bad? If you encode everything you send as utf-8, then you should ensure that server will use the same encoding.
MySQL sends expected encoding in the greeting message after you have opened the connection, so I suggest sending SET NAMES if server expects some other encoding by default.

Otherwise I see funny ????? question marks in the tables without any error or warning.

what about reconnecting?

create client
send SET NAMES query
service mysql restart
autoreconnect done, but SET NAMES query does not sent

IMHO connection encoding should be supported by this library

IMHO connection encoding should be supported by this library

I'm still unhappy how re-connects are handled ATM. Once I get time, I'll make the connection handling more simple to reason about. I'll probably also emit a 'connect' event that takes a parameter indicating if this is the first connect or a re-connect.


Push doesn't work on custom domains.

@ebidel mentioned this issue and it looks to still be occurring. Can you guys update this issue when it's fixed?

I'm watching it very closely internally. Can't give an ETA, but it should be very soon. FWIW, it was supposed to be fixed last week but the push got delayed.

I'll of course update this bug when the fix goes out and I've verified it works.

Fixe in prod! Example:
push: https://www.chromestatus.com/features
no push: https://www.chromestatus.com/features?nopush

Thanks @ebidel, much appreciated.


Cron job doesn't run

Hi,
I'm trying to run a job with the cron: "0 0 19 * * *" but it doesn't ever run.
I'f I click the enqueue button on the web interface it runs my job though.
Any ideas where I am going wrong?

any ideas?

This will run at 00:00 on the 19th of every month. Is that what you want?

With 6 options doesn't it mean the first is seconds second is minutes and third is hours? So my understanding was 00:00:19 every day every month every year?

Yes, you are right. Could you add more info about your configuration and the way you load the scheduler?
Thanks

My scheduler.yml file

The config startup should be like this:
config.on(:startup) do
  Sidekiq.schedule = YAML.load_file(File.expand_path("../../../config/scheduler.yml",__FILE__))
  Sidekiq::Scheduler.load_schedule! # This will retrigger the loading stage
end

But you can also avoid this if you add the :schedule: line to you sidekiq.yml like this
:schedule:
  DailyCheckWorker:
    cron: "0 20 00 * * *"
    class: DailyCheckWorker
    queue: worker
    description: "abcdef"

Okay, so it is working now. Thank you!
but it seems to trigger the job multiple times?

Sorry you should use reload_schedule! instead of load_schedule!

It still runs the job on each queue I have. Do I need to load different sidekiq configs into my queues?
For example...
web: bundle exec puma -C config/puma.rb
reports: bundle exec sidekiq -q reports
worker: bundle exec sidekiq -q worker -C ./config/differentsidekiqconfig.rb

Sorry I didn't mean to close the issue

Is this related with this issue? Because I thought that this issue was related with the fact that the jobs was not running.

Okay I will open a new issue that reflects the new problem


Proposal : Interval check for new releases and inform user about update

As tool is actively developed most of people wont check github again, so it is good to inform about update

already done https://github.com/opengs/uashield/commit/4d809e8e90365e4ed4d13009a9036d8706136856

@Razikus  is commit on 11ver?

@Razikus there could be option during install that launch on win start up, as people might forget to launch

This feature is implemented and tested in 0.0.12. The issue can be closed.


[cleanup] Remove dependency-check per each serialization call

Simplifies handling and reduces unnecessary checks + fails at startup, not during serving requests
The only disadvantage is that we don't have notification for CoreDependency.JACKSON_KT anymore, but I don't think it's really bad - we're not providing checks for JACKSON_JSR_310 & JACKSON_KTORM either and usually it's common way to check for Kotlin bindings for any Java library anyway

fails at startup, not during serving requests

Then it feels very non-optional.

We should probably support lazy initialization of JsonMapper in general, so it'd be initialized once. In general I think we should make JsonMapper required (default or defined by user) at startup, what's the motivation behind making it optional? Serialization of objects in terms of http-framework is quite crucial and it's used by several features in Javalin, not only by ctx.json, but also stuff like validation, any kind of transformations of body<->class (xxxAsClass)/toString(obj), it's even used by vue plugin. We


Split lyapunov module into another crate

Lyapunov analysis is not a part of ode solver/

Lyapunov analysis (including CLV) are separated into examples/ directory


Load data tutorial model fails to converge

Please make sure that this is a documentation issue. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:doc_template
System information

TensorFlow version:
Doc Link:

site/en/tutorials/load_data/images.ipynb
Describe the documentation issue*
The model fails to converge most of times. I changed the steps per epoch to run through all the data but it fails to converge. A lot of times just stuck in high loss low accuracy.
I noted last layer output logits. It this expected?
We welcome contributions by users. Will you be able to update submit a PR (use the doc style guide) to fix the doc Issue?

BTW I ran only on colab with GPU.

@edwardCao Could you point out which tutorial you are referring to? Please let us know If there is any mismatch in what was mentioned in the website and what you are seeing. Thanks!

site/en/tutorials/load_data/images.ipynb

@edwardCao Thanks for the link. I think intention of the tutorials is to teach how to load image dataset using tf.data. In order keep the tutorial simple as well as take minimum time, it was developed like that. There are other tutorials that talk about how to improve performance of a DL model. Thanks!

I am closing the issue. Thanks!


Optional path for Vault SecretStore

Backwards compatible change
Added tests to check for a range of possible combinations for paths

(Closes: #513)

/ok-to-test sha=bcc6a6f

Looks like some generated files need to be checked in due to the change to the CRD with the optional path. Do you have any process for that?

make generate would generate the crds.
I think you will also have to rebase with main

Hey @lhw, this lgtm, can you rebase and check the check-diff ci complain? :)

/ok-to-test

/ok-to-test sha=015b35a

/approve

/merge


Default imap folders

Create default imap folders for Trash, Drafts and Sent.

Hi, nice feature. As this will be used by multilanguaje users, or even someone who wants different default imap folders, maybe would be good to have the option to set an ENV var with an array of folders to be created, then, if set, create those on the start-mailserver.sh script.

Hi,
I'm spanish speaker, all my setup is in spanish and it works like a charm. But...  probably some one would like to use another scheme... let me think about your workaround...
Thanks,

Hi @millaguie, nice PR thanks. I'll merge it once you've fixed the tests:
test #18 "docker exec mail ls -A /var/mail/localhost.localdomain/user1" failed:
  expected "cur\nnew\ntmp"
  got ".Drafts\n.Sent\n.Trash\ncourierimapsubscribed\ncur\nnew\ntmp"
test #19 "docker exec mail ls -A /var/mail/otherdomain.tld/user2" failed:
  expected "cur\nnew\ntmp"
  got ".Drafts\n.Sent\n.Trash\ncourierimapsubscribed\ncur\nnew\ntmp"

About @citec improvement, it's another feature.

I am spanish too, but think about someone wanting to have the Archive folders pre-created, or the Templates one, etc.

Sorry about the tests, I noticed too late.

No problem @millaguie, Travis is here ;-)
Thanks for your PR.


WIP Knex Optimizations

Description
Optimizations to Knex, removing legacy code, fixing some bugs
Fixes # Yeah Right
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update

How Has This Been Tested?
Not at all .... Danger do not run me
Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have updated changelog.md with changes made

I'm gonna pretend I know how this magic knows when an upgrade is required and smile and nod while backing away.

This one ready to merge with some approval 😁


Initialization takes 30 seconds with the error "Uncaught TypeError: u[v] is not a function" in Chrome for mobile devices

Describe the bug
Initialization may take 30 seconds with the error "Uncaught TypeError: u[v] is not a function".
It doesn't happen every time, but at least once every few times.
I have confirmed that this issue occurs on Chrome for mobile devices such as Android devices. (I also reproduced it with the emulator of Chrome's developer tools for PC.) This did not occur on Chrome for PC.
I have created three examples to illustrate this problem and they are shown below. Also, the repository is https://github.com/yosipy/yosi_sandbox/tree/main/20240128_next_firebase_auth_example .
Example using onAuthStateChanged
https://github.com/yosipy/yosi_sandbox/blob/main/20240128_next_firebase_auth_example/pages/sample_on_auth_state_changed.tsx

Start up the example Next.js app server in this repository.
Add the following code to pages/sample_on_auth_state_changed.tsx.

import { FC, useEffect } from "react";

import { useUser, withUser } from "next-firebase-auth";
import { getAuth } from "firebase/auth";

const Index: FC = () => {
  const currenUser = useUser();
  console.log(
    `currenUser.clientInitialized: ${
      currenUser.clientInitialized
    } (${new Date()})`
  );

  const auth = getAuth();
  useEffect(() => {
    const unsubscribeOnAuthStateChanged = auth.onAuthStateChanged(
      (onAuthStateChangedUser) => {
        console.log(
          `onAuthStateChangedUser: ${onAuthStateChangedUser} (${new Date()})`
        );
      },
      (error) => {
        console.error("useFirebaseAuth:", error);
      }
    );

    return () => {
      unsubscribeOnAuthStateChanged();
    };
  }, []);

  return (
    <>

onAuthStateChanged

    </>
  );
};

export default withUser()(Index);

Open your Chrome browser and use developer tools to view it as a mobile site (Ctrl + Shift + M).
This icon →
Visit the page several times. I think it's better to run it in incognito mode to reduce the impact of browser-side cache. I think super reload is better (Ctrl + Shift + R).

Below is the log when the problem occurred.
Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
initAuth.js:24 next-firebase-auth [init] Setting config with provided value: {debug: true, loginAPIEndpoint: '/api/login', logoutAPIEndpoint: '/api/logout', authPageURL: ƒ, appPageURL: ƒ, …}
initAuth.js:24 next-firebase-auth [init] Initialized the Firebase JS SDK.
sample_on_auth_state_changed.tsx:39 next-firebase-auth [withUser] Calling "withUser".
websocket.js:48 [HMR] connected
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: false (Mon Jan 29 2024 10:41:51 GMT+0900 (日本標準時))
api.js?onload=__iframefcb590529:29 Uncaught TypeError: u[v] is not a function
    at Q.<computed> [as loaded_0] (api.js?onload=__iframefcb590529:29:145)
    at cb=gapi.loaded_0?le=scs:1:6
Q.<computed> @ api.js?onload=__iframefcb590529:29
(anonymous) @ cb=gapi.loaded_0?le=scs:1
index.browser.js:2 next-firebase-auth [withUser] The Firebase ID token changed. New Firebase user: null
index.browser.js:2 next-firebase-auth [withUser] Calling the logout endpoint.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: true (Mon Jan 29 2024 10:41:51 GMT+0900 (日本標準時))
index.browser.js:2 next-firebase-auth [withUser] Completed the auth API request.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: true (Mon Jan 29 2024 10:41:51 GMT+0900 (日本標準時))
sample_on_auth_state_changed.tsx:18 onAuthStateChangedUser: null (Mon Jan 29 2024 10:42:21 GMT+0900 (日本標準時))

The access occurred at approximately 10:41:51, but the onAuthStateChangedUser callback function was executed at 10:42:21.
It took about 30 seconds.

Example sign-in page
https://github.com/yosipy/yosi_sandbox/blob/main/20240128_next_firebase_auth_example/pages/sample_auth.tsx

Start up the example Next.js app server in this repository.
Add the following code to pages/sample_auth.tsx.

import React from "react";
import { withUser } from "next-firebase-auth";
import FirebaseAuth from "../components/FirebaseAuth";

const styles = {
  content: {
    padding: `8px 32px`,
  },
  textContainer: {
    display: "flex",
    justifyContent: "center",
    margin: 16,
  },
};

const Auth = () => (

Sign in

        This auth page is static. It will redirect on the client side if
        the user is already authenticated.

      <FirebaseAuth />

);

export default withUser()(Auth);

This is a modification of pages/auth.js.
3. Modify signInOptions in components/FirebaseAuth.js to allow signing in with a Google account.
  signInOptions: [
    {
      provider: GoogleAuthProvider.PROVIDER_ID,
      customParameters: {
        prompt: "select_account",
      },
    },
  ],

Open your Chrome browser and use developer tools to view it as a mobile site (Ctrl + Shift + M).
This icon →
Visit the page several times. I think it's better to run it in incognito mode to reduce the impact of browser-side cache. I think super reload is better (Ctrl + Shift + R).

It will take about 30 seconds for the button that says Sign in with Google to appear.
 →Translation 30 seconds later→

Example of retrieving data from Firestore
https://github.com/yosipy/yosi_sandbox/blob/main/20240128_next_firebase_auth_example/pages/sample_firestore1.tsx

Start up the example Next.js app server in this repository.
Add the following code to pages/sample_firestore1.tsx.

import { FC, useEffect, useState } from "react";

import {
  collection,
  getDocs,
  getFirestore,
  limit,
  orderBy,
  query,
  where,
} from "firebase/firestore";
import { withUser } from "next-firebase-auth";
import { getAuth } from "firebase/auth";

const Index: FC = () => {
  const [articleIds, setArticleIds] = useState<string[]>([]);

  const db = getFirestore();

  const fetch = async () => {
    console.log("Fetch start: " + new Date());

    const articlesSnap = await getDocs(
      query(
        collection(db, "articles"),
        where("public", "==", true),
        orderBy("createdAt", "desc"),
        limit(20)
      )
    );
    const fetchedArticleIds = articlesSnap.docs.map((doc) => doc.id);
    setArticleIds(fetchedArticleIds);

    console.log("Fetch end: " + new Date());
  };

  const auth = getAuth();
  useEffect(() => {
    fetch();
  }, []);

  return (
    <>

articleIds

      {articleIds.map((id) => (

{id}

      ))}
    </>
  );
};

export default withUser()(Index);

Change Firestore's security rules to allow data to be retrieved from the articles collection.
Open your Chrome browser and use developer tools to view it as a mobile site (Ctrl + Shift + M).
This icon →
Visit the page several times. I think it's better to run it in incognito mode to reduce the impact of browser-side cache. I think super reload is better (Ctrl + Shift + R).

The log will look like this:
Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
initAuth.js:24 next-firebase-auth [init] Setting config with provided value: {debug: true, loginAPIEndpoint: '/api/login', logoutAPIEndpoint: '/api/logout', authPageURL: ƒ, appPageURL: ƒ, …}
initAuth.js:24 next-firebase-auth [init] Initialized the Firebase JS SDK.
sample_firestore1.tsx:52 next-firebase-auth [withUser] Calling "withUser".
websocket.js:48 [HMR] connected
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_firestore1.tsx:21 Fetch start: Mon Jan 29 2024 10:43:44 GMT+0900 (日本標準時)
api.js?onload=__iframefcb846299:29 Uncaught TypeError: u[v] is not a function
    at Q.<computed> [as loaded_0] (api.js?onload=__iframefcb846299:29:145)
    at cb=gapi.loaded_0?le=scs:1:6
Q.<computed> @ api.js?onload=__iframefcb846299:29
(anonymous) @ cb=gapi.loaded_0?le=scs:1
index.browser.js:2 next-firebase-auth [withUser] The Firebase ID token changed. New Firebase user: null
index.browser.js:2 next-firebase-auth [withUser] Calling the logout endpoint.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
index.browser.js:2 next-firebase-auth [withUser] Completed the auth API request.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_firestore1.tsx:34 Fetch end: Mon Jan 29 2024 10:44:15 GMT+0900 (日本標準時)

It takes about 30 seconds to execute the fetch function (10:43:44 ~ 10:44:15).
Requests and responses to Firestore take very little time; the steps before that take time.

Putting { whenUnauthedBeforeInit: AuthAction.RETURN_NULL } in the argument of withUser seems to solve the problem in this repository example. However, it was not a solution for my other application (I could not reproduce it using the example from this repository)
Versions
next-firebase-auth version: "1.0.2"
Firebase JS SDK (firebase): "9.17.1"
Firebase admin SDK (firebase-admin): "^11.9.0"
Next.js: "13.4.9"
To Reproduce
I wrote it in Describe the bug
Expected behavior
I wrote it in Describe the bug
Debug and error logs
Please provide debug logs or errors from onVerifyTokenError and onTokenRefreshError.
Additional context
Add any other context about the problem here.

Putting { whenUnauthedBeforeInit: AuthAction.RETURN_NULL } in the argument of withUser seems to solve the problem in this repository example. However, it was not a solution for my other application (I could not reproduce it using the example from this repository)

I noticed that even if I added { whenUnauthedBeforeInit: AuthAction.RETURN_NULL } to the three examples above, the issue still reproduced when I connected to the emulator.
Example using onAuthStateChanged(with emulator)
https://github.com/yosipy/yosi_sandbox/blob/main/20240128_next_firebase_auth_example/pages/sample_on_auth_state_changed2.tsx
import { FC, useEffect } from "react";

import { AuthAction, useUser, withUser } from "next-firebase-auth";
import { getAuth } from "firebase/auth";

const Index: FC = () => {
  const currenUser = useUser();
  console.log(
    `currenUser.clientInitialized: ${
      currenUser.clientInitialized
    } (${new Date()})`
  );

  const auth = getAuth();
  useEffect(() => {
    const unsubscribeOnAuthStateChanged = auth.onAuthStateChanged(
      (onAuthStateChangedUser) => {
        console.log(
          `onAuthStateChangedUser: ${onAuthStateChangedUser} (${new Date()})`
        );
      },
      (error) => {
        console.error("useFirebaseAuth:", error);
      }
    );

    return () => {
      unsubscribeOnAuthStateChanged();
    };
  }, []);

  return (
    <>

onAuthStateChanged

    </>
  );
};

export default withUser({
  whenUnauthedBeforeInit: AuthAction.RETURN_NULL,
})(Index);

Log
Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
initAuth.js:20 WARNING: You are using the Auth Emulator, which is intended for local testing only.  Do not use with production credentials.
initAuth.js:24 next-firebase-auth [init] Setting config with provided value: {debug: true, loginAPIEndpoint: '/api/login', logoutAPIEndpoint: '/api/logout', authPageURL: ƒ, appPageURL: ƒ, …}
initAuth.js:24 next-firebase-auth [init] Initialized the Firebase JS SDK.
initAuth.js:24 WARNING: You are using the Auth Emulator, which is intended for local testing only.  Do not use with production credentials.
sample_on_auth_state_changed.tsx:39 next-firebase-auth [withUser] Calling "withUser".
websocket.js:48 [HMR] connected
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: false (Mon Jan 29 2024 12:26:37 GMT+0900 (日本標準時))
api.js?onload=__iframefcb449584:29 Uncaught TypeError: u[v] is not a function
    at Q.<computed> [as loaded_0] (api.js?onload=__iframefcb449584:29:145)
    at cb=gapi.loaded_0?le=scs:1:6
Q.<computed> @ api.js?onload=__iframefcb449584:29
(anonymous) @ cb=gapi.loaded_0?le=scs:1
index.browser.js:2 next-firebase-auth [withUser] The Firebase ID token changed. New Firebase user: null
index.browser.js:2 next-firebase-auth [withUser] Calling the logout endpoint.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: true (Mon Jan 29 2024 12:26:37 GMT+0900 (日本標準時))
index.browser.js:2 next-firebase-auth [withUser] Completed the auth API request.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
sample_on_auth_state_changed.tsx:8 currenUser.clientInitialized: true (Mon Jan 29 2024 12:26:37 GMT+0900 (日本標準時))
sample_on_auth_state_changed.tsx:18 onAuthStateChangedUser: null (Mon Jan 29 2024 12:27:07 GMT+0900 (日本標準時))

It takes about 30 seconds from 12:26:37 to 12:27:07.

I'm continuing to investigate, focusing on the initialization part, but no progress has been made.
I don't know if the following is related to this problem, and I may be wrong.
I noticed that the FirebaseApp object in my application and the FirebaseApp object in next-firebase-auth are not shared.
The FirebaseApp object that I created in advance cannot be read by initFirebaseClientSDK.ts.
I don't know if this is the intended behavior, but reading the comments below makes me think it's not.
https://github.com/gladly-team/next-firebase-auth/issues/599#issuecomment-1369939213
I confirmed this by adding log output as shown below.
example code
initAuth.js in my application( https://github.com/yosipy/yosi_sandbox/blob/main/20240201_next_firebase_auth_example_for_get_apps/utils/initAuth.js )
@@ -1,5 +1,5 @@
 /* globals window */
-import { initializeApp } from "firebase/app";
+import { getApps, initializeApp } from "firebase/app";
 import { init } from "next-firebase-auth";
 import absoluteUrl from "next-absolute-url";
 import { getAuth, connectAuthEmulator } from "firebase/auth";
@@ -20,6 +20,9 @@ const initAuth = (useEmulator) => {
     connectAuthEmulator(auth, "http://localhost:9099");
   }

+  console.log(
+    `[my-app: before init({...})] getApps().length: ${getApps().length}`
+  );
   // Initialize next-firebase-auth.
   init({
     debug: true,

src/initFirebaseClientSDK.ts in next-firebase-auth
@@ -6,6 +6,11 @@ import logDebug from 'src/logDebug'
 export default function initFirebaseClientSDK() {
   const { firebaseClientInitConfig, firebaseAuthEmulatorHost, tenantId } =
     getConfig()
+  console.log(
+    `[next-firebase-auth: beggining of initFirebaseClientSDK()] getApps().length: ${
+      getApps().length
+    }`
+  )
   if (!getApps().length) {
     if (!firebaseClientInitConfig) {
       throw new Error(

Run yarn run dev:publish in next-firebase-auth. Run yalc add next-firebase-auth and rm -rf .next/ && npm run dev in my application.
Below is the log. On my application side, getApps().length is 1 before init({...}). However, after that, getApps().length is 0 on the next-firebase-auth side.
Download the React DevTools for a better development experience: https://reactjs.org/link/react-devtools
initAuth.js:23 [my-app: before init({...})] getApps().length: 1
initAuth.js:27 next-firebase-auth [init] Setting config with provided value: {debug: true, loginAPIEndpoint: '/api/login', logoutAPIEndpoint: '/api/logout', authPageURL: ƒ, appPageURL: ƒ, …}
initAuth.js:27 [next-firebase-auth: beggining of initFirebaseClientSDK()] getApps().length: 0
initAuth.js:27 next-firebase-auth [init] Initialized the Firebase JS SDK.
auth.js:35 next-firebase-auth [withUser] Calling "withUser".
websocket.js:48 [HMR] connected
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
index.browser.js:2 next-firebase-auth [withUser] The Firebase ID token changed. New Firebase user: null
index.browser.js:2 next-firebase-auth [withUser] Calling the logout endpoint.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}
index.browser.js:2 next-firebase-auth [withUser] Completed the auth API request.
index.browser.js:2 next-firebase-auth [withUser] Set user to: {id: null, email: null, emailVerified: false, tenantId: null, phoneNumber: null, …}

It seems to be the same issue as the issue below.
https://github.com/firebase/firebaseui-web/issues/1053
The direct cause may not be in next-firebase-auth. However, strangely, in my environment, removing the initialization process of next-firebase-auth solves the problem.

I solved it by lowering the Firebase version to 9.16.0.
The solution to the issue below may have another problem.
https://github.com/gladly-team/next-firebase-auth/issues/614

Also experiencing this on even outside of mobile - Desktop Safari. Desktop Chrome and Firefox work fine

Im also experimenting the same issue. Downgrading firebase did not fixed the issue.
Im still searching, but it's seems that when gapi throws an errors, useFirebaseUser no longer receive the new Firebase ID token for 30 seconds. auth.currentUser?.getIdToken(true) did not helped forcing useFirebaseUser to update.
Note: Took 30sec to receive this log:

We've been fighting with this issue with basic firebase/auth and firebaseui packages (no usage of Next.js or next-firebase-auth whatsoever, but very similar symptoms). We're actually using four different firebase modules, the v9 "modular" import style:
firebase/app
firebase/auth
firebase/database
firebaseui

We've found that this error seems to occur when code from multiple of these imports is evaluated at once, the modules internally load multiple instances of Google's api.js script, and some sort of conflict occurs which raises this u[v] is not a function error from within api.js. For us, this puts FirebaseUI into some kind of crashed state where clicking the buttons does nothing for 30-60s, then it recovers.
The only way we've found to avoid this error and broken state is to dynamically import these four firebase modules, and actually import them serially with a small delay (100-200ms) in between. This seems to prevent any contention of api.js execution and is the only thing we've found that prevents the u[v] is not a function error from ever appearing. We don't need these modules for all users so the dynamics have side benefits of reducing our app bundle size, but I know this may not be true or feasible in all use cases.


Station Map Posters

shows station maps on a poster. i made one for each map currently in rotation
delta for example

yes these will have to be mapped in manually
the meta.json file is cbt and idk what happened to it so i just threw mine in at the end

do these get selected by random poster spawners? that seems not ideal

no they shouldnt be

that would only be in the markers posters yml which i didnt touch so these will be manually mapped only


Update steps on installation process for v8

After installing MFA server version, it doesn't show the Skip Authentication Wizard but it requires the activation and then will ask to configure replication between servers

@justinha
Can you review the proposed changes?
When the changes are ready for publication, add a #sign-off comment to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off


Build frontend

Hello,
I have an issue to build the frontend.

<EMAIL_ADDRESS>build /var/www/html/webcdr
browserify public/js/main.js -o public/js/build/bundle.js

Error: Cannot find module 'backbone.wreqr' from '/var/www/html/webcdr/public/js'
at /var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:46:17
at process (/var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:173:43)
at ondir (/var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:188:17)
at load (/var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:69:43)
at onex (/var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:92:31)
at /var/www/html/webcdr/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:22:47
at FSReqWrap.oncomplete (fs.js:82:15)
npm ERR! Linux 3.10.0-327.10.1.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "run" "build"
npm ERR! node v4.9.1
npm ERR! npm  v2.15.11
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>build: browserify public/js/main.js -o public/js/build/bundle.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script 'browserify public/js/main.js -o public/js/build/bundle.js'.
npm ERR! This is most likely a problem with the webcdr package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     browserify public/js/main.js -o public/js/build/bundle.js
How can I solve this?
Thank you in advance.
Vlad.

backbone.wreqr is not installed.

Yes but with warnings:
npm install
npm WARN package.json<EMAIL_ADDRESS>bugs['web'] should probably be bugs['url'].
npm WARN package.json<EMAIL_ADDRESS>No license field.
npm WARN deprecated<EMAIL_ADDRESS>connect 2.x series is deprecated
npm WARN deprecated<EMAIL_ADDRESS>CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated<EMAIL_ADDRESS>please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN deprecated<EMAIL_ADDRESS>This package is unmaintained. Use @sinonjs/formatio instead
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated<EMAIL_ADDRESS>please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
npm WARN deprecated<EMAIL_ADDRESS>Use uuid module instead
npm WARN deprecated<EMAIL_ADDRESS>ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN cannot run in wd<EMAIL_ADDRESS>node install.js (wd=/var/www/html/backbone.wreqr/node_modules/grunt-contrib-jasmine/node_modules/grunt-lib-phantomjs/node_modules/phantomjs)
Do yo know another way to install backbone.wreqr ??

What node.js and npm versions do you have?

I have:
node v4.9.1
npm  v2.15.11

Hello Ivan,
I had reinstalled node and npm to have:
Name        : nodejs
Arch        : x86_64
Epoch       : 1
Version     : 6.14.3
Release     : 1.el7
Name        : nodejs
Arch        : x86_64
Epoch       : 2
Version     : 8.11.3
And work fine.
Thanks a lot.

👍


Time Zone Selector Should Display User's Current Time for Clarity

Problem:
When users select a time zone, it can be confusing due to factors like daylight savings time. Currently, the time zone selector does not provide real-time feedback to users about their current time in the selected time zone. This lack of information can lead to confusion and incorrect selections, especially during transitions to and from daylight savings time.
Proposed Solution:
Implement a feature in the time zone selector that displays the current time for the selected time zone. This real-time feedback will help users confirm whether they have selected the correct time zone, making the process more intuitive and reducing the potential for errors.

https://www.figma.com/file/j3l0F2DioUHEuQT53NOQJY/Ionic-6-Material-UI-Kit-(Community)-(Nidhi--2023)?type=design&node-id=26091%3A64216&mode=design&t=a7snZAj0I6KxRGX9-1

This will be handled in https://github.com/hotwax/dxp-components/issues/262.
@Dhiraj1405 please check if the above feature request handles this case, if yes please close this issue.

This will be handled in #262. @Dhiraj1405 please check if the above feature request handles this case, if yes please close this issue.

Yes @ymaheshwari1 This handles the requirement, should I close this ticket?

This will be handled in #262. @Dhiraj1405 please check if the above feature request handles this case, if yes please close this issue.

Yes @ymaheshwari1 This handles the requirement, should I close this ticket?

Sure


DASH Player Requirements

Have you read the Tutorials?
Yes
Have you read the FAQ and checked for duplicate open issues?
Yes
What version of Shaka Player are you using?
2.x and 3.x
Please ask your question
Hi!
I'm Javier from Telefonica.
We use Shaka player inside our service MovistarPlay in several countries (i.e Chile https://www.movistarplay.cl/ or Brazil https://www.vivoplay.com.br/) and we are currently validating some of DASH support requirements to reach new markets.
We already know some of them but since other are technical details, can you help us to know if the following requirements are fulfilled by Shaka?
Thank you for your time!
DASH Player Requirements

In terms of media compatibility, the player MUST accept the implementation guidelines of DASH-IF IOP 4.3 document, in particular, those sections that specifies the following parameters:

Profile: (section 3.2)

VoD: urn:mpeg:dash:profile:isoff-on-demand:2011, based on byte-ranges
Live: urn:mpeg:dash:profile:isoff-live:2011, based on template $Time$

Both dynamic and static for recording use-cases
Including segment timelines with discontinuities

Fragment: (section 3.2)

Segment formats based on ISO BMFF with fragmented movie files.
Shall accept brand cmfc (CMAF)
Shall accept segments with multiple fragments

DRM: (section 7)

Multi-DRM support: Widevine and Playready
Algorithm: cenc
Support of multiple keys in different adaptation sets
Desirable:

Algorithm: cbcs

Video: (section 6.2)

H264 up to High Profile
HEVC up to Main 10
CBR, VBR
SDR, HLG and HDR10

Audio: (section 6.3)

AAC: profiles LC y HEv1
Extension to audio E-AC3

Subtitles: (section 6.4.2)

SRT

TTML (text-based) inside MP4 fragments

SMPTE-TT extensión (image-based) inside MP4 fragments

Desirable:

WebVTT as .vtt files

Language

Preferable ISO 639-2/T
Desirable:

RFC 5646 and ISO 639-1

Trick-modes:

Player implementation using seek-based
Actual trickmodes in media following section 3.2.9

Thumbnails:

Desirable: Extension of DASH-IF (sección 6.2.6)

In terms of CDN compatibility, the player MUST satisfy the following requirements:

Support of HTTP redirects
The most important thing about HTTP redirections when requesting a content to a TCDN corresponds to the ability of the client to set the base URL of a content after the manifest is redirected. A CDN based in HTTP redirections Request Routing mechanism will send several redirections from the service URL published by the content platform until the client connects to the actual edge streamer that will serve the content. Those redirections take time and effort in CDN to resolve. To avoid doing that for each particular fragment/segment, the client should resolve the Manifest URL to get the actual delivery URL and use that as the Base URL for the rest of fragments/segments and to update the Manifest.
DASH-IF IOP 4.3 document sets the following workflow that should be respected:
The client gets a URI to the playlist file from the content provider website. This URI may point directly at a CDN address or be CNAMEd to a CDN node.
The client requests the playlist file from the CDN.
The CDN responds with an HTTP redirect, or a series of redirects that eventually takes the client to the final cache.
The client requests the playlist from this final cache.
The client parses the relative URIs to media segments from the playlist.
The client uses the final cache address to construct the absolute URIs for the media segments that point to the final cache.
The client requests the media segments from the final cache. The redirection should still be temporary in the sense that if a client does a refresh, or repeatedly fails to get the playlist or the media files from the cache address, it can go back to the original playlist URI and request it again.
Refrain from resolving periodically the host name of the absolute URI for the media segments, and so stay connected to the same server requesting the segments during all the streaming session if the server is alive and it’s not failing to get back the requested content.
Follow the HTTP 30x redirection when the server make it for a fragment in the middle of a playback. In such case, the player should connect to the resolved host and stay connected to the corresponding IP during the rest of the streaming session
Support of Persistent HTTP connection
HTTP 1.1 persistent session and chunked encoding. The HTTP session will retain the transport connection according to HTTP Keep-Alive semantics or to transport monitoring metrics when the player runs multiple transport connections with the server. New transport connections MUST be established with the same server as before.
If the hostname resolution provides more than one IP address, the player MUST try to download the playlist/fragment from any other IP address returned by host resolution in case of failure when downloading the playlist/fragment. The player MAY follow the order in which IP addresses are received.
According to chapter 3.4.3 of DASH-IF IOP the client shall support:

Shall support byte range requests, i.e. issue partial GETs to subsegments as defined in RFC 9 7233
Follow the reaction to HTTP status and error codes as defined in section A.7 of 13 ISO/IEC 23009-1
Should support the normative aspects of the HTTP state management mechanisms (also known as Cookies) as defined in RFC 6265 for first-party cookies.

MPD Update
In case of Dynamic playlists (type=dynamic) client shall respect minimumUpdatePeriod attribute. DASH clients operating based on such an MPD and consuming the service at the live edge typically need to request a new MPD prior to downloading a new segment. However, in order to minimise MPD requests and resulting traffic load, the client may use one or more of the following optimisations (clause 4.4.3):

If the client fetches the MPD using HTTP, the client should use conditional GET methods as specified in RFC 7232  to reduce unnecessary network usage in the downlink.

If the @segmentProfiles contains the 'lmsg' brand clients may also rely on the  'lmsg' message and request a new MPD only in case a segment is received with an  'lmsg' brand. Otherwise the client may use template constructions to continue determining the URL and the segment availability start time of segments

In addition, it is requested the “In-band MPD validity events” support, in particular, the reserved event “MPD_RELOAD_SCHEME”, declared with schemeIdUri =“urn:mpeg:dash:event:2012”, which provides an optimization mechanism to allow clients to reduce HTTP traffic caused by fetching new MPD snapshot.
UTCTiming support
UTCTiming element in DASH MPD for type=dynamic client should support at least one of the following
urn:mpeg:dash:utc:http-xsdate:2014
urn:mpeg:dash:utc:http-iso:2014
urn:mpeg:dash:utc:http-ntp:2014
urn:mpeg:dash:utc:http-head:2014
Being urn:mpeg:dash:utc:http-iso:2014 or urn:mpeg:dash:utc:http-head:2014 the preferable configurations
It is recommended to avoid urn:mpeg:dash:utc:direct:2014 as it prevents MPD to be cache
Cookies support
Custom headers support
The supplier MUST support the possibility to include HTTP custom headers in the all the content request of a streaming session. The number and the number of different HTTP custom headers MUST be configurable. The content of the each HTTP custom header MUST be decided by the application logic.
HTTPS support
Support of TLS 1.2 y 1.3
Support Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS), in particular ECDHE as key exchange algorithm.
Desirable requirements
Multiperiod support in case Ad Insertion functionalities are to be introduced in TdE service
Support for MPD.Location element to permit obtain multiple URLS for MPD refresh and fragments.
Support of MPEG-DASH SAND (ISO/IEC 23009 DASH PART 5 SERVER AND NETWORK-ASSISTED DASH)

Hi Javier,
I would be happy to help you with this.  I've added replies inline below.

Profile: (section 3.2)

VoD: urn:mpeg:dash:profile:isoff-on-demand:2011, based on byte-ranges

Live: urn:mpeg:dash:profile:isoff-live:2011, based on template $Time$

Both dynamic and static for recording use-cases
Including segment timelines with discontinuities

We do not check the profile field, but we do support all of these individual features of those profiles.
The only caveat with $Time$ is that JavaScript number precision is limited to 53 bits.  If your timestamps in timescale units go beyond 2**53, the $Time$ templates can no longer be filled correctly in plain JavaScript.

Fragment: (section 3.2)

Segment formats based on ISO BMFF with fragmented movie files.

If MP4 is supported by the browser, yes.  This is not a matter of player support, though.

Shall accept brand cmfc (CMAF)
Shall accept segments with multiple fragments

These are also a features of the browser, not the player.

DRM: (section 7)

Multi-DRM support: Widevine and Playready

Shaka Player supports both, but not every browser or device will have these.  Some may have one or the other, some may have both, some may have neither.

Algorithm: cenc

This is also a matter of the browser, OS, or platform, though to my knowledge, all Widevine and PlayReady devices have always supported the cenc encryption scheme.

Support of multiple keys in different adaptation sets

Shaka Player supports this.

Desirable:

Algorithm: cbcs

This depends on the platform.  Some will have it, and some won't.  The new draft spec of the EME API has introduced a means to query for encryption scheme support, but it is not widely implemented yet.  For those platforms, OS's, and browsers where we cannot query for it, Shaka Player will assume cenc.  When the API becomes more widely available, future versions of Shaka Player will make use of it to probe for cbcs support.

Video: (section 6.2)

H264 up to High Profile
HEVC up to Main 10
CBR, VBR
SDR, HLG and HDR10

These are all features of the browser/platform/OS.

Audio: (section 6.3)

AAC: profiles LC y HEv1
Extension to audio E-AC3

These are all features of the browser/platform/OS.

Subtitles: (section 6.4.2)
SRT
TTML (text-based) inside MP4 fragments
SMPTE-TT extensión (image-based) inside MP4 fragments

TTML and WebVTT, both in text and in MP4 fragments, are supported by Shaka Player.
SRT is not supported yet, but can be converted to WebVTT.  There is a pending PR to add this capability to Shaka Player: https://github.com/google/shaka-player/pull/2872

Desirable:

WebVTT as .vtt files

Supported.

Language

Preferable ISO 639-2/T

Desirable:

RFC 5646 and ISO 639-1

All of these languages codes can be used in our API and in the content.  Language codes will be normalized to their shortest form internally, such that por-BR will normalize to pt-BR.  We also do fuzzy matching so that we know pt-PT is related to pt-BR, we will pick the closest match available for audio or text languages.
User language preferences can be configured via preferredAudioLanguage and preferredTextLanguage settings, and subtitles will be automatically enabled if audio language preference can't be met, but text can.

Trick-modes:

Player implementation using seek-based
Actual trickmodes in media following section 3.2.9

Supported by Shaka Player.

Thumbnails:
Desirable: Extension of DASH-IF (sección 6.2.6)

We don't yet support thumbnails, though you can track that here: https://github.com/google/shaka-player/issues/559

In terms of CDN compatibility, the player MUST satisfy the following requirements:

Support of HTTP redirects
The most important thing about HTTP redirections when requesting a content to a TCDN corresponds to the ability of the client to set the base URL of a content after the manifest is redirected. A CDN based in HTTP redirections Request Routing mechanism will send several redirections from the service URL published by the content platform until the client connects to the actual edge streamer that will serve the content. Those redirections take time and effort in CDN to resolve. To avoid doing that for each particular fragment/segment, the client should resolve the Manifest URL to get the actual delivery URL and use that as the Base URL for the rest of fragments/segments and to update the Manifest.

We do suport HTTP redirects, and we resolve segment URIs relative to the redirected manifest.

Follow the HTTP 30x redirection when the server make it for a fragment in the middle of a playback. In such case, the player should connect to the resolved host and stay connected to the corresponding IP during the rest of the streaming session

Though we follow redirects for segments, I don't believe a redirect for one segment will affect the URI of the next segment.  If this is desired, please file a feature request.

Support of Persistent HTTP connection
HTTP 1.1 persistent session and chunked encoding. The HTTP session will retain the transport connection according to HTTP Keep-Alive semantics or to transport monitoring metrics when the player runs multiple transport connections with the server. New transport connections MUST be established with the same server as before.
If the hostname resolution provides more than one IP address, the player MUST try to download the playlist/fragment from any other IP address returned by host resolution in case of failure when downloading the playlist/fragment. The player MAY follow the order in which IP addresses are received.

This would be a feature of the browser.

According to chapter 3.4.3 of DASH-IF IOP the client shall support:

Shall support byte range requests, i.e. issue partial GETs to subsegments as defined in RFC 9 7233
Follow the reaction to HTTP status and error codes as defined in section A.7 of 13 ISO/IEC 23009-1

These are supported by Shaka Player.

Should support the normative aspects of the HTTP state management mechanisms (also known as Cookies) as defined in RFC 6265 for first-party cookies.

This would be a browser feature.

MPD Update
In case of Dynamic playlists (type=dynamic) client shall respect minimumUpdatePeriod attribute. DASH clients operating based on such an MPD and consuming the service at the live edge typically need to request a new MPD prior to downloading a new segment. However, in order to minimise MPD requests and resulting traffic load, the client may use one or more of the following optimisations (clause 4.4.3):

If the client fetches the MPD using HTTP, the client should use conditional GET methods as specified in RFC 7232  to reduce unnecessary network usage in the downlink.

This would be done by the browser cache AFAIK.

If the @segmentProfiles contains the 'lmsg' brand clients may also rely on the  'lmsg' message and request a new MPD only in case a segment is received with an  'lmsg' brand. Otherwise the client may use template constructions to continue determining the URL and the segment availability start time of segments

I don't know what this is, actually.  If this is desired, please file a feature request with more information.

In addition, it is requested the “In-band MPD validity events” support, in particular, the reserved event “MPD_RELOAD_SCHEME”, declared with schemeIdUri =“urn:mpeg💨event:2012”, which provides an optimization mechanism to allow clients to reduce HTTP traffic caused by fetching new MPD snapshot.

Same here.  Please file a feature request if desired.

UTCTiming support
UTCTiming element in DASH MPD for type=dynamic client should support at least one of the following
urn:mpeg:dash:utc:http-xsdate:2014
urn:mpeg:dash:utc:http-iso:2014
urn:mpeg:dash:utc:http-ntp:2014
urn:mpeg:dash:utc:http-head:2014
Being urn:mpeg:dash:utc:http-iso:2014 or urn:mpeg:dash:utc:http-head:2014 the preferable configurations
It is recommended to avoid urn:mpeg:dash:utc:direct:2014 as it prevents MPD to be cache

All of these are supported except for http-ntp.

Custom headers support
The supplier MUST support the possibility to include HTTP custom headers in the all the content request of a streaming session. The number and the number of different HTTP custom headers MUST be configurable. The content of the each HTTP custom header MUST be decided by the application logic.

This can be done with a request filter in Shaka Player.  However, please note that cross-origin requests are subject to CORS rules in any browser, so the server must explicitly allow any such custom request headers.  See https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS and https://enable-cors.org/

HTTPS support
Support of TLS 1.2 y 1.3
Support Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS), in particular ECDHE as key exchange algorithm.

This is a browser feature.

Desirable requirements
Multiperiod support in case Ad Insertion functionalities are to be introduced in TdE service

Supported by Shaka Player.

Support for MPD.Location element to permit obtain multiple URLS for MPD refresh and fragments.

Supported by Shaka Player.

Support of MPEG-DASH SAND (ISO/IEC 23009 DASH PART 5 SERVER AND NETWORK-ASSISTED DASH)

Not supported by Shaka Player.

I hope this helps!

Thank you for your help @joeyparrish!


Which is better: GPT or RelGAN for text generation?

Based on my understanding, gpt or gpt-2 are using language model loss to train and generate text, which do not contains GAN.
I am so confused about this question. Thank you very much.

GPT or GPT-2 has applied much more network parameters and trained on much larger dataset than RelGAN, so I think a direct comparison between GPT and RelGAN is somehow unfair. However, both models demonstrated the benefit of self-attention (either with the language modeling loss or the GAN loss) in modeling long-range dependencies.


Unable to update the return code of an win32LobApp

I want to update the return code of an win32LobApp but the request return an error 400. What do I do wrong ?
Import-Module Microsoft.Graph.Devices.CorporateManagement

#Paramètre du script
$password = $param1=$args[0]
$clientId = "bbcbxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$tenantId = "6237xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

$passWordSecure = ConvertTo-SecureString $password -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $clientId, $passWordSecure
Connect-MgGraph -TenantId $tenantId -ClientSecretCredential $Credential

$params = @{
	returnCodes = @(
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 0
			type = "success"
		}
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 1707
			type = "success"
		}
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 3010
			type = "success"
		}
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 1641
			type = "success"
		}
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 1618
			type = "success"
		}
	)
}

Update-MgDeviceAppManagementMobileApp -MobileAppId "0f1ac1c1-0400-4005-83bc-4a0c4edc22d1" -BodyParameter $params

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

ID: ddb48956-74da-b4ce-10e1-c0ec7f065f48
Version Independent ID: 645392c4-d19b-d5b2-27a3-12aa5c1b4f0c
Content: Update win32LobApp - Microsoft Graph v1.0
Content Source: api-reference/v1.0/api/intune-apps-win32lobapp-update.md
Product: intune
Technology: microsoft-graph
GitHub Login: @jaiprakashmb
Microsoft Alias: MSGraphDocsVteam

Hey @barthmmm: Can you share some more details on the error that you encountered?
Do you have associated client-request-id that was returned along with 400 http status code?
Were you ever able to successfully use the patch operation?
Also did you try using graph explorer to make a patch API call?

When i try on my PowerShell script and on Graph Explorer I got an ModelValidationFailure.
PowerShell Client Request Id: 2d0d1854-d29f-46f7-8a3a-18e429729943
Graph Explorer Client Request Id: 413e7dc9-ab36-b40e-642d-da4ccc70b06a
My Graph Explorer request:
https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/fe691b89-b82d-47bc-a880-5774d63219da

{
    "returnCodes": [
        {
<EMAIL_ADDRESS>"#microsoft.graph.win32LobAppReturnCode",
            "returnCode": 0,
            "type": "success"
        },
        {
<EMAIL_ADDRESS>"#microsoft.graph.win32LobAppReturnCode",
            "returnCode": 1707,
            "type": "softReboot"
        },
        {
<EMAIL_ADDRESS>"#microsoft.graph.win32LobAppReturnCode",
            "returnCode": 3010,
            "type": "softReboot"
        },
        {
<EMAIL_ADDRESS>"#microsoft.graph.win32LobAppReturnCode",
            "returnCode": 1641,
            "type": "softReboot"
        },
        {
<EMAIL_ADDRESS>"#microsoft.graph.win32LobAppReturnCode",
            "returnCode": 1618,
            "type": "retry"
        }
    ]
}

Full error message on PowerShell:
Update-MgDeviceAppManagementMobileApp : Exception has been thrown by the target of an invocation.
Status: 400 (BadRequest)
ErrorCode: ModelValidationFailure
Date: 2023-12-13T07:42:53
Headers:
Transfer-Encoding             : chunked
Vary                          : Accept-Encoding
Strict-Transport-Security     : max-age=31536000
request-id                    : ea94ec8f-3ef2-4e37-a5d9-c3548ff6e5f2
client-request-id             : 2d0d1854-d29f-46f7-8a3a-18e429729943
x-ms-ags-diagnostic           : {"ServerInfo":{"DataCenter":"Switzerland North","Slice":"E","Ring":"5","ScaleUnit":"000","RoleInstance":"ZR1PEPF00000661"}}
Date                          : Wed, 13 Dec 2023 07:42:53 GMT
Au caractère O:\Script\Test5_Microsoft_Graph.ps1:42 : 1
+ Update-MgDeviceAppManagementMobileApp -MobileAppId "fe691b89-b82d-47b ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : ({ MobileAppId =...raphMobileApp }:<>f__AnonymousType93`2) [Update-MgDevice...obileApp_Update], Exception
    + FullyQualifiedErrorId : ModelValidationFailure,Microsoft.Graph.PowerShell.Cmdlets.UpdateMgDeviceAppManagementMobileApp_Update

Full error on graph explorer:
{
    "error": {
        "code": "ModelValidationFailure",
        "message": "Exception has been thrown by the target of an invocation.",
        "innerError": {
            "message": "Exception has been thrown by the target of an invocation.",
            "date": "2023-12-13T07:42:34",
            "request-id": "1b9a77a4-b305-4505-b62d-c216d4a219da",
            "client-request-id": "413e7dc9-ab36-b40e-642d-da4ccc70b06a"
        }
    }
}

I found why it didn't work. I missed the win32LobApp odata.type at the beggining:
$params = @{
<EMAIL_ADDRESS>= "#microsoft.graph.win32LobApp"
	returnCodes = @(
		@{
<EMAIL_ADDRESS>= "microsoft.graph.win32LobAppReturnCode"
			returnCode = 0
			type = "success"
		}
	)
}

You can close the issue thank you.


Typo in internal.js

When I updated to the most recent version I got this error:
/instagram-private-api/client/v1/internal.js:173 Internal.getExploreFeed = function (session,) {                                             ^
Code worked after removing the comma, however it spat out this link in my console window:
https://i.instagram.com/api/v1/accounts/read_msisdn_header/

Fixed.


Add mock for Share API

Hi there,
This is the mock for the Share API.
Cheers!

thanks @RealOrangeOne it should be good with: f19363e


Provide "isRunning" method

We try to use this package for running unit tests against a "real" local MySQL database. This also works very good so far.
The only problem is, that it doesn't seem to be able to start and stop the database sequentially.

We have an abstract base test, which starts and stops the database
All tests inherit from this.
Now running multiple tests results in all subsequent test failing as the port is still used.
We are using TestNG

It would be nice to have a method, like "isRunning" to check, if the database is still running. Another option would be to have an additonal stopAndWait

Okay, while preparing a sample project I found out, that it is more a typical "forget to release resources" problem and though there was still a JDBC connection open.
Can be closed ;)
The example project: https://github.com/scrobbleme/embedded-mariadb-test

Hallo - OK, closing - these are my favourite kind of issues.. ;-) Had a look at your example, cool! Similar to https://github.com/vorburger/MariaDB4j/blob/master/src/test/java/ch/vorburger/mariadb4j/tests/MariaDB4jSampleTutorialTest.java (just in case you hadn't seen that). Thanks for your interest, and BTW - Pull Requests for MariaDB4j always welcome! ;-)

Thanks, haven't seen your example. Might have saved some time ;)


How scroll drawn page in robot frame work

Originally submitted to Google Code by ssramcho... on 28 Apr 2015

Hi ,
please let me know is there any keyword to scroll down page using robot framework.

Originally submitted to Google Code by @pekkaklarck on 13 Aug 2015

You can look what keywords this library implements. Is there's nothing for scrolling, you need to upgrade to Selenium2Library. This library is deprecated.


Bar-Assistant V4 - Import Broken Again

I successfully migrated/updated BarAssistant to v4 and SaltRim to v3. The new versions look/perform GREAT! But I have an issue with Export/Import.
I successfully perform a Bar Export to zip.  see screenshot.

I then try to Import this zip into a separate BarAssistant/SaltRim instance which I also migrated successfully to latest versions. The zip import fails. See screenshot

Try to do a zip export and import yourself and see if you run into issues. Hopefully you can fix. Thanks!
I tried moving the zip file around to either "/var/www/cocktails" or "/var/www/cocktails/storage/bar-assistant". Nothing seemed to help. The php artisan import command would either error saying it couldn't find the zip file or show the artisan error message I have in my screenshot above.

Just some more information.

Should be fine now, wrong filepath was being checked. Thanks!


Read raw bytes instead of text when reading ssdp

Description:
The xml will contain processing instruction on charset, so we should not make any charset assumptions before that.
Related issue (if applicable): fixes #28267
Checklist:

[ ] The code change is tested and works locally.
[X] Local tests pass with tox. Your PR cannot be merged unless tests pass
[X] There is no commented out code in this PR.
[X] I have followed the development checklist

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly. Update and include derived files by running python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.
[ ] Untested files have been added to .coveragerc.

If the code does not interact with devices:

[ ] Tests have been added to verify that the new code works.

Note. I've not done any real local tests on this. @mvdwetering from originating issue say it fixes the issue at hand. I don't think anything should break, but tests are lacking.

@scop since you have been working a bit on ssdp, could you perhaps verify this pull?

There is a bug on python older as 3.8 and you need set LANG=C.UTF-8 . Because of aiohttp use that as default and it is set to MS default CP what will not work with python 3.6 at all.

The correct way must be too look at the locale set in the xml header if no charset is set in Content-Type.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

That could be anything. The xml should be considered binary before that has been checked.

Okey.. i think i'll take this back
https://www.ietf.org/rfc/rfc3023
8.20 "Inconsistent Example: Text/xml with UTF-8 Charset"
Content-type: text/xml; charset="utf-8"

<?xml version="1.0" encoding="iso-8859-1"?>

Since the charset parameter is provided in the Content-Type header, MIME and XML processors MUST treat the enclosed entity as UTF-8 encoded. That is, the "iso-8859-1" encoding MUST be ignored.

So we should do as we currently do. Can't we override LANG=C.UTF-8 on start of hass on anything 3.7 and older?

Follow of PEP0538 you need run with LANG=C.UTF-8 otherwise you run into other issues and it's not a full working environment for python. You can also only LANG=C.UTF-8 python3 -m hass.
However, can you add https://pypi.org/project/defusedxml ?
Example: https://github.com/fabaff/python-connect-box/blob/master/connect_box/init.py#L8
We have currently there a security issue now. It would be amazing.

Not in this pull. Maybe on a nice sunny day :)

RFC 3023 has been obsoleted by RFC 7303. By that spec it would probably be:

If there's a BOM, use it
Else if Content-Type has a charset, use it
Else defer to XML declaration, i.e. read as raw bytes and let XML processor handle by XML rules

Always using .text() will quite likely work at least for step 2, possibly also for step 1, but will almost certainly fail step 3 (to succeed there, aiohttp would have to look at the XML declaration encoding). When properly implemented, system default charsets/encodings shouldn't have any effect here. If system default UTF-8 encoding fixes something, it's just through luck and "fixes" only cases where we end up in step 3 and the XML doc is in UTF-8 (which it pretty often is, but doesn't have to be).
(BTW ElementTree's fromstring is documented to take a "string", which I suppose strictly speaking leaves it open what it actually takes, str, bytes, or either. Per typeshed and IIRC experience, also in this patch, it's either.)

With regards to the xml/etree security issue, see #28341

I think I'll reopen this with something like:
if req.charset:
  data = req.text()
else:
  data = req.read()

More correct would be in pseudocode:

get bytes, check if it has BOM, if yes, discard BOM and convert data bytes to str according to it
otherwise your sequence above


[📑 Docs]: Adapt Servers tutorial for v3

For AsyncAPI v3, we need to adapt the AsyncAPI Documents tutorial  (https://www.asyncapi.com/docs/tutorials/getting-started/servers) to be usable with AsyncAPI v3.
Here are the v3 structure that should be used instead:
asyncapi: 3.0.0
info:
  title: Hello world application
  version: '0.1.0'

servers:
  production:
    host: broker.mycompany.com
    protocol: amqp
    description: This is "My Company" broker.

channels:
  hello:
    address: 'hello'
    messages:
      sayHelloMessage:
        payload:
          type: string
          pattern: '^hello .+$'

operations:
  receiveHello:
    action: 'receive'
    channel:
      $ref: '#/channels/hello'

Here are the main points that need to change:

Re-add the docs/tutorials/getting-started/servers.md file.
Adapt the AsyncAPI document snippet
Adapt the text if anything is needed.

Make sure you base your change on the next-major-spec branch and target it in your PR 🙂 If you have any questions, don't hesitate to ask.

working on it

solved with https://github.com/asyncapi/website/pull/2275
in next major branch, but considered to be fixed and closing - also for easier management of the scope for v3


Update supported platforms of Manual/Prerequisites page

Towards resolving comments in https://github.com/STEllAR-GROUP/hpx/issues/6298

Performance test reportHPX PerformanceComparisonBENCHMARKFORK_JOIN_EXECUTORPARALLEL_EXECUTORSCHEDULER_EXECUTORFor Each(=)??-InfoPropertyBeforeAfterHPX Datetime2023-05-10T12:07:53+00:002024-03-14T15:32:43+00:00HPX Commitdcb541576898d370113946ba15fb58c20c8325b2d3e67d4225d23e23b7c4a3b371daeaf14980c9c3Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.eduEnvfileDatetime2023-05-10T14:50:18.616050-05:002024-03-14T10:40:08.959055-05:00ClusternamerostamrostamCompiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1ComparisonBENCHMARKNO-EXECUTORFuture Overhead - Create Thread Hierarchical - Latch+++InfoPropertyBeforeAfterHPX Datetime2023-05-10T12:07:53+00:002024-03-14T15:32:43+00:00HPX Commitdcb541576898d370113946ba15fb58c20c8325b2d3e67d4225d23e23b7c4a3b371daeaf14980c9c3Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.eduEnvfileDatetime2023-05-10T14:52:35.047119-05:002024-03-14T10:41:56.192357-05:00ClusternamerostamrostamCompiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1ComparisonBENCHMARKFORK_JOIN_EXECUTOR_DEFAULT_FORK_JOIN_POLICY_ALLOCATORPARALLEL_EXECUTOR_DEFAULT_PARALLEL_POLICY_ALLOCATORSCHEDULER_EXECUTOR_DEFAULT_SCHEDULER_EXECUTOR_ALLOCATORStream Benchmark - Add(=)(=)(=)Stream Benchmark - Scale(=)(=)(=)Stream Benchmark - Triad(=)-(=)Stream Benchmark - Copy(=)=(=)InfoPropertyBeforeAfterHPX Datetime2023-05-10T12:07:53+00:002024-03-14T15:32:43+00:00HPX Commitdcb541576898d370113946ba15fb58c20c8325b2d3e67d4225d23e23b7c4a3b371daeaf14980c9c3Hostnamemedusa08.rostam.cct.lsu.edumedusa08.rostam.cct.lsu.eduEnvfileDatetime2023-05-10T14:52:52.237641-05:002024-03-14T10:42:12.778549-05:00ClusternamerostamrostamCompiler/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1/opt/apps/llvm/13.0.1/bin/clang++ 13.0.1Explanation of SymbolsSymbolMEANING=No performance change (confidence interval within ±1%)(=)Probably no performance change (confidence interval within ±2%)(+)/(-)Very small performance improvement/degradation (≤1%)+/-Small performance improvement/degradation (≤5%)++/--Large performance improvement/degradation (≤10%)+++/---Very large performance improvement/degradation (>10%)?Probably no change, but quite large uncertainty (confidence interval with ±5%)??Unclear result, very large uncertainty (±10%)???Something unexpected…


text not working on MacOS

I followed the README steps to build and run testcard.c on a MacBook Pro (2017) running Monterey 12.2.1. It builds and runs fine, except that the text is scrambled. I built my simple2d program using Apple clang version 13.0.0 (clang-13<IP_ADDRESS>)
Target: x86_64-apple-darwin21.3.0 and got the same result. Here's a screenshot:

I'm happy to put in time debugging to see what's going wrong. Let me know how I can help.

Hi @cclark2a. In SDL_ttf 2.0.18, the resulting surface has changed. We'll have to repack it using the instructions here.

Exact same problem on  a Debian machine with sdl_ttf 2.20.1. I have seen the above issue about surface change in SDL_ttf, however wondering what I should do to get text working in the example. I was exploring simple2d to learn OpenGL to do simple 2D graphics.

If you're still looking for a solution, I have a PR here: https://github.com/simple2d/simple2d/pull/141


Added parameter for sonar branch name. CCCP-29

@JanDoerrenhaus FYI

I accidentially deleted the branch, because I thought this was merged. However, it was only approved and closed, but not merged. I'm confused.

There, I fixed it.


#expect(try ...) from inside a closure causes "errors thrown from here are not handled" error

Description
When the expression passed to #expect() contains try, and the #expect() call occurs inside a throwing closure, the compiler emits an "errors thrown from here are not handled" error.
Verified using Xcode 16.2, release/6.1 dev snapshot (2024-12-21), and main dev snapshot (2024-12-22).
Expected behavior
The try keyword should be usable inside the #expect() macro, as it is under non-closure conditions.
Actual behavior
The compiler refuses to compile the expression.
Steps to reproduce
See attached reproducer: TestPackage.zip
swift-testing version/commit hash
6.0.3
Swift & OS version (output of swift --version ; uname -a)
swift-driver version: 1.115.1 Apple Swift version 6.0.3 (swiftlang-<IP_ADDRESS>.10 clang-16<IP_ADDRESS>)
Target: arm64-apple-macosx15.0
Darwin MacBookPro 24.2.0 Darwin Kernel Version 24.2.0: Fri Dec  6 19:01:59 PST 2024; root:xnu-11215.61.5~2/RELEASE_ARM64_T6000 arm64

Gwynne also reproed with:
$ TOOLCHAINS=$(plutil -extract CFBundleIdentifier raw /Library/Developer/Toolchains/swift-6.1-DEVELOPMENT-SNAPSHOT-2024-12-21-a.xctoolchain/Info.plist) swift --version
Apple Swift version 6.1-dev (LLVM dd0f3b29e584617, Swift 12fb6cb92508551)
Target: arm64-apple-macosx15.0

And:
$ TOOLCHAINS=$(plutil -extract CFBundleIdentifier raw /Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2024-12-22-a.xctoolchain/Info.plist) swift --version
Apple Swift version 6.2-dev (LLVM 9f6c3d784782c34, Swift 55189bae8e55169)
Target: arm64-apple-macosx15.0

And with the experimental swift-testing branch at https://github.com/swiftlang/swift-testing/pull/840 which produces completely different macro expansions.
Looks like a type-checking issue to me, so sending this along to swift.


review request to integrate universal pipeline

From Peiwen Jin from CMA.
"We developed a small grib pipeline plugin(simple publish NWP grib2 data with no error) and we contribute them in our publc repository (including readme documentation, code and test data sample)
See the link: https://github.com/alimand/CMA-grib-pipeline-plugin.git
May I know if this work could be contribute to wis2box?
"
In order to commit this work into work @alimand will need to checkout the wis2box-repository, create a new branch with the additional plugin.
@tomkralidis can you comment on the best way to integrate this into the latest version of wis2box ?

Thanks @alimand.  You can fork wis2box, work in your own branch, and submit a pull request.  Given there is already an implementation and test data, we will work together on documentation at which point it should be then available for the 1.0b7 release.

to be further discussed by wis2box dev team during sprint week/next week


SMB connect/disconnect

Hi
I'm thinking of using Wexflow on a Windows machine. A frequent workflow should do a SMB connect (with the required credentials) to a Share on a Linux machine, check a folder for incoming files, process them, disconnect the SMB connection.
Unfortunately  your Network tasks so far don't serve such a possibility to include the temporary connection to a network share and end the connection after completion.
At the moment probably I will write a small batch script to use it as a workaround.

@TinuS-OG I will try to work on this use case and make it available in the v5.5. For the moment, you can use batch scripts and call them from Wexflow (by using ProcessLauncher task).

@TinuS-OG SMB/CIFS is now supported by all the .NET tasks. To connect, simply read the following documentation. This new feature will be available in the v5.5.
I also added FileSystemWatcher task for files monitoring. And the good news is that it supports SMB/CIFS too. This new task is also available for .net core.
I added SMB connection on task level to be able to have different SMB connections for the same workflow.

@TinuS-OG Can I close this issue?

Dear Akram
You have developed and released this very appreciated extension of wexflow much too fast for me. I haven't yet had the time to get the v5.5 and look into it. I will work on this feature in the next 2-3 weeks and in case I'll find something, I'll let you know again.
Thank you very much for your ongoing hard work on your project, you're doing great!
Greetings, Martin


account names with handshake TLDs cannot be resolved in the post composer or search

when composing a post, typing<EMAIL_ADDRESS>does not find the account in the live post composer or result in resolved account reference after posting. attached screenshots show that this is a valid account name and that i can otherwise resolve account names of other people.
i wasn't sure if this was proto or client, so i went client.
platform: iOS, mobile web (safari), desktop web
i do not have an android device on which to test.

This might happen because they didn't confirm their email address. I noticed that this happens to new users I invite, and after they confirm their emails it becomes normal.

https://bsky.app/profile/bossett.bsky.social/post/3kispucxmkf2q - tagging the old handle works, even though it was unable to resolve either handle via auto-complete in the composer.

Oh yeah, we don't support Handshake TLDs. This isn't strictly enforced per-se; it's just that none of the DNS resolution architecture uses it.

yeah, now that i know tbis is handshake-related i would agree it ain't a thing you should support. would you like to close, or keep this for disallowing them?


Async Middleware forwarding wrong URL

What version of Hono are you using?
3.9.2
What runtime/platform is your app running on?
Deno
What steps can reproduce the bug?
I have an endpoint with an id as URL param and a custom async middleware that validates an RS256 JWT. When I post multiple (e.g. 3) requests with different ids against the endpoint below at the same time, For some reason, the log statement entails the same or at least partially the same id.
Example:
Sending these 3 post requests:

POST /1/start
POST /2/start
POST /3/start

results in the following logs:
id, 1
id, 1
id, 3
import * as jose from<EMAIL_ADDRESS>
// token middleware
const validateToken = async (c, next: any) => {
  // get the Bearer token from the header
  const bearerToken = c.req.header("Authorization");
  console.log(c.req.url);

  if (!bearerToken) return c.text("Unauthorized", 401);

  // verify the token
  const jwt = bearerToken.split(" ")[1];
  const alg = "RS256";

  try {
    const auth0_cert = atob(Deno.env.get("AUTH0_CERT_BASE64") || "");
    const publicKey = await jose.importX509(auth0_cert, alg);
    const { payload } = await jose.jwtVerify(jwt, publicKey, {
      issuer: Deno.env.get("AUTH0_ISSUER"),
      audience: Deno.env.get("AUTH0_AUDIENCE"),
    });

    // add user_id from token to the context
    c.set("user_id", payload.sub);
  } catch (err) {
    console.log(err);
    return c.text("Unauthorized", 401);
  }

  await next();
};

// endpoint
app.post(
  "/:id/start",
  validateToken,
  async (c) => {
    const id = c.req.param("id");
    console.log("id", id);
    },
);

What is the expected behavior?
I would expect, that the URLs are properly forwarded in the middleware. So that in the end, I have 3 different log statements. E.g.

id 1
id 2
id 3

What do you see instead?

id 1
id 1
id 3

Additional information
I have tried to use the validation as global middleware, as URL specific middleware and as validator always with the same results.

@NikoLandgraf
I can't reproduce the behavior you're describing. Could you please provide a minimal code snippet for reproduction?


Support for more experiments.

As a user of Dart, I'd like to be able to quickly try out dart language experiments on DartPad (i.e. run, analyze and compile code with certain experimental flags being enabled).
Currently, only records and patterns are supported on a separate channel.
I think that It would be really great if DartPad had support for choosing which experiments are enabled and which are not.

DartPad's backend compilation service is specifically constructed to enable re-use of servers between users. Enabling and disabling experiments on a per call basis would eliminate the potential for this required optimisation.

DartPad's backend compilation service is specifically constructed to enable re-use of servers between users.

I see, thank you for the explanation.

Oh, one thing just came to mind: Would it hurt anyone if that 'master' channel were changed to enable all current experiments? Seems like a good opportunity to enable all kinds of bleeding edge exploration, and at the same time perhaps discover some bugs.

Oh, one thing just came to mind: Would it hurt anyone if that 'master' channel were changed to enable all current experiments? Seems like a good opportunity to enable all kinds of bleeding edge exploration, and at the same time perhaps discover some bugs.

I'm happy to turn on experiments, but the more the master channel configuration diverges from beta and stable the less warning I get about inbound breakages that I have to sort out before it becomes a stable launch blocking issue.
It's worth remembering that DartPad uses the underlying dart compilation tool chains in ways that are quite unlike the usual developer experience leading to unique bugs that aren't an issue for everyone else.

In short, there will be too much non-release related noise. True?

That's my nagging concern. It hasn't surfaced yet, with the experimental flags we currently have enabled, and I'm unsure if it really is an issue. I'm more than happy to turn on a bunch of flags on the proviso that I may need to turn them off again in the future if an issue arises.
Please feel free to raise a new issue with the set of flags you'd like to see enabled, and we can try turning them on. I suspect it may break the UI in entertaining ways tho.
/cc @johnpryan FYI

Cf. https://github.com/dart-lang/dart-pad/issues/2480.


Fix Undefined name 'AnotherFlushbarPlugin'

Fixes https://github.com/cmdrootaccess/another-flushbar/issues/6

already fixed


Set position of icon which open emojis box.

I want to change the icon and position of that icon, can you guide how can I change it?

You need to change stylesheets of .emojionearea-button
https://github.com/mervick/emojionearea/blob/5971d752df036531b7fa3cb93f7babf66479e0be/scss/emojionearea.scss#L132-L139

Could be nice to just have an option for (right left top bottom position)


Libraries messed up on linux-x86.32 build machine

It appears that at least libgdbm.so and libreadline.so are missing or otherwise unloadable by Factor on the build machine: http://builds.factorcode.org/report?os=linux&cpu=x86.32

I've installed the libraries and verified that they work in Factor. However, we're blocking on #460 for 32-bit builds now.


Figure 4 and Figure 5 have same picture

Figure 4 and Figure 5 have the same picture. should it be the same or different?

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

ID: 64c50ed1-29bd-6ec8-7c57-60a6a76d36be
Version Independent ID: ed403a70-b955-347d-72e6-c875e88ccef7
Content: Use Azure API Management with Microservices Deployed in Azure Kubernetes Service
Content Source: articles/api-management/api-management-kubernetes.md
Service: api-management
GitHub Login: @miaojiang
Microsoft Alias: apimpm

Hi @foyezah Thanks for reaching out. We will review and update as appropriate.

@foyezah AFAIK, this should be same. Follow the doc how to use Azure API Management with virtual networks which clearly explain between external and Internal. https://docs.microsoft.com/en-us/azure/api-management/api-management-using-with-vnet#-enable-vnet-connection
External: The API Management gateway and developer portal are accessible from the public internet via an external load balancer. The gateway can access resources within the virtual network
Internal : The API Management gateway and developer portal are accessible only from within the virtual network via an internal load balancer. The gateway can access resources within the virtual network.

@foyezah Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Function Name TYPO

import { fetchRevenue, fetchLatestInvoices } from '@/app/lib/data';
const revenue = await fetchAllRevenue();  ==> const revenue = await fetchRevenue();

@mrmahatva thanks for the report. We have a PR submitted for this.


Remove Falcon hack

What does this PR do?

We used to need a hack to target the right commit to download the right model configurations for Falcon models. This is no longer needed so it is removed in this PR.
Before submitting

[ ] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you make sure to update the documentation with your changes?
[ ] Did you write any new necessary tests?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Update gson version

Describe the issue:
Need to update gson version to 2.9.0  in the places we are using older gson version.
IS runtime also has the gson 2.9.0 jar.
Related Issue
We have bump the gson version to 2.9.0 via this task https://github.com/wso2/product-is/issues/14056 and there are few missing places that need to be update.

Related PRs:

https://github.com/wso2/config-mapper/pull/28
https://github.com/wso2-extensions/identity-client-scim2/pull/24
https://github.com/wso2-extensions/identity-outbound-provisioning-scim2/pull/25
https://github.com/wso2/carbon-kernel/pull/3733


Issue/3208 pathfinder typo

Submission Checklist

[x] Run unit tests: ./runTests.py src/test/unit
[x] Run cpplint: make cpplint
[x] Declare copyright holder and open-source license: see below

Summary
Fix typo.
Intended Effect
Improve console output .
How to Verify
Will be verified from CmdStan
Side Effects
N/A
Documentation
Console output in CmdStan guide, which is spell-checked.
Copyright and Licensing
Please list the copyright holder for the work you are submitting (this will be you or your assignee, such as a university or company): Columbia University
By submitting this pull request, the copyright holder is agreeing to license the submitted work under the following licenses:

Code: BSD 3-clause (https://opensource.org/licenses/BSD-3-Clause)
Documentation: CC-BY 4.0 (https://creativecommons.org/licenses/by/4.0/)

https://github.com/stan-dev/stan/issues/3208

I think this PR was subsumed by #3210

It was


EmbedBounds shape check incorrectly checks image planes

Shape check should only confirm that inputs have same number of rows/columns.

Fixed by pull request #130


bearer tokens are sent in an HTTP header. However, SignalR is unable to set

The documentation on this page states the following:
In standard web APIs, bearer tokens are sent in an HTTP header. However, SignalR is unable to set these headers in browsers when using some transports. **When using WebSockets and Server-Sent Events, the token is transmitted as a query string parameter.**
As I understand developer does not have control over the code, to disable this dangerous fallback mode of sending auth. token?
Leaking the token means giving over full control over the resources owned by token.
Or, is the "query string" is meant to be a different mechanism of passing parameters from what I understand as "passing data in a clear text in url of a request"?

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

ID: d0da2144-3730-f8ef-1d16-a89f11fd6198
Version Independent ID: 6d8f5bc8-8f5c-ba13-b7f2-0366eac46f81
Content: Authentication and authorization in ASP.NET Core SignalR
Content Source: aspnetcore/signalr/authn-and-authz.md
Product: aspnet-core
Technology: aspnetcore-signalr
GitHub Login: @bradygaster
Microsoft Alias: bradyg

Hello @kirill-chilingarashvili thanks for your interest in SignalR.
Query strings and headers are both plain text when using HTTP. However, you should be using HTTPS when auth is involved, and both query strings and headers are encrypted over HTTPS.
Are you seeing the query string as "clear text" somewhere that it shouldn't be?
We do document that the query string may be logged on the server and some steps you can do to avoid that. https://docs.microsoft.com/aspnet/core/signalr/security?view=aspnetcore-2.2#access-token-logging

I was referring to fact that having sensitive data in query string in general is less safe than having it in headers (considering we use HTTPS in both cases), again due to possible logging issues
I was looking for and did not find a way of switching off falling back to query string.
Also it is not obvious for non HTTPS protocol - it should be disabled for this mode IMHO

I was looking for and did not find a way of switching off falling back to query string.

The problem here is that SignalR is limited by browser API support. It is not possible to set any headers from the JavaScript WebSocket or Server-Sent Events client APIs. We have some thoughts on how to improve this in future versions, but for now this is the limitation we have. If you disable the WebSockets and Server-Sent Events transports (and use only Long Polling) then we use the Authorization header. Non-Browser clients (NodeJS, .NET, Java, etc.) use the Authorization header for WebSockets and Server-Sent Events as well since they don't have the same limitation browsers do.


Confusing console output on drawing_classifier.evaluate(...)

In [17]: len(test_data)
Out[17]: 143

In [18]: _ = model.evaluate(test_data)
Predicting 144/143

In [19]: len(longer_test_data)
Out[19]: 429

In [20]: _ = model.evaluate(longer_test_data)
Predicting 257/429

The output from the first call to evaluate(...) is really the most confusing. How is it predicting one more examples than was passed in? This seems like an off by one bug.
The output from the second call to evaluate(...) makes it seem like it never finishes. The last/only output makes it seem like it's only about half done. The final output should probably be Predicting X/X where X is the number of examples passed in.
Both calls to evaluate finish quickly. I would recommend only outputting progress info if it's been at least 30 seconds.

If we expect this to consistently take longer than a few seconds, we should use a table_printer with progress. If we expect it to consistently take less than a few seconds, let's print nothing (at least by default).

Unfortunately, this depends on the size of the dataset.

In that case I think we should always use a table printer with progress (similar to other create/evaluate type methods that might finish in a few seconds or a few days).

And probably a verbose=True parameter that the user can call with False to prevent output.