C++ compilers: Be sane with standard libraries

Motivation for this change
This is long overdue, @LnL7 Time for you to say "I told you so!" :).
CC @matthewbauer @TravisWhitaker
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built stdenv on platform(s)

[x] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Seeing that this is such a massive rebuild, on I am all ears on how we can do more nix and less bash to make the inevitable follow-up work easier.
Maybe we could purely concat lists for all those *flags file and write once? The building detection the wrapper script does currently I am not too pleased with.

I think we can also remove some of the old hacks like in https://github.com/NixOS/nixpkgs/pull/26709/files too

Does that change here? I would expect this to still only include it for clang++. Come to think of it, wouldn't CC=$CXX be a nicer fix for those cases or does that not work?

Does that change here? I would expect this to still only include it for clang++. Come to think of it, wouldn't CC=$CXX be a nicer fix for those cases or does that not work?

Yeah, you're right - I was forgetting what the issue was there. We still need CXX to be used.

OK with the last push I have both stdenvs building, so now we can clean up in earnest.

We also have some tools that consume the c/c++ standard includes: cquery, clang-tools and ccls

We also have some tools that consume the c/c++ standard includes: cquery, clang-tools and ccls

As it turns out those are not affected by this change. I removed cquery last week. Clangd and CCLS only take the libcxx include path as input. I remember to use default_cxx_stdlib_compile for youcompletme at some point, but this was more of a hack and using something like ${llvmPackages.libcxx}/include/c++/v1 would be cleaner.

OK, it evals! I don't think we need any more back-compat stuff ATM, but happy to add things in requested.


Text in angle brackets is removed from README.md code blocks

Open Exchange application pages can display the README.md from the application's GitHub repository. The README can include Markdown syntax such as code blocks, e.g.
```
write ##class(CubeEventMonitor.Utils).Setup(<compileFlags>,<buildCubes>,<updateInterval>,<folderItemResource>,<alertRecipient>)
```

which is correctly displayed on GitHub as
write ##class(CubeEventMonitor.Utils).Setup(<compileFlags>,<buildCubes>,<updateInterval>,<folderItemResource>,<alertRecipient>)

However, if these code blocks include angle brackets, the Open Exchange page removes both the brackets and the text inside them from the README it displays, instead showing something like
write ##class(CubeEventMonitor.Utils).Setup(,,,,)

This example is from step 3 of the Manual Setup for the CubeEventMonitor: you can compare how it is displayed on Github and on Open Exchange.
This could be confusing for users reading the setup instructions on Open Exchange. Angle brackets are frequently used in the IRIS documentation, so it seems like it would be helpful to support them in Open Exchange documentation as well.

Спросить что не так у Антона, с бека приходит всё с тегами

Tags are still missing for this app although the other app has this issue resolved

Done


Debug and Admin: Reset Robot (API)

As a robot user, I would like to be able to restore my robot to factory settings, so that I can erase any bad configuration data without needing wifi or hands-on support.
Acceptance Criteria

User able to reset any of the following data/configs to factory settings:
--  Deck calibration
--  Tip probe (length of tip only)
--  User labware calibration
--  Custom boot scripts
User able to reset one or many of the above at the same time (note: Run App UI will allow user to select multiple)

Background

This is a request from the support team (and customers); there are currently quite a few ways to end up with bad (e.g.) deck calibration data, and clearing it can be quite hard if customer is not on wifi.
Note there is some risk in clearing mount-offset, since user cannot generally recreate it themselves

@andySigler @btmorr
I've gotten a few requests for a 'reset' feature from the support team, particularly to clear out bad deck calibration or mount offset data.
Could use your help thinking through what specific configs we'd want to reset (or restore to defaults), what 'reset' or 'restore' would mean for each, and any risks (e.g. not being able to tip probe after erasing a mount offset).

does this require restart?

@btmorr @Laura-Danielle to discuss reset specifics (what data to delete). include support.
@pantslakz this will require a restart

Request/response proposal as requested. No strong opinions on actual endpoint path, just picked something for the purposes of writing this comment. Feel free to use a different path.
// GET /settings/reset/options
// 200 OK
{
  deckCalibration: {
    name: 'Deck Calibration',
    description: "Description of Deck Calibration data and why you'd clear it"
  },
  tipProbe: {
    name: 'Tip Probe',
    description: "Description of Tip Probe data and why you'd clear it"
  },
  labwareCalibration: {
    name: 'Labware Calibration',
    description: "Description of Labware Calibration data and why you'd clear it"
  },
  bootScripts: {
    name: 'Boot Scripts',
    description: "Description of Boot Scripts data and why you'd clear it"
  }
}

// 500 ISE - Generic 500 handler is fine

// POST /settings/reset
// Request
{
  deckCalibration: true,
  tipProbe: false,
  labwareCalibration: false,
  bootScripts: true
}

// 200 OK
{}

// 400 Bad Request (For example)
{
  "message": "topProbe is not a valid reset option"
}

// 500 ISE - Generic 500 handler is fine

Further clarification - if an option is not included I'll assume false. Let me know if you want another behavior.

@btmorr @pantslakz @sfoster1 @Kadee80
Proposal from @Laura-Danielle to add an option to delete the database (/data/user_storage/opentrons_data/opentrons.db).
Thumbs up from me -- any objections?

@umbhau Do you have suggested wording for the description fields in GET /settings/reset/options?

@sfoster1 Heres what I have in the UI currently. Keep in mind it will possibly change next week once Pantea's had eyes on this.
Reset calibration of pipette to deck
Erase custom labware calibration
Erase tip probe data
Erase custom boot scripts

@sfoster1 @btmorr (or whoever picks up this ticket)
I amended @mcous comment above to reflect a data structure closer to what we have for GET /settings
// GET /settings/reset/options
// 200 OK
[
  {
    id: 'deckCalibration'
    name: 'Deck Calibration',
    description: "Reset calibration of pipette to deck"
  },
  {
    id: 'tipProbe'
    name: 'Tip Length',
    description: "Erase tip probe data"
  },
  {
    id: 'labwareCalibration'
    name: 'Labware Calibration',
    description: "Erase custom labware calibration"
  },
  {
    id: 'bootScripts'
    name: 'Boot Scripts',
    description: "Erase custom boot scripts"
  }
]


Reinforce security on reset password

This is a breaking change I'd like to introduce in v7 to reinforce security on reset password.
If I click on "Reset your password" link and enter an invalid user, I receive the following error: Provided contact information is missing or invalid..
I'd like to return a success in any case, whether the account exists or doesn't. To limit the information provided to an attacker.
What do you think?

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

I don't think modifying the flow here to return success is correct; semantically it's inconsistent, and I suspect it would also interfere with other options that at some point (or even today) one might want to activate on success. Success should always be exactly that; successful operation.
If you're concerned about the message being too useful, a better alternative would be to just modify your build and change the message to indicate something that is less revealing.

I could change the message but there would still be two behaviors: a less revealing message above the input field or the success page. So it is still meaningful to an attacker.
What about a new state different from success ("fake success"?) but leading to the success page?

No, I don't think that is any different. More to the point, I just don't see how this change could present an advantage. Let me elaborate:
A attacker keeps sending password reset requests for<EMAIL_ADDRESS>only to find out the correct username. Let aside the fact that this information is VERY VERY EASY to find out without sending password requests, (a poor choice for the attacker because the IP and request would potentially be logged and would send triggers across the environment), the attacker sees two different scenarios: sometimes a "your account cannot be found" appears on the login screen, and someone the same message shows up on a different page. Attacker, confused by this scenario starts to research and finds out that the deployment runs Apereo CAS; then attacker correctly determines the CAS version, studies the source code, finds the right branch, finds our discussion here and ultimately decides that the two different cases are in fact different, and the message that shows up on the login screen should not be trusted as a successful attempt. Attacker presumably documents the findings for someone on the web so future attackers would not have to go through the same discovery process.
Humor aside, is that really a plausible scenario, worth the breaking change?
Let me present an alternative; A legitimate user keeps sending password reset requests for<EMAIL_ADDRESS>and yet never receives anything. Bear in mind that such requests may be throttled, so the user would have to wait 2-3 minutes between requests. Having tried multiple times with multiple forms and waited 9-10 minutes, already frustrated and upset, once because he/she has to reset the password and twice because the reset email never comes and "it doesn't work", the user contacts the helpdesk, and spends a few more minutes on the phone with them to answer security questions, etc only to ultimately find out that the correct email address is<EMAIL_ADDRESS>Now let's be kind: the helpdesk receives such cases about three times a day which is 21 times a week; all that time is wasted because "reinforce security". Helpdesk contacts IT and asks them to fix the bug only to then be told this is for their own good :) (Helpdesk could also be CIO, CEO, etc)
Is this really worth the change?
If you have a deployment that is convinced this is a good idea, you could of course make the change locally. So be it. I just don't ever see this happening, relative to the CAS population we work with.

The "correct" change here would be to make it more difficult for the supposed attacker to send that reset request, by relying on and asking for more than just a simple username. Most serious deployments have a multi-step process for doing this, and they ask the user for multiple pieces of data. We cannot easily do that here because we don't have (and do not record) any more pieces of data but this could be worked out in a generic way.

I understand your thinking, it's always a pleasure to argue and share thoughts.
Let's forget about logins being emails. It is indeed easy to guess.
For my bank account, I have a number for my login. In that case, guessing the login has more value.
And people keep using very simple passwords.
If you have 1000 logins and can make 3 attempts for each ('123456', '111111', 'admin'), how many would you gain access to?
The efforts attackers demonstrate are related to the benefits they can get from stealing an account.
But you're right, it can/will be a huge problem for the helpdesk.
I will close this one and open a new one related to opening the source code.
I'm fully in line with the "correct" change. Maybe we could allow enabling captcha as the extra information?

For my bank account, I have a number for my login. In that case, guessing the login has more value.
And people keep using very simple passwords.
If you have 1000 logins and can make 3 attempts for each ('123456', '111111', 'admin'), how many would you gain access to?

You're quite right there, but these are operational concerns; not something we need or can solve. Whether banking folks choose to use a six-digit number as an identifier that can be used for password reset, or when an org allows for poor password choices are poor decisions an organization makes. Poor policy cannot (or should not) be solved with great or correct technology. At some point you have to correct the decisions. Brute force attacks here also are throttled, and at some point the request would trigger alerts and would get blocked. This type of guessing works with anything else, and is stopped using all the same techniques one would use even when an identifier is unguessable.
This is a matter of general principal, I feel; I run into this often: "We have a terrible policy that forces us to do X; so we wrote 1000s of lines of code to  accommodate that". As a consultant, that is excellently profitable. As someone who contributes to the OSS project, that would be a very unfortunate choice :)
CAPTCHA in general is an appropriate choice for throttling, but not for securing the flow. A more secure flow would be to ask the user to provide a userid AND something else tied to their account that could be matched with that record. This is what most would do; and here the odds of one guessing the right flow would be terribly huge before the request gets blocked.

"As a consultant, that is excellently profitable.": I wish so, but people don't like to pay for their mistakes ;-)
OK. This makes sense.


feat(sdk): add invoices list in billing details

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5987

Relevant Lines:
14325

💛  - Coveralls


"Zsh not installed" fix #6796

Quick fix for #6796

How about this?
if ! hash zsh 2>/dev/null; then     printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"     exit   fi

@CryDeTaan also completely valid.
Just to clarify: The hash solution was present in line 50 and got replaced with this (see https://github.com/robbyrussell/oh-my-zsh/commit/4fec0a46e73479cf3b9e7f953750af5ed5df87ac#diff-55b046be8e081f97f37b7667e1c4bfa9):
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n"
  command -v git >/dev/null 2>&1 || {
    echo "Error: git is not installed"
    exit 1
  }

so I used the "or side-effect" approach. There is already a (closed) PR for this solution: #6798

Any reason you don't just add as ! to the existing check? Just looks like a simple case of inverted logic to me.
if ! command -v zsh >/dev/null 2>&1; then
# ...

As I sad, I just wanted to provide a concise solution (because this solution was replaced at another line earlier). A simpler fix (the one you suggested) can be found in PR #6798


Changed GUI and CLI to have their own versions

downloads.yml version tag has been separated to two, one for gui and one for cli
Downloads page has been adjusted to reflect the changes

Solves #761


Two connection events for single peer?

Trying to understand the behavior of connection by running the sample code from ReadMe. Not sure if this is the intended behavior, but when running the below code (the same code twice from two different terminals), seeing two connection events on each of them (total 4).
const hyperswarm = require('hyperswarm')
const crypto = require('crypto')
const swarm = hyperswarm()
const topic = crypto.createHash('sha256').update('my-hyperswarm-topic').digest()
swarm.join(topic, {lookup: true, announce: true})
swarm.on('connection', (socket, details) => {
  console.log('new connection!', details.peer)
})

The ouptut looks like below on both terminals:
new connection! {
  port: 1002,
  host: '<IP_ADDRESS>',
  local: true,
  referrer: null,
  topic: <Buffer fc f8 54 23 fe 2d 35 c2 a2 5f f5 90 62 7d ed b0 17 aa 2f b7 5a 76 eb 1d 69 ca 74 e6 40 43 db 41>
}
new connection! null

This happens with every connected peer. Two connection events are raised on both sides of the connection (total 4 for each p2p connection).
Is this valid behavior?
Do we need server instance on both sides of a connection? Sockets are by default duplex right?
A single client -> server connection between two nodes can be fully duplex, I believe. Do we need the additional reverse server <- client connection also for every p2p?
Or is it expected form the app that it will kill / close the duplicate connection? Would like to learn more about the right way to deal with these duplicate connections, since these connections count are rapidly escalating as we connect across multiple topics creating unnecessary resource pressure on the process (which can be better utilized for other connections, such as database connections or other app-level things). Especially on resource contraint devices.

Sorry for this additional post, but I am kind of completely stuck and unable to make progress. It is not clear how to use these "connections".
For each peer, we get a 'connection' event with a socket. What is the recommended usage pattern afterwards?

Is it expected that all these sockets are put in a list/array and send a message to all of them? Or is it allowed to just keep one socket and discard the others? (But closing a socket is leading to indefinite reconnects, so I am not sure if that works. Issue explained here)
If we get multiple connection events, it essentially means we have multiple peers that offer the same "topic". But what if I am not interested in all of them? Is there a way to specify "how many" I am looking for, or "whitelist" / "blacklist" etc?

Also, regarding the topics:

Can the swarm.join be called repeatedly multiple times to join different topics, or should different swarm object be created once for each topic? Will duplicate connections to same peer be automatically removed in both cases?

I also want to know why there is a double connection but the real problem is that the extra connection doesn't actually disconnect and the total connections still increasing.
discovery-swarm doesn't have this problem but Maf said that hyperswarm is the successor.
app.js:
const hyperswarm = require('hyperswarm')
const crypto = require('crypto')

const swarm = hyperswarm()

const topic = crypto.createHash('sha256')
  .update('my-hyperswarm-topic-a59fa874')
  .digest()

const isLookup = process.argv[2] === 'lookup' ? true : false

swarm.join(topic, {
  lookup: isLookup,
  announce: !isLookup
})

swarm.on('connection', (socket, details) => {
  console.log('connection', details.stream.remoteAddress, 'size', swarm.connections.size)

  socket.on('close', () => {
    console.log('close', details.stream.remoteAddress, 'size', swarm.connections.size)
  })
})

// same as hyperssh
process.once('SIGINT', function () {
  swarm.once('close', function () {
    process.exit()
  })
  swarm.destroy()
  setTimeout(() => process.exit(), 2000)
})

Run in two consoles: node app announce and node app lookup.
The announce output:
connection ::ffff:<IP_ADDRESS> size 1
connection <IP_ADDRESS> size 2

There you have the double connection, the remote address is actually my address.
Do ctrl+c on the lookup app and run again node app lookup.
The new announce output:
close ::ffff:<IP_ADDRESS> size 1
connection ::ffff:<IP_ADDRESS> size 2
connection <IP_ADDRESS> size 3

And you can repeat it and the connections size still increasing.
Not related with this issue: the README said topic "Must be 32 bytes in length" and also the README pass a sha256 that is 64 bytes, why/how?

A quick note to please open separate issues for separate problems.
It autoreconnects and you have to use details.backoff() to make it not connect immediately again (needs docs) https://github.com/hyperswarm/hyperswarm/blob/master/lib/peer-info.js#L41
In the near future we'll add connection dedup support, but in the meanwhile you can work around it using that api if you need too. For hypercores atm we just use both of the duplicate connections

Is this valid behavior?
But closing a socket is leading to indefinite reconnects, so I am not sure if that works.

I was checking the double connection and one is tcp and the other is utp.
So if I understand correctly you can backoff and destroy the utp. I choose destroy the utp because is the one that is causing me problems.
swarm.on('connection', (socket, details) => {
  if (details.type === 'utp') {
    details.backoff()
    socket.destroy()
    return
  }
  // ...
})

Is it expected that all these sockets are put in a list/array and send a message to all of them?

I think yes, you already have swarm.connections, maybe we can add swarm.broadcast('my data').
for (let peer of swarm.connections) {
  peer.write('my data');
}

Is there a way to specify "how many" I am looking for?

options.maxPeers? Check the readme.

"whitelist" / "blacklist" etc?

I also need whitelist https://github.com/hyperswarm/hyperswarm/pull/46

Can the swarm.join be called repeatedly multiple times to join different topics?

As far as I can test yes. You have 'connection' event with details.topics and details.peer.topic.

there is a dedup api for this now


[Docs] Upgrade update

Description
Updating the package upgrades section
Test Plan
Local

If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.
Type of Change (Check all that apply)

[ ] protocol change
[ ] user-visible impact
[ ] breaking change for a client SDKs
[ ] breaking change for FNs (FN binary must upgrade)
[ ] breaking change for validators or node operators (must upgrade binaries)
[ ] breaking change for on-chain data layout
[ ] necessitate either a data wipe or data migration

Release notes

One more thing!  The example at the end of the Custom Upgrade Policies Concept section really belongs as a Guide (with maybe a link from the Concept and vice versa).

Good eye. I've already created a Jira to break that one up. I think two of these can be done that way.


[HOWTO] Add text below the banner

What are you trying to achieve?
I'm trying to add text below the banner in DOOM Dashboard like it's possible in emacs-dashboard.
What have you tried?
Checked for variables with SPC h v that allow for that functionality but I couldn't find any.

Check out +doom-dashboard-functions and the functions in it. It's a list of functions that are run in sequence to populate the dashboard.


MPC-HC version is very old, there is a new one

Description of the new feature/enhancement
MPC-HC (Media Player Classic-Home Cinema) was recently added (@aliheikal) using its last version from its "official" source, 1.7.13. That version dates from 2017 and the project was abandoned.
However, some developers retook the project and continued maintaining it, fixing bugs and adding some features. And they did it greatly, keeping the spirit and quality of the original.
The current version is 1.9.4 here, which I consider the new home of MPC-HC
https://github.com/clsid2/mpc-hc
It can now play AOMedia AV1 videos and YouTube videos. It has better seeking, better video decoding, better UI, and lots of fixes and improvements.
Proposed technical implementation details (optional)
I would link to the installer in the Releases page:
https://github.com/clsid2/mpc-hc/releases/tag/1.9.4

The one you are linking to seems to point to a fork/unofficial release. I believe winget is up-to-date with the latest version posted on the official site/repo.
I don't know if creating a PR under MPC-HC's name pointing to a fork/unofficial release would be the right thing, given that the publisher is no longer MPC-HC. I think if we do that we would be miscrediting the current maintainer of the fork/unofficial release as well as MPC-HC.

The "official" was abandoned years ago and the website even warns about that and says "please use something else".
The fork I mention took the original's last version (1.7.13) and continued with 1.7.14, 1.7.15, ..., 1.8.1, ..., up to yesterday's 1.9.5. It's keeps the essence of the old version but improves it with better performance, features and bug fixes, keeping the project alive. To me this is the real MPC-HC.
Well, ideally, I would like the original and fork authors to agree to merge both developments, or just pass the lead to the new repo. I don't know how to put them in touch :-)

I guess you can add the fork as Clsid2/MPC-HC?


feat: :sparkles: add schema for extraction of contents

This pull request introduces a fresh Zod schema enabling the extraction of a table of contents directly from markdown/mdx.
The existing implementation generates a new tree based on the initial file input. A potential enhancement involves performing the extraction directly from the parsed tree obtained from either s.markdown() or s.mdx().

@marcocondrache Nice job, can you add the corresponding documents for this schema.

@marcocondrache Nice job, can you add the corresponding documents for this schema.

Thank you @zce, I've added the documents related to the schema.

@zce That's why I added also a parsed entry that makes more sense for other users. I don't know if you saw the latest commit.

export const toc = <T extends TocOptions>(options?: T) =>
  custom<string>().transform<T extends { original: true } ? TocTree : TocEntry[]>(async (value, { meta: { content }, addIssue }) => {
    if (value == null && content != null) {
      value = content
    }

    try {
      // extract ast tree from markdown/mdx content
      // TODO: understand if is possible to reuse tree from markdown/mdx schema
      const tree = fromMarkdown(value)
      const tocTree = extractToc(tree, options)
      // return the original tree if requested
      if (options?.original) return tocTree as T extends { original: true } ? TocTree : TocEntry[]
      return parse(tocTree.map) as T extends { original: true } ? TocTree : TocEntry[]
    } catch (err: any) {
      addIssue({ code: 'custom', message: err.message })
      return null as never
    }
  })

export const toc = <T extends TocOptions>(options?: T) =>
  custom<string>().transform<T extends { original: true } ? TocTree : TocEntry[]>(async (value, { meta: { content }, addIssue }) => {
    if (value == null && content != null) {
      value = content
    }

    try {
      // extract ast tree from markdown/mdx content
      // TODO: understand if is possible to reuse tree from markdown/mdx schema
      const tree = fromMarkdown(value)
      const tocTree = extractToc(tree, options)
      // return the original tree if requested
      if (options?.original) return tocTree as T extends { original: true } ? TocTree : TocEntry[]
      return parse(tocTree.map) as T extends { original: true } ? TocTree : TocEntry[]
    } catch (err: any) {
      addIssue({ code: 'custom', message: err.message })
      return null as never
    }
  })

Looks good, I hadn't thought of that

export const toc = <T extends TocOptions>(options?: T) =>
  custom<string>().transform<T extends { original: true } ? TocTree : TocEntry[]>(async (value, { meta: { content }, addIssue }) => {
    if (value == null && content != null) {
      value = content
    }

    try {
      // extract ast tree from markdown/mdx content
      // TODO: understand if is possible to reuse tree from markdown/mdx schema
      const tree = fromMarkdown(value)
      const tocTree = extractToc(tree, options)
      // return the original tree if requested
      if (options?.original) return tocTree as T extends { original: true } ? TocTree : TocEntry[]
      return parse(tocTree.map) as T extends { original: true } ? TocTree : TocEntry[]
    } catch (err: any) {
      addIssue({ code: 'custom', message: err.message })
      return null as never
    }
  })

Looks good, I hadn't thought of that看起来不错，我没想到

If you have no problem, I will release it with several other features later

export const toc = <T extends TocOptions>(options?: T) =>
  custom<string>().transform<T extends { original: true } ? TocTree : TocEntry[]>(async (value, { meta: { content }, addIssue }) => {
    if (value == null && content != null) {
      value = content
    }

    try {
      // extract ast tree from markdown/mdx content
      // TODO: understand if is possible to reuse tree from markdown/mdx schema
      const tree = fromMarkdown(value)
      const tocTree = extractToc(tree, options)
      // return the original tree if requested
      if (options?.original) return tocTree as T extends { original: true } ? TocTree : TocEntry[]
      return parse(tocTree.map) as T extends { original: true } ? TocTree : TocEntry[]
    } catch (err: any) {
      addIssue({ code: 'custom', message: err.message })
      return null as never
    }
  })

Looks good, I hadn't thought of that看起来不错，我没想到

If you have no problem, I will release it with several other features later

For me it's totally fine


Fix number of executors for calculation CoreComputeTime

Currently, while calculating CoreComputeTime ( i.e. the "time-of-app" X "total-num-of-cores") , we include cores from all executors irrespective of how long an executor lived in the spark-app time-frame. This could give a blown-up number for CoreComputeTime available because executors could go down, and new executors could come up all the time.
On the other hand, finding the exact CoreComputeTime (i.e. summation across executors for ("time-of-executor" X "num-core-per-executor") ) is also not a good number, since it does not tell whether the machines had gone down along with executors or not (which is often 'not'). So the compute wasted on host-without-executors would not be accounted, if we only look at the executor up-time.
So a better number would be the "maximum-concurrent-executors-that-ran" X "time-of-app", which would give us a better estimate of the compute available.

Merged to master 2ddf779


Some items in partnet-mobility have no point cloud files and point cloud labels

Hi,
I am planning to train a point cloud part segmentation model, but I notice some of objects have no point cloud file in the partnet mobility dataset. Where can I get the point cloud files and labels?

The PartNet-Mobility dataset does not provide any point cloud files. This is a dataset providing articulated models in the URDF format. If you would like to render partial point cloud, you can follow the tutorial here https://sapien.ucsd.edu/docs/latest/tutorial/rendering/camera.html
If you want to get the full point cloud (sampled from meshes), you probably should use an alternative mesh processing library.


Fix #41 - Add cancelDownload function to DownloadManager

Add cancelDownload() function to cancel a iternal download item.

Hi there,
thanks for all your good Work.
May I ask what happend to this Request/PR?
I would assume, this Functionality would be very welcome.
At least I would welcome it a lot :)
Thanks!
Christoph


Datepicker choose day and timezone offset

If Datepicker field empty and we choose a date, then creates a new date object with the given timezone offset (depends on locale), i.e. if I choose an empty field 2015-01-02, it turns out the date 2015-01-01 21:00:00 (if the timezone offset is +3 hours), i.e. yesterday, unless you consider time. This is not quite correct when sent to the server, if there is not taken into account the timezone offset or it works with UTC. Maybe there could be something to do?

If a server is using UTC (timezone offset is 0 hours), and the browser's local timezone (timezone offset is +3 hours) may occur such a situation: all dates are returned from the server is correct, for example 2015-01-02 00:00:00, and if the date entered for the first time the datepicker will create you same date as 2015-01-01 21:00:00 When I pass this 2 dstes on server, this is will be different dates from his point of view. It is very inconvenient to use, but it's a feature of Javascript works with dates in the browser.

+1
I have the same problem in my project. It's a really nasty bug.

Possible solution to this problem https://github.com/isimonov/note/commit/9190c253a7e354c22afbfa4a58386677ba522e0d It seems to me that this should be made optional. For most cases this could be the solution, but there may be exceptions.

Hi Ivan,
thank you, I think this could be the right approach. One line below I had to add:
dt.setUTCFullYear( date.getFullYear(), date.getMonth(), date.getDate() );
Now it works for me, but I do not know, if there could be any side effects.
Cheers,
Nikola

Hi Ivan,
is this reproducing your error?
http://plnkr.co/edit/RkByqVhCrcSCXWGXGkWo
Cheers,
Nikola

Hi, Nikola! A little different, see below, I will try to explain in pictures
http://plnkr.co/edit/gMyC6ZEPaL0HGak0ksFO

This is actually a duplicate of a few open issues.

Closing this in favor of #4113 - the ngModelOptions directive provides a hook where we can wire in specification of custom timezones

@wesleycho So this issue is closed in favor of, ehem, this issue? And #2952 is also closed in favor of this issue.

@cmlenz +1

@cmlenz, this is how we maintain some sense of control and understanding of outstanding issues and feature requests - by consolidating.  Otherwise, it's so easy to lose track of what needs to be done to what component.  Take a look at #4762 and #4772 and see how many issues were closed by consolidating everything (41).  I seriously doubt anyone would say managing 41 separate issues and PRs is better than managing two.  The onus is on us to ensure that the consolidated issue captures everything from those closed issues.  We're totally open to suggestions if you have a better way.  Thanks.
@ired, please do not add just +1 to issues.  It does nothing to add to the discussion and just clutters up the thread.  Thanks.

@cmlenz, I should add that less than 6 weeks ago, we had over 230 open, outstanding issues and @wesleycho has worked insanely hard in fixing and closing items in preparation for the 1.0 release.  We are currently at 86.

@icfantv I was in no way complaining about issues being consolidated in general, the problem is that this issue was closely in favor of no other open issue AFAICT, but in favor of itself.

Ah, understood.  Thanks for the clarification.  I see now.  I've updated the issue number so that it's correct.

That was my fault - I linked the wrong issue. #4837 is what was meant to be linked.

Thanks @wesleycho and @icfantv


Formatting tests ignored?

The files in src/harness/unittests/services/formatting don't seem to be used.
They seem to be using an older version of the API, and reference files that no longer exist.
They are also badly in need of linting (they are currently excluded from the command in #14711).

I would just delete these. we had these during the 1.0-1.1 rewrite and never turned them on again. i would also remove tests/cases/fourslash-old.

Tests in harness/unittests/services/*.ts don't seem to run either, although they don't have compile errors. Are they salvageable?

These should work. and we should turn them on again.

Looks like those tests are running, they just weren't getting recompiled for some reason.


TypeError: Cannot create property 'pos' on string 'IInputs'

Hello
I have tried several times following the steps to generate a solution package out of the provided sample component (IFrameControl for instance)
but when running msbuild I keep having this error coming up
TypeError: Cannot create property 'pos' on string 'IInputs'
Also, when instructing " ...you need to cd into your solution project directory...", does it mean the directory where the ".pcfproj" resides or the directory where the ".cdsproj" resides?
Any help will be appreciated
Thanks

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

ID: 42b01e51-8d80-08b1-2bd5-564c4756ad8a
Version Independent ID: 750ea5e8-1325-2593-024d-68e926488076
Content: How to use the sample components that are built using Power Apps component framework in Microsoft Dataverse - Power Apps
Content Source: powerapps-docs/developer/component-framework/use-sample-components.md
Service: powerapps
Sub-service: pcf
GitHub Login: @noazarur-microsoft
Microsoft Alias: noazarur

It has to do with the typescript version.
You can use the following npm install --save-dev typescript@4.

Thanks for your comment, @Geradav. This issue has been assigned to the doc author for review.

@Geradav  Thanks for raising this.
@rramoscabral  Thanks for suggesting a fix.
@Geradav Did the suggestion to run npm install --save-dev typescript@4 resolve the issue for you?

Thanks @rramoscabral
Yes @JimDaly it has worked but the package.json needs also to be updated
So in order

running npm install --save-dev typescript@4 to update the TypeScript version
Then adding "refreshTypes": "pcf-scripts refreshTypes" to the package.json file within the scripts section

Then running the following commands

npm install
npm run refreshTypes
npm run build

Thanks a lot!


RuntimeError: The size of tensor a (768) must match the size of tensor b (7) at non-singleton dimension 2.

This is the program I am trying to write. It's simple but I still get this error.
Steps to Reproduce:
from PIL import Image
import requests
import torch
import clip
clip.available_models()
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
model, preprocess = clip.load("ViT-B/32")
image_input=torch.tensor(preprocess(image)).cuda()
text_tokens=clip.tokenize(
["This is an image of two cats sleeping on a pink blanket"])
with torch.no_grad():
image_features=model.encode_image(image_input).float()
text_tokens=model.encode_text(text_tokens).float()

image_input=torch.tensor(preprocess(image)).unsqueeze(0).cuda()
text_tokens=clip.tokenize(["This is an image of two cats sleeping on a pink blanket"]).cuda()
with torch.no_grad():
  image_features=model.encode_image(image_input).float()
  text_tokens=model.encode_text(text_tokens).float()

In Line 1 .unsqueeze(0) needs to called (refer example in https://github.com/openai/CLIP#usage)
In Line 2 .cuda() needs to be added as well to ensure both image_features and text_tokens are on the same device


Sysroot build fails on Nix

I'm trying to use this tool in a nix shell. For some reason, it's sticking it in a write only directory (/tmp/nix-shell.NL1aJs/rustc-build-sysroot.6BErGTCriFwN). Could the sysroot directory be made configurable via flag or environment variable? I'm happy to implement if you'll pull it in :)

That is the temporary directory used for building. The actual sysroot should be put into the XDG cache directory.
Are you saying your temp_dir does not work for writing and reading files? That sounds like a pretty broken configuration to me, not sure how anything would work with that?

If you are getting build errors, could you share the full output?

You should be able to set a different tempdir by setting the TMPDIR env var. But I am still curious why the default would not work for you.

The full output:
$ cargo careful setup
Preparing a careful sysroot (target: x86_64-unknown-linux-gnu)...
error: failed to write /tmp/nix-shell.z96En4/rustc-build-sysroot.CJmRqR7HHqFF/Cargo.lock

Caused by:
  failed to open: /tmp/nix-shell.z96En4/rustc-build-sysroot.CJmRqR7HHqFF/Cargo.lock

Caused by:
  Permission denied (os error 13)
thread 'main' panicked at 'failed to build sysroot; run `cargo careful setup` to see what went wrong: sysroot build failed', src/main.rs:219:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

That's quite strange. For some reason cargo does not have write permissions to a directory that is allowed to be write for my user. Things work as root. Hmm.

So somehow TMPDIR is not writable on your system? Hm... no the folder must be writeable, since the writing that cargo-careful itself does (to construct a workspace for cargo) works fine. It's only when starting cargo to do the sysroot build that things go wrong.
Maybe it is some kind of process isolation thing, where when a process starts sub-processes, those don't have access to the same TMPDIR? But that also sounds like it could break many things; starting sub-processes is a standard idiom on Unix and should be supported even on NixOS. (Is this NixOS? Some Nix seems to be involved. Nix is known to overthrow fundamental Unix/POSIX assumptions but not being able to prepare files for a subprocess in TMPDIR is going a bit too far IMO.^^)

I'm on a ubuntu machine with nix installed. So, not NixOS yet (though if I can get this to work I'm hoping to upstream!). I'm inside a nix-shell that has cargo-useful built and on my PATH. I've also got the RUST_LIB_SRC env var set correctly AFAICT.
I tried setting TMPDIR to a directory in my $HOME and still end up with the same error. I need to investigate further, but perhaps it's something related to running the execvp syscall inside nix shells..

I've also got the RUST_LIB_SRC env var set correctly AFAICT.

FWIW that shouldn't be needed, it will auto-detect the source folder of the active rustup toolchain. But also that can't really be the source of the problem anyway.

Hm... I had another idea for what this might be -- I distantly recall encountering something like that in the past, and then adding code like this to xargo. The lockfile is created by copying it from the lib source dir, and if that is for some reason read-only then those permissions might be copied to the new location.
That still doesn't explain why so far nobody else seems to have seen this but it's more plausibvle than

@DieracDelta could you try the latest git version? It now explicitly disables "read-only" on the lockfile. which should hopefully fix your problem.
cargo install cargo-careful --git https://github.com/RalfJung/cargo-careful

That fixed it!! Thank you for your help! I'm quite excited to be using this on my projects :)
Related: upstreaming here

Great, thanks for reporting and testing. I'll ship a new release then. :)


AuthorizationPolicy problem

Hi everyone, I have a question about requesting authentication.
That's it, I now have a requirement like this: I have two services, let's call them A and B first. A needs to use gateway to access B, and I want to restrict only A service to access B service? what should I do? Both A and B services have sidecar injected.
In the beginning, I wanted to set the AuthorizationPolicy from.source.principals for the B service using something like this:
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: b
spec:
 selector:
   matchLabels:
     app: b
 action: ALLOW
 rules:
 - from:
   - source:
       principals: ["cluster.local/ns/default/sa/a"]

But I found that it doesn't seem to take effect, and an error will be reported:
rpc error: code = PermissionDenied desc = RBAC: access denied

I guess it is because A goes through the istio ingress-gateway when accessing B, which seems to cause the B service to not recognize source.principals.
I don't know what to do now? Can you guys help me?

If I understand you correctly in your case the traffic to B is coming from the ingress gateway.
So my guess is that you need to allow the A principal on the ingress gateway and ingress gateway prinicipal (something like principals: ["cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"] on B.
This is assuming that you want strict policies that only allows this path.

@ymesika   Thanks for your reply~
Is that what you said?
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
 name: b
spec:
 selector:
   matchLabels:
     app: b
 action: ALLOW
 rules:
 - from:
   - source:
       principals: ["cluster.local/ns/default/sa/a"]
  - source:
       principals: ["cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"]

I actually meant two different AuthorizationPolicy resources to be applied.
First one with on the first principal to be applied to a gateway selector.
And a second one like the above with the first source prinicipal removed.
Does it makes sense?

@ymesika Maybe I got it this time. That is to say, configure an AuthorizationPolicy to the gateway and restrict its source to serve A. Configure another AuthorizationPolicy to the B service, restricting it to only be accessed by the gateway above.


two offsets or offset + size?

In most of original zarr issue discussion (https://github.com/zarr-developers/zarr-python/issues/556), offsets were specified with offset, size. In this spec, you are doing start, stop. It seems like offset, size will probably be slightly smaller as a text representation. I'm curious how you made that choice?

I believe it was the API of the "fetch" functions littered throughout fsspec. So... mental convenience.

I think offset, size is also less likely to cause confusion across different languages and systems. For example Python uses inclusive-exclusive ranges while HTTP partial requests are inclusive-inclusive.


Add an onlyid option to POST requests…

...which when set will return only the id in the response and save fetching the entire result
Ideas on  a better name would be appreciated as well, as I'm not sold on onlyid
Change-type: minor

+1 on returnResource: false

@pimterry I like fetchResource better if we go that way. Seems accurate.


IntervalTree failed assertion

test_isolation crashed here
My guess is that we're removing something not present? Also possible that there could be a bug in the IntervalTree impl, but less likely imo
thread 'WAL receiver thread' panicked at 'assertion failed: found_start_point', pageserver/src/layered_repository/interval_tree.rs:186:9
stack backtrace:
   0: rust_begin_unwind
             at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/panicking.rs:515:5
   1: core::panicking::panic_fmt
             at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/core/src/panicking.rs:92:14
   2: core::panicking::panic
             at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/core/src/panicking.rs:50:5
   3: pageserver::layered_repository::interval_tree::IntervalTree<I>::remove
             at /home/circleci/project/pageserver/src/layered_repository/interval_tree.rs:186:9
   4: pageserver::layered_repository::layer_map::LayerMap::remove_historic
             at /home/circleci/project/pageserver/src/layered_repository/layer_map.rs:154:13
   5: pageserver::layered_repository::LayeredTimeline::evict_layer
             at /home/circleci/project/pageserver/src/layered_repository.rs:1280:13
   6: pageserver::layered_repository::evict_layer_if_needed
             at /home/circleci/project/pageserver/src/layered_repository.rs:1885:9
   7: pageserver::walreceiver::walreceiver_main
             at /home/circleci/project/pageserver/src/walreceiver.rs:300:17
   8: pageserver::walreceiver::thread_main
             at /home/circleci/project/pageserver/src/walreceiver.rs:155:19
   9: pageserver::walreceiver::launch_wal_receiver::{{closure}}
             at /home/circleci/project/pageserver/src/walreceiver.rs:107:21
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Got that again at
https://app.circleci.com/pipelines/github/zenithdb/zenith/3190/workflows/c66e269f-fb68-44e6-9140-ac8f5c7de187/jobs/26084/artifacts

Got this error on staging during everyday beenchmark run.
See https://discord.com/channels/869525774699462656/907918139998752779/907918167786008628

I think what's happening here is:

walreceiver calls evict_layer_if_needed, evict_layer is called, write_lock+LayerMap locks are acquired, the InMemoryLayer is moved from the open map to the historics, the locks are released, we begin writing delta/image layers to disk
GC starts on the checkpointer thread, acquires layermap lock, decides to GC the temporary historic we added in the first part of evict_layer, calls remove_historic on it, release the layermap lock
walreceiver is done writing the delta/image layers to disk, re-acquires the locks, calls remove_historic on the InMemoryLayer it previously put there, assertion failed because it was already removed.

If concurrent checkpointing and GC is safe, then we could make remove_historic not worry about the missing case.
If this is not safe, maybe we need to add another lock

The fix for this has been merged, please let me know if you see this bug pop up again


Removed obsolete docs folder

There was almost no content in these files which confuses or at least demotivates new devs starting to work on this project during onboarding. Some information about authentication (possibly outdated as well) has been moved temporarily into the README.md, which is also going to be updated soon in a separate PR.

This change is

+1 for removing the old docs

👍

@mtrenkmann, you need to send it using Authentication: Bearer <TOKEN> header.

Ok, I will add this piece of info to my README.md cleanup PR later ...

Cool


fix min-range checker

We should use a spell for min-range checking that has a minRange of 0 and has a range between the original spell's minRange and range. If no such spell exists, we should not use the spell with a minRange to avoid misleading results.

The code looks good, though I think this only affects hunters, as they have min range spells in classic. I don't have that access to that class though and can't test it.

The code looks good, though I think this only affects hunters, as they have min range spells in classic. I don't have that access to that class though and can't test it.

Warriors have Charge, which has 8 - 25 yd range, there may be others

needs a version bump on the minor, otherwise lgtm

done in b3975f4


Code owner + review practice.

Discussion issue on code ownership etc for a decision at next catch up.
As code is stabilized it seems sensible to agree on a code owner for final review of external PRs. @joeHickson as you are leading the Met effort where this code is being run this should likely be you? Or we can have dual code owners met/lshtm and require a review from each?
Regardless of what the decision is formalising it seems like a good idea.

Avoiding single points of failure would be sensible but having a list of reviewers (and not reviewing your own work) might be wise.

Agree.


rclone is SLOW on WebDAV

Despite setting the transfers option to 32 parallel transfers, and the logs are confirming that rclone has set the --transfers option to 32, and also setting the NextCloud chunk size to 1 Gi, also confirmed by the logs, uploading to NextCloud is so painfully slow, the buffer backs up almost immediately, despite NextCloud living in a neighboring k3s pod, ie on the same machine.  Latency between them is 3 microseconds, and obviously network stack IO is limited by how fast the CPU can move the data through the k3s cluster.
Setting the option appears to do nothing as it seems to me the uploads are still happening one at a time.  Can something be done about this.  Transfer speeds are only 25 Mbps to NextCloud which is quite awful for this setup.  Camera events are often many little files rather than few big files making the opening and closing of the connection/sockets more limiting than the bandwidth.  As such parallel uploads would be immensely useful.

The way UPB currently works, is that it invokes the rclone rcat command once per downloaded file (which is stored in memory where possible to avoid writing to disk). As such, any kind of parallelism rclone provides is pointless, because it is only ever handling a single file at a time. The uploader in UPB is also sequential and does not fire multiple uploads at once (same for the uploader).
I could see it being possible to have an optional upload parallelism within UPB but I don't think there is any way to make use of rclones parallelism without writing files to disk.

Maybe I can fashion up something for you.

https://github.com/ep1cman/unifi-protect-backup/pull/153
I threw something together for you, but I haven't tested it since I lack time to do that right now.  Should just work, in theory.


shell: Fix prompt length not updated in shell_prompt_change

Prompt length is used when printing log messages to erase
prompt. If length is not updated and new prompt is longer
than default one then only part of the prompt is erased
which looks like data corruption.
Signed-off-by: Krzysztof Chruscinski<EMAIL_ADDRESS>

@pdunaj this problem is observed in nrf_desktop sample.

Codecov Report

Merging #13261 into master will decrease coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master   #13261      +/-   ##
==========================================
- Coverage   48.75%   48.74%   -0.01%
==========================================
  Files         319      319
  Lines       46871    46872       +1
  Branches    10835    10835
==========================================
  Hits        22850    22850
- Misses      19394    19395       +1
  Partials     4627     4627

Impacted Files
Coverage Δ

subsys/shell/shell.c
22.64% <0%> (-0.04%)
:arrow_down:

Continue to review full report at Codecov.

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


 Does your script parse the output if the string "(Default)" or an --import distribution name that is Kanji or Chinese text?
It's correct, just, well, unfortunate. You can probably get to where you want to be from Linux with:
$ wsl.exe -l | iconv -c -f utf16 -t utf8

From Powershell, I'm not qualified to repeat the Google hits.

I can leave without this wsl -l check in my script for now, but would be much helpful to mark this as a bug for later investigation, if not we can close this issue.
@therealkenc thank you for advice.

It is not a bug. It is powershell's by-design behavior. And unrelated to wsl.exe, which does not output ASCII because it's output is internationalized.

As mentioned in #4607, it is unexpected that WSL outputs multi-byte codepoints. I suspect this bug was closed too hastily. It's unclear if this even went through proper triage; it doesn't appear @therealkenc works at Microsoft...

It doesn't work correctly in any console, powershell, cmd or conemu, the same problem.


Checkpoint: Record Collection

Challenge Checkpoint: Record Collection has an issue.
User Agent is: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:
// Setup
var collection = {
    2548: {
      album: "Slippery When Wet",
      artist: "Bon Jovi",
      tracks: [
        "Let It Rock",
        "You Give Love a Bad Name"
      ]
    },
    2468: {
      album: "1999",
      artist: "Prince",
      tracks: [
        "1999",
        "Little Red Corvette"
      ]
    },
    1245: {
      artist: "Robert Palmer",
      tracks: [ ]
    },
    5439: {
      album: "ABBA Gold"
    }
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));

// Only change code below this line
function update(id, prop, value) {

  if (value !== "") {
  collection[id][prop] = value;

    if (prop === "tracks") {
      if (collection[id].hasOwnProperty('tracks')) {
        collection[id].tracks.push(value);
      } else {
        collection[id].tracks = [value];
      }
    }
  } else {
    delete collection[id][prop];
  }

  return collection;
}

// Alter values below to test your code
update(5439, "tracks", "Addicted to Love");

The 3rd test (After update(1245, "tracks", "Addicted to Love"), tracks should have a length of 1) still failing and I have no idea why, and I think my code should work. I also discuss it on chat, but nobody knows why it is not passing. Maybe the test is wrong?
Console tells me TypeError: collection[id].tracks.push is not a function.
By the way, the test for it is here.

Tested this in dev console then in the challenge on live site. The issue is that collection[id][prop] is being overwritten by value when value is not empty. Fixing the order of conditionals does allow for collection[id].tracks.push(value). Here is one way of writing it:
if (value !== "" && prop !== "tracks") {
  collection[id][prop] = value;
} else if (value !== "" && prop === "tracks") {
  if (collection[id].hasOwnProperty('tracks')) {
    collection[id].tracks.push(value);  // this now works!
  }
} else if (value !== "" && prop !== "tracks") {
  collection[id][prop] = value;
} else {
  delete collection[id][prop];
}

@0x0936 Ahh, I can see it now. So it was my bad, haha. I moved the collection[id][prop] = value; to else statement after prop === "tracks" and it works now.
Sorry, my fault.


Help menu not showing all the commands

The help menu is not showing all the commands that it should display.

Embed have a limit of field (25 fields).
Thinking of a solution.

Help menu have been fixed with system of navigation between embed pages (with reaction to message).


Signal visibilty issue: Uncaught Error: Could not find operator in expression

This controller didn't work, and didn't work on  "official demo controller" also.

@szluyufeng  Thanks for reporting. Closed by 9bc878c80bee51d195db701e0bba99ed6322941e
I've just cut a new release 0.9.3, with the fix for this issue. Let me know if you're still having troubles in the new version.

Excellent. Thanks for your effort!


Cannot run mender setup

I am not sure if  this the correct repo to ask this but I am trying to follow the mender on jetson nano tutorial. After a little head-scratching I was finally able to deploy the resulting images on to the nano and was greeted with a nice gui.
I thought that since we define the tenant token in the build process my jetson would automagically show on my hosted.mender dashboard. Sadly there was nothing. The tutorials on the mender hub website did finish at that exact moment and didn't actually offer any next steps. Which I find very weird. It simply falls short to demonstrate that if you follow the steps you reach a fully working mender setup
So I did run systemctl status mender-client
`● mender-client.service - Mender OTA update service
Loaded: loaded (/lib/systemd/system/mender-client.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2000-01-01 01:13:02 UTC; 20 years 11 months ago
Main PID: 4489 (mender)
Tasks: 10 (limit: 4184)
Memory: 18.5M
CGroup: /system.slice/mender-client.service
└─4489 /usr/bin/mender -daemon
Dec 10 23:49:45 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:49:45Z" level=info msg="State transition: authorize-wait [Idle] -> authorize [Sync]"
Dec 10 23:50:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:50:05Z" level=error msg="Failure occurred while executing authorization request: &url.Error{Op:"Post", URL:"https://docker.mender.>
Dec 10 23:50:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:50:05Z" level=error msg="Authorization request error: dial tcp: lookup docker.mender.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:54533->12>
Dec 10 23:50:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:50:05Z" level=error msg="Authorize failed: transient error: authorization request failed: generic error occurred while executing auth>
Dec 10 23:50:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:50:05Z" level=info msg="State transition: authorize [Sync] -> authorize-wait [Idle]"
Dec 10 23:54:45 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:54:45Z" level=info msg="State transition: authorize-wait [Idle] -> authorize [Sync]"
Dec 10 23:55:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:55:05Z" level=error msg="Failure occurred while executing authorization request: &url.Error{Op:"Post", URL:"https://docker.mender.>
Dec 10 23:55:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:55:05Z" level=error msg="Authorization request error: dial tcp: lookup docker.mender.io on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:46408->12>
Dec 10 23:55:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:55:05Z" level=error msg="Authorize failed: transient error: authorization request failed: generic error occurred while executing auth>
Dec 10 23:55:05 jetson-nano-qspi-sd mender[4489]: time="2020-12-10T23:55:05Z" level=info msg="State transition: authorize [Sync] -> authorize-wait [Idle]"
`
2 things drew my attention somehow this process runs before NTP got a chance to get correct date. Thus if there was a need for certificate based communication it would fail.
On the other hand I believe this URL is not the correct one URL:\"https://docker.mender.io/api/devices/v1/authentication/auth_requests\ I imagine it should be hosted.mender.io.. smthing.
So I tried to run mender setup which again failed because
ERRO[0000] Error checking write permissions to directory "/": open /temporaryFile267989584: read-only file system
So I tried pointing mender with mender setup -c /data/mender.conf to the writable folder /data which gave me glimpse of hope after asking me for credentials. But my hope was quickly crushed with the following
ERRO[0048] Error parsing JSON response.: json: cannot unmarshal object into Go value of type string
I then tried commenting out the following line IMAGE_FEATURES_append = " read-only-rootfs" on the tegra-demo.conf layer and rebake the image in an attempt to make the / folder writable which didn't work.
Now I think I am out of ideas.

@ACAVJW4H this would probably be a better question for hub.mender.com but there's a help section on your hosted.mender.io instance at https://hosted.mender.io/ui/#/help/system-updates/build-with-yocto which is useful here to
see how to switch from the demo layer and update your server URL and tenant token.

Thanks, I was finally able to see my device on the dashboard!


Available balance is not updated (Mac OS X)

When receiving XRP the total amount in the balance is correctly shown but not the "available" balance that remains with the previous one.
After log off and log in the balance is correctly refreshed.
OS: Mac OS X Sierra (10.12.6)
Program version: 1.4.1

Same issue on windows. Available is not updated to the new balance when you receive XRP and the application is open

try going online on the settings.  there is a little box you have to check to go online.


chore: update dependencies

Summary
Run go mod tidy and unused mergo is automatically removed.
How was it tested?

thanks!


[Doc] Add netwrok config of the Harvester configuration doc

Is your feature request related to a problem? Please describe.
Add network config of the Harvester configuration doc
Describe the solution you'd like
Note: All fields are required for static, only interface and method is requried for DHCP
install:
  networks:
    - interface: eth0
      method: static #static/dhcp
      ip: <IP_ADDRESS>
      subnetMask: <IP_ADDRESS>
      gateway: <IP_ADDRESS>
      dnsNameservers:
        - <IP_ADDRESS>
        - <IP_ADDRESS>

needed for both v0.2.0 and dev version

close in favor of https://docs.harvesterhci.io/v0.3/install/pxe-boot-install/#preparing-ipxe-boot-scripts


[ROS-O] Modernize CI / cmake

Replace enforcement of (old) C++14 standard with moveit_build_options()
Ubuntu 22.04 uses C++17 as default and fails on old C++14
Modernize CI setup

:warning: Please install the  to ensure uploads and comments are reliably processed by Codecov.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 17.36%. Comparing base (021d04e) to head (d11a9bd).
Report is 18 commits behind head on master.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##           master     #137       +/-   ##
===========================================
- Coverage   75.05%   17.36%   -57.68%
===========================================
  Files           9       20       +11
  Lines         529     1976     +1447
  Branches        0      243      +243
===========================================
- Hits          397      343       -54
- Misses        132     1559     +1427
- Partials        0       74       +74

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


404 Links / Crossing out

A few link don't work, I crossed them out (as I've seen some other broken links were crossed out)

Thanks for keeping eyes on them. Appreciated.


Update Release Notes

Can the agent release notes be updated?
We see this being deployed: 1.0.555.1008_hotfixProdR1
We need to confirm our customer this is a fix for the issues we had last week.

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

ID: 3cb10266-d3ca-31b1-31a0-bd4952e6736b
Version Independent ID: 9adcd5ff-db9f-44f9-27f6-7c689839267b
Content: What's new in the Azure Virtual Desktop Agent? - Azure
Content Source: articles/virtual-desktop/whats-new-agent.md
Service: virtual-desktop
GitHub Login: @Heidilohr
Microsoft Alias: helohr

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

@harkx
I'm going to assign this to the document author so they can take a look at it accordingly

@Heidilohr
Can you please check and add your comments on this doc update request as applicable.

@ManoharLakkoju-MSFT @harkx We've updated the article with the latest info for the new versions, including version 1.0.555.1008. The bullet points contain all information for that version update. I can't confirm if it resolves the customer's issue, as the nature of the issue wasn't described in the initial request, but hopefully the information is useful. #please-close


Environment has one function (for now) with which to calculate optimal value from cues

I will try to write a test for this.


Change calender view to Mo - Fr, Sa, Su

Expectancy:

Requirement:  Monika Ruegg TIXIZUG

migrated to https://github.com/TIXI24/requirements/issues/31


[WIP] Add tests for coverage

Description
Add extra tests to increase test line coverage.
Testing instructions
Unit tests.
Types of changes

Test only, new tests.

Checklist

[x] Prefix PR title with [WIP] if necessary.
[x] Add tests to cover changes as needed.
[x] Update documentation as needed.

Do you think it's worth to do call Hash.cpp from TWHash.cpp? TWHash calls trezor crypto directly

Do you think it's worth to do call Hash.cpp from TWHash.cpp? TWHash calls trezor crypto directly

Yes, it would be nice to keep to the principle that in TWXxx wrappers there is only wrapping, no other logic.  However, in this case I did not feel it worth the effort to create a Hash.cpp.  This functionality is rather stable.


MMP inhibitors

MMP inhibitors
Corneal Dystrophy, Epithelial Basement Membrane   OMIM:121820 MONDO:0007375
PMID 30809089
Works to prevent the breakdown of vital collagen and hemi- desmosomes by stunting the production of the enzyme MMP-9 | Systemic tetracyclines (eg, doxycycline 50 mg BID) | Failed lubrication and punctal occlusion
Matrix metalloproteinase (MMP) inhibitors are a type of medication used in the therapy of certain eye diseases, particularly those affecting the cornea. MMPs are enzymes that play a role in the breakdown of the extracellular matrix, a complex network of proteins and other substances that provide structural support to the cornea and other tissues in the body.
In certain eye diseases, such as corneal ulcers, MMPs can become overactive, leading to excessive breakdown of the extracellular matrix and damage to the cornea. MMP inhibitors work by blocking the activity of these enzymes, helping to reduce inflammation and promote healing of the cornea.
MMP inhibitors can be administered topically, as eye drops or ointments, or systemically, as oral medications or intravenous infusions. They may be used alone or in combination with other therapies, such as antibiotics or anti-inflammatory medications, depending on the underlying condition and its severity.
MMP inhibitors have shown promise in the treatment of a variety of corneal diseases, including corneal ulcers, keratitis, and recurrent erosion syndrome. They have also been studied in the context of corneal transplantation, where they may help to improve graft survival and reduce the risk of rejection.
However, MMP inhibitors can have potential side effects, such as irritation, dryness, and blurred vision. They may also interfere with wound healing in some cases, so their use should be carefully monitored by an ophthalmologist. Additionally, their long-term safety and efficacy have not been fully established, and further research is needed to determine their optimal use in the treatment of eye diseases.

added tMMP inhibitor therapy. closing issue now, but I am also tagging with annotation for future usage


DRAFT WIP BPF 2079 Topology Aware Hints task

Description

Related issues/PRs

Todos

[ ] Tests
[ ] Documentation
[ ] Release note

Release Note

TBD

Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one docs-* label.

docs-pr-required: This change requires a change to the documentation that has not been completed yet.
docs-completed: This change has all necessary documentation completed.
docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

release-note-required: This PR has user-facing changes. Most PRs should have this label.
release-note-not-required: This PR has no user-facing changes.

Other optional labels:

cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

As discussed with @tomastigera closing this draft PR - there will be replacement e.g. PR 7241 - thanks


RFC: Using C++

We need to move some or all of the kernel to C++ eventually.
It will allow us to use a whole bunch of things much more reliably - PIT, device drivers, etc, as well as being essentially required for process management in a sane way.
The question is whether we use extern C { on the existing files and use only C++ features in new files, or retroactively port everything (which is potentially months of work).

Update: I've added extern C to every header and source file, and set CMake to allow the use of g++ in compilation.
Going to port the Editor to C++ and test.

Initial tests look good. I'll close this for now, but use this comment section as a future reference.


Contract Groups

I have a usecase of managing multiple contact groups at a scale that would likely not be feasible to maintain via the UI.
I see there are endpoints for managing them in the API so I assume it would be possible to manage them via terraform.
https://uptime.com/api/v1/docs/#/contacts
are there any plans to support creating contract groups through terraform?
PS: Happy to contribute if that is the case, just need to ensure that's something foreseen

We have a plan to bring Terraform provider up to the feature parity with API. But code base is currently a bit outdated. In order to avoid PR merge complications and double work it needs to go through the cycle of refactoring.


(#2516) Add disclaimer that egghead link is paid content

Issue: #2516
What I did
Update the docs for storyshots to note that the egghead link is paid content
How to test
N/A
Is this testable with jest or storyshots?
N/A
Does this need a new example in the kitchen sink apps?
No
Does this need an update to the documentation?
No
If your answer is yes to any of these, please make sure to include it in your PR.

Let's also add a link to jest docs

@Hypnosphi amended my previous commit to add a link to the jest docs

@Hypnosphi I think the build is failing because of this issue: https://github.com/nodejs/docker-node/issues/649
Not just in alpine: https://github.com/nodejs/docker-node/commit/ae26d217bca933e72ac5f8de946681c1b5f8b37e


Idea plugin generates incorrect dependencies list

After migration from gradle 3.2.1 to 3.5 I've noticed that dependencies list in generated idea project changed.
The following file can be used as example
apply plugin: 'java'
apply plugin: 'idea'

repositories {
  mavenLocal()
  mavenCentral()
}

dependencies {
  compile group:'org.eclipse.persistence', name:'eclipselink', version: "2.6.4"
  testCompile group:'junit', name:'junit', version:"4.11"
}

idea {
  module {
    name = 'gradletest'
  }
}

Expected Behavior
According to https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html#org.gradle.plugins.ide.idea.model.IdeaModule:scopes defaults should be the following:

Default with idea and java plugin:
COMPILE -> project.configurations.compile
RUNTIME -> project.configurations.runtime - project.configurations.compile
TEST -> project.configurations.testRuntime - project.configurations.runtime
PROVIDED

This is what I had with gradle 3.2.1

Current Behavior
It seems that in gradle 3.5 result is actually the following

COMPILE
RUNTIME -> project.configurations.runtime // merged with- project.configurations.compile
TEST -> project.configurations.testCompile // merged with project.configurations.compile
PROVIDED -> project.configuration.compile

project.configurations.testRuntime is not even added to the list

I believe that was a bug in an earlier version of IntelliJ. Can you please upgrade to the latest version and try again?

I used idea 2017.1.3.
Does it even depend on idea version? Considering that project is generated by gradle plugin and everything was fine with gradle 3.2.1

To clarify - I didn't mean gradle project imported by idea here. I mean gradle plugin that allows to generate idea project with gradle idea

Is there any details I should add to label it as a bug?
For now I'm using workaround
scopes.COMPILE.plus = [configurations.compile]
scopes.TEST.plus = [configurations.testCompile]
scopes.RUNTIME.plus = [configurations.runtime]
scopes.RUNTIME.plus = [configurations.testRuntime]

scopes.TEST.minus = [configurations.compile]
scopes.RUNTIME.minus = [configurations.compile]
scopes.RUNTIME.minus = [configurations.testCompile]
scopes.PROVIDED.minus = [configurations.compile]

Still reproduced in 4.0.
Could you mark it as a bug?

This is a duplicate of https://github.com/gradle/gradle/issues/1276

For the record, I used your example project and the dependencies are in the right scope, no matter if I use Idea's importer or if I run `gradle idea´.

Is there an actual behavioural problem you were facing or were you just wondering about the dependency scopes? We changed the scopes to make Gradle's implementation much simpler, but everything should still work as before (which I verified using your example).

To me the problem is that dependencies are not generated in the way it's described in official documentation - https://docs.gradle.org/current/dsl/org.gradle.plugins.ide.idea.model.IdeaModule.html#org.gradle.plugins.ide.idea.model.IdeaModule:scopes
So I have to add workaround to bypass it.
Weird that you don't have this problem. I still don't know how idea version related here, but what gradle version did you use for gradle idea?
I just tried it with both gradle 3.5 and 4.0 and idea 2017.1.5 - still the same problem

Can you please explain what the problem is? I.e. what does not work?


Can not load dict from external URL

We are trying to use kuromoji.js with kuromojin on browser.
When we use external url as dicPath option, double slash is normalized by path.join.
> require("path").join("http://external-url.com/dict", "base.dat.gz");
'http:/external-url.com/dict/base.dat.gz'

So XMLHttpRequest will go to https://mydomain.com/external-url.com/dict/base.dat.gz
And fail to load dict.

@georgeOsdDev im having the same issue. im using kuroshiro to change kanji to furigana however when i try to use external cdn for the dict path. it seems to work fine on localhost but not on live server. did u find any workaround for this issue? if so would help me?

@chinenvinicius
You could find some solutions linked on this thread.
My workaround is
https://github.com/mobilusoss/textlint-browser-runner/pull/7


fix: Handle metrics breakage issue in mv3

From @whizzzkid:
We might need to revisit/refactor ignite-metrics, because mv3 removes the background_page context and replaces it with service-wroker context, i.e. reporting metrics from the background would be the same constraint as if running from within a service worker.
Metrics might break on ipfs-companion, because countly sdk needs window context and mv3 replaces background page with a service-worker context, i.e. no more countly:

Webpack has been incapable so far of producing an asset free of window references.
counly-sdk-node has a broken package which does not allow node projects to build, but the team’s advice is to move to the web sdk 🤦🏼 https://github.com/Countly/countly-sdk-nodejs/issues/8
Another alternative could be injecting countly on every page where metrics need tracking (ugh)

Discussed at:

Nishant daily update: https://filecoinproject.slack.com/archives/C03KQ8MC62Y/p1677703254599349
IP Stewards sitrep: https://www.notion.so/pl-strflt/2023-03-03-IP-Stewards-SitRep-d286014bfc3b4aef8da7750db2e696da?pvs=4#ebbdd84aeae048c6844ab28a84b2474d

FYI: webpack has functionality to replace text during builds via the define plugin: https://webpack.js.org/plugins/define-plugin/#usage
This may help, though it would require us to rebuild our own countly sdk. We could also use patch-package, but ideally countly would produce a decent SDK that could be consumed in multiple environments.


Linking/unlinking providers like facebook or twitter doesn't fire broadcasting of new auth state but login/logout does

AngularFire: ^5.0.0-rc.8.1-next
"firebase": "5.0.4",
I'm using in my service
import { AngularFireAuth } from 'angularfire2/auth';
a property
 public contributorUser: Observable<firebase.User>;
   this.contributorUser = firebaseAuth.authState;
from a component I subscribe:
 ngOnInit() {

  this.firebaseSubscription =  this.authService.contributorUser.subscribe(newAuthState=>{

      console.log("AUTH STATE HAS CHANGED", newAuthState);

});

}

but it only fires when I use for example signInWithEmailAndPassword() or singOut() methods. If I use
//didn't find the equivalent in the angularFire library, so I had to import * as firebase from 'firebase/app';
facebookProvider = new firebase.auth.FacebookAuthProvider();
  this.facebookProvider.addScope('publish_actions');
  this.facebookProvider.addScope('user_friends');
  this.facebookProvider.addScope('email');
  this.facebookProvider.addScope('public_profile');

this.firebaseAuth.auth.currentUser.linkWithPopup(this.facebookProvider);
or If I try to unlink account
     unlinkFacebookResult = await this.firebaseAuth.auth.currentUser.unlink("facebook.com");
it does it successfully(I checked with chrome debugger for each case using breakpoints on source code) but I don't receive the change on the subscription that I described above. Why is it working with login/logout but not with providers linking/unlinking? Is that supossed to be working?.

authState is only trigger on sign in/out as of Firebase 4. .user is what you're looking for.

Can you give an example?


Helm Install Error CronJob: v1.EnvVar.v1.EnvVar.Value: ReadString: expects " or n, but found 4, error found in #10 byte

Describe the bug
When helm is rendering the helm chart it is using the number 4 instead of a string for the check reaper cronjob here https://github.com/Comcast/kuberhealthy/blob/master/deploy/helm/kuberhealthy/templates/check-reaper.yaml#L41
Error: CronJob in version "v1beta1" cannot be handled as a CronJob: v1beta1.CronJob.Spec: v1beta1.CronJobSpec.JobTemplate: v1beta1.JobTemplateSpec.Spec: v1.JobSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.Containers: []v1.Container: v1.Container.Env: []v1.EnvVar: v1.EnvVar.v1.EnvVar.Value: ReadString: expects " or n, but found 4, error found in #10 byte of ...|,"value":4},{"name":|..., bigger context ...|"value":""},{"name":"MAX_PODS_THRESHOLD","value":4},{"name":"JOB_DELETE_TIME_DURATION","value":"15m"|...
Expected behavior
Template wraps 4 with quotes so it is accepted by the api server.
Versions

Kubernetes Version: v1.19.3
Kuberhealthy Release or build [e.g. 0.1.5 or 235]: Chart version 43

Additional context
Add any other context about the problem here.

This is probably all over the helm chart, but I addressed it with a quick  | toString in PR #793.

This is probably all over the helm chart, but I addressed it with a quick  | toString in PR #793.


The script editor doesn't highlight inexistent function calls on typed variables

Godot version
v4.0.alpha.custom_build [b8977ca33]
v4.0 alpha15
System information
Windows 10 64 bits GLES3 GeForce GTX 1060 6GB/PCIe/SSE2
Issue description
The GDScript editor is not highlighting function calls that clearly don't exist on typed variables. It should highlight them as errors. The script might also throw an error when compiled.
(I keep finding issues like this too late while porting plugins with function renames, not just when making typos)
Steps to reproduce
extends Node

var _canvas_item : CanvasItem = null

func _process(delta):
	_canvas_item.update() # `update` does not exist but is not highlighted

Minimal reproduction project
GDScriptEditorErrorNotHighlighted.zip
Open main.gd, observe the error is not highlighted.

Does the Script Editor show that the line is safe (the number of the line becomes a brighter shade of green, by default)?

It does not.

This isn't a bug. The update() function could exist in a subclass of CanvasItem (either native or in a script) and thus it would be valid to call. GDScript is still a dynamically typed language first so it cannot fail by default on these cases.
This still should have a gray line number and create an UNSAFE_METHOD_ACCESS warning (though I believe warning is still missing in master). This warning is disabled by default in any case. You could turn the warning into an error in the ProjectSettings if we wanted but be prepared for it to happen in many places if you're not casting values.

This can be discussed further to improve error/warning reporting, but the behavior is correct since this can be valid as I mentioned before.


Change password of Amazon account

Hi There,
I just updated the password of my Amazon account, and now Alexa Media Player is not working anymore. I can see a notification in HASSIO, but it does not let me introduce the new password, there is no text box. How can I update the password without reinstalling the integration?
Thanks!

You have to reinstall.


Update to tokio 1

This updates all dependencies to be compatible with tokio 1, optimizes compiler settings for best performance and fixes the docker image building on recent versions of Alpine.

@chamburr @Gelbpunkt
hi, just curious if you have thought about maybe doing a basic test launch of the docker image post build as the success of container <> success of build of the software. On my end maybe its environment related can anyone please confirm latest container of twilight-dispatch?
Digest: sha256:743371e4ff08fd12f71c7b5b51cbb22e3ddf37bfaedfe0c0ba50e8df9641f17f
Status: Downloaded newer image for chamburr/twilight-dispatch:latest

starts with error
2021-02-20T17:20:31.978543Z ERROR twilight_dispatch: SimdJsonError(Error { index: 1, character: '0', error: ExpectedObjectContent })

same env as previous. this is based on current master branch and confirmed signature of docker hub

PS: also Twilight guys don't want me asking questions about this in their channel (sort of rude on their side) any chance you have dedicated Discord channel for this?

@styk-tv Hi, I have tested the latest image on Docker Hub and am unable to reproduce the error. Could you try to flush your Redis database (redis-cli flushdb) and try again?
As for a separate Discord channel, I'm not really interested in creating a server just for this, considering the low-traffic. We can use the GitHub issues here instead, or if you prefer, you can DM me on Discord.


[upstream] Initial framework for background item eviction/promotion

Implement stubs for periodic workers for item eviction/promotion. Actual implementation of eviction and promotion will be provided in the next patch.
The idea behing introducing those workers is the following:

BG eviction: to keep certain amount of free memory and decreasing allocate latency
BG promotion: to move hot items to memory decresing latency

This change is

If and when this PR is merged into upstream we can followup with PRs that:

implement params (watermarks, etc.) for BG workers and config support
implement calculateBatchSize()
implement eviction for single tier (to NVMe) + optionally promotion from NVMe to DRAM

cachelib/allocator/CacheAllocator.h line 1063 at r1 (raw file):

                      util::Throttler::Config reaperThrottleConfig);

  bool startNewBackgroundPromoter(

Is it better to set default values for interval and strategy ? I understand doing so will require a background thread attributes class since multiple default values won't be possible.
e.g. bool startNewBackgroundEvictor(BackgroundThreadOpts opts);

cachelib/allocator/CacheAllocatorConfig.h line 480 at r1 (raw file):

  std::shared_ptr<BackgroundMoverStrategy> backgroundPromoterStrategy;
  // time interval to sleep between runs of the background evictor
  std::chrono::milliseconds backgroundEvictorInterval{

I see now that default values are set in config. So maybe you can ignore my previous comment about background evictor/promoter thread creation api carrying default values for interval and strategy.

cachelib/allocator/CacheStats.h line 293 at r1 (raw file):

// Mover Stats
struct BackgroundMoverStats {

Should this class be renamed to BackgroundMoverLocalStats ? I think adding the term "local" adds clarity to the per-thread stats collection mode.


Move Conditioning

There is a simple caveat here to be resolved, and I believe this solution to be the most useful for coding rules. The only thing is the dual representation of Squares. I am thinking of either disallowing referencing squares on the board directly with notation, so replace board["a6"] with board[Square("a6")], and reduce the dual Square | str checking everywhere with a single Square type hint.
This brings about a complication with the definition of __init__ and __add__ in Square. If squares are to be made out of notation only, the add cannot properly return a Squares object without lots of code. I will figure this out in a follow-up commit.

Looks good, moves are stored in the classes as data. Data is better than functions. I assume the condition input to legal_moves will check:

if the target square has been reached
if there is a piece blocking the step

Something like that. For now, I imagine condition will come from the board testing the following:

If input square reached the board edge.
If input square reached an occupied square.

I have to imagine how to handle same and opposite color.

Both can be done by using closures to refer to the data necessary (target square, blocking piece). These can be provided from the enclosing scope in a Board method. Checking if the piece is outside the board should be left to the board methods. Assume that the input to legal_moves is already valid in that sense.

Agreed!

Add some more tests and then we can merge. I would suggest pytest instead of the default unit-testing.

Will do. I set out to finish the Pawn class first.
Question: Does any of you have a better name for Meleer. :P

Melee

Why create #16 ? It is a continuation of this PR resolving issues mentioned within this PR. I suggest just continue work in this PR (merge commits and continue work on this branch).

You don't understand, #16 was created before you ever reviewed 15. When I started 16, it stopped being about tuple logic, so I made a new branch

Does it not make sense to merge first the more mature branch (this one) and then to continue with the less mature one, after merging master into the new one #16.

I merged my changes from #16 here and this PR is up to date now. The other one was closed.


⚠ SceneTime has degraded performance

In 8f94718, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 9166 ms

Resolved: SceneTime performance has improved in 5861997 after 6 minutes.


No placeholder for text needed for input:t

From @DiscreteChi in https://github.com/Microsoft/vscode/issues/34352
input:t expands to <input type="${1:text}" name="${2}" id="${3}">
The placeholder on the "text" is not needed as the abbreviation specifically asks for the text type.
For example input:date doesnt result in placeholder for date. It simply expands to <input type="date" name="${1}" id="${2}">
cc @sergeche

@sergeche ping

<EMAIL_ADDRESS>


[SUPPORT] Question: Does "SINGLE_WRITER" also utilize if hoodie.write.lock.* is provided?

Hi,
I am leaving my question here since I don't know where to put this type of question.
I also googled the question I have, but I couldn't find one.
Please let me know where I should put this type of question next time.
My question is related to Hudi write.
Context

Hudi version: 0.9 ( running in AWS Glue 3 )
using Hudi Metadata table

"hoodie.metadata.enable": "true"

using SINGLE_WRITER

"hoodie.cleaner.policy.failed.writes": "EAGER"
"hoodie.write.concurrency.mode": "SINGLE_WRITER"

using zookeeper as lock provider

"hoodie.write.lock.provider": "org.apache.hudi.client.transaction.lock.ZookeeperBasedLockProvider",
"hoodie.write.lock.zookeeper.port": port,
"hoodie.write.lock.zookeeper.url": zookeeper_url
"hoodie.write.lock.zookeeper.base_path": "/hudi_write_lock",
"hoodie.write.lock.zookeeper.lock_key": table_name,

I setup the zookeeper as lock provider to use Hudi Metadata table with async Hudi service.
https://hudi.apache.org/docs/metadata/
Question:
Even if hoodie.write.concurrency.mode=SINGLE_WRITER, do the Hudi table services ( cleaner, compaction, clustering ) + Hudi write use the provided zoopkeeper lock?
Somehow, I keep seeing FileNotFoundException issue when Hudi tries to access files based on Hudi Metadata.
Therefore, I am investigating what makes Hudi Metadata out-dated.
Thank you

you have to set concurrency.mode=optimistic_concurrency_control. more info can be found here.
if you set it to single writer, lock providers are not effective.
So, may be its an issue w/ metadata table. w/o enabling metadata, does your pipeline run smoothly w/o any issues?
Also, we have a command in hudi-cli in 0.10.1 or latest master "metadata validate-files" that you can try it out. It might give file mismatches between fs based listing and metadata based listing.
If you wish to rebuild metadata, you can delete the metadata from hudi-cli and your next write will bootstrap the metadata table again.

Recently we have a patch to add validation tool for metadata. you can give this one a try as well.
https://github.com/apache/hudi/pull/4721

CC @yihua @manojpec @codope

@nsivabalan
Thank you very much for your reply.
The reason I started questioning about the context is due to this information in Hudi document.
references: https://hudi.apache.org/docs/0.10.0/metadata
"""
If your current deployment model is single writer along with async table services (such as cleaning, clustering, compaction) configured, then it is a must to have 'lock providers configured' before turning on the metadata table.
"""
Q1. I guess this document is true as of Hudi 0.10.0 ?
And about the metadata validation, since I use AWS Glue, I don't have a way to run Hudi CLI.
Q2. Can "hoodie.metadata.validate=true" be the alternative?
Thank you
Gatsby

Q1: yes.
Q2: we do not honor validation config in 0.10.0. we had it in 0.8.0, but not in 0.10.0.
So, once the patch lands, probably you can make use of it.

@nsivabalan
Again, Thank you for your reply.
First, You're right.
I can't find hoodie.metadata.validate in 0.10.0. ( It's still available in 0.9 )
Thank you for making it clear.
About "Metadata Table", ( Since the current AWS Marketplace provides Hudi 0.9, let me ask questions about 0.9 and 0.10 )
Q1. On Hudi 0.9, to use Async Hudi Tables services, does the lock provider has to be configured?
Q2. On Hudi 0.9, to use Async Hudi Tables services, does "hoodie.write.concurrency.mode" has to be OPTIMISTIC_CONCURRENCY_CONTROL?
Q3. On Hudi 0.10, to use Async Hudi Tables services, does the lock provider has to be configured?
( I think this is YES )
Q4. On Hudi 0.10, to use Async Hudi Tables services, does "hoodie.write.concurrency.mode" has to be OPTIMISTIC_CONCURRENCY_CONTROL?
Thank you for your help!!
Gatsby

Q1, Q2: @prashantwason : Can you help answer this.
Q3, Q4: yes.

Q1, Q2: YES

@nsivabalan @prashantwason
Thank you very much for all your answers.


Fix herocoins.dev link

Added http:// before the herocoins.dev link, otherwise Github tries to open https://github.com/duerrsimon/bioicons/blob/main/heroicons.dev which gives a 404 error.

Alternatively, you could link to the herocoins Github repo which is at https://github.com/tailwindlabs/heroicons

Thanks for fixing this!


Status on specific messages are not updated

Status on the following messages are not updated
Oprettelse Dato	Netområde	Besked ID	Sender	Modtager	Besked type	Status	Start dato	Slut dato	Afsendt fil	Kvittering fil
29-nov-2021 22:40:58	740	310054726-3<PHONE_NUMBER>184	44X-00000000004B	(MGXI) Receive MGA Exchange	Sendt	17-nov-2021	18-nov-2021	Link to file
29-nov-2021 22:40:58	740	310054726-4<PHONE_NUMBER>184	44X-00000000004B	(MGXI) Receive MGA Exchange	Sendt	17-nov-2021	18-nov-2021	Link to file
29-nov-2021 22:37:16	003	310053981<PHONE_NUMBER>892	44X-00000000004B	(MEPI) Merged Production	Sendt	17-nov-2021	18-nov-2021	Link to file
29-nov-2021 22:37:03	003	310053920-21<PHONE_NUMBER>892	44X-00000000004B	(MGXI) Receive MGA Exchange	Sendt	17-nov-2021	18-nov-2021	Link to file
We need to understand why the status is not changed.

I have checked the logs and it seems that we have not received anything from eSett on the mentioned message ids.


Corrections to AP calculation

Hi Lovish,
I corrected the calcMatric.py code (and renamed it to calcAP.py) for calculating average precision across classes. I also edited all the codes to comply with pep8 standards of code syntax design, and changed print functions to be able to run in both python2 and python3.
Regards,
Vikram

Corrected Average Prevision Calculation
Pep8 compliant
Added requirements.txt

Hi Vikram,
Let's meet up tomorrow and contemplate if we can do something interesting with this implementation.
Lovish

I will correct mAP by tomorrow. Right now, it is not compliant with the definition of  mAP in official PASCAL VOC booklet here Link
Explained here : Link


Idempotency utility support similar to python version

Is your feature request related to a problem? Please describe.
Idempotency utility support similar to python version https://awslabs.github.io/aws-lambda-powertools-python/latest/utilities/idempotency/
Describe the solution you'd like
Idempotency utility support similar to python version https://awslabs.github.io/aws-lambda-powertools-python/latest/utilities/idempotency/
Describe alternatives you've considered
Implementing idempotency ourselves
Additional context

@jeromevdl Is working on this now.

Is there an ETA for this? We prepared a similar implementation to make our functions idempotent and we're planning to apply on a bunch of our systems. But we'd rather adopt the one coming from power-tools than our homemade version; they look pretty similar.
Also would it be possible to emit some metrics around number of requests de-duped, various error counts etc.?

@jeromevdl has started looking into it.

Also would it be possible to emit some metrics around number of requests de-duped, various error counts etc.?

This can be an interesting thing to support. @heitorlessa What do you think? Has it been discussed for python one?