State of the project

Hello Contentlayer community,
I wanted to share an update regarding the ongoing maintenance of Contentlayer. I am committed to the project and will continue to work on it, aiming for monthly releases (for as long as there is sustainable financial backing). These updates will prioritize fixing pressing bugs and, when possible, introducing new features. I appreciate all the support and feedback from the community and am glad to see developers finding value in Contentlayer.
I'd like to thank Stackbit for their generous, continuous sponsorship of Contentlayer, making the initial development possible. However, (at least for now) they have had to scale down their level of sponsorship, and as a result, I can currently allocate one day a month to the project. I kindly ask for your understanding and patience, given these time constraints, as I continue my efforts to work on Contentlayer.
Thanks again your ongoing support and helpful feedback. Your input contributes significantly to the development and improvement of Contentlayer.
💜

Keep up the good work. 🥇

Thank you for the update, @schickling. It's unfortunate to hear that Stackbit has had to scale back their sponsorship.
Are there any opportunities for community funding or contributions that could help Contentlayer reach V1?

Thanks for the update, @schickling!
My Involvement
I will also continue to be involved. My efforts will largely be focused on docs and will equate to about 1-2 days per month. I plan to spend a few hours each week improving the documentation so that we can all continue to have a good experience working with Contentlayer.
Docs Improvements
If you find gaps or errors, or have ideas for the site or documentation, please create an issue on the website repo.
Project Contributions
@jasongerbes (and others who may have the same question): The most valuable forms of contribution today are list on this page.
Given @schickling's reduced time, the most valuable of this list are in providing support to the community, in the form of:

Triaging issues: Verifying that reported issues are reproducible and asking for more information when the reported issue is not clear.
Responding in Discord: Many folks report issues in Discord before creating GitHub issues. Most of these are questions that can be answered without creating an issue. Some should be logged in GitHub. Helping users get to the right path is valuable to the project.

Feel free to jump right in. Or, if you'd like help forming more of a process, or would like to contribute in other ways, feel free to reach out directly to me (Discord is best) and we'll work together on it.

Any help I can give here?

Hey folks! Just wanted to provide a little in-between update:
As you might have seen, Stackbit recently got acquired by Netlify which (at least for now) means that the sponsorship of Contentlayer has been paused. I'm hoping to hear back from Netlify soon on the continued sponsoring & development of Contentlayer as there is a lot more work to be done! 💪

hey there @schickling. Is the project still maintained? Would like to help out with pending stuff.
Thanks for the awesome work :)

Netlify is kinda runining the open-source CMS eco-system.

I moved from ContentLayer to Next MDX. ContentLayer seems to no longer be maintained and has a lot of bugs:
elie222/inbox-zero@cf42b0b (#79)

Any alternatives?

next-mdx-remote

https://github.com/souporserious/mdxts

https://github.com/BearStudio/typed-mdx

Any alternatives?

https://github.com/zce/velite

https://www.npmjs.com/package/mdx-content

https://www.npmjs.com/package/mdx-content

last commit is 2 years ago

anyone know of an alternative that uses a remote 3rd party data source, like a Notion, to generate the markdown...
this is exactly what I'm looking for

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

Of course, I am using it in a commercial project and there is no problem!
This is also Velite's motivation.
Welcome to join, let's make it better together

I'm currently looking at either Sveltekit + mdsvex or Astro. Both provide really good .md and .mdx support. Astro basically has .md support out the box and can add mdx with a simple "pnpm astro add mdx"... Super easy... Assuming no one wants to really take on a full rewrite of their app though. But for new projects, Astro or Sveltekit might be an option? Disappointed in how bad md and mdx support is for Next Js. Contentlayer was really good and was so nice to use, but in the same boat as above, cannot rely on a dep that isnt being maintained and cannot wait forever to see what contentlayer's future is. its a shame...

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

Of course, I am using it in a commercial project and there is no problem!
This is also Velite's motivation.
Welcome to join, let's make it better together

does it support custom content locations?

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

Of course, I am using it in a commercial project and there is no problem!
This is also Velite's motivation.
Welcome to join, let's make it better together

does it support custom content locations?

Currently, there is no consideration for supporting remote files or APIs

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

Of course, I am using it in a commercial project and there is no problem!
This is also Velite's motivation.
Welcome to join, let's make it better together

does it support custom content locations?

Currently, there is no consideration for supporting remote files or APIs

Velite looks really promising. If it had remote files/data-source I would definitely take the afternoon to convert over.

@zce Velite looks very interesting and is actively developed.  Are you using it?
I am leaving ContentLayer (bye!) as I cannot have a major dependency in my project be unmaintained.  Velite looks like a viable alternative at first glance. Otherwise it's back to Next/MDX or next-mdx-remote. Sigh...

Of course, I am using it in a commercial project and there is no problem!
This is also Velite's motivation.
Welcome to join, let's make it better together

does it support custom content locations?

Currently, there is no consideration for supporting remote files or APIs

Velite looks really promising. If it had remote files/data-source I would definitely take the afternoon to convert over.

If it turns out that this is indeed a feature that many people need, I will consider supporting remote files.

@schickling is there any update on the status of the project? Good or bad, it would be useful to know the situation so that we can make a decision on replacing the library with an alternative.

While I haven't heard yet from Netlify about this, I've heard from some folks in the Effect community that they seem interested in potentially getting involved as core maintainers. No timeline on this yet but a glimmer of hope. ✨

Oh, my life feels like it's coming to an end. I like this stuff.

shadcn-ui uses this

I've been investigating alternatives for the last week for my own nextjs projects and not finding anything I really trust.  Maybe it will help someone else what i summarized:

package
maintained
typed data
frontmatter
rehype
comment

@next/mdx
✅
⛔
⛔
✅
mdx has to be part of router

next-mdx-remote
✅
✅
✅
✅
can't import components in mdx file ⛔

mdxts
✅
✅
⛔
⛔
very light feature set

velite
✅
✅
✅
✅
very early beta and not widely adopted (yet?)

None of these feel like a long term solution that could replace Contentlayer so am planning to stick to what I've setup so far and keep my fingers crossed that something doesn't update and break my content generation.
Hopefully some good news comes from the Effect community and this can be maintained again. Would be super sad to see such a great library disappear.

I've been investigating alternatives for the last week for my own nextjs projects and not finding anything I really trust. Maybe it will help someone else what i summarized:
package	maintained	typed data	frontmatter	rehype	comment
@next/mdx	✅	⛔	⛔	✅	mdx has to be part of router
next-mdx-remote	✅	✅	✅	✅	can't import components in mdx file ⛔
mdxts	✅	✅	⛔	⛔	very light feature set
velite	✅	✅	✅	✅	very early beta and not widely adopted (yet?)
None of these feel like a long term solution that could replace Contentlayer so am planning to stick to what I've setup so far and keep my fingers crossed that something doesn't update and break my content generation.
Hopefully some good news comes from the Effect community and this can be maintained again. Would be super sad to see such a great library disappear.

You can easily add frontmatter support for next/mdx: https://nextjs.org/docs/pages/building-your-application/configuring/mdx#frontmatter
This is what I use.

Any alternatives?

https://markdowndb.com - https://github.com/datopian/markdowndb
Note: markdowndb (intentionally) focuses just on being an actual "content layer" in the sense of giving you a database of your content including extracting structured data from it. It does not markdown/MDX processing - it leave that up to you in your tool of choice. Thus, it plays well with e.g. next/mdx or next-mdx-remote or whatever you want to use.
Note: we used contentlayer from before its beta release and thought it was great - it helped us create https://flowershow.app (github.com/datopian/flowershow).
However, at least for our use case, we found it did both too much and too little. Too much in that it got involved in markdown processing pipeline, hot reloading etc. Too little in the sense of not giving us enough of an actual content/data "layer". That's why we started on markdowndb: https://markdowndb.com

@schickling Also, in the meantime, could you consider giving maintainer rights to someone who would be willing to help out with maintaining the project? There are many great Pull Requests that are just a button's click away from improving Contentlayer and closing many existing issues, so it would be great to have someone who could help out with that on a more regular basis :)

I know handing over the keys in any sense is not to be taken lightly, and I can't commit to any sort of SLA 😅, but I'd be more than happy to help maintain this project. We use it for the documentation site for our design system so I'm pretty invested in that regard. I have been considering forking this project in the interim and seeing what it takes to get CI running there just to move a few quality of life things along.

I've been investigating alternatives for the last week for my own nextjs projects and not finding anything I really trust. Maybe it will help someone else what i summarized:
package	maintained	typed data	frontmatter	rehype	comment
@next/mdx	✅	⛔	✅	✅	mdx has to be part of router
next-mdx-remote	✅	✅	✅	✅	can't import components in mdx file 1 ⛔
mdxts	✅	✅	⛔	⛔	very light feature set
velite	✅	✅	✅	✅	very early beta and not widely adopted (yet?)
None of these feel like a long term solution that could replace Contentlayer so am planning to stick to what I've setup so far and keep my fingers crossed that something doesn't update and break my content generation.
Hopefully some good news comes from the Effect community and this can be maintained again. Would be super sad to see such a great library disappear.

how does @mintlify/mdx compare? https://github.com/mintlify/mdx/blob/main/examples/app-router/app/page.tsx

How about https://github.com/sdorra/content-collections ?

I'm currently looking at either Sveltekit + mdsvex or Astro. Both provide really good .md and .mdx support. Astro basically has .md support out the box and can add mdx with a simple "pnpm astro add mdx"... Super easy... Assuming no one wants to really take on a full rewrite of their app though. But for new projects, Astro or Sveltekit might be an option? Disappointed in how bad md and mdx support is for Next Js. Contentlayer was really good and was so nice to use, but in the same boat as above, cannot rely on a dep that isnt being maintained and cannot wait forever to see what contentlayer's future is. its a shame...

My brother from another mother. Thanks for the inspiration. I had no clue Astro had such strong MD/MDX support, and I wouldn't mind rewriting my site. All I ever wanted was the local-markdown-CMS experience, it's cool to see there's a front-end framework with first-class support for it!

While I haven't heard yet from Netlify about this, I've heard from some folks in the Effect community that they seem interested in potentially getting involved as core maintainers. No timeline on this yet but a glimmer of hope. ✨

I have a lot of hope concerning Contentlayer. I truly believe it's an excellent solution.
I wish all the best, and I hope that these good news will materialize into reality...

Hi Contentlayer community, I have setup a separate fork available at https://github.com/timlrx/contentlayer2 to keep the torch going! It fixes many of the outstanding dependency and compatibility issues. Feel free to update your dependencies and happy to get more maintainers on board.

Hey folks: cross-posting this most recent update:

I worked on Contentlayer with @schickling while at Stackbit, and I'm now over at Netlify.
I'd love to see this project continue. We're currently in discussions about the most effective path forward. There's much to coordinate. It'll take some time, but we're making good progress.
In the meantime:

Use the Contentlayer2 fork.
The website is back up. As the fork gets updated, feel free to open PRs on the website repo and DM me on Discord (seancdavis29) for a review.

It seems https://github.com/sdorra/content-collections is the best replacement so far

As mentioned by Sean, please use https://github.com/timlrx/contentlayer2 and we would merge back the changes to contentlayer hopefully soon!

I migrated to Velite some time ago when ContentLayer was no longer maintained. For me "it just works". There may be risk because I think it's a one developer project but I needed something that worked. Cheers.

Nice discussion and hacking on contentlayer from Effect-TS here: https://youtu.be/i4lYoTV0q6U

We've continued to update markdowndb with various features (e.g. json output as well as sql), extracts tasks, tags and more from markdown as well document validation using zod:
https://markdowndb.com
https://github.com/datopian/markdowndb

I've been investigating alternatives for the last week for my own nextjs projects and not finding anything I really trust. Maybe it will help someone else what i summarized:
package	maintained	typed data	frontmatter	rehype	comment
@next/mdx	✅	⛔	✅	✅	mdx has to be part of router
next-mdx-remote	✅	✅	✅	✅	can't import components in mdx file 1 ⛔
mdxts	✅	✅	⛔	⛔	very light feature set
velite	✅	✅	✅	✅	very early beta and not widely adopted (yet?)
None of these feel like a long term solution that could replace Contentlayer so am planning to stick to what I've setup so far and keep my fingers crossed that something doesn't update and break my content generation.
Hopefully some good news comes from the Effect community and this can be maintained again. Would be super sad to see such a great library disappear.

Now @next/mdx has supported using imports.

:(


Half-abandoned app: FileCase by CepiPerez (Matias Perez)

As described in the README, I am suggesting to either adopt (i.e., fork / clone) FileCase at the SailfishOS:Chum source repository or to just compile and package it at the SailfishOS:Chum OBS.
Its source code is at GitHub, unfortunately @CepiPerez did not assign a license to it (I would suggest to default to the Mozilla Public License 2.0 (MPL-2.0) for a multitude of reasons), but made his intention clear at OpenRepos, that all his unmaintained software shall be FLOSS (Free, Libre, Open Source Software).
The current status AFAICS:

Cepi has explicitly handed over the maintenance to @llewelld (flypig / David  Llewellyn-Jones, a sailor).
David did quite some maintenance by himself in Q2-2021 and some additional contributions (AFAICS primarily fixes) from @ruditimmer (Rudi Timmermans) were merged in Q3-2021.
But no new releases were being made available at the usual locations, not in the old repository or a new one at OpenRepos, or in the Jolla Store.
Only today I found two releases from last year at GitHub, a place at which regular SailfishOS users will not discover software, and from which RPMs have to be manually downloaded and installed.
Looking at the commit history of FileCase, it seems to be in "minimal maintenance mode" and AFAIR @CepiPerez has stated that he does not own a SailfishOS device since long.

Thus I am suggesting to make FileCase available for a broader audience, again: By offering it via the SailfishOS:Chum repository.
Side note: One topic, which is unclear to me is, if @CepiPerez wishes that his repository stays the "tip / upstream" source code repository (despite having no SFOS device AFAIR).
Opinions, suggestions how to proceed: @CepiPerez, @llewelld, @rinigus, @ruditimmer?

Hello. It's nice to see people still using my apps. Source code is free so you can do whatever you want, same goes for FlowPlayer

… Source code is free so you can do whatever you want, same goes for FlowPlayer

Do you have a preference for a specific Free Software / Open Source Software license, for example the Mozilla Public License 2.0 (MPL-2.0) as a modern (including a patent grant), broadly compatible (to GPL, LGPL and AGPL), reciprocal license.
Or do you want to allow for your code also being used and potentially sold as proprietary software (i.e., "closed source software" / non-free software), then I suggest the Apache License, Version 2.0 Apache-2.0.
Saying, "do whatever you want with the source coded" would be interpreted by most layers as putting it into the public domain, which is a really bad choice for a multitude of reasons.
Thus @CepiPerez , *please choose a license!
If you do not know and do not care what all this is about, then please trust me and simply pick the MPL-2.0.  It is the best choice for your code to live on as Free Software and being broadly used, except for in closed-source software.

Just merged you request. As I said, I'm happy to see my work stills usable (even when it has a lot of crap code, and I'm sorry for this). If anyone wants maintainer rights in GitHub just let me know. Regards

@CepiPerez, this is currently not working well from my perspective: Merging PRs without a thorough review and some testing created more issues than it solved in the last 6 months, see issue https://github.com/CepiPerez/filecase-sailfish/issues/16#issuecomment-1060323705
So I cleaned this up (by PR https://github.com/CepiPerez/filecase-sailfish/pull/25) and created a new release (by PR https://github.com/CepiPerez/filecase-sailfish/pull/26), but these are maintainer's tasks and hence beyond a primarily organising role I was willing to take.
To resolve this, I created the GitHub-"organisation" cepis-sailfishos-apps and invited you to it.  Please accept this invitation and transfer the ownership of the FileCase repository, the FlowPlayer repository and possibly also the MyAnimeList repository to the organisation cepis-sailfishos-apps.  This way you can be still in control (as you apparently do not want to "archive" these repos), but I can also re-organise these repos with branch protection rules etc., plus this allows to share the reviewing tasks.
Thanks!

All done, went nicely.


feat: add interface showMark & marks & vertical

Coverage increased (+0.9%) to 71.142% when pulling 5067263b595adf827f965cba6329344b0577eeb8 on sanheng:dev into ef1e7637e44af6b44ec796fcdc653eaa18a11336 on ZhonganTechENG:dev.

Coverage increased (+0.9%) to 71.142% when pulling 5067263b595adf827f965cba6329344b0577eeb8 on sanheng:dev into ef1e7637e44af6b44ec796fcdc653eaa18a11336 on ZhonganTechENG:dev.


Single UI Render

UI only rendered once when loaded from file

@Teju-Manchenella you want to roll these changes into the other listReducer changes you are doing?
Also note the comment I made in addAll. In particular, see https://lodash.com/docs/4.17.10#unionWith


Hidden parameter visibility

Codecov Report

Merging #906 (42f1169) into devel (4fe5d17) will increase coverage by 0.00%.
The diff coverage is 100.00%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##            devel     #906   +/-   ##
=======================================
  Coverage   91.56%   91.56%
=======================================
  Files          28       28
  Lines        4648     4650    +2
=======================================
+ Hits         4256     4258    +2
  Misses        392      392

Impacted Files
Coverage Δ

hahomematic/parameter_visibility.py
94.96% <100.00%> (+0.06%)
:arrow_up:

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


[turborepo] turbo prune --docker puts patches folder in full subfolder -- would json subfolder be more appropriate?

Which project is this feature idea for?
Turborepo
Describe the feature you'd like to request
When running turbo prune --scope=<pkg> --docker and pnpm patchedDependencies exists, the prune process will copy the patches folder to out/full/patches.  Based on turborepo's documentation for deploying with docker, the recommended approach is to first copy content from the out/json folder and then install dependencies with the package manager.  Subsequently, the remaining content from out/full is copied in.  This separation of content between the out/json folder and the out/full folder provide a nice separation of what's needed to install dependencies versus what's needed in the final build.
However, with the patches folder being copied to out/full, content from full must be copied prior to installing dependencies to ensure that the patches get applied properly.  This seems contrary to the intent of the json folder being used for dependency bootstrapping and the full folder being used after dependency installation.
Describe the solution you'd like
Place the pnpm patches folder in out/json/patches rather than out/full/patches.  This will allow the documented step of COPY --from=builder /app/out/json/ . to continue to copy in the content necessary for performing a pnpm install as it would bring the pnpm patches through
Describe alternatives you've considered
I've currently adjusted my Dockerfile to have the following steps to ensure patches are available prior to installing:
# Install dependencies
COPY --link .gitignore .gitignore
COPY --link .npmrc .npmrc
COPY --link --from=pruner tmp/app/out/json/ .
COPY --link --from=pruner tmp/app/out/pnpm-lock.yaml ./pnpm-lock.yaml
COPY --link --from=pruner tmp/app/out/full/patches/ ./patches

RUN pnpm install --frozen-lockfile

Note the extra step when copying patches which would not be needed if it was present in the out/json folder.

Thanks for the suggestion. This was definitely an oversight on my part.

I just tested out the current version and this fix worked well.  Thanks!
Resolved by #4318.


Updated to react 16 and getting Error

I just went into my package.json and updated to react 16 and focus trap is giving me this error:
Error: You can't have a focus-trap without at least one focusable element
"focus-trap-react": "^3.0.4",
"react": "^16.0.0",
"react-dom": "^16.0.0",

Not really sure what happened exactly. Looking into it but wanted to let you know.

Are you sure you changed nothing except the React version?

yes
As soon as I changed back no error
"react": "^15.6.1",
"react-dom": "^15.6.1",

closing this out.
Not really exactly sure why previously it was not throwing the error but I edited my HTML with tabIndex and it appears that the problem has gone away.


Update flex.go

Seems like version update is not working anymore.

This pull request didn't trigger Jenkins as its author isn't in the whitelist.
An organization member must perform one of the following:

To have this branch tested by Jenkins, use the "ok to test" command.
To have a one time test done, use the "test this please" command.

Those commands are simple Github comments of the format: "jenkins: COMMAND"

It's working perfectly fine, but current master isn't 2.0.3 at all. 2.0.3 is in the stable-2.0 branch.


Only first error is displayed in /validation

I added to errors for testing purposes in a turtle file. The validation shows only one of them:
Validation

Error Number: 1
Found in file:./vivo_owl.ttl Error: Syntax error: unexpected "has" on line 66.

Please fix the error(s) in the turtle file(s).

If this is a design decision, the message should be fixed to something like:
"Only the first error is shown. Please fix it, before further validation is possible" or something similar. But I would prefer to be able to get a complete list.

Hi @hauschke
Yes, the message should convey this matter by saying  that we  are showing only the first error of each file. But I am also working towards a parser that  can list all the syntax errors inside turtle file

@ahemaid , is this already implemented?

Current VoCol version includes RDF-Doctor tool to show more than one syntax errors of the repository.


Add log compare test for devicekey example

Add a log compare test for this example for enable example CI testing
And change default baud rate to 9600 default,
I don't know if there is any justifiable reason to use the baud rate as 115200, I just change it to 9600 to make it is consistent with other examples, and it is going the make the test easier

Hi @yossi2le, could you review and merge this PR

@ARMmbed/mbed-os-storage

Hi @yossi2le, could you review and merge this PR

Not in the storage team anymore, I mentioned the team above, should be able to progress


Task: provide list of local authority names

Send the Welsh language team a list of local authority names as used in UKHPI, in English and Welsh. This is in order that we can track down any other misspellings or mis-capitalisations similar to #257

Migrated to https://github.com/epimorphics/hmlr-linked-data/issues/43


Feat/refactoring of select component

Affected sections

src/components/Form/Input/BaseInput.tsx
src/components/Form/Input/CurrencyInput.test.tsx
src/components/Form/Select.tsx
src/components/Form/TextArea.test.tsx
src/components/Form/TextArea.tsx
src/components/Form/shared.ts
src/stories/Input.stories.tsx
src/stories/TextArea.stories.tsx

How did you test this change?

Plase homologates the title of the PR with the commits. Its a:

fix
refactor

Not a feature


Build image from pr and push it to quay

This should make it easier to test changes.
For every open PR on this repository, there will be image available at quay.io/odo-dev/init-image-pr:<PR-number>

/approve

/lgtm


Fixes mock mode handlers from hanging after 1st request.

Fixes issue reported here: https://github.com/apigee-127/a127/issues/36

Thanks Scott.

Thanks for taking care of it.


Refactoring convert code so it can be used outside utils package

What type of PR is this?

Uncomment only one  /kind line, and delete the rest.
For example, > /kind bug would simply become: /kind bug

/kind code-refactoring
What does does this PR do / why we need it:
Refactoring convert code so it can be used outside utils package. This helps towards https://github.com/openshift/odo/issues/4281
Which issue(s) this PR fixes:
partly https://github.com/openshift/odo/issues/4281
PR acceptance criteria:

[ ] Unit test

[ ] Integration test

[ ] Documentation

[X] I have read the test guidelines

How to test changes / Special notes to the reviewer:
everything should work the same

this would allow us to write unit test for convert.go code as well

/retest

/test v4.6-e2e-4x-psi

/test all

/retest

/retest

/retest

/retest

/retest

I am just getting timeouts on this.


Copy as default format by  hotkeys directly？

For example, when press ctrl+f on anywhere, copy as default without click and confirm.

I added the keyboard shortcut Alt+C to copy the URL in the default format.
https://github.com/hnakamur/FormatLink-Firefox/commit/0c0214437bb1fcd9379972d20074c541866abed4
Please wait the version 1.3.0, which I submitted just now to be approved.


Title using accent color instead of main color in 2.0

Just updated and now any of my vertical stack in a cards with titles now shows the accent color and not the main color like it did in previous versions. Is there a style option to change this?

Fixed it by putting the title on the card and not the vertical stack.

Fixed in 0.2.1.


How can I handle password expiry in the credential provider?

Hi thanks for this project it helped me alot, can you please help me out how can I handle password expiry in credential provider where the user should be prompted to change password and should be able to change password from my credential provider when his password expired, Thank you.

https://docs.microsoft.com/en-gb/windows/win32/api/credentialprovider/ne-credentialprovider-credential_provider_usage_scenario
CPUS_CHANGE_PASSWORD should be good enough.

Thanks for the reply, what changes need to be done in getSerialization while implementing this CPUS_CHANGE_PASSWORD scenario? What method should I call to pass the old password and new password?

Hello,
KerberosChangePassword
Regards,

The remarks on this:
https://docs.microsoft.com/en-us/windows/win32/api/credentialprovider/nf-credentialprovider-icredentialprovidercredential-getserialization
I am using the link to the source for maintainability. if it will be changed in the docs the answer will remain the same.

Hello,
KerbChangePasswordPack
(https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/929b7283-562c-464f-ad4a-ba6699b52dbf/about-credential-providermodify-the-password-successlybut-the-password-is-null-when-the-password?forum=windowssdk)
Regards,

Nice to see you guys here 😃

Thanks guys those links should help!

Can you give me more info?

Do you have VCRedist Visual Studio C++ runtimes installed ?

Do you have VCRedist Visual Studio C++ runtimes installed ?

Yes I have installed VCRedist 2015 x64 in the Windows R2 2012 server, still I am not able to see my custom CP in sign in options.

Can you give me more info?

Hi David, can you tell what info you need so that I can mention that specifically?

Do you have VCRedist Visual Studio C++ runtimes installed ?

Yes I have installed VCRedist 2015 x64 in the Windows R2 2012 server, still I am not able to see my custom CP in sign in options.

Same issue! How did you solved that?

hi, first of all thanks to DavidWeiss2 bcz of his github details about cp that helped me a lot. i am new to credential provider and i am trying to do a change cache credential password (password change).
In CSampleCredential.cpp file in GetSerialization(...) function
case CPUS_CHANGE_PASSWORD:
if(newPassword.Compare(confirmPassword) == 0)
{
KERB_CHANGEPASSWORD_REQUEST kcpr;
ZeroMemory(&kcpr, sizeof(kcpr));
                    hr = UnicodeStringInitWithString(m_domain, &kcpr.DomainName);

                    if (SUCCEEDED(hr))
                    {
                        hr = UnicodeStringInitWithString(m_username, &kcpr.AccountName);

                        if (SUCCEEDED(hr))
                        {
                            hr = UnicodeStringInitWithString(_rgFieldStrings[SFI_PASSWORD], &kcpr.OldPassword);
                            hr = UnicodeStringInitWithString(_rgFieldStrings[SFI_NEWPASSWORD], &kcpr.NewPassword);

                            if (SUCCEEDED(hr))
                            {
                                kcpr.MessageType = KerbChangePasswordMessage;
                                kcpr.Impersonating = FALSE;
                                hr = KerbChangePasswordPack( kcpr, &pcpcs->rgbSerialization, &pcpcs->cbSerialization);

                                if (SUCCEEDED(hr))
                                {
                                    ULONG ulAuthPackage;
                                    hr = RetrieveNegotiateAuthPackage(&ulAuthPackage);
                                    if (SUCCEEDED(hr))
                                    {
                                        pcpcs->ulAuthenticationPackage = ulAuthPackage;
                                        pcpcs->clsidCredentialProvider = CLSID_CSampleProvider;

                                        *pcpgsr = CPGSR_RETURN_CREDENTIAL_FINISHED;
                                    }
                                }
                            }
                        }
                    }
                }
        break;

and In "helpers.cpp" file you have to enter a new function code if this function is not there for password change
//pack the struct of KERB_CHANGEPASSWORD_REQUEST
HRESULT KerbChangePasswordPack(
const KERB_CHANGEPASSWORD_REQUEST& kcpr,
BYTE** prgb,
DWORD* pcb
)
{
HRESULT hr;
DWORD cb = sizeof(kcpr) +
    kcpr.DomainName.Length +
    kcpr.AccountName.Length +
    kcpr.OldPassword.Length +
    kcpr.NewPassword.Length;

KERB_CHANGEPASSWORD_REQUEST* pkcpr = (KERB_CHANGEPASSWORD_REQUEST*)CoTaskMemAlloc(cb);

if (pkcpr)
{
    pkcpr->MessageType = kcpr.MessageType;

    BYTE* pbBuffer = (BYTE*)pkcpr + sizeof(KERB_CHANGEPASSWORD_REQUEST);

    _UnicodeStringPackedUnicodeStringCopy(kcpr.DomainName, (PWSTR)pbBuffer, &pkcpr->DomainName);
    pkcpr->DomainName.Buffer = (PWSTR)(pbBuffer - (BYTE*)pkcpr);
    pbBuffer += pkcpr->DomainName.Length;

    _UnicodeStringPackedUnicodeStringCopy(kcpr.AccountName, (PWSTR)pbBuffer, &pkcpr->AccountName);
    pkcpr->AccountName.Buffer = (PWSTR)(pbBuffer - (BYTE*)pkcpr);
    pbBuffer += pkcpr->AccountName.Length;

    _UnicodeStringPackedUnicodeStringCopy(kcpr.OldPassword, (PWSTR)pbBuffer, &pkcpr->OldPassword);
    pkcpr->OldPassword.Buffer = (PWSTR)(pbBuffer - (BYTE*)pkcpr);
    pbBuffer += pkcpr->OldPassword.Length;

    _UnicodeStringPackedUnicodeStringCopy(kcpr.NewPassword, (PWSTR)pbBuffer, &pkcpr->NewPassword);
    pkcpr->NewPassword.Buffer = (PWSTR)(pbBuffer - (BYTE*)pkcpr);

    *prgb = (BYTE*)pkcpr;
    *pcb = cb;

    hr = S_OK;
}
else
{
    hr = E_OUTOFMEMORY;
}

return hr;

}
now the problem for me is, what are the changing i want to do except from these. like how to change usage scenario to cpus_change_password and how to pass control to get serialization so that to run these code.
like what are the other things i need to do except from these

I think you can replicate the password change scenario by changing password expiry policies in active directory for the test user. @gokulraj381

NO , my problem is when the user is offline (like he is not near domain controller). i want to change his password (as he is not under domain controller) in cache credential of his laptop. to do that is there any API or i need to implement CPUS_CHANGE_PASSWORD

can i get ur instagram id or gmail id so that i can contact you and ask about my doubt

<EMAIL_ADDRESS>

but brother the domain password are stored in our laptop as cache credential (to authenticate when the dc is not available). now i just need to change that cache credential password. do u know anybody who knows about co better??

Like I said you can't change the password when your domain is offline even though the password is cached locally. Please follow this article https://social.technet.microsoft.com/Forums/windows/en-US/b723142a-33f5-4b02-95b1-5a5daac606b1/how-to-reset-password-of-user-while-not-connected-to-domain-using-local-admin-account?forum=w7itprosecurity#:~:text=Short answer is that you,controller%2C not the local machine.

brother  that is what i am saying ,the cached copy which he told , that is the thing  I want to change !!! for that he told that we need old password and i also have it. the method how to do it is the question
for referal his answer
Locally you just has a cached copy of it, but that's not the master copy of it (which is why you don't see the user listed as a local user on the machine).
In order for them to reset their password they'll need to enter their existing password in any case, so even if you could initiate it locally it wouldn't help without the existing password.
the existing password i have it, i just want the method

Hello, I am a developer from China. I would like to ask a question about how to make remote login users have the same credentials as those who log in locally.


wasm: use in_vm_context_created_ flag for http contexts.

Removed http_request_started_ and instead use the in_vm_context_created_ in Proxy-Wasm C++ host since it has exactly the same meaning (indicating whether onCreate is called or not). Network filter is already using in_vm_context_created_.
Signed-off-by: Takeshi Yoneda<EMAIL_ADDRESS>

Thanks for digging into the history!

Having said that, I think it's fine to merge this. Worst case, we can revert it and add regression tests if anything breaks.

Yeah, let's see how it goes.


Add recursive package

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (89d4456) 100.00% compared to head (5993ae0) 100.00%.

Additional details and impacted files
@@            Coverage Diff             @@
##              main       #19    +/-   ##
==========================================
  Coverage   100.00%   100.00%
==========================================
  Files            7        15     +8
  Lines           78       179   +101
  Branches         3        13    +10
==========================================
+ Hits            78       179   +101

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


Fix BN_mod_exp_consttime so it does not produce unreduced result [1.1.1]

Same as #18510 for the 1.1.1 branch.

This pull request is ready to merge

Merged to 1.1.1 branch. Thank you for the reviews.


Key export / bulk remove / clear for MemoryCache

When it comes to working with the internal keys, the way MemoryCache / IMemoryCache works is too limiting. Yes, I can remove by key, but there are lot of scenarios where we need to remove items from the cache without knowing the exact keys. For these cases we would have to keep a copy of those keys in a separate list (extra RAM usage and maintenance) or go back to the database (if there is a copy of these keys in the database).
I understand that accessing the internal keys in the cache is problematic. What I'm suggesting is for the  MemoryCache to create a (new) list of the item keys in an atomic way. We could then iterate over this list and call Remove() if needed.
This would be an expensive operation, but it would happen infrequently, and we're willing to take the hit. Ideally, it would also have a lambda to allow us to return only the items we want, something like:
cache.Extract<T>(p => ...);
cache.ExtractAll();
cache.RemoveAll(p => ...);
Clearing all the keys should also be available. Currently we would have to destroy the cache object - not exactly easy when used from ASP.NET.
Thanks.

@pebezo Thanks for the suggestion, although I think a public API like that would be a pit of failure. As this is a cache only, keys and their corresponding values could disappear under you.
You could get this functionality by wrapping our cache. Basically store all the keys as you interact with a cache, and do whatever with them later.

"keys and their corresponding values could disappear under you"
Even if the operation is atomic? MemoryCache is very useful for small datasets, but not having a way to get the keys back would more than likely force us to use Redis (which is an overkill for small sets)
http://redis.io/commands/KEYS
I would argue that asking people to wrap MemoryCache is an even deeper pit of failure. You'd be asking people to worry about lockign and concurrency - something MC already does, so basically duplicating all that logic.

@pebezo What's atomic?

Related:
https://github.com/aspnet/Caching/issues/96
https://github.com/aspnet/Caching/issues/155

@davidfowl Wrapped around a "lock" like here:
https://github.com/aspnet/Caching/blob/dev/src/Microsoft.Extensions.Caching.Memory/MemoryCache.cs#L167

Was Compact() intended to be public?
https://github.com/aspnet/Caching/blob/dev/src/Microsoft.Extensions.Caching.Memory/MemoryCache.cs#L350
It's not part of the interface:
https://github.com/aspnet/Caching/blob/dev/src/Microsoft.Extensions.Caching.Abstractions/IMemoryCache.cs
A RemoveAll() function would be very similar -- much simpler.

@pebezo

"keys and their corresponding values could disappear under you"
Even if the operation is atomic? MemoryCache is very useful for small datasets, but not having a way to get the keys back would more than likely force us to use Redis (which is an >overkill for small sets)

Even if you get the names of all keys at once, some (or all) of them may be deleted by the time you want to use them.

@muratg But that's the expect behavior with or without this feature. When you get (or remove) something out of the cache based on a key that element may or may not be in the cache: TryGetValue(). How does extracting a list of all the keys change any of that?

My suggestion, idea:
Like CancellationToken at thread, we can attach a token object to cached object.
This can be common for a group of stored objects. :)
And when (for example) a user modify the source/origin of cached data, the AspNetCore program set a 'cancel' and when the MemoryCache make a cache-cleaning (or retrieve this cached object) drop this object with this token.

I have been implemented the idea before: https://github.com/emelhu/MemoryCache_DropOutToken

We are closing this issue because no further action is planned for this issue. If you still have any issues or questions, please log a new issue with any additional details that you have.

Even if you get the names of all keys at once, some (or all) of them may be deleted by the time you want to use them. @muratg

You have given this guidance:

You could get this functionality by wrapping our cache. Basically store all the keys as you interact with a cache, and do whatever with them later.

Wouldn't you face the same pitfall when using this strategy? How is pulling a list of stored keys, iterating over them, and calling Remove() safer than a RemoveAll().. which I assume would be the same operation?
RemoveAll would face the same pitfall as a simple Remove (or bulk Remove calls), but would save API users the trouble of storing/managing keys.

@muratg Not sure why you closed this issue without having a resolution in place or at least a plan for the future. I agree with @pebezo that this sort of functionality is lacking.
At best, I was hoping for a way to purge everything by doing a partial match on a key. To elaborate, string.Contains/StartsWith/EndsWith would suffice, but Regex support would be the icing on the cake.
At worst, I'd expect a clean way of purging the cache, however, I'm concerned that this approach would be too extreme for scenarios like this.
My use case:
I want to cache data from a store that will ultimately be returned from an API endpoint in a list format (e.g. /customers/:customerId/orders GET). Sounds simple, but what about when you factor in things like filters, paging, and sorting. When an order is added to a customer, I'd obviously need to purge any cache items associated with that customer, but I don't know all of the cache keys (without storing them, which is a viable option but seem a bit overkill to me). I know part of the cache key; the customer ID, and I know the format of the cache key; /customers/1/orders?pageNumber=2, so why can't I have my cake and eat it?

Any suggestions on how to handle the use case @andrewgunn stated? This seems like a very common use case for web applications.  An event occurs (eg. updating customer N) that will invalidate cache results for related data (eg. orders) so we want to clear all the associated cached data.

@plaisted Attaching a IChangeToken to the group of entries you want to remove is the recommendation for group cleanup.

Thanks @Tratcher, Are there any examples on this?
Since orders may be cached before the customer it seems like you'd have the create the IChangeToken and cache it separately. If a customer is cached it GetsOrCreate's the IChangeToken and registers a post eviction callback on the customer Entry to fire the IChangeToken when the customer entry expires. When a order for a customer is cached it GetsOrCreate's the IChangeToken and adds it as an expiration token for the entry. Is this the general idea of what you are suggesting?

The samples are being written for this new doc: https://github.com/aspnet/Docs/pull/4654

We periodically close 'discussion' issues that have not been updated in a long period of time.
We apologize if this causes any inconvenience. We ask that if you are still encountering an issue, please log a new issue with updated information and we will investigate.


Add API keys as environment variables on the netifly app

The APIs used in the weather app require API keys, that are being accessed by means of environment variable to ensure security.

This is done - thanks @himanshu-thakur-7 !


message_changed event inside a shared channel from external user

Description
I am able to respond to all message_changed events in a channel within my workspace. However, when the bot is invited into a shared channel it seems to only be able to receive events from external users for an initial message/thread, and nothing is received when someone from another org changes any of their messages/threads.
What type of issue is this? (place an x in one of the [ ])

[ x] bug
[ ] enhancement (feature request)
[ ] question
[ ] documentation related
[ ] testing related
[ ] discussion

Requirements (place an x in each of the [ ])

[x ] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[ x] I've read and agree to the Code of Conduct.
[ x] I've searched for any related issues and avoided creating a duplicate issue.

Bug Report
Filling out the following details about bugs will help us solve your issue sooner.
Reproducible in:
package version: 2.3.0
node version: v14.5.0
OS version(s): osx 10.15.7
Steps to reproduce:

create bot in workspaceA
invite bot into shared channel with workspaceB
have user in workspaceA write message in shared channel
bot will see message
have user in workspaceB write message in shared channel
bot will see message
have user in workspaceA change their message
bot will see changed message
have user in workspaceB change their message
bot will NOT see any event about the message change

Expected result:
expected to see message event with subtype of message_changed for user from workspaceB as the change is visible and public
Actual result:
no event is recorded when user in workspaceB changes any of their messages or threads but the message event is received on any INITIAL message or thread

Thank you for writing in! I tried to reproduce your issue but I was not able to. My app receives message_changed, message_deleted etc from both workspaces in a shared channel.
If this issue continues occurring even after re-installing the app, I'm sorry for bothering you but can you contact our platform support agent team here to ask running a deeper investigation with your workspace/app information? As we're the maintainers of this API client SDK and this issue tracker is a public place, we're unable to check further information about your issue.

Thanks for attempting to replicate the issue. It makes me feel a little better to know the issue is likely specific to my workspace and not a limitation of the API.
Just in case it is relevant, I am including a pic showing the OAuth and event settings as well as a video of the issue with the event.
The purpose of this particular bot is to redirect direct message requests in a shared slack channel to the support team for certain people.

And here is the video of the issue: https://youtu.be/sVcHYfjwAFw
I will follow your suggestion and see if the platform help folks can see something in the configuration but I hope you can at least see that from my perspective there does appear to be an issue.

Hi @devorbitus, just checking in to see if the above suggestion led to a resolution. If so, feel free to close this issue, else let us know if you think we can provide any further information that might help.

Platform support is actively working on the issue with us. We think there is some sort of bug at that level so this issue should probably be closed so I will go ahead and do that. Thanks so much for those that attempted to replicate and led us to support!

Quick follow-up for anyone coming across this, later on, it turned out the workspaceB was NOT a paid workspace but was on a trial for 90 days. When the bot was active on shared accounts between two paying workspaces everything worked fine. Platform support is going to look at it as a bug to be fixed but I didn't have a particular need to handle trial workspaces anyway so the revelation unblocked me.


password prompt fixed

Added password prompt. Created Eclipse IDE supports. fixed #709

Wow, that was fast. Thanks a lot. :bouquet: I have to change the german translation as well :)
Is it possible to .gitignore the IDE support files? We want to keep the app as simple as possible.

I created new PR. Sorry If I did anything wrong. This is first time I'm contributing in Ruby project with commit changes.

You didn't do anything wrong. It is great that you are helping us! Thank you! :hearts:


🐛 Setting save_exchange_record=False does not promptly delete the record after exchange is complete

At the moment, this is only an issue for our tests. Namely: app/tests/e2e/issuer/test_save_exchange_record.py::test_issue_credential_with_save_exchange_record
In this e2e test we validate that a 404 is raised when trying to fetch the credential exchange record, after the exchange was complete, and if save_exchange_record was set to False.
Previously, we've identified some race condition, where it may take a moment for the records to update. Therefore, a naive workaround was to add a sleep of 1 second. This is fairly "long" in computational terms, so it was thought to be sufficient.
This did make the test failure rare, but it can still occur -- i.e. it can happen that the record has still not been deleted, 1 second after the exchange was complete.
This should be fine for most client use cases, since a short delay is acceptable. But all we can know from the test failure is that it took more than 1 second, and so we can't guarantee that the bug is not actually that it never gets deleted ...
A possible solution would be to replace the 1 second sleep with some fast retry logic, so it can pass as quickly as possible, and only fails if it takes, let's say, more than 5 seconds.

Sample test error logs:
_ test_issue_credential_with_save_exchange_record[clean-clean-clean-clean-clean-v1-False] _

faber_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7fedaa5c3410>
credential_definition_id = 'X73s2fEXJnxSnwtX3VDp9S:3:CL:8478:tag'
faber_and_alice_connection = FaberAliceConnect(alice_connection_id='326fb1a7-7246-40f2-90f9-ce96d8497ba4', faber_connection_id='f350ed60-70f0-4593-b84b-33b9660a9f11')
alice_member_client = <shared.util.rich_async_client.RichAsyncClient object at 0x7fedaa594e60>
save_exchange_record = False, protocol_version = 'v1'

    @pytest.mark.anyio
    @pytest.mark.parametrize("save_exchange_record", [False, True])
    @pytest.mark.parametrize("protocol_version", ["v1", "v2"])
    async def test_issue_credential_with_save_exchange_record(
        faber_client: RichAsyncClient,
        credential_definition_id: str,
        faber_and_alice_connection: FaberAliceConnect,
        alice_member_client: RichAsyncClient,
        save_exchange_record: bool,
        protocol_version: str,
    ) -> CredentialExchange:
        credential = {
            "protocol_version": protocol_version,
            "connection_id": faber_and_alice_connection.faber_connection_id,
            "indy_credential_detail": {
                "credential_definition_id": credential_definition_id,
                "attributes": sample_credential_attributes,
            },
            "save_exchange_record": save_exchange_record,
        }

        # create and send credential offer- issuer
        faber_send_response = (
            await faber_client.post(
                CREDENTIALS_BASE_PATH,
                json=credential,
            )
        ).json()

        faber_credential_exchange_id = faber_send_response["credential_exchange_id"]
        thread_id = faber_send_response["thread_id"]

        payload = await check_webhook_state(
            client=alice_member_client,
            topic="credentials",
            state="offer-received",
            filter_map={
                "thread_id": thread_id,
            },
        )

        alice_credential_exchange_id = payload["credential_exchange_id"]

        # send credential request - holder
        await alice_member_client.post(
            f"{CREDENTIALS_BASE_PATH}/{alice_credential_exchange_id}/request",
        )

        await check_webhook_state(
            client=alice_member_client,
            topic="credentials",
            state="done",
            filter_map={
                "credential_exchange_id": alice_credential_exchange_id,
            },
        )

        time.sleep(1)  # short sleep before fetching cred ex records; allow them to update

        # faber requesting auto_remove only removes their cred ex records
        # get exchange record from alice side -- should not exist after complete
        with pytest.raises(HTTPException) as exc:
            await alice_member_client.get(
                f"{CREDENTIALS_BASE_PATH}/{alice_credential_exchange_id}"
            )
        assert exc.value.status_code == 404

        if save_exchange_record:
            # get exchange records from faber side:
            faber_cred_ex_record = (
                await faber_client.get(
                    f"{CREDENTIALS_BASE_PATH}/{faber_credential_exchange_id}"
                )
            ).json()

            # Save record True, should be 1 record
            assert (
                faber_cred_ex_record["credential_exchange_id"]
                == faber_credential_exchange_id
            )

            # Clean up
            await faber_client.delete(
                f"{CREDENTIALS_BASE_PATH}/{faber_credential_exchange_id}"
            )
        else:
            # If save_exchange_record was not set, credential should not exist
>           with pytest.raises(HTTPException) as exc:
E           Failed: DID NOT RAISE <class 'fastapi.exceptions.HTTPException'>

app/tests/e2e/issuer/test_save_exchange_record.py:105: Failed

Occurred most recently here: https://github.com/didx-xyz/aries-cloudapi-python/actions/runs/10272955775/job/28426557267


Use toolbox Dockerfile from platform

The docker-compose up command fails locally because of some error in the Dockerfile. Let's use the working toolbox Dockerfile from the platform.
When we have the new version, we need to build it, tag with v2 and push to the project's GHCR (it's used in the CI/CD pipeline)

Fixed in this issue
https://github.com/UffizziCloud/uffizzi_controller/issues/32


Disable Fast Mode

@leigh.orf
Is it possible to not "degrade" the isosurface image when rotating or moving the cube? I understand why this is done, but it does get kind of annoying over time to see the image always snap back and forth between "beautiful" and "degraded". I suspect that many modern graphics cards will rotate the box w/out any degradation needed and get good performance. So maybe what I am requesting is an option (buried somewhere perhaps) that keeps the full rendering fidelity when doing box movement operations. At least it would be interesting to see whether performance is degraded on "normal" consumer hardware.

@stasj please explain why you think this is not a good idea and tag @leigh.orf

@stasj please explain why you think this is not a good idea and tag @leigh.orf

@leighorf The Volume and Isosurface renderers automatically determine the maximum possible resolution that your computer can render smoothly by dynamically monitoring the frame rate and adjusting the resolution. If you are seeing any degradation in image quality that means that your computer cannot handle a higher resolution. It would be possible to disable this feature but it would just result in choppy renderings when moving the scene which makes it difficult to navigate.

@leighorf The Volume and Isosurface renderers automatically determine the maximum possible resolution that your computer can render smoothly by dynamically monitoring the frame rate and adjusting the resolution. If you are seeing any degradation in image quality that means that your computer cannot handle a higher resolution. It would be possible to disable this feature but it would just result in choppy renderings when moving the scene which makes it difficult to navigate.


Printing a Binary Tree in Vertical Order in C++

want to implement it

Implemented Printing a Binary Tree in Vertical Order in C++
Please PR#480

Please PR  #480


Update for Selenium Grid scaler

Provide a description of what has been changed
An update for https://github.com/kedacore/keda/pull/6169 will come in the upcoming release v2.16.
@SeleniumHQ involve as long term maintainer for the scaler
Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO)

Fixes #

Updated this to be aligned with the decision in core changes.

Thanks a lot for your help and patience 🙇


MathJax Rendering Issues

I have about 8~10 issues with MathJax reading certain parts of a notebook incorrectly. Does this require a case by case fix? They are showing up as intended in the ipython notebooks.
Examples: 14.1 see technical note, 14.4 midway down the page.
See original notebooks here
Is there a basic methodology for trouble shooting? I'm not well rehearsed in MathJax syntax.

Is it possible that MathJax needs updating? If so where can I do that?

I'm not sure what could be causing the rendering issues here.
This is where MathJax is configured in JupyterLab.

The last equation at the end is because the ... |s| .... It  interprets the full paragraph as a table, and end up being the follwing html:

$
--
  | s
  | \le 1$ so that it converges.

Thus mathjax does not find the math correctly. Try to deactivate the Markdown table extension ?

Same for 14.4, it thinks |...| is a table which screw up the HTML and thus mathjax.

hmmmm....so I guess the question is: is it better to support more complete mathjax equations but mess up markdown tables, or vice versa...

not in this book, but the point is be a generic "create any textbook with your jupyter notebooks" repository, so I don't want to preclude people from this functionality if I don't have to.
However, I think a solution is to disable markdown tables only for the pages that were converted from notebooks, that way the behavior is the same on both platforms.

actually, I'm not sure if it's possible to disable table auto-generation in jekyll? seems like this is something built-in to kramdown...

You may be able to tell Jekyll to use redcarpet instead of Kramdown.

do you have any opinions on using one vs. the other? I'm a bit hesitant since I don't know what kinds of downstream effects that would have...

haha yep that sounds like markdown to me ;-)

@dcroce it looks like all of the issues you describe are because of markdown auto-formatting of in-line equations. Could you try:

Make sure every block equation has $$ around it.
Make sure every inline equation has | characters escaped with \. So $P(|\bar{X}_n - \mu| \ge \epsilon) becomes $P(\|\bar{X}_n - \mu\| \ge \epsilon)?

Alright I will see if that makes the difference.

In addition to |, _ and * also needs to be escaped. That was able to fix all the errors I had, although it makes the textbook look different from the ipynbs. Thanks for the help!

@dcroce could you go into more detail on what you mean by "different from the ipynbs"? :-)

When opening the ipython notebook, the math shows up slightly different. For example the \ to escape the * will show up in the ipython notebook but on the textbook turns out as desired. There are other minor differences too. See 9.3 of the textbook and compare to the notebook for a specific example (New url is http://prob140.org/textbook/chapters/README)


updated git-flow package to use stable master branch (version 1.9.1 now)

rebuilded and tested git-flow locally with Git for Windows (<IP_ADDRESS>) SDK (1.0.1) with some feature and release branches.

Thanks!


Draft: Fix trailers race condition

We recently noticed that we were getting Status = Unknown with the default message "Server did not return grpc-status", when a server was in fact responding properly with a non-default value.
We now reproduced the issue in both grpc-async and grpc-lwt, using a variation of the greeter client example, with repeated requests. It seems that we randomly fail to get the real status, and we are filling in the default.
This seems to be a race condition due to the way this is implemented, by checking if a future is filled when in fact it is simply not filled yet.
We will test our solution in our environment and remove the "Draft: " marker when we are confident.
How to reproduce
See branch reproduce/unknown-status-issue for a reproduction of the issue.
(https://github.com/dialohq/ocaml-grpc/tree/reproduce/unknown-status-issue.)
Run this in one terminal:

dune exec -- examples/greeter-server-lwt/greeter_server_lwt.exe

Then run either of the following and it should blow up at some random (numbered) message:

dune exec -- examples/greeter-test-async/test_grpc_status.exe test
dune exec -- examples/greeter-test-lwt/test_grpc_status.exe test

Check solution
See branch test/unknown-status-issue, which contains the same commits that are in this branch (the solution), on top of the code to reproduce the issue.
(https://github.com/dialohq/ocaml-grpc/tree/test/unknown-status-issue.)
Run the same commands as above and after 100_000 iterations the programs should terminate without error.
(Feel free to remove or increase the limit, I tested without it but it's convenient.)
Assumptions
We assume that trailers only responses are not an issue, and we should never hang when there is no body in the response. This is consistent with expectations of HTTP2, so any hangs would probably indicate an issue with the underlying HTTP2 library and should probably be addressed there.
Should be tested with the etcd example, see https://github.com/dialohq/ocaml-grpc/issues/1.
Could it be an etcd / proxy issue? I think there might be a missing trailer handler, but the situation needs some confirmation.

Thanks, great catch! This definitely makes sense. I will test it for our main use case (streaming).

It works well for our use case, however your intuition to check with the etcd example was right because this change does indeed seem to introduce a regression (see #1, e.g. when dialing a non-existing method it will hang again). That's because we still need to get the gRPC status from the headers when the body is empty. I will investigate some more tomorrow, thanks again for reporting and the reproduction!

It works well for our use case, however your intuition to check with the etcd example was right because this change does indeed seem to introduce a regression (see #1, e.g. when dialing a non-existing method it will hang again). That's because we still need to get the gRPC status from the headers when the body is empty. I will investigate some more tomorrow, thanks again for reporting and the reproduction!

You are right. I just tested in our codebase as well, and it hanged on a non-existing method.
I'll also have a look.

It works well for our use case, however your intuition to check with the etcd example was right because this change does indeed seem to introduce a regression (see #1, e.g. when dialing a non-existing method it will hang again). That's because we still need to get the gRPC status from the headers when the body is empty. I will investigate some more tomorrow, thanks again for reporting and the reproduction!

I adapted the solution, and at least in my test it won't hang when the method is changed to a non-registered one.
For example ~rpc:"SayHello" -> ~rpc:"SayHello1" will now result in an error with 404 status.
The server does not return gprc headers in that case so I may have to refine the solution a bit, let me know how it works for you.

@quernd i suspect the etcd example might behave as expected now. (After the latest commit: fefc3d8)

If this does not behave as expected, we can probe for the presence of grpc-status in the response.status =  Ok case, before waiting for the trailers ivar which blocks.
I added a commit that implements this solution.

Thanks again @doctor-pi, it all looks good in my tests now. I'll review and merge soon.

It looks good to me. Thanks again for your contribution!

Nice. I'll merge.

It looks good to me. Thanks again for your contribution!

I guess I should have squashed the commits?

I guess I should have squashed the commits?

Don't worry about that, we don't have any such policy (yet).


Correct link Chinese page viewing-and-setting-quotas

Correct wrong link in Chinese version page https://kubernetes.io/zh/docs/concepts/policy/resource-quotas/#viewing-and-setting-quotas
Issue mentioned in https://github.com/kubernetes/website/issues/22133

/lgtm
/approve


unit testing without postgres dependency (mock)

Discussed in https://github.com/prest/prest/discussions/562

Originally posted by avelino June 23, 2021
The postgres adapter depends on the postgreSQL (database) server to run (go test), i.e. it was developed with integration testing.
Integration testing is necessary, but it raises the barrier for new members to contribute, i.e. for a person to make any contribution he needs to learn to configure the development environment and only then contribute. I think it's great to have people immersed in the project, but this is not the reality of open source projects that people contribute in their spare time (usually without pay)
I don't think it is necessary to "remove" the integration test but put it in its place:

unit test that does not depend on external services (e.g. PostgreSQL) running with go test ...., so our people were able to run the tests locally (on their machines)
Integration test: run only on CI (GitHub Actions or Travis CI) on pull request - doesn't necessarily have to be written with go test

What would be the best option to write postgres adapter mock?
Ref:

[x] #510
[x] #555
[x] #558
[x] #472
… as we see above we have several issues related to this subject - sad

Is this still open?

Is this still open?

@vmesel yep, we need to rewrite the tests with unit tests in mind, this simplifies the way to run the tests for the incoming contributors
Leave the integration test (e2e) as we do for the build process (in the pipeline, even so we need to think if it is necessary)


Update module gomodule/redigo to v2

This PR contains the following updates:

Package
Type
Update
Change

github.com/gomodule/redigo
require
major
v1.8.2 -> v2.0.0

Release Notes

gomodule/redigo
v2.0.0
Compare Source

Renovate configuration
📅 Schedule: At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

⚠ Artifact update problem
Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.
♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

any of the package files in this branch needs updating, or
the branch becomes conflicted, or
you check the rebase/retry checkbox if found above, or
you rename this PR's title to start with "rebase!"


"Used before assigned" error when assigned in a function

TypeScript Version:  3.0.0-dev.20180712

Search Terms: "Used before assigned"
Code
let angle: number;

function compute() {
	angle = 0;
}

compute();
angle += 2;

Expected behavior:
Passes.
Actual behavior:
error TS2454: Variable 'angle' is used before being assigned.
angle += 2;

Duplicate of #9998.

Thanks.


Add a new file "tipsandtricks"

It includes things like where to bring back the old oof, the existence of --opengl (Even though that's now covered in the new FAQ), the location of fflags and the log file

Looks good, I made some slight edits to the HTML file. I'll go ahead and merge this now.


FileHandle is not streaming the response to a File

Found this while analyzing something else with @ehennum - I believe it's expected that when using a FileHandle with something like RowManager.resultDoc, the response from ML should be streamed to the given File. Instead, the entire response is being read in as a String and then written to the File, which is much more expensive.
@ehennum confirmed that this is not specific to RowManager either, it's generic to FileHandle - com/marklogic/client/impl/OkHttpServices.java#5364-5373

Verified on develop branch with ML 10.0.1 server build.


fix rfc2136 provider missing port error, plumb DNS01 self check code

Signed-off-by: splashx<EMAIL_ADDRESS>Fixes #907
What this PR does / why we need it:
It fixes a problem when nameserver for RFC2136 provider has no explicitly defined port :<port>
Which issue this PR fixes : fixes #907
Special notes for your reviewer:
I had this code in but I clearly missed something while the reviews were going through 🙄
It's not critical but it's a bug (because the documentation says something which the code is not complying with).
Also, I've plumbed in the DNS01 self check code - which was missing / not implemented correctly.
Release note:
RFC2136 provider: fixes a minor bug where dns01 `nameserver` key has value with no port

/assign @munnerz

Thanks for catching this & fixing it up 😄
I guess this should also be cherry-picked into the release-0.5 branch, as like you say the current behaviour is not in-line with the documentation.
Adding the v0.5 milestone so we can remember to cherry pick it across with ./hack/cherry-pick-pr.sh 😄
/ok-to-test
/lgtm
/approve

/lgtm cancel

@munnerz sorry, tests fixed.

/lgtm
/approve


Test runner says steps are undefined when official Cubumer extension can navigate between steps and features.

Hello. When trying this extension and running/debugging scenarios the test running says "Undefined. Implement with the following snippet". But when I run using cucumber-js script cucumber is able to link the feature file with step file and run the tests. Here is my cucumber.js file:
const dotenv = require('dotenv');
dotenv.config({override: false});
let options = [
'--require-module ts-node/register',
'--require ./srs-vp/System-Requirement-Specifications/Functional-Requirements/steps/*steps.ts',
'--format progress',
].join(' ');
let run_features = [
'./srs-vp/System-Requirement-Specifications/Functional-Requirements/features/*.feature',
options,
].join(' ');
module.exports = {
test_runner: run_features
};
Here is my settings.json:
{
"cucumberautocomplete.strictGherkinCompletion": true,
"cucumberautocomplete.steps": [
"./doc/srs-vp/System-Requirement-Specifications/Functional-Requirements/steps/.ts"
],
"cucumberautocomplete.syncfeatures": "./doc/srs-vp/System-Requirement-Specifications/Functional-Requirements/features/.feature",
}

Hi, I'll look into it in the weekend 👍

Your main issue is due to a missing feature of this extension. The extensions launches tests with the default profile, your configuration file exports a profile named test_runner.
To solve this problem you have to change your cucumber.js config as follows (until I add the feature)
module.exports = {
-  test_runner: run_features
+  default: run_features,
};

This however brings up a new problem that's actually mentioned in the following issue cucumber/cucumber-js#2253 on the cucumber-js repository.
I think I have a workaround until cucumber-js implements better support for cli arguments.
You can change your cucumber.js file as follows:
const dotenv = require("dotenv");

dotenv.config({ override: false });

let options = [
  "--require-module ts-node/register",
  "--require ./features/support/*.ts",
  "--format progress",
].join(" ");

- let run_features = ["./features/*.feature", options].join(" ");
+ //let run_features = ["./features/*.feature", options].join(" ");

module.exports = {
-  default: run_features,
+  default: options,
};

This allows the extension to launch the tests correctly.
Hope this helps 😉

Thanks for the response. I made changes (below) to cucumber-js but am still seeing the same behavior. When I run using cucumber-js script cucumber is able to link the feature file with step file and run the tests but cucumber-test-runner reports that the steps are undefined.
cucumber-js:
const dotenv = require('dotenv');
dotenv.config({ override: false });
let options = [
'--require-module ts-node/register',
'./srs-vp/System-Requirement-Specifications/Functional-Requirements/features/*.feature',
'--require ./srs-vp/System-Requirement-Specifications/Functional-Requirements/steps/*steps.ts',
'--format html:cucumber-report/cucumber-report.html',
'--publish-quiet'
].join(' ');
module.exports = {
default: options,
};

Hi,
I guess your problem is the following line:
'./srs-vp/System-Requirement-Specifications/Functional-Requirements/features/*.feature',

If you keep that line in the configuration, the extension will not work properly due to the problem mentioned before.
You need to remove the path to your *.feature files, the extension will discover the files on its own and launch the proper test.
If you need both the configurations, you can try to define 2 profiles, the default one for the extension and another one to launch the tests from the CLI.

Hello again. I took your suggestion and created multiple profiles but the behavior is the exact same:

dotenv.config({ override: false });

const common = {
    requireModule: ['ts-node/register'],
    require: ['./srs-vp/System-Requirement-Specifications/Functional-Requirements/steps/*steps.ts'],
    publishQuiet: true
}

const paths = [
    './srs-vp/System-Requirement-Specifications/Functional-Requirements/features/*.feature'
]

module.exports = {
    default: {
        common,
        format: ['html:cucumber-report/cucumber-report.html', 'progress'],
    },
    cli: {
        common,
        format: ['html:cucumber-report/cucumber-report.html'],
        paths,
    }
};

Seems like I can't reproduce your problem, just for debug purposes that's what the extension executes to run tests:
node<EMAIL_ADDRESS><full-path-to-feature-file>:<line-of-the-selected-test> [...<full-path-to-feature-file>:<line-of-the-selected-test>] --format message

The command is executed from the working folder open in VSCode.
You may try to run the same line from your terminal and check if you get the same behavior.
I tried your new configuration in my test project and, aside from manually creating the cucumber-report folder, I had no problems, the extension ran the tests correctly.
I would be great if you could publish a minimal project that exposes this behavior 😉


Adding functions for bash

I did not rebuild the *.json files because the tag => "code" bit is
missing whenever I run rake build.
Bash doesn't really support lambdas, but using "echo" and "$1" should be extremely easy for other tools to use.

@fidian I'm going to help you get this merged. Would you like to update your branch first?


YouTube source doesn't play on Microsoft Lumia 650 Edge

Actual behaviour
YouTube video doesn't play on Edge Mobile
Steps to reproduce
https://codepen.io/dprzygodzki/pen/YOPBJM
Environment

Plyr version: 3.4.3
Browser: Edge Mobile
Version:  42.17134.1.0
Operating System: Windows 10

Console errors (if any)
In debug mode we can see, that there is lack of 'playing' event.
Edit: in farther debugging i've found out that youtube iframe embedded by Plyr is working in itself.

More input:

Playback works with .mp4 movie files server statically.
Networking tab communicates YT and receives 200 responses.
You can seek the movie and see frames changing, it simply doesn't "play".

Can be reproduced on Windows 10, Edge browser, "Nokia Lumia 650" emulation enabled.

I started diggin on my own. And what i've found was that the problem is with buffering of Youtube Iframe Api. It stops on getVideoLoadedFraction() value ~0.023 and goes to Unstarted event.

There is another way. You can use the <div> placeholder that even their own API and documentation supports. It won't make any difference to the playback though as either way require user input to begin playback. Don't always trust the YouTube API docs. They document the ability to request a change in quality but it actually does sod all 😂

Thanks. Anyway, it would be great to somehow underline that for other lost devs :D Closing this one.

I have the same exact issue. I've been scratching my head since 2 days. How did you solve it @damianprzygodzki? I've been facing this issue in a lot of mobile browsers. Video files served with a <video> tag and an .mp4 source work perfectly.


Fix name of docker image being uploaded

This was a copy pasta mistake

Going to merge this since this is just fixing a mistake in #1995


Detect instance fields

Hi again,
In the checker I am trying to create, I need to know whether a fieldname is an instance field or not.
Example:
class Hello{
  int foo= 0;

  public void test(){
    int i = 0;
    i=3+foo; // foo is a an instance field
    System.out.println("ok");
  }
}

I took a look at the Ident.java_fieldname_is_outer_instance to give me an idea method but I'm not quite sure when appears the string ".this$".
Do you have any suggestion?

Look for the sample checker callback_check_field_access, it does exactly what you need, to detect field accesses buried into arbitrarily complicated expressions.
That checker can be turned into an utility function/visitor.

I had looked at this method but it didn't get me the restuls I was expecting.
For instance, it is detecting this:
Hello.java:29: error: CHECKERS_ANDROID_2
  field java.lang.System.out<EMAIL_ADDRESS>  27.   	}
  28.
  29. > 	public int nonStaticFunction(){
  30.   		System.out.println("calling method of other class"+foo);
  31.   		return 0;
  32.

There are 2 things I don't need here:

static fields
fields of other classes/objects.

--
Side question: Functions calls are always instructions. They will never appear as an expression. Is this correct?

@luiscruz are sure you're getting static fields? Static fields are represented as global variables internally, not as field accesses.
If you want to restrict to the current class:
  (** A field offset, the type is the surrounding struct type *)
  | Lfield of exp * Ident.fieldname * typ

The surrounding type gives you a handle to restrict the attention to specific types.

are sure you're getting static fields?
It was my impression since it detected System.out. But I'll double check it.

The surrounding type gives you a handle to restrict the attention to specific classes.
This will get the job done. Thanks!

It's done. Thanks @cristianoc.
I've adapted the callback_check_field_access checker.
Regarding the static field accesses I had to check the outer struct static_fields.
Otherwise it would detect them.

Thanks @luiscruz. At some point, when you get some results, let us know how you're using your checker.

Will do :+1:

Hi again,
In this checker I am getting two kids of false positives:

Methods that are annotated with @override -- although I am checking whether a given method is overriding any method in one of its superclasses, this is not enough.
Methods that are being overridden by one their subclasses -- these methods cannot be converted to static.

For the first false positive I think I am getting close but if you could give me some hints it would be really helpful.
For the second, I have no clue... :worried:

@luiscruz can you paste small examples to illustrate what you would like to get?

Sure @cristianoc:

Methods that are annotated with @override

class Hello extends SomeSuperClass implements SomeInterface {
  @override
  public void shouldNotBeStatic{
    // this method does not access any instance property
    // but is tagged with @override
     return;
  }
}

Methods that are being overridden by one of their subclasses

class HelloSuper: HelloSub{
  public void shouldNotBeStatic{
    // this method does not access any instance property
    // but it should not be static in order to be overridden
     return;
  }
}

class HelloSub{
  private int staticProperty = 0;
  public void shouldNotBeStatic{
    property = 0
    return;
  }
}

So, in this last case I don't want to flag HelloSuper.shouldNotBeStatic as a potential static method since it is not static so that it can be overridden by a subclass.

Regarding the @ override I thought about this because although I am checking whether the given method belongs to a superclass, I am still having false positives with methods that are overriding other methods.
Probably this happens in methods that implement interfaces. I have to double check this.

Prover.get_overrides_of and AndroidFramework.get_all_supertypes could both be suitable for this, depending on exactly what you want to do.

Thanks @sblackshear.
I think Prover.get_overrides_of will get the job done for my second problem -- Methods that are being overridden by one of their subclasses.
Regarding my first problem -- Methods that are annotated with @ override -- I need to do this because I am having the following false positive. I.e., I am identifying that this method should be static:
import android.widget.BaseAdapter;

public class FileAdapter extends BaseAdapter {
    @Override
    public long getItemId(int i) {
        return i;
    }
}

I believe that since android.widget.BaseAdapter is not in the source code Infer is not able to retrieve it. Would AndroidFramework.get_all_supertypes fix this @sblackshear?
I tried it with no luck, but maybe I am doing something wrong. Just wanted to double check this with you.

I am a little bit confused by what you are trying to do. A static method cannot override an instance method. So although getItemId could be static, you can't both make it static and override the method of the superclass. Doing so will give you a compiler error, at least for Java <= 7. I'm not sure about Java 8, though.

Ah, I understand. You are trying to avoid warning on this method for exactly this reason :).

I would expect Prover.get_overrides_of FileAdapter.getItemId <> [] to work for what you want. Let me know if this is not the case and I will take a look.

From what I understood, Prover.get_overrides_of will be helpful to get all the overwriting methods of subclasses. I.e., I will retrieve getItemId()methods from subclasses of FileAdapter.
In this problem I need methods from superclasses. I have used PatternMatch.proc_iter_overridden_methods but it doesn't work for this particular case.

I've successfully used Prover.get_overrides_of to skip methods that are being override in subclasses. Thanks @sblackshear!
I still need to check whether a method is overriding a superclass method. I.e., I don't want to identify the method getItemId() in https://github.com/facebook/infer/issues/326#issuecomment-209526683 as a static candidate.

I think that you will probably need to write custom logic for this (but please do send a pull request, as this logic could be useful elsewhere!).
Given a method m, I would look up its struct type T using Tenv.proc_extract_declaring_class_typ. Each struct_typ knows what its immediate superclasses and declared methods are. I would iterate through the declared methods of each supertype of T looking for methods m_super whose name is the same as m (for full precision, you'll have to check the the correct subtyping relationship holds on the parameters of m and m_super as well). This should be done recursively for all superclasses of T until you find a match. The code from AndroidFramework.get_all_supertypes might be useful to reuse/adapt for this.

Sure! I'll give it a try :+1:

I think I've made it.
let struct_typ_is_super_method_of_pname struct_typ java_pname=
	(*comparison between pnames must ignore class name *)
	IList.fold_left (fun acc e -> acc || ((Procname.java_get_method java_pname) = (Procname.get_method e))) false struct_typ.Sil.def_methods

let struct_typ_get_def_method_by_name struct_typ method_name =
	IList.find (fun def_method -> (method_name = (Procname.get_method def_method))) struct_typ.Sil.def_methods

let get_struct_typ_of_typename tenv typename=
	Tenv.lookup tenv typename

let get_overriden_method tenv java_pname=
	let rec get_overriden_method_in_superclasses java_pname superclasses=
		match superclasses with
		| superclass::superclasses_tail -> (
			match get_struct_typ_of_typename tenv superclass with
			| Some struct_typ ->
				if struct_typ_is_super_method_of_pname struct_typ java_pname then
					Some (struct_typ_get_def_method_by_name struct_typ (Procname.java_get_method java_pname))
				else
					(get_overriden_method_in_superclasses java_pname (superclasses_tail@struct_typ.superclasses))
			| None -> get_overriden_method_in_superclasses java_pname superclasses_tail
		)
		| [] -> None
	in
	match (Tenv.proc_extract_declaring_class_typ tenv java_pname) with
	| Some proc_struct_typ ->
		(get_overriden_method_in_superclasses java_pname proc_struct_typ.superclasses)
	| _ -> None

I'm not making a pull request yet because I still need to clean aux methods, make some tests, By the way, I still need to figure out how to unit test this.
Also, where do you want this method to be available?
I would suggest module Procname, but I'm not sure.

I think struct_typ_is_super_method_of_pname is not really necessary. I will remove it afterwords.

I think you will run into circular dependencies if you put it in procname.ml; tenv.ml is probably the best choice if so.
For unit tests, I would add tenvTests.ml under src/unit and add your tests there (procCfgTests or schedulerTests are good examples to follow). We don't have a lot of unit tests so far, but are trying to add more as we write new code. You can run build unit tests using make unit and run them using InferUnit.
Thanks, this will be a nice function to have!

Thanks for your contributions! Feel free to open another issue if you need more help with the checkers framework.


[Bugfix] add backticks around table and column identifiers in JDBC MySQL table

What type of PR is this：

[x] bug
[ ] feature
[ ] enhancement
[ ] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #6018
Problem Summary(Required) ：

MySQL allow double quotes in column name, in this case ,we should add backticks around column identifiers to avoid it being confused with string variables.

run starrocks_fe_unittest

[FE PR Coverage check]
:disappointed: fail : 6 / 9 (66.67%)
file detail

path
covered line
new line
coverage

:large_blue_circle:
com/starrocks/analysis/SlotRef.java
0
3
00.00%

:large_blue_circle:
com/starrocks/planner/JDBCScanNode.java
6
6
100.00%


Can scroll down on CSF

I used to be able to, but lately I cant.
If I remove overflow:hidden on the body tag, it works OK.

Hi,
Upgrade the theme manually to the version 18.03.
How to upgrade the theme see this: https://github.com/qooob/authentic-theme/issues/505

Oh, I could accidentally reproduce no scroll issue in Firefox on some pages of ConfigServer Security and Firewall.
Version 18.04 has just been re-uploaded and fixes the issue. Please upgrade!!

I use virtualmin and will wait for an automated release in there, and not manually update like mentioned before.
In the meantime I go into inspector in Chrome, and disable "overflow: hidden" in the iframe body. It does not have any negative effects, so I am not sure why overflow is set to hidden.


Code cleanup: Deprecate --flywheel-address in favor of --bike-address

Currently only the flywheel bike driver supports "locking" the bike to a certain Bluetooth MAC address via the --flywheel-address option. It would make sense to expand this capability to the other two Bluetooth enabled bike types (ic4, keiser) and as a result rename the option to --bike-address or --bike-mac-address.
There shouldn't be a need to do the same with --flywheel-name , as the LocalName for ic4 and keiser bikes is fixed. But with the flywheel bike, using the  --flywheel-name  option could be used to make gymnasticon work with a LifeFitness IC5.

Would you mind if i handled this for you guys?

Hi Goosebumps - I think any help is much appreciated by us gymnastic users.


introduce feature to peek into observables

One dangerous thing we've encountered in the past with Knockout's computed observables is implicit subscriptions. In cases where you evaluate an observable one time on startup and don't care about future updates, you need to "peek" at the observable.
@observable foo: string;
@observable get bar() {
  return peek(this.foo);
}

Is there a way to peek at an observable without taking the dependency in the computed observable? Sorry if I'm missing it!

Currently there is no such thing. I thought of it, (it's easy to add) but didn't find a use case for it yet :). Note that a dependency is only made if you peeking code is inside autorun or @observer, otherwise no subscription is made, but the value is just computed on demand.

FWIW when we rewrote onedrive.com in knockout, we found computed observables taking dependencies implicitly and unintentionally (for example, calling a helper function in a computed that would access an unrelated observable value), and it would have perf implications. So we opted to always use "peek" for getting values, unless you really needed the computed mutation to occur. We were considering a more explicit model of computed modeling that was less error prone, where instead of creating implicit subscriptions, you have to explicitly opt in to it. E.g.:
Instead of:
let foo = ko.computed(() => a() + b() + c.peek());

You explicitly opt in, and general access doesn't auto subscribe:
let foo = customComputed(() => a.subscribe() + b.subscribe() + c());

This would make it easy for devs to do the right thing (avoid unnecessary subscriptions and by extension performance issues) and a little more difficult to do the expensive thing (create subscriptions that cause the computed to mutate).
I'm not asking to really change to the explicit model above, but I do think there is a use case for peek.

Hi David,
So far 'unexpected' dependency actually saved a lot of UI bugs for us so far. The simple idea behind it is; if you actively use a value somewhere, the outcome of your function does depend on it; otherwise you shouldn't be using the value in the first place. So far this didn't bring us in performance issue yet that couldn't be easily solved by either wrapping mutations in a transaction, or by splitting up the computations in multiple smaller ones (unchanged (computed) values won't trigger upstream computed values to re-evaluate). Opt-in instead of opt-out feels to me like a premature optimization that can cause a lot of staleness bugs if you forget to actively subscribe (which will happen eventually).
That being said, probably there should be an opt-out possibility in the future. Maybe something along the lines of mobservable.unobserved<T>(() => T): T which can be used inside autorun / @observer / observable. Any data accessed inside unobserved should then be treated as a 'peek' inside the value. E.g:
let foo = observable(() => a() + b() + unobserved(() => c() + d()))
a(3); // updates foo (if observed)
c(5); // never updates foo

Releases as part of 1.1.0, mobservable.untracked. Further as described in the example above.

I've decided to try this feature out as a more appropriate alternative to observe() (since it doesn't respect transactions). I only wanted to observe one thing very explicitly and when it changed I wanted it to run an initializer function, without having to worry about having my initializer function called again for something else. Here's the code I created to do this:
function observeItem(observableItem, watcher) {
    return autorun(() => {
        const value = observableItem;
        return untracked(() => watcher(value));
    });
}

which I use like this:
observeItem(someImportantUiState, (newValue) => {
...perform some initialization code
});

I'm not sure if I'm going about this correctly or if there's a better way of doing this? Or perhaps I'm just abusing the design of things completely?

Hi @jameslk you might want to take a look at these 10 lines, that implements the observe api using autorun and does respect transactions (it didn't make it into 2.0 in the end), but the pattern still works and is similar to yours: https://github.com/mobxjs/mobx/commit/c3a5520b420ac9ccffa406dec7c5b87a448b1222#diff-f5b5b227f456456dd2aca7183f1f2c26R51
This one does as you correctly mention, track the things you do in the handler. However since MobX 2.0 can now handle cycles triggered by autoruns, that might now work as expected while it would throw in Mobservable 1.
But if not being triggered by something else is important in your code, then your approach is perfectly fine. Of course it might be interesting in that case to answer the question: why should it not be triggered by something else, if that 'something else' is apparently used in the watcher? Answering that question might maybe lead to using when or another approach to the problem.
I hope that helps! Otherwise feel free to elaborate more on the case, that might make the answers more to the point and less vague.

Hey @mweststrate, thanks for the helpful response! I think I was burned a number of times by the error regarding cycles in autorun so I just became compulsively weary of it :) But with that no longer the case, I'll try to do things more normally.
In this specific scenario, however, I run some initialization code to fetch data from the server and I only need to do it once per unique value of the observed item. I also test to see if initialization was already run for that value, but I felt it was cleaner regardless to have it run only when the value changed.
I'll take a look at when to see if it might be more appropriate. Thanks again for your help!

Consider situation where we want to send comment text to server, but only if user is loged in.
It was easy with untracked:
const state = observable({
  commentText: "",
  userLoggedIn: false,
});

autorun(() => {
  const json = state.commentText;

  // we don't want to mave make request
  // every time user logging in/out
  const loggedIn = untracked(() => state.userLoggedIn);

  if (loggedIn) {
    httpApiRequest(json);
  }
});

@mweststrate, how would you solve this without untracked? Use observe? May be, some hack like this?
let untrackedLoggedIn;
autorun(() => untrackedLoggedIn = state.userLoggedIn)
autorun(() => {
  const json = state.commentText;
  if (untrackedLoggedIn) {
    httpApiRequest(json);
  }
});

@andykog I think untracked will stay. I'm even considering putting the new @actions always in an untracked so that actions never can fire automatically (but maybe you want to trigger an action from an autorun? don't now)
Besides that, I think the following is a nice solution to your case?
const state = observable({
  commentText: "",
  userLoggedIn: false,
});

when(
  () => state.userLoggedIn
  () => httpApiRequest(state.commentText)
)

Oh, I completely missed that there is such thing. Unfortunately, doesn't seems that your snippet works, https://jsfiddle.net/Sl1v3r/4dso36c3/ I'll take a closer look at when to say why :-)

Oh note that  when runs only once, and the action is not tracked or something, so in your case you probably need:
when(
  () => state.userLoggedIn
  () => autorun(() => httpApiRequest(state.commentText))
)

@mweststrate, in that way it doesn't respect the condition: https://jsfiddle.net/Sl1v3r/4dso36c3/

argh more acceptance criteria!

when(
  () => state.userLoggedIn
  () => {
     const submitDisposer = autorun(() => httpApiRequest(state.commentText))
     when(
        () => !state.userLoggedIn,
        submitDisposer
  }
)

Is this still experimental? According to documentation, it is. Just to let you know: I'm using this feature to avoid unwanted dependencies and performance issues that come with it.

Nope it is a landed feature now, since mobx 2.2. I'll update the docs.

Thanks for having a permanent untracked feature.  I am using it in my application now...

Yeah I just noticed that that message is accidentally still in the docs,
should have been removed a long time ago :)
Op wo 17 aug. 2016 om 23:26 schreef Yaakov Belch<EMAIL_ADDRESS>
Thanks for having a permanent untracked feature. I am using it in my
application now...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/mobxjs/mobx/issues/49#issuecomment-240553885, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABvGhJzZPCsUXuCwax2QU1sv1r2PQ-iRks5qg3xvgaJpZM4Ggaaw
.


Need the ability to add event handling to the Component

Checklist

[x] Reviewed the README and documents.
[x] Searched existing issues for ensure not duplicated.

Description
I would like to be able to add event handling directly to the component.
Example:
struct HelloMessage: Component {
    ...
}
HelloMessage().on(.click) { ... }.cellNode
HelloMessage().on(.viewWillAppear) { ... }.cellNode
or
HelloMessage().cellNode.on(.click) { ... }
HelloMessage().cellNode.on(.viewWillAppear) { ... }
Motivation and Context
Allows you to make ViewController cleaner.

@BarredEwe
A Component cannot have a state because it's a protocol.
It can be implemented by composition, but I don't like it because it complicates the API.

I have added this feature for myself. If anyone is interested, I can post a fork with this feature.
https://github.com/BarredEwe/Carbon/tree/actions

Congrats 🎉
I'll close this issue, but if you have further suggestions, please re-open it.